Questions about CMM

What is CMM?

A few days ago, the article 17 of "Several Policies to Encourage the Development of Software Industry and Integrated Circuit Industry" issued by the State Council stated that the CMM certification fee of software export-oriented enterprises should be properly supported. What is CMM? CMM is the abbreviation of capabilityMaturityModel, which is a method to evaluate software contracting ability and help it improve software quality, focusing on the management of software development process and the improvement and evaluation of engineering ability. CMM is divided into five levels: the first level is initial level, the second level is repeatable level, the third level is definition level, the fourth level is management level, and the fifth level is optimization level. CMM was successfully developed by Institute of Software Engineering, Carnegie Mellon University, USA in 1987. It is the most popular and practical software production process standard and software enterprise maturity level certification standard in the world. At present, all the existing software enterprises in China have passed the CMM standard certification.

********************************************

CMM is a software process capability maturity model.

But this thing was despised by an article in the last issue of csdn magazine.

Introduction of CMM

CMM is the abbreviation of Software Process Capacity Maturity Model, which was started by the Institute of Software Engineering of Carnegie Mellon University in 1986 to meet the requirements of the federal government in evaluating the capability of software suppliers, and the CMM version 1.0 was officially launched in 199 1 year. CMM has attracted much attention since it came out, and it has been widely used in some developed countries and regions. It has become an important reference factor to measure the level of software development and management of software companies and a de facto industry standard for software process improvement. It is understood that dozens of companies in the United States, India, Japan and other countries have passed CMM certification in different degrees.

1986165438+10. In September 1987, SEI developed a software capability maturity framework and a software questionnaire capability maturity model at the request of the U.S. federal government and with the assistance of Mitre Company, which were used to evaluate the capabilities of software suppliers. This is the earliest tool used to explore the maturity of software process.

Four years later, that is, 199 1 year, SEI summarized the practical experience of CMM maturity framework and the first version of maturity questionnaire, and on this basis, launched the civil CMM 1.0 version.

After CMM 1.0 was used for two years,1April 1992, SEI held a new seminar on CMM, which was attended by about 200 experienced software experts. After extensively listening to their opinions, SEI introduced CMM 1. 1 in 1993. This is also a relatively popular and universal CMM version in the world.

This work has been going on for more than ten years. According to SEI's original plan, the improved version 2.0 of CMM should be completed in June 1997 1 1, and then the quasi-CMM 2.0 should be completed in June 1999 after obtaining the practical feedback of version 2.0. However, the U.S. Department of Defense Office asked SEI to postpone the release of CMM version 2.0 and complete a more urgent project CMMI first.

CMMI (Capability Maturity Model Integration) is the integration of capability maturity models, which is also an idea of the US Department of Defense. They want to integrate all existing and future capability maturity models into a framework. This framework has two functions: first, the reform of software procurement methods; Secondly, establish process improvement from the perspective of integrated product and process development, including perfect system development principles.

With the deepening of people's research on CMM, other disciplines have also introduced their own CMM models based on the characteristics of this system. For example, human resource capability maturity model, system engineering capability maturity model and so on. In order to show the difference, many materials at home and abroad call CMM SW-CMM.

The improvement of software process maturity is a gradual process, which needs a long-term and sustainable development process as a guarantee. In order to establish a process-oriented foundation and a culture of continuous improvement, some software companies may spend a lot of energy and time. But this kind of effort is very necessary for any software enterprise.

CMM currently represents an idea of software development and a method to improve software process capability. Although it has some shortcomings. For example, maturity level, key process areas, common attributes and key practices need to be further discussed and revised in the software industry, but it does provide a good framework for the development of the software industry and is a useful tool to improve the software process capability.

It is the common aspiration of Chinese people to enhance the competitiveness of software enterprises in China and improve the level of domestic software, but it is also an indisputable fact that the level of software in China, especially the ability of software development and production, is still very poor. Then, how to improve the development and production capacity of software in China, so as to improve the overall level of software? This may be an effective way for software enterprises to implement CMM.

The software capability of an enterprise depends more on its process capability, especially the maturity of software development and production. The more mature its process capability is, the more secure its software production capability will be. At present, some domestic software enterprises are trying to implement CMM.

