i. The Capability Maturity Model (CMM) is a methodology used to develop and refine an organization's software development process. The model describes a five-level evolutionary path of increasingly organized and systematically more mature processes.
ii. It provides guidance on how to gain control of processes on developing and maintaining software and on how to evolve towards a culture of software engineering excellence.
iii. CMM has 5 different levels of process capability:
A. Initial: - The software process is characterized as ad hoc, and occasionally even chaotic. - At this level, one frequently has difficulty making commitments that the staff can meet with an orderly process. - Products developed are often over budget and schedule. - Wide variations in cost, schedule, functionality and quality targets.
B. Repeatable: - Basic management processes are established to track cost, schedule, and functionality. The necessary process discipline is in place to repeat earlier successes on projects with similar applications. – Realistic project commitments based on results observed on previous projects – Software project standards are defined and faithfully followed – Processes may differ between projects – Process is disciplined – earlier successes can be repeated
C. Defined: - The software process for both management and engineering activities is documented, standardized, and integrated into a standard software process for the organization. - All projects use an approved, tailored version of the organization’s standard software process for developing and maintaining software.
D. Managed: - Detailed measures of the software process and product quality are collected. Both the software process and products are quantitatively understood and controlled. _ Narrowing the variation in process performance to fall within acceptable quantitative bounds – When known limits are exceeded, corrective action can be taken – Quantifiable and predictable - predict trends in process and product quality
E. Optimizing: - Continuous process improvement is enabled by quantitative feedback from the process and from piloting innovative ideas and technologies. - Goal is to prevent occurrence of defect. - Data on process effectiveness used for cost benefit analysis of new technologies and proposed process changes
The Capability Maturity Model (CMM) is a methodology used to develop and refine an organization's software development process. The model describes a five-level evolutionary path of increasingly organized and systematically more mature processes.
The Software Engineering Institute (SEI) Capability Maturity Model (CMM) specifies an increasing series of levels of a software development organization. The higher the level, the better the software development process, hence reaching each level is an expensive and time-consuming process.
Levels of CMM
Level One :Initial - The software process is characterized as inconsistent, and occasionally even chaotic. Defined processes and standard practices that exist are abandoned during a crisis. Success of the organization majorly depends on an individual effort, talent, and heroics. The heroes eventually move on to other organizations taking their wealth of knowledge or lessons learnt with them.
Level Two: Repeatable - This level of Software Development Organization has a basic and consistent project management processes to track cost, schedule, and functionality. The process is in place to repeat the earlier successes on projects with similar applications. Program management is a key characteristic of a level two organization.
Level Three: Defined - The software process for both management and engineering activities are documented, standardized, and integrated into a standard software process for the entire organization and all projects across the organization use an approved, tailored version of the organization's standard software process for developing,testing and maintaining the application.
Level Four: Managed - Management can effectively control the software development effort using precise measurements. At this level, organization set a quantitative quality goal for both software process and software maintenance. At this maturity level, the performance of processes is controlled using statistical and other quantitative techniques, and is quantitatively predictable.
Level Five: Optimizing - The Key characteristic of this level is focusing on continually improving process performance through both incremental and innovative technological improvements. At this level, changes to the process are to improve the process performance and at the same time maintaining statistical probability to achieve the established quantitative process-improvement objectives.