It is important to understand the vocabulary used in describing the software process and the maturity model. These terms are used in a particular way, and it is important to know their meaning in order to comprehend the model. It is also necessary to under-stand that a software process model is not a mathematical formula. In this context, it is a description of how to conduct the process of software development.
Software process is defined as a set of activities that begin with the identification of a need and concludes with the retirement of a product that satisfies the need; or more completely, as a set of activities, methods, practices, and transformations that people use to develop and maintain software and its associated products (e.g., project plans, design documents, code, test cases, user manuals).
Software process capability describes the range of expected results achieved from a software process. But capability is not the same as performance. Software process performance is the actual results achieved from following a software process. That is, results achieved (performance) differ from results expected (capability).
Many software process techniques, such as quality assurance, configuration manage-ment, inspections, and reviews, are described in most software engineering textbooks and will not be covered here. From a general problem-solving point of view, project management may be described simply as:
-identifying what is to be done
-deciding how to do it
-monitoring what is being done
-evaluating the outcome
Most managers try to do the first and second steps above, describing what and how using plans and schedules. However, even though managers know that requirements will change, schedules will slip, and all the other typical problems will likely occur on the project, few attempts to build these dynamic events into their plans. In addition, managers need to monitor project activities and to adjust the plans as modifications occur. To improve the software development process, it is necessary to evaluate the success of the project and avoid repeating problems in the future. The CMM addresses these latter, less well-understood, issues in an effort to improve the software development process.
The scientific, closed-loop model of management can be explained most simply as follows. Project plans are used as hypotheses, and project results are evaluated to verify or validate these hypotheses. Statistical, or closed-loop, process management is based on measurement. First a baseline is determined. After improvements are instituted, measurements are repeated. Results are compared against the hypotheses or predictions to measure progress. This process comparison is repeated with the goal of reducing the differences between the predicted results and the actual results. Thus, the project is managed, but the management process is meta-managed.
W. E. Deming, one of the pioneers of applying statistical process control in industry, describes process improvement as a continuous cycle which follows these steps:
Understand the status of the development process.
Develop a vision of the desired process.
List improvement actions in priority order.
Generate a plan to accomplish the required actions.
Commit the resources to execute the plan.
Start over at step 1.