Of course, CMM is not omnipotent, and it may not be suitable for all software enterprises. Enterprises that implement CMM also have failed examples. We hope that through this column, more enterprises can learn about CMM, find a development path suitable for their own enterprises as soon as possible, and thus improve the competitiveness of China software enterprises.

**********************************************

Draw a picture: (CMM five-layer structure diagram)

-

/Optimization level/

/ (5) /

-

Process of continuous improvement

|

-

/Manageable level/

/ (4) /

-

Predictable process

|

-

/classification/

/ (3) /

-

The process of standardization

|

-

/Repeatable/

/ (2) /

-

Strict procedure

|

-

/initial level/

/ ( 1) /

-

*********************************************

CMM, namely capability maturity model, is an important milestone in software engineering research. The research of CMM began with 1986 1 1. At that time, in order to meet the requirements of the US federal government to evaluate the capabilities of software suppliers, the Institute of Software Engineering (SEI) of Carnegie Mellon University, with the assistance of Mitre, released the Capability Maturity Framework (CAPABILITY) in less than one year.

Many people think that this questionnaire represents the CMM model. In fact, it is just a tool to explore the maturity of software process. Four years later, the real model appeared. SEI summarized the practical experience of the maturity framework and the first version of the maturity questionnaire since 1987, and on this basis, introduced CMM 1.0. CMM 1 was launched on 199 1, which integrates the experience of evaluating software companies in the past four years and extensive user feedback, and establishes an available model on the basis of maturity framework, which can help software companies to establish and implement process improvement plans more effectively.

After CMM 1.0 was used for two years, 1992 held a seminar in April, which was attended by about 200 experienced software professionals. After listening to their feedback extensively, SEI launched CMM 1. 1 in 1993. In recent years, CMM has released version 2.0 and entered the ISO system, which is called ISO/IEC 15504 or SPICE. SPICE entered the field testing stage from 1995, and may be released on 200 1.

CMM is committed to the management of software development process and the improvement and evaluation of engineering ability. This model has been widely used in the United States and North America and is being adopted by more and more large information technology enterprises in Europe and Asia. In fact, it has become the de facto industrial standard for software development process improvement and evaluation.

CMM divides the maturity of software process into five levels, and the following are the characteristics of the five-level software organization:

(1) The initial work is out of order, and the original plan is often abandoned during the project. Management is disorganized and lacks a perfect management system. The results of development projects are unstable, and the management methods of excellent managers may be effective, but once he leaves, the work order will be unrecognizable, and the performance and quality of products depend on individual abilities and behaviors.

(2) Repeatable management is institutionalized, and basic management rules and regulations have been established, and management work has rules to follow. Standardization has been achieved initially, and the standard has been well implemented in the development work. Changes should be made in accordance with the law to reach the baseline. Stable and traceable, the planning and management of new projects are based on past practical experience and have the environment and conditions to repeat previous successful projects.

(3) The development process of the definition, including technical work and management work, has been standardized and documented. Established a perfect training system and expert evaluation system. All technical activities and management activities can be controlled, and they have the same understanding of the process, post and responsibility of the project under construction.

(4) Quantitative quality objectives have been established for the managed products and processes. The productivity and quality of activities in the process can be measured. The process database has been established. It realizes the control of project products and processes. Forecast process and product quality trends, such as forecast deviation, and realize timely correction.

(5) Optimization can concentrate on improving the process and adopting new technologies and methods. There are ways to prevent defects, find out weak links and improve them. Statistical data of process effectiveness can be obtained and analyzed to get the best method.

India is a big software country and attaches great importance to the management of software development process and the formulation of related theories and standards. According to statistics, among more than 2,000 software companies in India, 75 have passed ISO9000 certification and more than 60 have passed CMM certification, among which 1 company has reached CMM 5, 3 have reached CMM 4 and 4 have reached CMM 3.

The main differences between CMM and ISO9000 are as follows:

1.CMM is specially designed for software product development and service, while the scope of ISO9000 is much wider.

2.CMM emphasizes the maturity of software development process, that is, the continuous improvement and perfection of the process, while ISO9000 only describes the minimum standard of acceptable quality system.

3.3 coverage. CMM3 is greater than ISO9000.

The significance of introducing CMM;

1. For software enterprises:

Improve the management ability of software development: CMM provides software enterprises with self-evaluation methods and self-improvement means.

