The Successful Software Manager
上QQ阅读APP看书,第一时间看更新

The Waterfall model

The Waterfall model is considered the traditional methodology of software development. It is widely attributed to Dr. Winston W. Royce, who published a whitepaper called Managing the Development of Large Software Systems in 1970 (http://www-scf.usc.edu/~csci201/lectures/Lecture11/royce1970.pdf).

This paper describes Royce's personal views on managing large software systems, but, in fact, does not use the word waterfall to describe the linear process of software development. The seminal point about the paper was the relationship between each stage in the development life cycle. There is a downstream flow, plus an upstream flow, signifying the chance to iterate.

As such, a key difference between Waterfall and Agile is the focus of Waterfall to be iterative between life cycle stages, while Agile's focus is to be incremental in its overall delivery.

An obvious drawback of the Waterfall model is the reliance on comprehensive requirements to be known and collected early on in the development life cycle. For projects involving large-scale systems, as declared in the title of Royce's whitepaper, this is still the preferred approach due to its meticulousness. By design, it obliges each stage to be at least confident and complete before progressing to the next, as can be seen Figure 2.8:

Figure 2.8: The classic Waterfall model
Source: http://www-scf.usc.edu/~csci201/lectures/Lecture11/royce1970.pdf