Every software development effort goes through a process, called a life cycle, that includes all the steps and activities that lead to the product's initial release. It is possible to build a model of this life cycle that illustrates the activities at some level of abstraction, and that serves to establish the order in which a project specifies, implements, tests, and performs its activities. A well-built life cycle model can streamline a project and ensure that each step moves the project closer toward its goal.
Modern processes for application development have evolved over time from best practices derived from very traditional processes, such as those represented by the Waterfall Model and the Spiral Model. As a way of providing background information for the rest of this chapter, we first take a look at the main characteristics of these two models. Then we look at the Unified Process and the MSF Development Process Model.