Capability Maturity Model for Software Development
All the organizations, regardless of the industry or size, start a continuous search for the improvement of their products, services, methods, processes etc. with the purpose of having constant evolution and a rapid response to the continuous changes in the market.
When talking about the software development product industry, this evolution occurs even faster; therefore, the need to establish a maturity model that enables the structuring of the software development departments and the assurance of quality must be a priority in the organizations. There are many models that can be implemented, but we will go over the Software Engineering Maturity Model Version 2.0 developed by the Spanish Association of Standardization and Certification (known as AENOR in its Spanish acronym).
The first point to be defined to discuss the CMU is: What is the software process? This is defined as a group of activities, methods, practices and transformations that are used to develop and maintain the software and associated products [CMU/SEI,1995]. A software developing organization that intends to follow an approach oriented to software processes, must implement the construction of software products systematically and coherently, with a clear establishment of who (role) does what(task)and with what tool (technology), seeking that entries (Work products) produce egresses (work products)
For a software developing organization to obtain the benefits of a process-oriented approach, this must be of good quality, which means that it must incorporate key process-management practices, such as: defining the process, measuring the process, controlling the process, and improving the process [Florac y Carleton, 1999]. The incorporation of these management practices enables the gradual increase of the capability of the process and, therefore, its quality, accomplishing a relevant organizational asset that supports the business objectives. In addition, increasing the capability of the processes in a software developing company leads to the rise of its organizational maturity, taking it from an immature organization to a mature one.
It is possible to identify an immature organization when there is no process-oriented approach and because success depends on “heroes," it has ups and downs on the productivity, high resource rotation, unrealistic planification, there is a lot of effort in maintenaince and many unhappy employees. The CMU instructs us into the implementation of five levels where the organization will progressively increase its maturity level, giving as a result an organization with defined and managed processes, with the knowledge within the organization, delivery of the software with the expected quality and within the deadlines; customer satisfaction and happy employees.
Each maturity level has a group of predefined processes that must be reached to attain that level. Reaching a level of maturity means complying with all the process requirements of that maturity level. Level 1 basic is when the processes show the accomplishment of the process itself, the processes are identified and there are work products after its execution. For level 2 Managed, the organization proves its processes management and the associated work products; in level 3 Established, the organization proves the effective definition, improvement, display and assurance of its processes; when talking about Level 4 Predictable, the organization can demonstrate and effective analysis and quantitative control of the processes that it considers fundamental for the accomplishment of its business objectives, and in the last level, 5 Innovated, the organization es capable of demonstrating innovation in the processes that it considers fundamental to accomplish its business objectives. Each one of the levels is cumulative and to reach each one of them, the previous one must have been complied with.
This model offers software developing companies a scheme of organizational maturity that allows improving the process they use for the development of software products incrementally, and in an evolutionary and systematical manner. Hence, among the benefits of implementing this model, are time reduction for software maintenance, simplification of software products in lines of code, corrective incidence reduction, improvement in the coverage of tests, assuring the client of the quality of the product delivered with objective evidence, and establishing clear service level agreements that are easy to validate and comply with.
Francisco J. Pino, Moisés Rodríguez Monje, Mario Piattini Velthuis, Carlos Manuel Fernández Sánchez y Boris Delgado Riss. Modelo de madurez de ingenieria del software Versión 2.0 (MMIS V.2). AENOR Internacional. España, 2018.
Carnegie Mello University (CMU) y Software Engineering Institute (SEI). The capability maturity model: guidelines for improving the software process. Addison-Wesley. Boston (Massachusetts), 1995.
Florac, W.A y Carleton, A.D. Measuring the software process. Statistical process control for software process improvement. Addison-Wesley. Reading (Massachusetts), 1999.