The Capability Maturity Model
The Capability Maturity Model (CMM) for Software describes the principles and practices underlying software process maturity. The CMM, developed by the Software Engineering Institute (SEI), is a model to help software organizations improve their development capability, in other words it is intended to help software organizations improve the maturity of their software processes in terms of an evolutionary path from ad hoc, chaotic processes to mature, disciplined software processes. When used effectively CMM can help organizations develop software with predictable cost, schedule and quality.
Many organizations approach process improvement by simply documenting each and every process. A process-centric approach can work, but it carries with it the high risk of failure as most people mistake the documentation for progress. In this approach the improvement effort is not integrated with the organizations product development goals, and usually results in the large stack of unused process documents. An alternative approach to the process-centric approach of improvement is to scope improvement programs based on the problems and goals of the organization. Re-directing the efforts in this direction results in making significant progress on the real issues and makes headway using CMM.
The process maturity models monitor team coordination, communication, encourages measurable feedback from one process activity to another. These models help teams control what they do and make better predictions about what will happen in the future. Models of process maturity are based on the notion that improving process will automatically improve products, especially software.
The Capability Maturity model (CMM), inspired by the process maturity model, consists of five levels of engineering and management process maturity, each level building on the next.
Each of the five capability levels is associated with a set of key process areas on which organizations should focus as a part of its improvement activity.
The CMM model is used in two ways: by the potential customers to identify the strengths and weaknesses of their suppliers and by the software developers to assess their capabilities and set a path towards improvement.
The five levels of CMM
The most generic explaination of the issues tackled at various levels and the end result expected from them is given below.
Level one- Initial
* Has no specific criteria and represents projects that typically have large amount of re-work.
* Numerous technical surprises.
* Frustrated customers
* Significant cost and schedule overrun.
* Good software can be the end- result of level 1 organization.
Level two- Repeatable
Issues tackled —
* Consists of sound project management.
* Negotiations with customer.
* Version control.
* Vendor management.
* Simple product and process assurance.
* Main focus of the organizations is on the product development rather than day-to-day crises.
Level three- Defined
Issues tackled —
* Focuses on organization-wide engineering skills.
* Basic systems engineering.
* Advanced project management.
* Infrastructure to support sustained improvement.
End result —
* Results in producing reliable software on time.
Level four- Managed
Issues tackled –
* Establishing the quantitative analysis of software process and software work product
* Detailed measures of software process and product quality are collected.
* Results in establishing the quantitative and qualitative analysis.
Level five – Optimizing
Issues tackled –
* Issues that both the organization and the projects must address to implement continual, measurable software process improvement.
* Defect Prevention, Technology Change Management, and Process Change Management.
End result —
* Establishes the feedback loop useful for the entire process.
Each key process area is described in terms of the key practices that contribute to satisfying its goals. The key practices describe the infrastructure and activities that contribute most to the effective implementation and institutionalization of the key process area.
Each time a goal or a problem is addressed, solution(s) from the CMM can be applied.
Figure 1. A typical diagram at any phase of CMM is as above
Implementing CMM across Organizations:
Developing reliable and usable software that is delivered on time and within budget is a difficult endeavor for many organizations. Products that are late, over budget, or that don’t work as expected also cause problems for the organization’s customers. As software projects continue to increase in both size and importance, these problems become magnified. They can be overcome through a focused and sustained effort at building a process infrastructure of effective software engineering and management practices.
Thus, the CMM can be used to identify and improve the process at organizations and also to provide a context for better understanding the different options for improving software development.
Following is the methodology used by an organization to get to CMM Level Two. The organization is a small company with fifteen developers and two QA personnel. Currently the software process is ad hoc and chaotic. Few processes are defined and success depends on individual effort.
The organization believes that:
* People are hired to do their jobs and there is neither time nor money to address training needs.
* Communicating with co-workers is easier since people tend to jell well together in small organizations.
* People live with short time cycles and under highly stressed environments and as such there is a blatant disregard for rules since rules are assumed to get in the way of getting work done.
Key Process Areas at Level2 of the CMM:
Following diagram lists the key process areas (KPA’s) for maturity level2 in the CMM. Each key process area identifies a cluster of related activities that, when performed collectively, achieve a set of goals considered important for enhancing process capability. The key process areas have been designed to reside at a single maturity level. The key process areas are building blocks that indicate the areas an organization should focus on to improve its software process. Key process areas identify the issues that must be addressed to achieve a particular maturity level.
Figure 2.The Key Process Areas by Maturity Level
The Key Process Areas at Level 2 focus on the software project’s concerns related to establishing basic project management controls. CMM does not mandate how a process should be done, only that it must be done in a particular manner. One is not restricted to using Total Quality Management (TQM), Object Oriented Development or any other specific methodologies. Nor does it prescribe using a particular life cycle method. One is free to develop processes that are appropriate for one’s organization.
However to operate at Level 2, one must have processes in the six Key Process Areas (KPA’s) and these processes should be used consistently on every project.
For the descriptions of each of the key process areas for Level 2 refer [APPENDIX A].
The Key Process Area Template
A template is generally used to express the Key Process Areas using a consistent structure and phrasing. The numbering of key practices is not significant, since there are exceptions and additions to the template.
For the sample template definition See [ APPENDIX A]
Based on the company’s needs, a number of business goals were identified, which formed a basis for a number of Key Performance Indicators. These covered the four perspectives, viz., Clients, Employees, Processes and Financial Performance. This was further broken down into Client Satisfaction, Employee Satisfaction, Process Efficiency and Compliance, Company Profitability and Growth. The CMM at level 2 has a strong focus on software quality assurance and process improvement, both of which are inline with firm’s organizational commitment.
Organizational change played a major role in the overall process improvement at the company, which meant a major improvement initiatives with organization-wide ramifications. A number of task forces of seasoned practitioners were deployed to redesign the Quality System and set up an organization wide metrics program. After several months of hard work and concerted effort, the company had a new Quality System in place. The new Quality System was built on an architecture, which focused on business needs, besides fulfilling the requirements for international quality standards. The architecture also provided adequate flexibility to encompass all the diverse activities and technological environments handled by the company.
The new Quality System had a 3-tier architecture. Organizational policies form the basic foundation for the Quality System, the next layer consisted of common processes, which were applicable to all Key Process Area’s. Thereafter, came the vertical layer, which was comprised of processes, which were specific to each KPA and its support group. And at the very top was the provision for incorporating client specific procedures and standards. Then came the mammoth task of re-educating the entire organization and getting people acquainted with the new quality System. A massive training initiative was launched and the quality message spread across the organization. The transition period lasted several months and was very critical, as the company was growing rapidly and yet business had to go on as usual.
Here, the combination of strong management commitment and CMM’s organizational focus with the concept of institutionalization ensured that the emphasis on quality and process improvement was not only maintained, but also strengthened during this period of organizational transformation.
The new processes of the redesigning system increased the efficiency and motivation levels of the staff, enabling them to perform better and more effectively. This resulted in a higher quality of deliverables and services to clients, which had a direct, positive impact on client satisfaction and repeat business. All the above factors together helped improve the bottom line and realize a substantial profit instead of the losses the company was incurring during the early years.