What is Waterfall Model ?
Waterfall model is a sequential and linear model for software design and development process. Sequential phases (Requirements, Design, Implementation, Testing, Delivery, Maintenance) forms waterfall model and Each sequential phase is completed before the next phase begins. The sequential phases flow downwards in one direction therefore the name of the model is “waterfall”. There is no overlap between the phases. This model takes its name from the linear and successive phases required to develop the product.
Waterfall project management is a traditional methodology. It was first used in construction and manufacturing industries then it became popular for software development.
The sequential phases (Requirements, Design, Implementation, Testing, Delivery, Maintenance) of the waterfall model in software engineering was first presented by Herbert D. Benington in the 1950’s. However Winston W Royce published an article in 1970 and described the waterfall model. Royce did not use the term waterfall directly in his article , he described the software development process.The term”waterfall “ was first used in the article “Software requirements: Are they really a problem? by Bell and Thayer in 1976.
A United States defense standard “Defense Systems Software Development” involved this approach and described the contractors software development process in 1985.
Phases of the Waterfall Model
Generally implementing waterfall model for a software development process involves six phases and each phase begins only if the previous phase is complete. There may be minor changes in numbers and descriptions of each phase depending on the product. Below are the six phases of the waterfall model.
1.Requirements (System and Software Requirements)
System and Software Requirements phase is the first phase of the waterfall model. Software, product or project requirements are determined and specified at this step. Business needs, requirements of the product are documented in a product requirements document (PRD). Main purpose of this document is to allow people to understand what a product should do.
After the completion of System and Software Requirements phase, design phase comes. Product or software requirements are analyzed and system is designed based on the outputs of the first phase. Business logic, schemas, models and diagrams are generated to model the product.
Implementation phase is also known as coding or development phase. Code of the software is written based on the inputs of the design phase at this step. Business logic, schemas, models and diagrams created at the design phase are used at this step.
After the completion of the coding phase, quality tests, α-tests, β-tests and other necessarry tests are performed and errors and issues are reported. Testing is performed for systematic discovery and debugging of defects. If the problems are unmasterable, it will be a good idea to inspect previous phases to identify the root cause of the problems.
5. Deployment of System (Delivery)
Once all the tests have been performed and all the issues are resolved the product is ready for deployment. Deployment is to make the product live on production environment.
Maintenance phase is one of the most important phase of a product or software. After the deployment of the product to the customer, some modifications may be required to improve the performance. These modifications arise either due to change requests demanded by the customer, or defects uncovered during the use of the product or software.
Advantages of the Waterfall Model
Classical waterfall model is very simple, so that it was implemented for software or product development in the past. Nowadays this model is not used. It may still provide some benefits for projects that require stringent phases. Below are some advantages of the waterfall model.
– It is a simple method and easy to use.
– Phases of the waterfall model are very clear and easy to understand
– There is no overlap between the phases.
– It is suitable for smaller projects where requirements are well understood.
– Scope, target and milestones are clearly defined
– It allows for early design changes
– It is easy to manage
– Requirements are well understood
– Phases and requirements are documented well in this model.
Disadvantages of the Waterfall Model
Below are some advantages of the waterfall model.
-The waterfall model does not allow much revision.
– It is not suitable for large and complex projects
– If there is a problem occured in one of the phases, it is expensive and time consuming to turn back and fix the problem.
– The waterfall model does not include a feedback path. It does not incorporate any system for error correction.
– It is not suitable for projects with uncertain scope.
– It is not suitable for long and ongoing projects.
– Risk and uncertainty are high
– The model assumes that there is no overlap between the phases. However in real projects, phases may overlap.
Waterfall method is a simple method for planning projects. Each phase is completed before the next phase begin. It is very useful for smaller projects with well defined scope and requirements. A proper planning should be made before to implement waterfall project management model and each team member should understand their roles. This model was very popular in the past but nowadays it is not used. On the other hand it still remains useful for certain types of projects. Other project management methodologies such as agile and scrum are more popular in the software industry.
• Bell, Thomas E., and T. A. Thayer. Software requirements: Are they really a problem?
• Royce, Winston (1970), “Managing the Development of Large Software Systems“