The waterfall model is a sequential software development process model that follows the following defined phases:
Using the software development life cycle's (SDLC) common steps, the waterfall model enforces moving to the next phase only after completion of the previous phase.
Returning to a previous phase is frowned upon unless there is a clear need to do so.
As its name implies, the phases in the waterfall model consistently progress downward.
These phases should be followed in sequence to be effective, and in some industries - such as construction and manufacturing - the process must be followed.
In theory, the waterfall model sounds like a good practice, but it has been criticized by many in the software development industry.
First, an SDLC phase cannot be perfected before moving to the following phase.
Also, in its literal form this model lacks flexibility for requirement and design adjustments, which makes it highly difficult for programmers and developers to integrate design adjustments.
However, there are some sound principles from the waterfall model that can be applied to successful software development, including:
The waterfall model was an early attempt to provide structure, metrics and control to the development of large and complex application systems, usually mainframe systems, which has largely been replaced by the agile model, which is better suited to software development.