What is CMMI?
CMMI is a collection of best practices used by software, hardware, IT development, and service organizations to improve their cost, schedule and quality results. It is organized into a roadmap that can be implemented incrementally over time.
Useful links
- Condensed summary of level 2 and 3 CMMI DEV practices
- Formal and informal CMMI appraisals
- Changes in CMMI V3
- Custom appraisals using your criteria
- CMMI for Development resource page
- CMMI for Services resource page
- Integration with Agile/PMBOK
The Capability Maturity Model Integration (CMMI) for Development is a collection of practices aimed at organizations that develop products, systems and IT solutions. The model is organized into maturity levels, each level defining more advanced practices to improve schedule, budget, risk and quality performance. The levels provide a road map for sustained incremental improvement. Example development organizations that use CMMI for Development are:
- Software application / embedded
- IT solutions
- Hardware (electrical, mechanical, optical, electronic)
- Systems engineering (large software or hardware systems or a software/hardware combination)
See link: Who Uses CMMI?
Read a description of a typical Maturity Level 3 organization (without CMMI terms).
The purpose of using any framework is to improve the performance of an organization. For a group that develops products, this can include: improving schedule and budget accuracy, managing risks, eliciting requirements, defining designs, implementation, finding defects early, reducing rework and sharing best practices across the organization.
CMMI practices can be implemented within any life cycle or methodology (such as Scrum, Waterfall, Spiral, Incremental or a hybrid).
The benefits from using CMMI practices are to:
- Clarify customer requirements early
- Scope, plan, estimate and negotiate work to manage expectations and achieve commitments
- Track progress to know project status at any time
- Maintain defined quality standards throughout the organization and report strengths and problems to management
- Manage versions of documents, drawings and code so that time is not wasted using incorrect versions or recreating lost versions
- Manage and coordinate multiple teams that have cross dependencies
- Employ engineering practices for design, implementation, verification and testing to reduce defects
- Use defect data to understand and manage work quality throughout the project
- Collect lessons learned and project data to systematically improve future organizational performance
Summary of the CMMI model.
The DEV Practice Areas (PA) are summarized below.
Configuration Management (CM): Establish and maintain the integrity of work products using configuration identification (labeling), configuration control (managing changes), configuration status accounting (final status of work products), and configuration audits (checks to verify that the final work products are correct).
Measurement (MPM): Develop and sustain a measurement capability that is used to support management information needs.
Planning and Estimation (PLAN+EST): Establish and maintain plans (major tasks, estimates, stakeholders, risks and resources) for project work. Perform project planning using company defined best practices and tailoring guidelines. Use organizational historical data for estimation. Identify dependencies and stakeholders for coordination, and comprehend this information into a master schedule or overall project plan. As project work progresses, coordinate all key stakeholders. Use thresholds to trigger corrective action (such as schedule and effort deviation metrics).
Monitoring and Control (MC): Understand a team’s project progress so that appropriate corrective actions can be taken when performance deviates significantly from the plan.
Process/Product Quality Assurance (PQA): Provide staff and management with objective insight into processes and associated work products.
Requirements Management/Development (RDM): a) Define requirements baselines for a project, b) manage changes so that technical and resource impacts are assessed, c) trace requirements to related downstream work products so that test coverage of requirements can be performed and the impact of requirements changes assessed with more accuracy, d) analyze requirements for ambiguities and errors.
Technical Solution (TS): Select among design alternatives, perform design activities and implement the design.
Product Integration (PI): Plan and execute integration testing of components as they are completed, or when all components are complete. Check that interfaces are correct before spending time in system testing. Communicate interface changes to impacted areas.
Peer Reviews (PR): Perform reviews on documents and code to find errors early and quickly.
Verification and Validation (VV): a) Plan and execute component level testing and analyze the results (e.g., defect density, defect pass rate, defect escape rate and root cause), b) Plan and execute testing focused on the end-user’s environment and needs, c) Analyze the results (e.g., defect density, pass rate, escape rate and root cause).
Process Focus/Management (PCM): Coordinate all improvements. Take what is learned at the team level and organize and deploy this information across the organization. The result is that all teams improve faster from the positive and negative lessons of others.
Process Definition (PAD): Organize best practices and historical data into a useful and usable library.
Organizational Training (OT): Assess, prioritize and deploy training across the organization, including domain-specific, technology and process skills needed to reduce errors and improve team efficiency.
Risk Management (RSK): Assess and prioritize all types of risks and opportunities in a project and develop mitigation actions for the highest priority ones. Start by considering a predefined list of common risks and use a method for setting priorities.
Decision Analysis and Resolution (DAR): Systematically select from alternative options using criteria, prioritization and an evaluation method.
Causal Analysis and Resolution (CAR): For selected problems or issues, determine root causes and corrective actions.