I feel a little sorry for the waterfall model. Poor waterfall gets a lot of grief from the agilists – many who live in a black & white world where anything non-agile must be waterfall.
I was doing some research this weekend and read this paper from the inventor of waterfall, Winston Royce. Royce knew exactly how the model was flawed - in describing the model, Royce states:
I believe in this concept, but the implementation described above is risky and invites failure. The testing phase which occurs at the end of the development cycle is the first event for which timing, storage, input/output transfers, etc., are experienced as distinguished from analyzed. …if these phenomena fail to satisfy the various external constraints, then invariably a major redesign is required. A simple octal patch or redo of some isolated code will not fix these kinds of difficulties. The required design changes are likely to be so disruptive that the software requirements upon which the design is based and which provides the rationale for everything are violated. Either the requirements must be modified, or a substantial change in the design is required. In effect the development process has returned to the origin and one can expect up to a 100-percent overrun in schedule and/or costs.
I was most surprised by a section in the paper named Do It Twice.
If the computer program in question is being developed for the first time, arrange matters so that the version finally delivered to the customer for operational deployment is actually the second
version insofar as critical design/operations areas are concerned
Royce never intended for the model to be executed once – he foresaw the need to iterate within the confines of waterfall – it’s just that nobody ever used his model that way.
No big point here – just interesting information I wanted to share.