It is believed that only by improving the process can be quality & productivity be improved. Process improvement required understanding the current process & its deficiencies & then taking actions to remove the deficiencies. This is possible only if the current process is under statistical control.
Capability Maturity Model (CMM)
To improve its software process, an organization needs to first understand the states & then develop a plan to improve the process. It is generally agreed that changes to a process must be introduced in small increments. The changes that take place depend on the current state of the process. This concept of introducing changes in small increments based on the current state of the process has been captured in the capability Maturity Model (CMM) framework. The CMM framework provides a general roadmap for process improvement.
Software process capability describes the range of expected results that can be achieved by following the process. The process capability of an organization determines what can be expected from the organization in terms of quality & productivity. The CMM framework provides process improvement in small increments as processes go from their current levels to the next higher level when they are improved. Hence, during the course of process improvement, a process moves from level to level until it reaches Level 5.
The CMM provides characteristics of each level, which can be used to assess the current level of the process of an organization. As the movement from one level is to the next level, the characteristics of the levels also suggest the areas in which the process should be improved so that it can move to the next higher level. For each level, it specifies the areas in which improvement can be absorbed & will bring the maximum benefits.
Level 1. The initial process is an ad-hoc process that has no formalized method for any activity. Basic project controls for: ensuring that activities are being done properly but the project plan is missing. Success in such organizations depends solely on the quality & capability of individuals. The process capability is unpredictable as the process constantly changes. Organizations at this level can benefit most by improving project management, quality assurance & change control.
Level 2. In a repeatable process, policies for managing a software project & procedures to implement those policies exist. That is, project management is well developed in a process at this level. Project commitments are realistic & based on past experience with similar projects. Cost & schedule are tracked & problems resolved when they arise. Formal configuration control mechanism exist results obtains by this process can be repeated as the project planning & tracking is formal.
Level 3. At the defined level, the organization has standardized on a software process, which is properly documented. A software process group exists in the organization that owns & manages the process. In the process, each step is carefully defined with verifiable entry & exit criteria, methods for performing the step, & verification mechanism for the output of the step.
Level 4. At the managed level, quantitative goals exist for process & products Data is collected from software processes, which is used to build models to characterize the process. Due to the models, the organization has a good insight in the process. The results of using such a process can be predicted in quantitative terms.
Level 5. At the optimizing level, the focus is on continuous improvement. Data is collected & routinely analyzed to identify areas that can be strengthened to improve quality or productivity. New technologies & tools are introduced & their effects are measured to improve the performance of the process. Best software engineering & management practices are used throughout the organization.