To be aware of a number of generic models for structuring the software development process
To appreciate the pros and cons of these models, in particular those of the planning-driven and agile methods
To understand the similarities between software maintenance and software evolution
To recognize that it is profitable to apply software product-line engineering when developing a series of similar systems
To be aware of process modeling as a way to describe software development processes explicitly
To be able to assess progress during software development, one opts for a phased approach with a number of well-defined milestone events. The linear ordering of activities which underlies the traditional software development model, the waterfall model, renders it an impossible idealization of reality. It assumes software development proceeds in an orderly, sequential manner. Real projects proceed in far less rational ways. The waterfall model of software development is not feasible, much as Escher's Waterfall, on the front cover, is infeasible. This chapter discusses various alternative models of the development process.
In Chapter 1, we introduced a simple model of the software life cycle. We distinguished several consecutive phases: requirements engineering, design, implementation, testing, and maintenance. It was stated that, in practice, one often uses more sophisticated process models. In this chapter, we continue this discussion. ...