# Simulating the Software Development Lifecycle: The Waterfall Model
## 2 Background
### The Waterfall Model  
[PERSON] [34] presents what is colloquially known as \"the waterfall model\" as \"the classical model of software engineering\" as well as \"one of the oldest models\" [26]. [PERSON] and [PERSON] [15] also support this characterization of the waterfall model as \"the oldest of these, and the best known\". [PERSON] [16] describes it as \"the initial life-cycle model\", \"now termed the waterfall model\". We should point out that the model is based on and expands on the work of [PERSON] (which was introduced earlier). This waterfall model is classified by [PERSON] et al. [35] under the category of \"structured design\", who go on to note that this category replaced \"the previous ad hoc and undisciplined approach\" that was being used to develop software. [PERSON] [36] shares that he \"can't find a rigorous definition\" for the original waterfall model. Also known as the cascade model [27], the waterfall model is described as \"a sequential design process, often used in software development processes, in which progress is seen as flowing steadily downwards (like a waterfall) through the phases\" [15]. As [PERSON] [16] describes it, the \"model consists of a set of phases, starting with system specification, with results cascading from one stage to another\".  
Thus, \"the waterfall metaphor was suggested by the inability of water to flow uphill\" [36]. The phases run individually one at a time and \"all process phases (planning, design, development, testing and deployment) are performed in a sequential series of steps\" [22] where the \"output of each stage becomes the input for the next\" [15]. [PERSON] et al. [22] elucidate that \"each phase starts only when the previous one has ended\". There is a bit of debate as to the origins of the label \"waterfall\" to describe a life cycle approach, with the first use \"often attributed either to [PERSON] or to critics of his CO-COMO estimating technique\" [36]. However, [PERSON] et al. [37] point out that, traditionally, it is credited to the work of [PERSON] [38]. Indeed, colloquially the development of what is referred to as the waterfall model is attributed to his article entitled \"Managing the Development of Large Software Systems\", which introduced the model in Figure 3 of that paper, although the word waterfall does not explicitly appear in his text. The earliest use of \"waterfall\" to define [PERSON]'s [38] model that we could identify was in the 1976 work of [PERSON] [39], where they write, \"[[PERSON]] introduced the concept of the \"waterfall\" of development activities\".  
In Royce's [38] original work, the model is presented as having seven phases: \"Systems Requirements\", \"Software Requirements\", \"Analysis\", \"Program Design\", \"Coding\", \"Testing\", and \"Operations\". However, many [PERSON] can be found in the literature (for example, in [PERSON] et al. [37] and [PERSON] et al. [40]) that modify the exact delineation and description of phases. The waterfall model has received considerable criticism regarding its suitability for development. [PERSON] [36] points out that \"the key attribute of the so-called 'waterfall approach' seems to be extreme inflexibility\", explaining that \"once you've completed a phase, its results are frozen. You can't go back and revise anything based on changing needs or fresh insights\". The author reiterates this point, writing, \"until the results of the current phase are complete and approved, you may not start on any work that properly belongs to the next phase or any later phase\" [36].