In this tutorial, we’ll discuss the capability maturity model (CMM) and the range of concepts underpinning it. In addition, we’ll examine the logic and structure of the CMM.
2. What Is Capability Maturity Model (CMM)?
CMM is a process-based model that helps assess an organization’s maturity across various domains. The Software Engineering Institute (SEI) in the United States was the first to introduce the concept of the CMM. The CMM method employs an outstanding practical tool, created as part of the process approach, for describing the activities of a project organization.
3. Capability Maturity Model Levels in Software Engineering
The software maturity levels provide a scale for describing development capability and maturity and assist in estimating the amount of work necessary to enhance a software development process. To prioritize process improvements for software development, we use CMM tools.
3.1. What Are Capability Maturity Model Levels?
Based on the process model, the CMM was developed to assess an organization on a five-point maturity level.
The five levels of the CMM software development process are:
- Initial Level
- Repeatable Level
- Defined Level
- Managed Level
- Optimizing Level
Each level denotes a stage in the development of organizational process maturity:
3.2. Level 1: Initial
At the first level, the software development process is ad hoc and occasionally chaotic. Success depends on individual effort, as few processes are clearly defined.
When an organization encounters difficulties, it often turns to ad hoc coding and testing instead of following predetermined steps. Project success depends on having a good manager and a skilled development team. The success of the development process depends on the managers, who are often able to withstand the pressure to speed up the process.
The development process is constantly changing, which means the initial capabilities of an organization’s software development process are uncertain. Particularly, this is determined by the abilities and motivation of individual employees, as well as their inbuilt skills and expertise.
3.3. Level 2: Repeatable
At the repeatable level, project management processes include cost, schedule, and functionality tracking. For projects with similar applications, the procedure is already in place to build on prior successes.
For managing a software project, the organization sets up specific guidelines and processes. To plan and oversee new projects, the organization makes use of this experience. Mainly, the goal is to create repeatable project management strategies that will help organizations achieve successful results with similar projects in the past.
In other words, project management becomes effective based on prior successes and replicating the practices that lead to successful project completion.
3.4. Level 3: Defined
At the defined level, the software development process is standardized, integrated into all organizational processes, and managed by management and software engineering teams. Each project follows an approved version of the organization’s standard software development and maintenance process.
With the cooperation of well-coordinated software engineering and management processes, developing and managing software is standardized at a high level.
In conclusion, a shared understanding of the duties, responsibilities, and roles within a particular software process is the foundation for the defined level of process capability across the entire organization. Therefore, this process capability is stable and repeatable, which means that costs, schedules, and functionality are all under control for established product lines. Additionally, tracking and monitoring the software’s quality enables the early detection and resolution of problems.
3.5. Level 4: Managed
At the managed level, software development is checked and controlled in great detail to ensure high-quality products.
Accordingly, the company has set quality objectives for software processes and products at the managed level. It uses organizational measurement programs to evaluate productivity and quality for key software process activities across all projects.
Generally, the managed level refers to a process capability where an organization can predict how its quality will change and take appropriate action when necessary. We achieve this by staying within measurable parameters and employing dependable software.
3.6. Level 5: Optimizing
At the optimizing level, the quantitative feedback from the process and experimenting with innovative ideas and technologies help continuous improvement.
To avoid defects, the organization focuses on continuously improving its software development process. We can achieve this by proactively identifying flaws and putting best practices into action. In addition, the organization uses data on the effectiveness of the current software process to make informed decisions about how to change it. Furthermore, the organization shares innovative ideas that leverage best practices throughout the organization.
Particularly, an organization at the optimizing level is constantly striving to improve its process capability to improve the process performance of its projects. The overall improvement can come through smaller incremental improvements to the current process and innovations that use new technologies and approaches.
4. Comparison of Levels
CMM process area by maturity level:
In this article, we discussed the capability maturity model (CMM), one of the most widely used software engineering tools for improving software development processes.
CMM is a model that shows an organization’s progress in developing and improving its capabilities. At each level, the model provides a path for improvement with specific goals.