What is CMM?
Capability Maturity Model is used as a benchmark to measure the maturity of an organization's software process.
CMM was developed at the Software engineering institute in the late 80's. It was developed as a result of a study financed by the U.S Air Force as a way to evaluate the work of subcontractors. Later based on the CMM-SW model created in 1991 to assess the maturity of software development, multiple other models are integrated with CMM-I they are
In this tutorial, we will learn,
- What is Capability Maturity Model (CMM) Levels?
- What happens at different levels of CMM?
- How long does it Take to Implement CMM?
- Internal Structure of CMM
- Limitations of CMM Models
- Why Use CMM?
- Quantitatively Managed
|Level 1 Initial|| ||None. A project is Total Chaos|
|Level 2 Managed|| || |
|Level-3 Defined|| || |
|Level-4 Quantitatively Managed|| || |
|Level-5 Optimizing|| || |
Following diagram, gives a pictorial representation of what happens at different CMM level
CMM is the most desirable process to maintain the quality of the product for any software development company, but its implementation takes little longer than what is expected.
- CMM implementation does not occur overnight
- It's just not merely a "paperwork."
- Typical times for implementation is
- 3-6 months -> for preparation
- 6-12 months -> for implementation
- 3 months -> for assessment preparation
- 12 months ->bfor each new level
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
Likewise, for other CMM models, you have specific KPA's. To know whether implementation of a KPA is effective, lasting and repeatable, it is mapped on following basis
- Commitment to perform
- Ability to perform
- Activities perform
- Measurement and Analysis
- Verifying implementation
- CMM determines what a process should address instead of how it should be implemented
- It does not explain every possibility of software process improvement
- It concentrates on software issues but does not consider strategic business planning, adopting technologies, establishing product line and managing human resources
- It does not tell on what kind of business an organization should be in
- CMM will not be useful in the project having a crisis right now
Today CMM act as a "seal of approval" in the software industry. It helps in various ways to improve the software quality.
- It guides towards repeatable standard process and hence reduce the learning time on how to get things done
- Practicing CMM means practicing standard protocol for development, which means it not only helps the team to save time but also gives a clear view of what to do and what to expect
- The quality activities gel well with the project rather than thought of as a separate event
- It acts as a commuter between the project and the team
- CMM efforts are always towards the improvement of the process
CMM was first introduced in late 80's in U.S Air Force to evaluate the work of subcontractors. Later on, with improved version, it was implemented to track the quality of the software development system.
The entire CMM level is divided into five levels.
- Level 1 (Initial): Where requirements for the system are usually uncertain, misunderstood and uncontrolled. The process is usually chaotic and ad-hoc.
- Level 2 (Managed): Estimate project cost, schedule, and functionality. Software standards are defined
- Level 3 (Defined): Makes sure that product meets the requirements and intended use
- Level 4 (Quantitatively Managed): Manages the project's processes and sub-processes statistically
- Level 5 (Maturity): Identify and deploy new tools and process improvements to meet needs and business objectives