CMM - An Introduction
CMM - An Introduction
Capability Maturity Model (CMM), has found it’s way from Carnegie Melon University’s
(CMU) software engineering Institute (SEI) to major Software developers all over the
world. Some consider it as an answer to Software Industry’s chaotic problems, and some
consider it just another exhaustive framework that requires too much to do and too little
to show for it. This article is not intended to be a comprehensive introduction to CMM,
the interested readers should read official CMM documentation available from SEI’s web
site to get a comprehensive discussion of CMM. This article is intended to show that
CMM is not a framework that advocates magical and revolutionary new ideas, but it is in
fact a tailored compilation of the best practices in Software engineering.
The intention of this article is to introduce CMM as a logical and obvious evolution of the
Software Engineering practices. The article does not require any prior knowledge of
CMM; however it is assumed that the reader is cognizant of issues involved in Software
development.
Before we move any further, we must define one term that is central to almost every
industry – Process. This term has also found its rightful place in Software Industry. It was
Deming who popularized this term. Japanese have managed a miraculous industrial
revolution based on the simple concept of a Process. “ Process is a mean by which
people, procedures, methods, equipment, and tools are integrated to produce a desired
end result” [quoted from CMM for Software, version 2B]. Humphrey in his Book
Introduction to the PSP, (1997) defines a process in Software Development context as “
Process defines a way to do a project, Projects typically produces a product, and Product
is something you produce for a co-worker, an employer, or a customer.”.
Now that we know what Process means, how can we use this knowledge to achieve
success. The answer lies in the following three-step strategy:
1- Analyze the current process by which your organization executes its projects,
The above seemingly simple steps, have baffled the Software Industry for years.
Different software developers have adopted different techniques to implement the three-
step recipe, with varying degree of success.
Having noted down the above “three-step approach to success”, we would now
concentrate on mastering each of the above three steps.
Let us start by considering the normal course of events that follow when a software
project is undertaken. We will only outline the steps, without going into the details of
each; since our purpose is to highlight the most common events and not there particular
details, as they may vary depending on the contract and the nature of the project.
The client gives a set of Requirements of the product to the contracting company
(referred to as “the Company”). The first step is to discuss these requirements with the
client. The discussion will focus on removing any ambiguity, conflict, or any other issues
related to the product in question. The outcome of this discussion will ideally be a “Well-
defined set of functionalities that the product will achieve”.
The next step is to plan the project. Given the required set of functionalities the million
dollar question is “How much time and Dollars will the Company require to complete the
project?”. Based on these estimates, resources (both human and non-human) will be
allocated to the project. Various milestones will be defined, to facilitate project
monitoring. Plans will also be made to outsource any part of the project, if deemed
necessary.
Assuming that the plans have been made, team formed, and estimates in place now the
Company is ready to start actual work on the project.
Once the project is under way, the project will continuously monitor their progress
against the Plans and milestones made in Step-2.
In Step-2, if the Company decided to outsource or sub-contract a part of the project, then
the sub-contractors will also be managed and their progress monitored closely. This will
ensure that no delays occur due to lapses caused by the sub-contractor.
In Step-4 the Company monitored the project for any cost overrun, or any schedule
slippage; but that’s not all that need to be monitored. An in-budget, with-in-time project
may still have serious problems. In Step-4 the Company ensured that the project is going
according to the schedule, and is with in budget, but is it doing what it is suppose to do?.
That is, are all the tasks completed according to the Company’s standards and according
to, the Requirements agreed in Step-1?. In Step-6, the Company will ensure that no work
is done in violation of any standard and any system Requirements.
A software project, usually involves different teams working on different aspects of the
project, e.g. one team may be coding a module, while another may be working on writing
the users manual. Although Teams work on a certain aspect of the project, but the project
is eventually going to be delivered as a single product. It’s evident that all the teams
MUST co-ordinate their work, to produce a well-integrated final product. In Step-2, the
plan was well laid, and all the involved personnel were assigned their share of work. But
some changes will almost always have to be made. These changes may affect more than
one team. Therefore it is necessary for the Company to ensure that all the bits-and-pieces
of the project remain well coordinated. The Company must determine if a change made to
one piece of the product also necessitate a change to one or more other pieces, and if it
does then those changes must be made accordingly. In Software terms this is called
“Configuration Management”.
One can come up with many other activities that a software company would normally
follow. But we would stop here and will focus only on the above-mentioned activities.
It is obvious that the above mentioned activities are performed by almost all the software
companies; then what is it that makes a company Microsoft and another company go
bellies up ?.
The answer is simple: Not all the companies observe the above steps with the same vigor.
These steps are all very simple to understand but extremely difficult to execute
effectively.
The purpose of the above discussion was to enable the readers to appreciate the need for a
guideline, or a road map that software companies can follow to produce quality software,
with in budget and with in time. One such roadmap is called Capability Maturity Model
(CMM).
I shall discuss CMM in the easiest way I could. But the readers must realize that CMM is
a tricky model to fully understand and is even trickiest to successfully implement.
According to CMM, a software company also goes (or should go) through similar
maturity evolutions. The CMM maturity levels are discussed later.
Readers should notice that CMM is NOT a software development life cycle model.
Instead it is a strategy for improving the software process irrespective of the actual life-
cycle model used [Schach 1996].
COMPONENTS OF CMM
Given below is a brief explanation of various components of CMM. This explanation has
been extracted from SEI's official documents. This section is followed by more detailed
explanation of each component.
Maturity levels
Process capability
Goals
Common features
Key practices
CMM FRAMEWORK
MATURITY LEVELS
Level 1 - Initial
Level 2 - Repeatable
• Requirements Management
• Software Project Planning
• Software Project Tracking & Oversight
• Software Subcontract Management
• Software Quality Assurance
• Software Configuration Management
Level 3 - Defined
Level 4 - Managed
Level 5 - Optimizing
• Defect Prevention
• Technology Change Management
• Process Change Management
There are 18 KPAs in CMM. So what should the reader make out of the above KPAs ?. A
detailed book on CMM would explain what each KPA means. But with in the space and
scope restriction of this article I could not delve deep into each KPA. Just by reading the
KPAs, readers would realize that some of the KPAs would immediately make sense while
others would be difficult to understand. For example the "Peer Reviews" KPA of Level 3
is easily understood and so are most of the KPAs of Level 2. However KPAs like
"Organizational Process focus, Process definition, Integrated Software Management etc."
are difficult to understand without some explanation. There is a reason why some of the
KPAs are easily understood while others take considerable effort. Those KPAs that are
usually done by many companies (namely the KAPs of Level-2) are the ones that are
easily understood - while the other KPAs alienate us - not because they are some abstract
terms being churned out in the labs of CMU, but simply because most of the companies
in the world do not follow the activities encompassed by these KPAs. And that is why
CMM is such a wonderful roadmap to follow. It tells us exactly what successful, big
software companies have been doing to achieve success.
Unfortunately the scope of this article restrict me from explaining the above KPAs in
detail.
What CMM tells us by virtue of the above KPAs is: For a company to level with the best
it MUST address all the 18 KPAs. Failing to address one or more of the above KPAs
would result in a relatively immature company - hence resulting in a decreased
productivity and increased risk.
GOALS
Looking at the KPAs an obvious question comes to mind. How can a company be sure
that it has successfully addressed a KPA ?. CMM assigns GOALS to each KPA. In order
to successfully address a KPA a company must achieve ALL the goals associated with
that KPA. Given below is the complete list of GOALS associated to each of the above 18
KPAs.
Level 2 - Repeatable
• Requirements Management
o GOAL 1:
o GOAL 2:
•
o GOAL 2:
Software project activities and
commitments are planned and documented.
o GOAL 3:
o GOAL 2:
o GOAL 3:
o GOAL 2:
o GOAL 4:
o GOAL 2:
o GOAL 3:
o GOAL 4:
•
• Software Configuration Management
o GOAL 1:
o GOAL 2:
Selected software work products are
identified, controlled, and available.
o GOAL 3:
o GOAL 4:
Level 3 - Defined
Level 4 - Managed
Level 5 - Optimizing
• Defect Prevention
o GOAL 1:
o GOAL 2:
• Technology Change Management
o GOAL 1:
o GOAL 2:
• Process Change Management
o GOAL 1:
o GOAL 2:
• Common Features
• Key Practices
The interrelationship of the terms discussed above can be best shown by the following
diagram:
The Structure of Capability Maturity Model
ISO
TickIT
Mark C. Paulk has given an insightful view of comparison between ISO 9001 and
CMM[15].
References:
home