The following are the most common steps in the Waterfall model:
- Requirements: During this initial phase, requirements are elicited from stakeholders and analyzed. The results are placed in a requirements document.
- Design: In the design phase, technical design specifications are created. The specifications detail how the requirements will be fulfilled by the technical solution.
- Implementation: This phase represents the actual work of coding. The design specifications are implemented in code.
- Verification: During this phase, testing is conducted to ensure that the implementation works correctly and that the requirements are fulfilled.
- Maintenance: Once the software has been deployed, the life cycle enters this phase for bug fixes and other enhancements.
There is also a variation in the Waterfall model wherein the names of the individual steps differ. For example, coding may be used instead of implementation, or testing may be used instead of verification. Some organizations add more steps to the process. There may be a separate step for analysis that occurs before the design phase, or one for deployment that occurs after the verification phase.
The Waterfall model has gone out of favor, but if the following is true (which is often not the case), the project may be a candidate for this model:
- The team is already very knowledgeable regarding the project's business domain, business rules, and functionality
- The requirements are well understood and unlikely to change
- The scope of the project is set and stable
- The team understands the technology and the architecture well, and those are unlikely to change
- The project is not large in size and does not have a high degree of complexity
- It is acceptable that a working version of the software will not be available to internal or external stakeholders until later phases
- The project is constrained by a time frame/deadline that has already been decided