Jump to content

Capability Maturity Model

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by Pangloss (talk | contribs) at 16:29, 1 October 2004 (Levels). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

The Capability Maturity Model (CMM) of the Software Engineering Institute at Carnegie Mellon University describes the maturity of software development organisations on a scale of 1 to 5. It has been used extensively for avionics software and for government projects since it was created in the mid-1980s. The Software Engineering Institute has subsequently released a revised version known as the Capability Maturity Model Integration (CMMI).

Levels

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.

Recent versions of CMMI from SEI indicate a "level 0", characterized as "Incomplete". Many observers leave this level out as redundent or unimportant, but Pressman and others make note of it. See page 18 of the August 2002 edition of CMMI from SEI.

Anthony Finkelstien extrapolated that negative levels, or the Capability Immaturity Model, are necessary to represent environments that are not only indifferent, but actively counterproductive, and this was refined by Tom Schorsch:

  • CMM level 0 (negligent)
  • CMM level -1 (obstructive)
  • CMM level -2 (Contemptuous)
  • CMM level -3 (undermining)

Praises

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.

Statistics from IBM, Motorola, Logica, BT and others suggest the following: It takes 18 months on average to move up one SEI level, but it has been done in 8. Defect rates can be lowered from 1 per 1,000 lines of code (typical of Microsoft and its peers) down to 1 per 1,000,000 lines (which is roughly Six Sigma quality of Deming fame). There is not particular evidence for shortening time to market, but there is for increasing the accuracy of estimating completion date from 75% overruns on average at level 1, to plus or minus 2% at level 5. Data on productivity increases is more variable, but it is at least a doubling of productivity.

Criticisms

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.

The CMM is an important tool for outsourcing and exporting jobs. Economic development agencies in India, Ireland, and elsewhere have praised the CMM for enabling them to compete for US outsourcing contracts. This has been very positive for software engineers in emerging economies, especially in India. This has had severe consequences for software engineers in the USA and Europe.

See also