Improve software productivity

Enhance the international competitiveness of software production

2. For software project contractors and software users:

It provides a means to evaluate the development management level of software developers and helps to identify the risks of software development projects.

***********************************************

With the deepening of people's research on CMM, other disciplines have also introduced their own CMM models based on the characteristics of this system. For example, human resource capability maturity model, system engineering capability maturity model and so on:

(1) software coordinate measuring machine (software coordinate measuring machine)

(2) SE-CMM (System Engineering CMM) System Engineering CMM.

(3) SA-CMM (Software Purchasing CMM) Software Purchasing CMM.

(4) ipt-CMM (Integrated Product Team CMM) Integrated Product Group CMM.

(5) P-CMM (People CMM) human resource capability maturity model.

In order to show the difference, many materials at home and abroad call CMM SW-CMM. According to SEI's original plan, the improved version 2.0 of CMM should be completed in June 1997 1 1, and then the quasi-CMM 2.0 should be completed in June 1999 after obtaining the practical feedback of version 2.0. However, the U.S. Department of Defense Office asked SEI to postpone the release of CMM version 2.0 and complete a more urgent project CMMI first.

CMMI (Capability Maturity Model Integration) is a capability maturity integration model and an idea of the US Department of Defense. They want to integrate all existing and future capability maturity models into a framework. This framework has two functions: first, the reform of software procurement methods; Secondly, establish process improvement from the perspective of integrated product and process development, including perfect system development principles. As far as software is concerned, CMMI is the revised version of SW-CMM. It combines the advantages of SW-CMM version 2.0c and SPA, which is more reasonable, scientific and thorough. When SEI released CMMI-SE/SW 1.0, it was announced that it would take about two years to complete the transition from CMM to CMMI.

CMMI project provides an integrated product set for industries and government departments, and its main purpose is to eliminate the inconsistency and duplication between different models and reduce the cost of model-based improvement. CMMI will use a more systematic and consistent framework to guide organizations to improve software processes and improve the development, acquisition and maintenance capabilities of products and services.

*********************************************

The development process of CMM

1984 In order to reduce the procurement risk, the US Department of Defense commissioned the Institute of Software Engineering (SEI) of Carnegie Mellon University to develop a software process improvement and evaluation model, also known as SEI SW-CMM. The model was officially launched on 199 1, and was quickly recognized by software companies and their customers. Starting from 1987, SEI introduced SW-CMM framework into 199 1, 1993, CMMI-SE/SW 1 in 2000. In April, 20001,China also issued "SJ/T11234-20065438+0 software process capability evaluation model" and "SJ/T165438+0235-200654". Our government has always attached great importance to the standardization and development of the software industry. In June, 2000, the State Council issued "Document 18". Article 17 of Chapter 5 clearly stated that software export-oriented enterprises should be encouraged to pass ISO9000 series quality assurance system certification and CMM certification, and their certification fees should be properly supported by the Central Foreign Trade Development Fund. At present, all provinces, cities, high-tech zones and software parks have a system of giving financial rewards to enterprises that pass CMM.

**********************************************

The meaning and function of CMM

CMM is the abbreviation of Capability Maturity Model for Software, which is called "Software Capability Maturity Model" in Chinese, and it is a description of organizational software process capability. The core of CMM is to regard software development as a process. According to this principle, software development and maintenance are monitored and studied, which makes it more scientific and standardized, and enables enterprises to achieve business goals better. It focuses on the management of software process development and the improvement and evaluation of software engineering capabilities, so CMM is used to evaluate the capabilities of software contractors and help organizations improve the quality of software processes. It is the most popular and practical software process improvement model in the world at present, and it has become an indispensable content for enterprises to engage in large-scale software production. The purpose of CMM is to help software enterprises manage and improve the software engineering process, enhance their development and improvement capabilities, and thus develop high-quality software on time within the budget. The implementation and evaluation of CMM model can bring the following benefits to enterprises: guiding software organizations to improve their software development and management capabilities; Reduce the risk of software contractors and buyers; Evaluate the software development and management capabilities of software contractors; Help software companies determine effective processes and key practices for developing and maintaining software; Help software enterprises identify the key practices needed to achieve a higher maturity of CMM; Improve the international competitiveness of software enterprises.

**********************************************

