Systems development could be seen as the simple process of writing programs to solve the needs of users. However, in reality this process is not that simple. End users may know what they want, but lack the technical expertise to bring the idea to life. Also, programmers may understand the computer, but not the user environment. This communication gap between the user and the service provider must be addressed. Other factors like lack of management support, budget and timeline issues can all contribute to challenges with systems development. Using a systems development methodology can help mitigate these challenges and support development success. A number of factors have been identified that are critical to ensuring success :
- well-defined system objectives
- careful test of feasibility
- top management support
- user involvement to ensure strong commitment
- rigorous analysis to ensure detailed, unambiguous user requirements
- sound detailed design to ensure an efficient, quality, maintainable system
- project management to ensure the development team is managed and controlled.
The process of developing software is usually not as simple as sitting down and writing code. Sometimes a programmer can quickly write a short program to solve a need, but in most instances the creation of software is a resource-intensive process that involves several different groups of people in an organization. In order to do this effectively, the groups agree to follow a specific software development methodology. Pressure for rapid development and future maintainability of systems has resulted in a number of alternative approaches to systems development, ranging from development by end-users, to the incorporation of formal methods to improve the quality and efficiency of the development process. The following sections review several different methodologies for software development.