The Waterfall Model
The Waterfall Model
The first published model of software development process was derived from more general system engineering processes. Because of the cascade from one phase to another, this model is known as the waterfall model or software life cycle. The principal stages of the model map onto fundamental development activities:
? Requirements analysis and Definition -The systems' services, constraints and goals are established by consultation with system users. They are defined in detail and serve as a system specification.
? System and Software Design - The system design process partitions the requirements to either hardware or software systems. It establishes an overall system architecture. Software design involves identifying and describing the fundamental software system abstractions and their relationship.
? Implementation and Unit Testing - During this stage, the software design is realized as a set of programs or program units. Unit testing involves verifying that each unit meets its specification.
? Integration and System Testing - The individual program units or programs are integrated and tested as a complete system to ensure that the software requirements have been met. After testing, the software system is delivered to the customer.
? Operation and Maintenance - Normally this is the longest life-cycle phase. The system is installed and put into practical use. Maintenance involves correcting errors which were not discovered in earlier stages of life cycle, improving the implementation of system units and enhancing the system's services as new requirements are discovered.
In principle, the result of each phase is one or more documents that are approved ('signed off'). The following phase should not start until the previous phase has finished. In practice, these stages overlap and feed information to each other. During design, problems with requirements are identified; during coding design problems are found and so on. The software process is not a simple linear model but involves a sequence of iterations of the development activities.
Because of the costs of producing and approving documents, iterations are costly and involve significant rework. Therefore, after a small number of iterations, it is normal to freeze parts of development, such as the specification, and to continue with the later development stages. Problems are left for later resolution, ignored or programmed around. This premature freezing of requirements may mean that the system won't do what the user wants. It may also lead to badly structured systems as design problems are circumvented by implementation tricks.
During the final cycle phase (operation and maintenance), the software is put into use. Errors and omissions in the original software requirements are discovered. Program and design errors emerge and the need for new functionality is identified. The system must therefore evolve to remain useful. Making these changes (software maintenance) may involve repeating previous process stages.
The advantages of the waterfall model are that documentation is produced at each phase and it fits with other engineering process models. Its major problem is its inflexible partitioning of the project into distinct stages. Commitments must be at an early stage in the process, which makes it difficult to respond to changing customer requirements.
Therefore, the waterfall model should only be used when the requirements are well understood and unlikely to change radically during system development. However, the waterfall model reflects the type of process model used in other engineering projects. Consequently, software processes based on this approach are still used for software development, particularly when the software project is part of a larger systems engineering project.
Advantages of Waterfall model:
1. Allows for departmentalisation and control.
2. Progresses through easily understable and explainable phases.
3. Easy to use.
4. Easy to manage due to rigidity.
5. Phases are processed and completed one at a time and they do not overlap.
6. Works well for smaller projects.
Disadvantages of Waterfall model:
1. Difficult to estimate time and cost for each phase.
2. Very difficult to go back and change once an application goes to the testing stage.
3. Not a good model for complex and object oriented projects.
4. Not suitable for the projects where requirements are at a moderate to high risk of changing.
5. Cannot accommodate changing requirements.