Page 291 -
P. 291
There are specific process improvement tools to help you do this. There are models and
certifications that help you assess the state of your organization’s process, and that serve as
a framework for improving that process. There are also processes and methodologies you
can adopt that describe the complete set of activities, roles, and work products needed to
build software. By applying these tools, you can give your organization the ability to fix
problems before they get serious enough to cause your projects to slow down.
Models and Certifications
To many experts, software process improvement in practice means using a model or certifi-
cation standard as a guideline for assessing and improving a software organization. Some of
the most common models are the Capability Maturity Model, ISO 9000, and Six Sigma.
These are not processes in and of themselves. Rather, they are systematic frameworks that
were developed for evaluating any software organization (no matter what process is in use),
identifying improvements that will increase the ability of the organization to build better
software, and certifying that the organization has met an objective standard for capability.
The Capability Maturity Model
The Capability Maturity Model (CMM), is a process improvement method developed by the
Software Engineering Institute at Carnegie Mellon University. It provides a set of best
practices meant to address important aspects of software development: productivity, per-
formance, costs, predictability, and stakeholder satisfaction. The purpose of the CMM is to
define the characteristics of a mature, capable process in a way that can be measured and
compared to processes at other organizations.
The CMM was developed in coordination with the U.S. Department of Defense (DoD) to
help organizations privately improve their own processes. (It was also adopted by the DoD
as a way to provide the U.S. military with a consistent method to identify the most capable
software contractors. While this has been successful, it has also led to some abuses of the
assessment system—see below.) The result was a model (first published in August 1991)
that contained five maturity levels, ranging from “Initial” (in which an organization does not
apply tools, techniques, and practices consistently across all of its projects) to “Optimizing”
(in which a software process was well defined, brought under statistical control using vari-
ous metrics and measurements, and continually improved based on those metrics).
By the late 1990s, the government and the CMM user community had a great deal of
feedback for the SEI team responsible for maintaining the CMM. In response, a project to
create the Capability Maturity Model Integration (CMMI) was initiated in order to address
these concerns. This new version was released in 2002.
Both the CMM and CMMI are divided into key process areas (KPAs) that define specific
goals and practices. Each KPA addresses a specific area of software engineering. There are
several dozen KPAs, including requirements management, project planning, project mon-
itoring, configuration management, and training. (These areas of improvement should
seem familiar by now!)
PROCESS IMPROVEMENT 283