What is the core of CMM? This is a long-standing problem among people interested in software engineering and process improvement. I prepared a case in a CMM training. I hope to make this question vivid and simple, and share it with you here. I also hope that you can ask more questions. If you want to reprint, please give me a Email:JennyLi@netease.com. Thank you very much. Case background: There is a house with some people, some cups and kettles, and appliances for boiling water. Everyone needs to drink boiled water. CMM 1: process: find cups and kettles to pour water. Problem: I can't find a cup, I can't find a kettle, I can't drink water, I don't know how to drink water a day, I don't know how long it takes to pour a glass of water, I don't know how long it takes everyone to pour water every day, I don't know how to think: Can buying a water dispenser solve the problem? CMM level 2: process: put the cup on the coffee table. Put the kettle on the dining table. If there is no water, boil the cup in the kitchen and put it back on the coffee table. Training: Boil water in the kitchen. Wash a cup and measure how many pots of water you need to boil every day. How long does it take each person to pour water every time/day? Some people will check whether everyone washes the cups and puts them back on the table after using them. Managers pay attention to the implementation status and effect of these activities: boiling water for too long and drinking efficiency is unstable until it gets cold. Some people Cmm level 3: process: everyone takes cups from the coffee table first, and then pours water from the table. Everyone pours two glasses of water into a big cup at a time, and shares them with others. Designate someone to boil water regularly, and designate someone to collect and clean the cups in the cold water pot regularly. Q: How can we do better? Thinking: Is it cost-effective to buy a water dispenser? CMM Level 4: Process: Establish evaluation model: saving 1 min = saving 1 yuan. If each person saves 1 minute per day, 100 people 1 month (30 days) can save 3,000 yuan-as long as the monthly expenditure does not exceed 3,000 yuan, you can try a new process and define a quantitative management goal: within three months, reduce the time for each person to pour water for 2 minutes per day. Establish a baseline with the current time for each person to pour water every day: average 10 minutes. Everyone sets an above-average goal for himself: I spend no more than 6 minutes pouring water every day to measure and monitor the time I spend pouring water every day. Once it exceeds 6 minutes, I will analyze the root cause and make a decision. The final score is 8 minutes, exceeding the target, but better than the average. After 3 months, adjust the baseline: average 8 minutes, minimum 4 minutes and maximum 15 minutes. Problem: I can't do it without improvement! Thinking: Is buying a water dispenser the best solution? CMM Level 5: Process: Finding the root of the problem: The reason why the water pouring time is indispensable is that the room is too big and you walk too far to the dining table to find out all the methods that can solve the root cause. Use the evaluation model to evaluate and choose a method, and set the improvement goal: buy a 10 water dispenser in the living room, save 2 minutes per person every day, and formulate the corresponding process: if you buy a water dispenser, you need to order bottled water regularly. Clean and disinfect the water outlet of the drinking fountain regularly, and ask someone to replace the empty bucket in time. Trial process: first find a few people to try and see if they can achieve the expected goal. Let everyone continue to look for other root causes with the water dispenser ... Question: How to find more root causes and how to introduce more new methods. Thinking: Is there a better way than drinking fountain?

Metaphor 2:

Level 1: A group of people have no training and don't know if they have experience. After entering the water, they fluttered around, some floated and some sank. This is the first level of disorder, and the result is the unknowable second level: everyone has been in a swimming pool or a small pond several times, and basically nothing will happen under such conditions. But the movements are at sixes and sevens, and there is a dog plane that can't be named. In other words, the second level can repeat the previous successful experience: after research, determine several standard swimming strokes, know that freestyle is the fastest, breaststroke is the least laborious, and so on. This is the third level, and there is a standard process to define the fourth level: after everyone has mastered the standard movements, they can compare their grades. By measuring everyone's swimming performance (of course, the performance of different strokes should be separated), muscle strength and so on. Analyze the particularly good and bad, find out the reasons for the good and bad, and everyone's technical level is constantly improving. This is the four-level quantitative control, which manages and improves the five levels through data: everyone has a high technical level and perfect movements. We will improve our performance by creating new swimming strokes, launching new swimsuits and other innovations. This is the five-level continuous improvement.

**********************************************

Structure of coordinate measuring machine

