Actions

Capability Maturity Model (CMM)

Capability Maturity Model is a bench-mark for measuring the maturity of an organization’s software process. It is a methodology used to develop and refine an organization’s software development process. CMM can be used to assess an organization against a scale of five process maturity levels based on certain Key Process Areas (KPA). It describes the maturity of the company based upon the project the company is dealing with and the clients. Each level ranks the organization according to its standardization of processes in the subject area being assessed.[1]


History of Capability Maturity Model (CMM)

Historical Background of the Capability Maturity Model[2]

The Capability Maturity Model (CMM) is a development model created after study of data collected from organizations that contracted with the U.S. Department of Defense, who funded the research. In the 1980s, several US military projects involving software subcontractors ran over-budget and were completed far later than planned, if at all. In an effort to determine why this was occurring, the United States Air Force funded a study at the Software Engineering Institute (SEI).

The first application of a staged maturity model to IT was not by CMU/SEI, but rather by Richard L. Nolan, who, in 1973 published the stages of growth model for IT organizations. Watts Humphrey began developing his process maturity concepts during the later stages of his 27-year career at IBM

Active development of the model by the US Department of Defense Software Engineering Institute (SEI) began in 1986 when Humphrey joined the Software Engineering Institute located at Carnegie Mellon University in Pittsburgh, Pennsylvania after retiring from IBM. At the request of the U.S. Air Force he began formalizing his Process Maturity Framework to aid the U.S. Department of Defense in evaluating the capability of software contractors as part of awarding contracts.

The result of the Air Force study was a model for the military to use as an objective evaluation of software subcontractors' process capability maturity. Humphrey based this framework on the earlier Quality Management Maturity Grid (QMMG) developed by Philip B. Crosby in his book "Quality is Free". Humphrey's approach differed because of his unique insight that organizations mature their processes in stages based on solving process problems in a specific order. Humphrey based his approach on the staged evolution of a system of software development practices within an organization, rather than measuring the maturity of each separate development process independently. The CMM has thus been used by different organizations as a general and powerful tool for understanding and then improving general business process performance. Watts Humphrey's Capability Maturity Model (CMM) was published in 1988 and as a book in 1989, in Managing the Software Process.

Organizations were originally assessed using a process maturity questionnaire and a Software Capability Evaluation method devised by Humphrey and his colleagues at the Software Engineering Institute.

The full representation of the Capability Maturity Model as a set of defined process areas and practices at each of the five maturity levels was initiated in 1991, with Version 1.1 being completed in January 1993. The CMM was published as a book in 1995 by its primary authors, Mark C. Paulk, Charles V. Weber, Bill Curtis, and Mary Beth Chrissis. United States of America New York, USA.

The CMM model's application in software development has sometimes been problematic. Applying multiple models that are not integrated within and across an organization could be costly in training, appraisals, and improvement activities. The Capability Maturity Model Integration (CMMI) project was formed to sort out the problem of using multiple models for software development processes, thus the CMMI model has superseded the CMM model, though the CMM model continues to be a general theoretical process capability model used in the public domain.

The CMM was originally intended as a tool to evaluate the ability of government contractors to perform a contracted software project. Though it comes from the area of software development, it can be, has been, and continues to be widely applied as a general model of the maturity of process (e.g., IT service management processes) in IS/IT (and other) organizations.

Understanding the Capability Maturity Model (CMM)

What Does the Capability Maturity Model (CMM) Do?[3]
The Capability Maturity Model (CMM) is a way to develop and refine an organization's processes. The first CMM was for the purpose of developing and refining software development processes. A maturity model is a structured collection of elements that describe characteristics of effective processes. A maturity model provides:

  • a place to start
  • the benefit of a community’s prior experiences
  • a common language and a shared vision
  • a framework for prioritizing actions
  • a way to define what improvement means for your organization

A maturity model can be used as a benchmark for assessing different organizations for equivalent comparison. It describes the maturity of the company based upon the project the company is dealing with and the clients.


More on The Capability Maturity Model (CMM)

  • It is not a software process model. It is a framework which is used to analyse the approach and techniques followed by any organization to develop a software product.
  • It also provides guidelines to further enhance the maturity of those software products.
  • It is based on profound feedback and development practices adopted by the most successful organizations worldwide.
  • This model describes a strategy that should be followed by moving through 5 different levels.
  • Each level of maturity shows a process capability level. All the levels except level-1 are further described by Key Process Areas (KPA’s).[4]


Components of Capability Maturity Model (CMM)

The components of the CMM include:[5]

  • Maturity levels:A maturity level is a well-defined evolutionary plateau toward achieving a mature software process. The five maturity levels provide the top-level structure of the CMM.
  • Process capability: Software process capability describes the range of expected results that can be achieved by following a software process. The software process capability of an organization provides one means of predicting the most likely outcomes to be expected from the next software project the organization undertakes.
  • Key Process Areas (KPA): Each maturity level is composed of key process areas. Each key process area identifies a cluster of related activities that, when performed collectively, achieve a set of goals considered important for establishing process capability at that maturity level. The key process areas have been defined to reside at a single maturity level. For example, one of the key process areas for Level 2 is Software Project Planning.
  • Goals: The goals summarize the key practices of a key process area and can be used to determine whether an organization or project has effectively implemented the key process area. The goals signify the scope, boundaries, and intent of each key process area. An example of a goal from the Software Project Planning key process area is "Software estimates are documented for use in planning and tracking the software project." See "Capability Maturity Model for Software, Version 1.1" [Paulk93a] and Section 4.5, Applying Professional Judgment, of this document for more information on interpreting the goals. (kp PP.GO.1)
  • Common Features: The key practices are divided among five Common Features sections: Commitment to Perform, Ability to Perform, Activities Performed, Measurement and Analysis, and Verifying Implementation. The common features are attributes that indicate whether the implementation and institutionalization of a key process area is effective, repeatable, and lasting. The Activities Performed common feature describes implementation activities. The other four common features describe the institutionalization factors, which make a process part of the organizational culture.
  • Key practices: Each key process area is described in terms of key practices that, when implemented, help to satisfy the goals of that key process area. The key practices describe the infrastructure and activities that contribute most to the effective implementation and institutionalization of the key process area. For example, one of the practices from the Software Project Planning key process area is "The project's software development plan is developed according to a documented procedure." (kp PP.AC.6)


