A framework that describes the key elements of an effective software process. The CMM covers practices for planning, engineering and managing software development and maintenance. When followed, these key practices improve the ability of organizations to meet goals for cost, schedule, functionality and product quality.