Current location - Education and Training Encyclopedia - Education and training - What is "CMI" in software testing ...
What is "CMI" in software testing ...
But CMM CMM refers to "capability maturity model", which is called capability maturity model for software in English and abbreviated as SW-CMM in English. It describes the development stages of software organizations in the practice of defining, implementing, measuring, controlling and improving software processes. 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.

CMM 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 the initial level, the second level is the repeatable level, the third level is the definition level, the fourth level is the management level, and the fifth level is the 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.

SW-CMM (Capability Maturity Model for Software Productivity Maturity Model, hereinafter referred to as "CMM") is a method developed by the Institute of Software Engineering (CMU SEI) of Carnegie Mellon University in the United States in 1987, which is used to evaluate the capability of software contractors and help improve software quality. Its purpose 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.

It is based on the idea that we can overcome the difficulties in software production as long as we concentrate on establishing effective software engineering process infrastructure and constantly carry out management practice and process improvement. CMM is the most popular and practical software production process standard in the world, which has been recognized by many countries and international software industries and has become an indispensable content for enterprises to engage in large-scale software production.

At present, the popular CMM version is 1. 1 (version 1. 1). According to the original plan of SEI, the improved version 2.0 (V2.0) of CMM will be completed in June 1997+0 1. However, the US Department of Defense Office asked the Institute of Software Engineering (SEI) to postpone the release of CMM version 2.0 until they completed another more urgent project-CMM 2.0

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

CMM provides a gradually improved framework for the process capability of software enterprises. CMM provides a framework based on process improvement based on all the achievements of previous software engineering process improvement and the experience of previous software engineering. It points out what main tasks a software organization needs to manage in software development, the relationship between these tasks, and what order to do these tasks step by step in order to make the software organization mature.

First, the birth of CMM

In the information age, the importance of software quality is increasingly recognized by people. Software is a product, a device and a tool. Its quality satisfies customers and is the key to product market development and career development. The field of software engineering has made unprecedented progress from 1992 to 1997, and its achievements have exceeded the sum of the achievements in the field of software engineering in the past five years.

Since the mid-1970s, software management engineering has attracted extensive attention. At that time, the U.S. Department of Defense specially studied the causes of poor software projects, and found that 70% of the projects were caused by poor management, not lack of technical strength, and then concluded that management was the factor affecting the overall situation of software R&D projects, while technology only affected part. By the mid-1990s, the problem of poor software management engineering still existed, and only about 65,438+00% of the projects could be delivered according to the scheduled cost and schedule. The main reasons for the failure of software projects are: unclear definition of requirements; Lack of good software development process; There is no unified product research and development team; Subcontracting management is not strict; Not always pay attention to improving the software process; Pay little attention to software architecture; The software interface is not clearly defined and lacks proper control; The software upgrade exposed the shortage of hardware; Care about innovation but don't care about cost and risk; There are too few military symbols and they are not perfect. Among many factors related to the success of software projects, software measurement, workload estimation, project planning, schedule control, demand change and risk management are all directly related to project management. Therefore, the significance of software management engineering is very important.

Compared with other engineering management, software management engineering has its particularity. First of all, software is a knowledge product, the progress and quality are difficult to measure, and the production efficiency is also difficult to guarantee. Secondly, the complexity of the software system is beyond imagination. Because software is complex and difficult to measure, the development of software management engineering is still immature.

The development of software management engineering has experienced a structured production era characterized by structured analysis and design, structured review, structured program design and structured testing since 1970s. In the mid-1990s, marked by the maturity and increasing market acceptance of CMM model, it entered a process-centered era marked by process maturity model CMM, individual software process PSP and group software process TSP. Based on the maturity of software process technology and the development of object-oriented technology and component technology in the mid-1990s, the third era of software development has gradually emerged, that is, the era of industrial production of software. It is predicted that by 2005, the real industrial production of software can be realized. This trend should be highly valued by the software business community and relevant departments, and measures should be taken as soon as possible to keep up with the pace of software development in the world. The shift of software production to focusing on improving software process is the way that the software industry in the world will take sooner or later.

Software process improvement is the core issue of current software management engineering. The development of computing in recent 50 years makes people realize that to develop software with high efficiency, high quality and low cost, it is necessary to improve the software production process. From the 1970s to the mid-1990s, software management engineering has gone through a process-centered, structured analysis and design, structured review, structured program design and structured testing, marked by CMM, PSP and TSP, and moved towards the maturity of software process technology and the development of object-oriented technology and component technology. The shift of software production to focusing on improving software process is the way that the software industry in the world will take sooner or later. The software industry has experienced or is experiencing "the maturity of software process" and is gradually transitioning to "the industrialization of software". Standardized software process is a necessary condition for software industrialization.

