If you've been in software development in an enterprise environment, you've probably heard of the Capability Maturity Model (CMM), a process improvement methodology for developing software. This model has evolved over the years into an integrated look at processes (Capability Maturity Model Integration) and comes in various flavors. In November 2010, the Software Engineering Institute (SEI) issued CMMI for Development, Version 1.3. The full 482-page document is available from SEI's website, but this tip will go over some of the basics of CMMI and how it's used in today's enterprise environment.
CMMI is a model for process improvement. SEI has found that there are three critical dimensions that help organizations develop and maintain high quality products and services:
- People with skills, training and motivation
- Tools and equipment
- Procedures and methods defining the relationships of tasks
CMMI deals with the third dimension: the processes. The report states:
A focus on process provides the infrastructure and stability necessary to deal with an ever-changing world and to maximize the productivity of people and the use of technology to be competitive.
CMMI for development addresses 22 process areas covering the full application lifecycle, from conception through delivery. Unlike other improvement approaches that only focus on a specific part of the business, CMMI takes a systemic approach, emphasizing the work necessary to build and maintain the total product.
By defining repeatable processes, organizations are able to gain consistency and look for ways to implement improvements to work smarter and more efficiently.
CMMI models provide guidance not processes
The models provided with CMMI are not the actual processes that will be used in your organization. They will provide the guidelines and ideas to allow each organization to create and document the processes that are pertinent to their particular application domain, organizational structure and size. The process areas won't typically map one-to-one with an organization that's implementing CMMI.
The focus is on guiding an organization towards an improvement path from immature processes to disciplined, mature processes with improved quality.
The process areas
All CMMI models contain 16 core process areas that make up the CMMI Framework. Then there are some additional processes that serve to make up the "constellations." Constellations are collections of CMMI components used to construct a specific area of interest, such as development, acquisition or services.
CMMI for development is made up of the following 22 process areas in alphabetical order by acronym:
- Causal Analysis and Resolution (CAR)
- Configuration Management (CM)
- Decision Analysis and Resolution (DAR)
- Integrated Project Management (IPM)
- Measurement and Analysis (MA)
- Organizational Process Definition (OPD)
- Organizational Process Focus (OPF)
- Organizational Performance Management (OPM)
- Organizational Process Performance (OPP)
- Organizational Training (OT)
- Product Integration (PI)
- Project Monitoring and Control (PMC)
- Project Planning (PP)
- Process and Product Quality Assurance (PPQA)
- Quantitative Project Management (QPM)
- Requirements Development (RD)
- Requirements Management (REQM)
- Risk Management (RSKM)
- Supplier Agreement Management (SAM)
- Technical Solution (TS)
- Validation (VAL)
- Verification (VER)
Each process area is made up of "components," which fall into one of three categories: required, expected or informative. Examples of informative components would be things such as purpose statement, introductory notes or related process areas. An example of a required component is specific goals.
The definition of each type of component for each process area is defined in the CMMI. By using the guidelines outlined in CMMI, you'll have the templates needed to work towards defining and documenting your processes and the relationships between them.
Levels are used in CMMI to rate organizational capability and maturity. Appraisals are done which can apply to an entire organization or to smaller groups such as a division or a project. There are two approaches that can be used: a continuous representation to achieve "capability levels" and a staged representation to achieve "maturity levels."
Capability levels apply to an organization's process improvement in individual process areas. There are four capability levels numbered 0-3:
- Level 0: Incomplete
- Level 1: Performed
- Level 2: Managed
- Level 3: Defined
Maturity levels apply to an organization's process improvement across multiple process areas. There are five maturity levels numbered 1-5:
- Level 1: Initial
- Level 2: Managed
- Level 3: Defined
- Level 4: Quantitatively Managed
- Level 5: Optimizing
Clearly this is just a very basic overview. If your organization is considering adopting CMMI, the full SEI report will give detailed information about the model. If you decide to move forward, senior management must be committed to providing sponsorship and support so adoption is well-received.
Planning can begin with an IDEAL (Initiating, Diagnosing, Establishing, Acting, Learning) model.
Mixing CMMI and Agile
Though the model may seem rather rigid, CMMI practices are meant to be methodology agnostic. To help those who use agile methods to interpret CMMI in their environments, notes are added to selected processes to indicate how practices can be adapted to agile environments.
Process improvement has been proven to improve quality. CMMI is a model that goes through continual reviews and improvements and has been recently been updated to reflect our continual software evolution. This would be the time to download their latest revision and get a sense for the maturity of your organization.