The Five Levels of Capability Maturity Model (CMM)

Capability Maturity Model (CMM) Levels[6]

In CMMI models there are five maturity levels with a staged representation 1-5:

Maturity Level 1. Initial - Company has no standard process for software development. Nor does it have a project-tracking system that enables developers to predict costs or finish dates with any accuracy.

Maturity Level 2. Managed- Company has installed basic software management processes and controls. But there is no consistency or coordination among different groups.

Maturity Level 3. Defined - Company has pulled together a standard set of processes and controls for the entire organization so that developers can move between projects more easily and customers can begin to get consistency from different groups.

Maturity Level 4. Quantitatively Managed - In addition to implementing standard processes, company has installed systems to measure the quality of those processes across all projects.

Maturity Level 5. Optimizing - Company has accomplished all of the above and can now begin to see patterns in performance over time, so it can tweak its processes in order to improve productivity and reduce defects in software development across the entire organization.


CMM Levels
source: ISTBQ


Internal Structure of CMM

Internal Structure of CMM[7]
Each level in CMM is defined into key process area or KPA, except for level-1. Each KPA defines a cluster of related activities, which when performed collectively achieves a set of goals considered vital for improving software capability. For different CMM levels, there are set of KPA's, for instance for CMM model-2, KPA are

  • REQM- Requirement Management
  • PP- Project Planning
  • PMC- Project Monitoring and Control
  • SAM- Supplier Agreement Management
  • PPQA-Process and Quality Assurance
  • CM-Configuration Management


Operational Uses Of The CMM

Operational Uses Of The CMM[8]
The CMM as a framework represents a path of improvement recommended for application development organizations that want to increase their software process capability. It is designed to support at least one of the following four operational uses:

  • Assessment teams can identify strengths and weaknesses in the organization
  • Evaluation teams can identify the risks of selecting from among different contractors for awarding business and to monitor contracts
  • Managers and staff can understand the activities necessary to plan and implement software process improvement for their organization (most software organizations fall here)
  • Process improvement groups can use it as a guide to help them define and improve the software process in their organization


Capability Maturity Model Benefits

The Advantages of Using Capability Maturity Model[9]

Benefits to using a process improvement framework such as the CMM have been identified by numerous researchers, both academic and professional, and would include:

  • More accurate identification of flaws in process development operations
  • Reduction in cost of software development or management of data as a resource
  • Increase in productivity from software development and / or data management professionals (staff and contractors)
  • Reduction in post-release defects and essential enhancements
  • Reduction in time-to-market for implementation

The CMM is intended to be a cohesive, coherent, ordered set of incremental improvements, all relating to experienced success in the field, and packaged into a framework that demonstrates how effective practices can be built on one another into a logical and repeatable progression. Far from a “quick fix,” successful use of the CMM requires attention to detail, support, and participation from senior management and a rational approach to all aspects of software development or data management, and implementation.


Limitations of Capability Maturity Model (CMM)

The Disadvantages of Capability Maturity Model[10]
The Capability Maturity Model does come with some drawbacks.

  • One of which is that when organisations use CMM, they look at each level as a target. They make their goal to reach the next level up. This can be a dangerous thought because if you become fixated on reaching the next level, you begin to lose perspective and forget that the real goal is to actually improve the processes.
  • Similarly the CMM does not specify a particular way of achieving those goals. In order to achieve them one needs to think in a flexible way. The goals will only be achieved if the organisations processes are taken into account, as each organisation is different so the steps needed for process improvement will be different. Just because one organisation follows the rules set by the CMM it does not guarantee that it will be successful as there are other factors involved.
  • Another disadvantage is that CMM only helps if it is put into place early in the software development process. For example, if there is a process that is in a crisis then CMM will not help overnight. It cannot be used as an emergency method of recovering from a difficult position.
  • Finally, CMM is concerned with the improvement of management related activities. Whilst this is a big issue in the software development process it is not necessarily the most important thing to look at. Improved quality of code may be a vital issue in the context of software.


See Also

Information Technology Capability Business Capability
IT Capability Maturity Framework (IT-CMF)
Capability Maturity Model Integration (CMMI)
People Capability Maturity Model (P-CMM) Business Process Maturity Model (BPMM)
Project Management Maturity Model (PMMM)
The Organizational Project Management Maturity Model (OPM3®)
Business Architecture
Business Model
Business Process
Business Analysis
Balanced Scorecard
Business Process Management
IT Strategy
eBusiness
e-Strategy
Business IT Alignment


References

  1. Defining Capability Maturity Model (CMM) TryQA
  2. Historical Background of Capability Maturity Model (CMM) Wikipedia
  3. An Explaining the Capability Maturity Model (CMM) SelectBS
  4. What is the The Capability Maturity Model (CMM)? Geeks for Geeks
  5. What are the components of the CMM? [1]
  6. The Capability Maturity Model (CMM) Levels ISTBQ
  7. Internal Structure of CMM Guru99
  8. What are the Operational Uses Of The CMM? Codeweek
  9. What are the Advantages of Using Capability Maturity Model? EW Solutions
  10. What are the Disadvantages of Capability Maturity Model Hardeep Atwal


Further Reading