Page366
Application Development Methods
Computer programming dates to the dawn of electronic computers, in the late 1940s. Programmers first used machine code or assembly; the first high-level programming language was Fortran, which debuted in 1954. The original computer programmers often worked alone, creating entire programs as a solo effort. In that case, project management methodologies were simple or unnecessary: the programmer could sometimes conceptualize the entire project in (human) memory, and then simply write the code. As software has grown in complexity, software programming has increasingly become a team effort. Team-based projects require project management: providing a project framework with deliverables and milestones, divvying up tasks, team communication, progress evaluation and reporting, and (hopefully) a final delivered product.
Ultimately, large application development projects may closely resemble projects that have nothing to do with software, like making widgets or building bridges. Application development methods such as the Waterfall and Spiral Models are often close cousins to non-programming models. These methods can be thought of as project management methods, with additional features to support the creation of code.
Waterfall Model
The Waterfall Model is a linear application development model that uses rigid phases; when one phase ends, the next begins. The Waterfall Model predates software design and was first used in manufacturing. It was first used to describe a software development process in 1969, when large software projects had become too complex to design using informal methods. Steps occur in sequence, and the unmodified waterfall model does not allow developers to go back to previous steps. It is called the waterfall because it simulates water falling: it cannot go back up.
Dr. Winston W. Royce first described the Waterfall Model in relation to developing software in “Managing the Development of Large Software Systems” (see http://leadinganswers.typepad.com/leading_answers/files/original_waterfall_paper_winston_royce.pdf). Royce’s unmodified waterfall (with no iteration, sometimes called “stagewise”) is shown in Fig. 9.2, and includes the following steps: System Requirements, Software Requirements, Analysis, Program Design, Coding, Testing, and Operations.
Unmodified waterfall development model [7].