Which life cycle is best for your project?
When choosing a development life cycle, don't just trust your feelings. Decide based on factors that really matter.
Which life cycle will work best for your project? This is an important strategic question because making the wrong choice could lead to disastrous results of catastrophic proportions. Think about delayed deliveries, unhappy clients, project overruns, and canceled projects.
During the 80’s and early 90’s, the waterfall model was the de-facto in project delivery. With the rapid pace in software development and popular use of the Internet, many companies started shifting to more flexible life cycles such as the iterative, incremental, spiral, and agile. These new life cycle methods provide more flexibility and support fast-paced development, giving companies the edge in delivering “the first” in the industry. To date, there are dozens of life cycle methods available to choose from, each having its own advantages and disadvantages.
Here are some of the more popular life cycles:
Waterfall
This traditional life cycle method has been around for decades and has proven its ability to deliver. In fact, the US Department of Defense was actively promoting the use of this method in all its projects when it published Standard 2167A in 1998.
Waterfall is defined as a sequential development model with clearly defined deliverables for every phase. Many industry practitioners are strict in performing audit reviews to ensure that the project has satisfied the input criteria before continuing to the next phase.
The standard phases of waterfall are shown in the diagram below:
Iterative, Incremental
The main objective of iterative development is to build the system incrementally, starting from basic partial system features and gradually adding more features until the entire system is completed. Compared to waterfall, iterative development allows flexibility in accommodating new requirements or changes thereof. It also provides room for improvement in succeeding iterations based on lessons learned from previous iterations.
The diagram below, courtesy of Microsoft’s MSF, clearly shows how iterations are scheduled and delivered:
Agile
Agile methodologies arose from the need to develop software applications that could accommodate the fast-paced evolution of the Internet. Agile is, in some way, a variant of iterative life cycle where deliverables are submitted in stages. The main difference is that agile cuts delivery time from months to weeks. Companies practicing agile are delivering software products and enhancements in weeks rather than in months. Moreover, the agile manifesto covered development concepts aside from the delivery life cycle, such as collaboration, documentation, and others.
The diagram from Microsoft MSF shows the various components of an agile life cycle:
Other Variants
There are more life cycle methods and methodologies being practiced including Test Driven Development, RUP, Cleanroom, and others. However, all these life cycles can be generally classified into waterfall--being sequential, with clear and strict cut-off between phases; as well as iterative or agile--being repetitive with flexible cut-off rules.



