The Capability Maturity Model (CMM) is a tool to guide an organization to improve the management of the processes of its business. It was developed to help implement industrial and scientific principles in the software industry and thereby grow the profession to a level of professional engineering. Achieving such a level of professionalism will reduce the massive failures and attendant financial losses currently experienced in the software development field.
First, I describe the purpose of the CMM and the underlying principles on which it was built. Second, is a brief description of the five levels of the Model. Third, I describe my personal experiences implementing the concepts of the CMM in the financial management industry.
CMM Purpose and Theoretical Foundation
The model helps meet software development improvement by providing descriptions of the behavior an organization must perform in order to monitor and control its business. The model describes the structures, methods, and management systems an organization must create and install in order to improve software development. Management's purpose is to understand a process and then learn to control the behavior of that process to maximize value to the company. The CMM provides a framework for management to gain such understanding.
The Software Engineering Institute's (SEI) goal for software development improvement is to bring scientific principles to the software development process and thereby upgrade the software development industry from a craft to scientific-based professionalism.
The CMM is founded on the concept of establishing professional engineering practices for the software industry. Such professionalism exists in other disciplines, notably chemical engineering. As Diagram 1 shows, engineering progresses from craft through industrialization/commercialization and on to the scientifically-based, professional engineering level. This progression is the Engineering Evolution Paradigm.1
Diagram 1 shows the initial development of a Craft. At a later time Production elements are introduced to the Craft and the combination produces a Commercialization Level of performance to the field. Then scientific principles are discovered and incorporated into the discipline and the result is Professional Engineering. Descriptive characteristics are listed at each stage of the developmental model.
Diagram 1
Engineering Evolution Paradigm
------------------- SCIENCE ->
|
* skilled craftsmen |
* established procedure |
---------------------------- PRODUCTION -> * training in mechanics -------- PROFESSIONAL ENGINEERING --------->
| * concern for cost |
* virtuosos & talented amateurs | * manufacture for sale | * educated professionals
* extravagant use of materials | | * analysis & theory
* design by intuition & brute force ---------------- COMMERCIALIZATION -> * progress relies on science
* knowledge transmitted slowly, casually | * analysis enables new applications
* manufacture for use rather than sale | * market segmented by product variety
|
--------------------------------- CRAFT ->
Software engineering has progressed in the first 50 years of its existence, but not consistently nor sufficiently. Diagram 2 shows an approximation of the field in 1994. Commercialization has occurred but not broadly enough. In addition, scientific principles have not been incorporated sufficiently to bring the industry to a level a professional engineering.2
Diagram 2
Software Engineering Status (circa 1994)
1956: IBM invents FORTRAN.
1970s: structured programming methods 1968: Donald Knuth publishes theory of
gain favor. algorithms and data structures.
1980s: fourth-generation languages 1970s: Smalltalk OO language released.
released. 1980s: formal methods and
1990s: re-use repositories founded. notations refined.
------------------- SCIENCE ->
---------------------------- PRODUCTION -> ----- PROFESSIONAL ENGINEERING --------->
---------- COMMERCIALIZATION ->
--------------------------------- CRAFT -> 1994: isolated examples only of
1950s: programs small & intuitive 1980s: most gov't & mgmt info algorithms, data structures
1970s: SABRE airline reservation systems use some production and compilers
system rare success. controls. some safety
1990s: most PC software still systems use rigorous
hand-crafted controls.
CMM Description
The CMM is a model of how an organization may grow or mature in its ability to manage its software processes. The model describes five levels of maturity. The five stages are Initial, Repeatable, Defined, Managed, and Optimizing.
The Initial stage describes an organization that does not manage its software processes. Activities are performed ad hoc often depending heavily on the 'heroic' performance of one or a few individuals. There are no formal procedures or processes.
The Repeatable stage is the first level of managing processes. The basic elements of project management are set up and used to monitor projects. The elements of a project that are managed include the cost and schedule. At this stage the fundamental skills are established so that an organization may repeat these procedures on each project.
The Defined stage establishes a generic standardized process for the entire organization. Such a process is documented and established as the standard for both management and engineering activities in the software development process. Any one specific project may tailor the standard process to fit its unique circumstances, but all such modified processes are at their core the organization's standard process.
The fourth level in the CMM model is named the Managed stage. The organization collects and analyzes detailed quantitative metrics of the software development process and the quality of the resulting products. The data are used to monitor and manage the development process. At the Managed stage the organization quantitatively monitors the process to ensure it stays within established ranges of variation.
The final or fifth level is named Optimizing. At this stage the organization actively and continuously monitors its process(es). It looks for and corrects structural problems in the process(es) themselves. At the Optimizing stage the organization seeks out causes of process variation and then corrects the process to eliminate those causes. The organization performs continuous process improvement.3
CMM Applied to Financial Management Processes
A few years ago I generalized the concepts in the CMM to apply to my department in the financial asset management industry. The concepts in the CMM are stated in terms of software product development, but I saw their usefulness as a general model to be applied to any organization that has processes.
My purpose was to create structure where there was none. The mortgage servicing operation was entirely dependent upon me to accomplish tasks. My goal as servicing manager was to convert my intellectual assets into structural assets. That is to say create formal procedures, document them, and then to monitor to see that they are properly followed. In so doing, I could move the department from the CMM stage 1, Initial up to stage 2, Repeatable. The work could then be distributed among other employees and monitored.
Table 1 below shows the Key Components or "characteristics of Stage 2, Repeatable, of the Capability Maturity Model compared to the generalization of those concepts to the Commercial Mortgage Loan Servicing Industry. Among other structural assets I created the most important items were the Department Services Manual, the Annual Data Packages, and the Policy Manual. These three documents form the core of the department's repeatable processes.
The Department Services Manual shows how particular major processes are performed by the department. The Annual Data Package is the annual loan due diligence and credit scoring system used to monitor the quality of the portfolio. The final document is the Policy Manual which describes how our business partners should perform their services for my employer.
Table 1.
CMM Concepts Applied to Mortgage Asset Management
CMM Stage 2 Repeatable Mortgage Servicing Department
"Characteristics" Translation
----------------------- -----------------------------
1. Requirements Management 1 & 2. Loan Setup
2. Software Project Planning * Standard Loan Documents
> Commitment Agreement (contract requirements)
> Standardized Note, Mortgage, and other docs.
* Formal Loan Closing process
* Data Quality Metrics
3. Software Project Tracking 3. Servicing Monitoring
and Oversight. * Payment Tracking
* Formal Maintenance Request Procedures
4. Software Sub-contract 4. Business Partner Management
Management. * Contract with Mortgage Bankers
* Policy Manual
5. Software Quality Assurance 5. Quality Due Diligence
* Annual Loan Due Diligence Data Packages
6. Software Configuration Management. 6. Process Configuration Management.
* Department Services Manual
* Loan Undrwriting Process Description
* Loan Closing Process Description
In conclusion, the Capability Maturity Model was developed to help organizations obtain control and manage their software development processes. The CMM helps an organization to accomplish control by injecting commercialization and scientific principles into those processes. A company that follows the CMM will be able to better manage its operations and thus reduce the cost of the project failures so prevalent in the industry. The CMM has five stages of development. The Model can be generalized sufficiently to be applied to other industries and their attendant processes.
Footnotes:
- Gibbs, page 92.
- ibid.
- Carnegie Mellon, page 20.
References:
- Carnegie Mellon University Software Engineering Institute The Capability Maturity Model: Guidelines for Improving the Software Process. Reading, MA: Addison-Wesley, 1994.
- Gibbs, W. Wayt. "Software's Chronic Crisis." Scientific American Sept. 1994: 86-95.