A
method that breaks up the process of
software product development into distinct
stages. It generally outlines the
ideal method, as hard as it may be to follow, in which a product is developed. It also assumes one
phase will spill over (pun intended) into the next one. One stage must be finished (or very close to it) before moving on to the next stage. The
waterfall analogy also implies that it is difficult to return to a previous stage much like how it would be difficult/impossible to paddle up a real-life waterfall.
Here is a simple example of a development waterfall:
1.
Analysis
2.
Design
3.
Implementation/
Coding
4.
Testing
5.
Maintenance
Here is one for testing:
1. Test Planning
2. Test Design
3. Test Implementation
4. Test Execution
5. Execution Analysis
6. Result Documentation
7. Final Reporting
Unfortunately, as
logical as this model may seem, this method of product development is very inefficient and not effective in real-world situations. Because the analysis or design is done before any coding (for software design), if the
requirements of the program should change, and they almost always do, then the developers must either repeat their analysis and design and start from scratch or try to add to the existing code (remember the waterfall analogy). In either case all the work and time spent on the analysis and design phases is wasted. It is because of this that the waterfall model is now almost extinct. There are several other models for product development that are now far more popular. A couple of these are the
Spiral process, in which each loop in the spiral will add a more features and functionality to the product, and
eXtreme Programming (or
XP), which introduces some revolutionary ideas about how programming should be carried out.