Chapter 3. The Software Life Cycle Revisited


  • 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. ...

Get Software Engineering: Principles and Practice now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.