The Capability Maturity Model (CMM) of the Software Engineering Institute (SEI) describes the maturity of software development organisations on a scale of 1 to 5.

According to the SEI, "Predictability, effectiveness, and control of an organization's software processes are believed to improve as the organization moves up these five levels. While not rigorous, the empirical evidence to date supports this belief."

  • CMM level 1 (initial): Software development follows little to no rules. The project may go from one crisis to the next. The success of the project depends on the skills of individual developers. They may need to finish the project in an heroic effort.

  • CMM level 2 (repeatable): Software development successes are repeatable. The organization may use some basic project management to track cost and schedule. The precise implementation differs from project to project within the organisation.

  • CMM level 3 (defined): Software development across the organisation uses the same rules and events for project management. Crucially, the organization follows this process even under schedule pressures, ideally because management recognizes that it is the fastest way to finish.

  • CMM level 4 (managed): Using precise measurements, management can effectively control the software development effort. In particular, management can identify ways to adjust and adapt the process to particular projects without measurable losses of quality or deviations from specifications.

  • CMM level 5 (optimizing): Quantitative feedback from previous projects is used to improve the project management, usually using pilot projects, using the skills shown in level 4.

Table of contents
1 Praises
2 Criticisms
3 External links


The CMM was invented to give military officers a quick way to assess and describe contractors' abilities to provide correct software on time. It has been a roaring success in this role. So much so that it caused panic-stricken salespeople to clamor for their engineering organizations to "implement CMM."

The CMM reliably assesses an organization's sophistication about software development.


The CMM does not describe how to create an effective software development organization. The traits it measures are in practice very hard to develop in an organization, even though they are very easy to recognize.

The CMM has been criticized for being overly bureaucratic and for promoting process over substance. In particular, for emphasizing predictability over service provided to end users. More commercially successful methodologies have focused not on the capability of the organization to produce software to satisfy some other organization or a collectively-produced specification, but on the capability of organizations to satisfy specific end user "use cases".

The CMM's division into levels has also been criticized in that it ignores the possibility that a single group may exhibit all of the behaviors and may change from behavior to behavior over time. There is also the implication that a group must move from step to step and that it is impossible for a project group to move from one to five without going through intermediate steps.

For more information about how to organize such projects, see avionics software.

External links