Foundation Series: CMMI Levels Explained
CMMI is the initialism for Capability Maturity Model Integration.
CMMI is a numeric scale used to "rate" the maturity of a software development process or team. Maturity can be thought of like enlightenment. An immature process is not much different from the old "infinite monkeys" yarn - maybe we get it right, but probably not. A fully matured or enlightened process not only does it right, but improves itself over time.
The Software Engineering Institute (SEI) at Carnegie Mellon (Go Tartans! BSME90) created the CMM model for software engineering in the late 80's and early 90's. In an effort to consolidate multiple CMM models for different process areas, the SEI team created the CMMI in 2002. In this post, we will understand what each level represents.
Technically, the name of the model is the Capability Maturity Model Integration for Software Engineering, or SW-CMM, but in practice people just use CMM. The 645 page document can be found on the CMU SEI site.
Five levels of maturity in CMMI
The folks at the SEI created five classifications or levels of process maturity. Every software project can be classified into one of the levels. The levels are progressively harder to achieve, and each builds on the previous level. To be classified in a particular level, a process must meet all of the criteria of that level. If a process meets all the criteria of level 2, and some of the criteria of level 3, then that process is considered to be a level 2 process.
Note that there is a level 0, or incomplete. This level represents the absence or incompleteness of activity. If we are developing software, we are at least at level 1.
- Performed.
- Managed.
- Defined.
- Quantitatively Managed.
- Optimizing.
CMMI Level 1: Performed
The lowest possible CMMI level (there is no level 0) represents software development essentially in the absence of a process. Specifically, the SEI defines level 1 as being achieved if the goals of the process are met. If we are trying to write software, and we write software, then we are at level 1. In practice, level 1 processes are the ones described as chaotic and unordered. A team with a level 1 process can easily be dependent upon individual effort for success.
Most small software companies, independent developers, as well as many corporate IT departments operate at level 1. If we can point to projects that were "saved" by a superstar on the team, we are probably operating at CMMI level 1. We love having superstars on our teams - we hate being dependent upon them for survival.
CMMI Level 2: Managed
SEI defines CMMI level two as follows:
A managed process is a performed (capability level 1) process that is also planned and executed in accordance with policy, employs skilled people having adequate resources to produce controlled outputs, involves relevant stakeholders; is monitored, controlled, and reviewed; and is evaluated for adherence to its process description.
Our interpretation: take a CMMI level one process, and add a project manager to coordinate the chaos. The distinction is that at this level, the activities are planned, and then managed according to the plan. No additional insight is applied, just orchestration.
CMMI Level 3: Defined
To achieve CMMI level three, we have to take a process that qualifies for CMMI level two, and institute it as a corporate standard. Then we tailor and apply that standard process to individual projects.
CMMI Level 4: Quantitatively Managed
When we incorporate quantitative measurement or statistical analysis tools as part of our process management process, we are operating at CMMI level four. This level represents "hard" introspection that utilizes quantified data to improve the management of the current project within our defined project.
CMMI Level 5: Optimizing
When we analyze the quantitative data from our projects and apply it to refining our processes for the future, we are operating CMMI level five. This level represents an introspective approach to quantitative project management, combined with a continuous improvement objective.
No comments:
Post a Comment