Just about anything that you can think of has a lifecycle. For example, a car begins in an assembly plant, goes to the dealer, and is bought by someone who drives it a few years, before it goes to a used car lot where someone else buys it, before it eventually ends up in the junkyard. You can track the life of an individual car with online services now, such as AutoTrader (
http://www.autotrader.com/) or CARFAX (
http://www.carfax.com/). Like cars, software has a lifecycle. Someone develops an idea, creates a design around that idea, builds the application, places it in a production environment, maintains the software, and eventually retires the software when it's no longer needed. Buying a used car without researching it can end up in a bad purchase that will cost you considerable money in maintenance and other costs. Likewise, understanding the software lifecycle is crucial if you want to avoid unnecessary costs and delays. Software, like cars, can become an albatross around your neck.
Unlike cars, studying the lifecycle of software isn't a straightforward process. In fact, the Machiavellian threads of some software designs prove quite impossible to untie, making any kind of analysis impossible. Fortunately, choosing a sticking-to-a-lifecycle model helps you keep your sanity and makes the software development process easier. This chapter also reviews a number of lifecycle models — those in common use by industry today. You can probably ...