Software process studies how to organize people, technology and tools, improve the efficiency of software production and ensure the quality of software products through effective management means. From this, three schools of software process were born: CMM/PSP/TSP of CMU-SEI; ISO 9000 quality standard system; ISO/IEC 15504(SPICE).

CMM/PSP/TSP, namely, software capability maturity model/individual software process/group software process, is the research achievement "Evaluation Method of Contractor's Software Engineering Capability" published by the research group headed by W.S.Humphrey in CMU/SEI, USA in 1987. SO 9000 quality standard system was first adopted by Europe in 1970s, and then developed rapidly in the United States and other parts of the world. At present, the European Union actively promotes the institutionalization of software quality, and puts forward the following series of ISO9000 software standards: ISO900 1, ISO9000-3, ISO9004-2, ISO9004-4 and ISO9002;; ; ISO/IEC 15504(SPICE) is a technical report produced by the international organization for standardization in 199 1 following the basic idea of CMU-SEI-ISO/IEC 15504- information technology software process evaluation.

At present, it is recognized by academic circles and industry that CMM, a software capability maturity model led by W.S.Humphrey, is the best software process at present and has become the de facto industrial standard of software process in the industry.

Second, the development of CMM

From 65438 to 0987, the research group headed by W.S.Humphrey published CMM/PSP/TSP technology, which opened up a new road for software management engineering.

CMM framework uses five evolutionary levels to evaluate the history and present situation of software production: the initial level is a chaotic process, the repeatable level is a trained software process, the definition level is a software process with consistent standards, the management level is a predictable software process, and the optimization level is a software process that can be continuously improved. The software process realized by any unit may be mature and immature on the one hand, but it must belong to one of these five levels as a whole. And to a certain extent, the maturity is also different. In different levels of CMM framework, it is necessary to solve software process problems with different levels of characteristics. Therefore, a software development unit first needs to know which level it is, and then it can solve related problems according to the special requirements of this level, so as to get twice the result with half the effort. Any software development unit can only evolve from this level to the next level if it is committed to software process improvement. Moreover, in the process of evolution from a mature level to a more mature level, those abilities that already exist in the original level must be maintained and carried forward.

The quality of software products largely depends on the quality of software development and maintenance process used when building software. Software process is a personnel-intensive and design-intensive operation process: without well-trained personnel, it will be difficult to establish and support the success of software process, and it will be difficult to achieve results in improvement. The framework described by CMM is a method to describe the evolution from random chaotic process to well-trained mature process.

CMM includes two parts: "Software Capability Maturity Model" and "Key Practice of Capability Maturity Model". "Software Capability Maturity Model" mainly describes the structure of this model and gives the definition of its basic components. "Key Practices of Capability Maturity Model" describes in detail the "key practices" involved in each "key process aspect". The "key process aspect" here refers to a group of related activities; Every software capability maturity level contains several process aspects that are very important to the maturity level, and their realization plays a role in ensuring the realization of the maturity level goal. These process areas are called the key process areas of maturity level, and the existence of non-key process areas means that they do not play a key role in achieving the objectives of the corresponding software-level capability maturity model. Summarized as: a collection of interrelated software practice activities and related infrastructure. "Key practice" refers to the most important infrastructure and activities that can effectively realize and institutionalize key processes, as well as the establishment of principles, procedures, measures, activities and related infrastructure that play a key role in key process practice. Key practices generally only describe "what to do" and do not specify "how to do it". According to the five "common * * * characteristics" of each key process (commitment to implement the process, ability to implement the process, activities to be implemented in the process, measurement and analysis of process implementation, and confirmation that the implemented activities conform to the process), each key practice is classified and described in detail one by one. When all key practices of a key process have been achieved, it is considered that the key process has been achieved, and when a maturity level and all key processes at a lower level it contains have been achieved, it is considered that the level has been achieved.

As mentioned above, CMM divides the capability maturity of software development organizations into five levels. Except level 1, each other level consists of several key process aspects. Each key process aspect has the above five common characteristics. CMM gives some specific goals for each key process. The key practice of classification according to each common feature is selected and determined according to the specific objectives of the key process. If all the key practices involved in a key process are handled properly, then the goal of the key process will be achieved, which means that the key process has been achieved. The advantage of this maturity classification is that these levels clearly reflect the priority and order of process improvement activities.