The Waterfall model is a linear, sequential approach to the software development lifecycle (SDLC) that’s popular in software engineering and product development.
The Waterfall model uses a logical progression of SDLC steps for a project, similar to the direction water flows over the edge of a cliff. It sets distinct endpoints or goals for each phase of the development process. Those endpoints or goals can’t be revisited after their completion.
Dr. Winston W. Royce at the Lockheed Software Technology Center introduced the concept in a paper published in 1970 on his experience developing software for satellites. However, Royce didn’t use the term Waterfall; instead, he referred to the downstream value of documentation.
The Waterfall model continues to be used in industrial design applications. It’s often cited as the first software development methodology. The model is also used more generally as a high-level project management methodology for complicated, multifaceted projects.
Who uses the Waterfall model?
Project teams and project managers use the Waterfall model to achieve goals based on the needs of their business. The model is used in many different project management contexts, such as in construction, manufacturing, IT and software development.
In the Waterfall methodology, each step is dependent on the output of the previous step. There’s a linear progression to the way these projects unfold.
For example, in construction, these three general steps are usually followed:
- A building’s physical design is created before any construction begins.
- The foundation is poured before the skeleton of a building is erected.
- The skeleton of the building is completed before the walls are built.
On a manufacturing line, steps are followed sequentially in a controlled order when building a product until the finished deliverable is created.
The Waterfall model doesn’t include a project’s end users or clients as much as other development methodologies. Users are consulted during the initial stages of gathering and defining requirements, and client feedback is incorporated after that. By leaving the client out of the main part of the Waterfall process, the development team moves quickly through the phases of a project.
This methodology is good for teams and projects that want to develop a project according to fixed or unchanging requirements set forth at the beginning of the project. Waterfall projects have a high degree of process definition with little or no output variability. Waterfall is also a good choice if the project has cost or time constraints.
Projects based on the Waterfall method are well defined, are predictable and have specific documentation. They have the following characteristics: fixed requirements, ample resources, an established timeline and well-understood technology. They usually aren’t likely to require significant changes.
Waterfall aims to achieve its goals on the first try. So, in software development processes, if an application must work out of the box immediately at the risk of losing customers or some other serious issue, Waterfall is a suitable method. Contrast that with the Agile project management and development model. Agile methods use ongoing reiteration. Its iterative approach involves designing, developing and testing software in repeated cycles that build upon each other.
Phases of the Waterfall model
When used for complex projects, such as software development, the Waterfall development methodology has seven stages:
- Requirements. Potential project requirements, deadlines and guidelines for the project are analyzed and placed into a formal requirements document, also called a functional specification. This first phase of development defines and plans the project without mentioning specific processes. It also defines the project scope, team members, stakeholders, process for requirements gathering, reporting of project progress, use of aids such as templates and workflow diagrams, and an overall roadmap of the project.
- Analysis. The system specifications are analyzed to generate product models and business logic to guide production. This is also when financial and technical resources are audited for feasibility.
- Design. A design specification document is created to outline technical requirements during the design phase. These include the programming language, hardware, data sources, architecture and services.
- Coding and implementation. The source code is developed using the models, logic and requirement specifications designated in the previous phases. Typically, the system is coded in smaller components, or units, before being put together.
- Testing. This is when quality assurance and unit, system and beta tests identify issues that must be resolved. This forces a repeat of the coding stage for debugging. If the system passes integration and testing, the Waterfall process continues forward.
- Operation and deployment. The product or application is deemed fully functional and is deployed to a live environment.
- Maintenance. Corrective, adaptive and perfective maintenance is carried out indefinitely to improve, update and enhance the product and its functionality. This could include releasing patch updates and new versions.
Before moving to the next phase in the Waterfall process, there’s usually a review and sign-off to ensure all defined goals have been met. For example, developers ensure each unit of technology is properly integrated in the implementation phase before moving to the testing phase.
Advantages of the Waterfall model
The Agile methodology is often used in place of the Waterfall model. However, there are advantages to the Waterfall vs. Agile approaches, such as the following:
- The Waterfall approach lets large or changing teams move toward a common goal that’s been defined in the requirements stage.
- It forces a structured, disciplined approach.
- It simplifies understanding, following and arranging tasks.
- It facilitates departmentalization and managerial control based on the schedule or deadlines.
- It reinforces good coding habits to define before implementing design and then code.
- It facilitates early system design and specification changes.
- It clearly defines milestones and deadlines.
Disadvantages of the Waterfall model
Disadvantages of the Waterfall model typically center around the risk associated with a lack of revision and flexibility. Specific issues include the following:
- Waterfall design isn’t adaptive; when a flaw is found, the entire process often needs to start over.
- The methodology doesn’t incorporate midprocess user or client feedback and makes changes based on results.
- The Waterfall model delays testing until the end of the development lifecycle.
- It doesn’t consider error correction.
- It doesn’t handle requests for changes, scope adjustments and updates well.
- Waterfall doesn’t let processes overlap for simultaneous work on different phases, reducing overall efficiency.
- No working product is available until the later stages of the project lifecycle.
- Waterfall isn’t ideal for complex, high-risk ongoing projects.
Waterfall model software and tools
Gantt charts are a common management tool for Waterfall projects. These charts enable easy visualization of sequential phases, letting project managers map dependencies and subtasks for each phase of the process. They also provide a clear view of timelines and deadlines for each phase.
Project management software often incorporates other tools to help Waterfall-based teams complete their tasks. Some important capabilities to have in project management software include team collaboration, note-taking, testing and development, and data analytics and visualization.
Alternatives to Waterfall
Besides Agile software development methods, alternatives to the Waterfall process include the following:
Despite the popularity of other project management approaches, the Waterfall model still has an important role to play. It may be integrated with other models to provide hybrid solutions, used in regulated industries, such as healthcare and defense. It can also be used as an educational tool and to support legacy projects.
Software development teams often choose between the Waterfall and Scrum methodologies. Learn how this lightweight version of Agile works and how it compares to the Waterfall method.