SW-CMM provides a gradual evolution framework for the process capability of software enterprises, which has five steps. The first level is actually a starting point. Any enterprise that intends to evolve according to CMM quality is generally at this starting point, and through this starting point, it will move towards the second level. Except for the first level, each level has set a set of goals. If we achieve this set of goals, it means that we have reached this mature level and can move on to the next level. CMM system does not advocate cross-level evolution, because from the second level, every low-level implementation is the basis of high-level implementation.

SW-CMM provides a gradually evolving framework.

1. The software process in the initial stage is an undefined random process, and the execution of the project is random or even chaotic. Perhaps, some enterprises have formulated some software engineering specifications, but if these specifications fail to cover the basic key process requirements, and the implementation is not guaranteed by policies and resources, it is still regarded as the primary level.

Based on years of experience and lessons, people have come to the conclusion that the primary problem of software development is not technology, but management. Therefore, the second level focuses on the software management process. The manageable process is a repeatable process, which can gradually evolve and mature. The second-level management process includes five aspects: demand management, project management, quality management, configuration management and subcontracting management. Among them, project management is divided into two processes: planning process and tracking monitoring process. By implementing these processes, we can see a planned and controllable software development process from the perspective of management.

3. The definition layer only defines the basic process of the second-level management, but does not define the standards for implementation steps. The third level requires the establishment of enterprise-wide engineering standards. Both management and engineering development need a set of documented standards, and these standards are integrated into the process of enterprise software development standards. All developed projects need to cut out the project processes according to this standard process and realize these processes. The cutting of the process is not arbitrary, and it needs to be approved by the relevant personnel of the enterprise before it can be used.

4. The fourth level management is quantitative management. All processes need to establish corresponding measurement methods, and the quality of all products (including work products and products submitted to users) needs to have clear measurement indicators. These metrics should be detailed and can be used to understand and control software processes and products. Quantitative control will really turn software development into industrial production activities.

5. The goal of the fifth level optimization is to achieve continuous improvement. The so-called continuous improvement is to improve the next execution process according to the feedback information of process execution, that is, to optimize the execution steps. If an enterprise reaches this level, it shows that it can constantly adjust the software production process according to the actual project nature, technology and other factors to achieve the best.

In terms of effect, the maturity of software development and production has brought completely different effects to the above-mentioned software enterprises in different stages. From the first stage to the fifth stage, the planning accuracy of software development and production is getting higher and higher, the production cycle of unit project is getting shorter and shorter, and the cost of unit project is getting lower and lower.

Critical process area (KPA)

Except the first stage, each stage of SW-CMM is made of exactly the same structure. Each level includes several key process areas (KPA) to achieve the goals of this level, and each KPA further includes several key implementation activities (KP). No matter what kind of KPA, their implementation activities are organized by five common attributes, that is, each KPA contains five types of KP.

1. Each KPA has a set of targets. If these goals can be achieved in every project, it means that the enterprise has reached the requirements of this KPA. If all the KPA requirements of a level are met, it indicates that the required capacity of that level has been reached.

2. Implementing Safeguard Implementing Safeguard is an activity that enterprises must take in order to establish and implement the corresponding KPA. These activities mainly include the formulation of enterprise-wide policies and the responsibilities of senior management.

3. Implementation ability Implementation ability is a prerequisite for enterprises to implement KPA. Enterprises must take measures to meet these conditions before they can implement KPA implementation activities. Executive ability generally includes resource guarantee and personnel training.

4. Execution activities The execution process describes the necessary roles and steps required to execute KPA. Among the five attributes, execution activity is the only attribute related to project execution, and the other four attributes are related to the establishment of CMM capability infrastructure of enterprises. Execution activities generally include planning, executing tasks, tracking task execution, etc.

5. Metric analysis Metric analysis describes the process of measurement and the requirements of metric analysis. The requirement of typical metrics and metric analysis is to determine the status and effectiveness of the implementation activities.

6. Implementation verification Implementation verification is to verify whether the implementation activities are consistent with the established process. The implementation of verification includes management review and audit and quality assurance activities.

When implementing CMM, we can determine the order of realizing KPA according to the different degrees of problems existing in enterprise software process, and then gradually establish and implement corresponding processes according to the determined order. When a KPA is implemented, the target group can also be gradually satisfied. Process evolution and gradual maturity are the goals of CMM system.