NEWS AT SEI
This article was originally published in News at SEI on: September 1, 2002
This is the first column that we intend to use to convey information to those in our community who are either adopting the Capability Maturity Model Integration (CMMI) Framework or are actively considering this approach to enterprise process improvement. We will use this column to explore some of the ideas that guided what is in the CMMI models, as well as some of the issues that we hear about from the community in courses, at conferences, or from direct email to email@example.com.
In this article, we would like to explore how the CMMI models map to three process improvement themes that inspire much of the work done at the SEI. The three themes are “move to the left,” “reuse everything,” and “never make the same mistake twice.” While each of these has broad applicability in improving the practice of software engineering, we will explore some of the specific ways that CMMI supports these ideas.
This first theme recognizes the value of effective early preparation to avoid introducing defects into a product. CMMI accomplishes this in several ways. One of the most obvious, and a direct heritage of the Capability Maturity Model® (CMM®) for Software (SW-CMM), is the emphasis on planning. In CMMI, one of the fundamental process areas is the Project Planning process area. The practices of this process area, implemented up front, provide the basis for all of the management and engineering tasks. While CMMI avoids specifying any particular plans, this process area describes the activities that will enable an effective development plan to be created. Two particular innovations that were not addressed in the SW-CMM are the attention to planning the involvement of various stakeholders across the development life cycle and the inclusion of planning for data management. Also, to remind us that planning is fundamental to all activities of the enterprise, all CMMI process areas include a generic practice, Plan the Process, that helps the organization achieve a level 2 (managed) capability in the appropriate CMMI process areas.
In the area of requirements, CMMI takes another step to the left by focusing attention on requirements development. This focus includes the key steps of eliciting and validating requirements, reminders to keep the ultimate users in mind to ensure that the product will be suitable in meeting the customer’s needs. Also, our experience at the SEI is that too often insufficient attention is paid to effectively architecting the product. As a result, the SEI does significant work in architecture tradeoff analysis. Several books have been written by SEI members of the technical staff about improving the practices of performing this essential up-front work. CMMI now includes practices to help ensure that effective product architectures are designed and evaluated.
As process area capability and organizational maturity increases through implementation of CMMI practices, attention to defects gains more and more focus.
The concept of reuse is very familiar to the software community. The most effective demonstration of this has been the strategy of product line development to maximize the ability to reuse major subsystems in a variety of systems. (This requires proper attention to architectural issues across the product suite, and for that reason, our efforts in product lines is linked closely with the one described above for architecture tradeoff analysis.) In CMMI, we decided not to require product line thinking, but to support it across the model. A recent technical note describes the way that CMMI supports the move to a product line framework.
Probably one of the best examples of reuse within CMMI is the emphasis on the Organizational Process Focus and Organizational Process Definition process areas. This emphasis allows development of organizational standard processes, which can be reused by new projects and tailored to meet project-specific needs, becoming defined processes. As comfort grows with the suite of standard processes, the Organizational Process Performance process area further aids their effective reuse. Reuse of proven processes is of course a legacy from the SW-CMM, but in addition, CMMI takes reuse one step further by providing more attention to identifying up front when product development may benefit from reuse, and adapting the product requirements and design accordingly.
Another area with strong linkage at the SEI is the increased attention to using commercial off-the-shelf (COTS) components. Since COTS products are obtained outside of the project, the guiding information is included in the Supplier Agreement Management and Integrated Supplier Management process areas.
Never Make the Same Mistake Twice
We often are reminded of the quote “insanity is repeating the same procedure and expecting different results.” This theme covers first defect identification and removal, and then, as capability increases, defect prevention. These concepts again were well expressed in the SW-CMM, but have been worded now in ways that users suggest is a bit clearer in the CMMI process areas. At lower levels of capability and maturity, we focus on detecting problems and taking corrective actions. These are addressed in the Project Monitoring and Control and the Measurement and Analysis process areas. By implementing practices of these process areas, problems in achieving project and organizational objectives are identified and corrective actions are tracked to closure. However, peer reviews, another heritage from the SW-CMM (and now a goal within the Verification process area), provide opportunities to peer review not just the development items, such as software code, but the planning elements themselves—again, a move to the left.
With the higher level attention to quantitative and statistical process control, we gain the ability to look first at special causes of variation (level 4 activities in Quantitative Project Management) and then at common “root” causes of variation (level 5 activities in Causal Analysis and Resolution). We can then improve processes to avoid introducing defects rather than removing them once they are observed. This effort is closely linked with the companion advanced process area, Organizational Innovation and Deployment, which manages the selection and deployment of improvements across the organization.
These three themes apply in many ways to improving the practices of software engineering. The CMMI represents a valuable framework for inculcating these themes into the development effort to reduce chaos and rework—to make the development effort more rewarding to both developers and end users.
About the Author
Mike Phillips is the Director of Special Projects at the SEI, a position created to lead the Capability Maturity Model® Integration (CMMI®) project for the SEI. He was previously responsible for transition-enabling activities at the SEI.
Prior to his retirement as a colonel from the Air Force, he managed the $36B development program for the B-2 in the B-2 SPO and commanded the 4950th Test Wing at Wright-Patterson AFB, OH. In addition to his bachelor’s degree in astronautical engineering from the Air Force Academy, Phillips has masters degrees in nuclear engineering from Georgia Tech, in systems management from the University of Southern California, and in international affairs from Salve Regina College and the Naval War College.
The views expressed in this article are the author's only and do not represent directly or imply any official position or view of the Software Engineering Institute or Carnegie Mellon University. This article is intended to stimulate further discussion about this topic.