The Waterfall Model, otherwise known as the Linear Sequential Model, is an approach to development that emphasizes completing a phase of the development before proceeding to the next phase. In conjunction with certain phase completions, a baseline is established that "freezes" the products of the development at that point. If a need is identified to change these products, a formal change process is followed to make the change. The graphic representation of these phases in software development resembles the downward flow of a waterfall.
Each box in the above figure represents a phase. Output from each phase includes documentation. Transition from phase to phase is accomplished by holding a formal review that is attended by the different parties concerned. These reviews provide all parties insight into the system developer's progress. At critical points on the waterfall model, baselines are established, the last of which is the product baseline. This final baseline is accompanied by audits.
The Waterfall Model is best suited for projects that includes hardware as its major component. The waterfall development model has its origins in the manufacturing and construction industries; highly structured physical environments in which after-the-fact changes are prohibitively costly, if not impossible. Since no formal software development methodologies existed at the time, this hardware-oriented model was simply adapted for software development.
But there are differences between hardware and software that the waterfall model does not address. Unlike hardware, software requires no fabrication. "Once the drawings and models (programs) are complete, the final product exists." Using the analogies of house building and sculpting to make the point, hardware projects begin with a good understanding of the requirements, and that once fabrication begins, changes are restricted to the cosmetic and minor items. Sculpting can be a less rigid exercise in the sense that moldable clay can be added, removed, or otherwise rearranged. The problem with the waterfall model is that the flow is optimized for hardware, thereby neglecting the essential characteristics of software.
Many software development methodologies have evolved from attempts to optimize the waterfall model for software. For example, software prototyping helps provide the complete understanding of the requirements that is typical of hardware production -- which understanding is critical to the waterfall model. Two other examples are the incremental and spiral models, which allow the phases identified above to be revisited repeatedly prior to declaring a product to be final. Such revisiting is very costly in hardware development and is to be used sparingly according to the waterfall model.
For an in-depth study of the waterfall model, click here.