Understanding the Capability Maturity Model (CMM) is a vital part of any Software Engineering process curriculum. I have developed a narrative that can be used to explain the concept and the benefits of a Maturity Model, including assessment and a path for continuous improvement.
Imagine a plant – a vegetable plant – that produces edible fruits. You’re a farmer or even a casual backyard gardener and would like to know how that plant is doing. As the owner of that plant, you would like to know if it’s healthy, how it’s progressing, and if it’s worth the space and resources it is using. For practical reasons, you would like to take a simple but quantitative approach so that any passer-by could assess your plant and come to the same conclusion that you have – so you think about the things that may be an indication of plant quality or maturity, what you may call “Plant Assessment Criteria”
- Height and Width
- Number and Color of Leaves
- Number, Size, and Color of Fruits
- Thickness of Stem
- Root Depth and Width
- Number of Root Tips
You decide to check each of these criterion and simply note “Good” or “Bad” for each. Quite satisfied with yourself, you go about judging each plant using your newly developed system. After a while, you make some realizations.
- “Good” and “Bad” are too black and white – what if a plant is “So-So”?
- How could others know what is “Good” and “Bad”. Would they come to the same conclusion?
- What about the age of the plant? A weeks-old plant is certainly different than a mature fruit-bearing plant.
Given these realizations, you conclude that a more complex measurement system is needed, so you create a scale for each area of assessment:
|Maturity||Plant Height||Plant Width||Leaf Quantity||Leaf Color||Number of Fruits||Size of Fruits||Color of Fruits||Thickness of Stem||Root Depth||Root Width||Number of Root Tips|
|1||0-1 Unit||0-0.5 Units||1-10 Leaves||Light Green (Avg.)||No Fruits||No Fruits||No Fruits||0.01-0.02 Units||0-1 Units||0-1 Units||0-5|
|2||1-2 Units||0.5-1 Units||10-25 Leaves||1-3 Fruits||0.1-0.2 Units (Avg.)||Green (Avg.)||0.02-0.03 Units||1-2 Units||1-2 Units||5-15|
|3||2-4 Units||1-2 Units||25-40 Leaves||Medium Green||3-7 Fruits||0.2-0.3 Units||Yellow||0.03-0.04 Units||2-3 Units||2-3 Units||15-30|
|4||4-7 Units||2-3 Units||40-75 Leaves||7-11 Fruits||0.3-0.4 Units||Orange||0.04-0.05 Units||3-4 Units||3-4 Units||30-50|
|5||7+ Units||3+ Units||75+ Leaves||Dark Green||11+ Fruits||0.4+ Units||Red||0.05+ Units||4+ Units||4+ Units||50+|
With this scale, you are satisfied that any competent observer could look at a plant and come to the same conclusions as any other. This is, in essence, a Maturity Model. It is useful because it allows objective assessment and comparison. But Maturity Models have another major benefit. Imagine, now, that you are the plant itself. You are aware that you are healthy and nothing seems to be hurting, but you also wonder how you compare to others like you. A maturity model would allow you to gain an objective assessment of yourself. Assuming you are honest and realistic in your self reflection, you should arrive at the same numbers as anyone on the outside.
As the plant, you expect to be a level 4 in maturity because that’s where all of your friends seem to be. Your self-assessment finds many areas are indeed 4’s and there is even a 5, but, to your disappointment, there are several 3’s as well. This is where the second purpose of a Maturity Model comes into play. It can also give you a basis for quantifiable goals. For example, you, the plant, have found that you are 8 leaves short of a level 4 maturity in that area. Though you need to figure out yourself how to grow those leaves with resources you have available, the Maturity Model has given you a specific goal to strive for.
There are a number of maturity models, the most relevant being the Capability Maturity Model (CMM). In the case of the CMM, assessment and improvement goals are directed towards the area of software development process maturity. Each level of maturity has an associated attribute, and process areas are divided logically between these levels. For each of these key process areas, there are also a host of assessment and goal-setting aids such as goals, commitments, abilities, activities, measurements, and verifications. The major maturity levels are as follows:
|Level||Focus||Key Process Areas|
|1-Initial||None||A Commitment to Begin Assessment and Improvement|
|2-Repeatable||Project Management||Requirements Management
Software Project Planning
Software Project Tracking and Oversight
Software Subcontract Management
Software Quality Assurance
Software Configuration Management
|3-Defined||Engineering Process||Organizational Process Focus
Organizational Process Definition
Integrated Software Management
Software Product Engineering
|4-Managed||Product and Process Quality||Quantitative Process Management
Software Quality Management
|5-Optimizing||Continuous Process Improvement||Defect Prevention Technology
Change Management Process
As you dive into this, remember the two major goals of a Maturity Model: to allow objective assessment and comparison, and to give a basis for creating quantifiable goals.