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
   286   287   288   289   290   291   292   293   294   295   296