Many people view the software development life cycle as that time between when a programmer sits down to write the first line of code for a program to when the completed program successfully compiles and executes. Successful software development organizations have much more complete definitions of a software life cycle. These life cycle definitions start with early requirements gathering and analysis stages and proceed through ongoing operations and maintenance. The maturity of a software development organization, in fact, is closely related to its understanding of the software life cycle and the underlying processes and procedures required to successfully develop software. The Software Engineering Institute has captured this in a model, called the Capability Maturity Model for Software. This is a model for judging the maturity of the software processes of an organization and for identifying the key practices required to increase the maturity of these processes. This chapter introduces the Capability Maturity Model and then discusses how it applies during the software life cycle, from initial requirements definition to production acceptance.