Waterfall model
Waterfall model
The waterfall model is a linear sequential approach to software development and systems engineering. It was first described by Dr. Winston W. Royce in a 1970 paper, though Royce himself advocated for iterative feedback between phases. The model divides a project into discrete phases that must be completed in order, with each phase producing defined deliverables before the next begins.
History
The waterfall model gained prominence in the 1970s and 1980s as one of the earliest formalized software development methodologies. It was influenced by manufacturing and construction models where changes are costly after a phase is finished. Despite Royce’s original caveats, the model became widely adopted for projects with stable requirements and low uncertainty. Its rigid structure led to later criticism and the development of agile software development methods.
Phases
Typical phases of a waterfall project include:
- Requirements analysis – gathering and documenting what the system must do
- System design – defining the overall architecture and components
- Implementation – writing the code
- Integration and testing – verifying that the system meets requirements
- Deployment – releasing the system to users
- Maintenance – fixing issues and making enhancements after release
Each phase must be fully completed before the next begins, with formal sign-offs and documentation.
Advantages and disadvantages
Advantages include clear milestones, predictable schedules and budgets, and thorough documentation. Disadvantages include difficulty accommodating changing requirements, late discovery of flaws, and long delays before users see working software. These drawbacks spurred the adoption of iterative and incremental models such as spiral model and agile development.