Capability Maturity Model (CMM)
- A bench-mark for measuring the maturity of an organization's software development process
- CMM defines 5 levels of process maturity based on certain Key Process Areas (KPA)
CMM Levels
<aside>
π¦ βββββββββββββββββββββββββββββββββββββββ
- Level 1: Initial
- There are barely any defined processes.
- Success depends on individual efforts and heroics rather than teamwork or structured processes.
- Level 2: Repeatable
- Basic management processes are in place to monitor cost, schedule, and functionality.
- Planning for new projects is based on past experience with similar work.
- Level 3: Defined
- Processes for managing and engineering are well-documented and standardized.
- Every project uses a customized version of the organizationβs standard process.
- Level 4: Managed
- Detailed metrics are used to measure quality and process performance.
- Teams can distinguish meaningful trends from random variations and predict outcomes for quality and processes.
- Level 5: Optimized
- Feedback systems help identify and fix weaknesses proactively.
- Teams analyze defects, find root causes, and update processes to prevent similar issues from happening again.
</aside>
Capability Maturity Model Integration
- Capability Maturity Model Integration (CMMI) is a successor of CMM and is a more evolved model that incorporates best components of individual disciplines of CMM like Software CMM, Systems Engineering CMM, People CMM, etc.
- Since CMM is a reference model of matured practices in a specific discipline, so it becomes
difficult to integrate these disciplines as per the requirements.
- This is why CMMI is used as it allows the integration
Objectives of CMMI
β’ Fulfilling customer needs and expectations.
β’ Value creation for investors/stockholders.
β’ Market growth is increased.
β’ Improved quality of products and services.
β’ Enhanced reputation in Industry.
SDLC
A framework that describes the activities performed at each stage of a software development project.
Waterfall Model

- Steps:
- Requirements: Define information, function, behavior, performance, and interfaces.
- Design: Create data structures, software architecture, interfaces, and algorithm details.
- Implementation: Write source code, create databases, documentation, and test the software.
- Strengths:
- Easy to understand and use.
- Provides structure for inexperienced staff.
- Well-understood milestones.
- Good management control (planning, staffing, tracking).
- Works well when quality is more important than cost or schedule.
- Weaknesses:
- Requires all requirements to be known upfront.
- Deliverables for each phase are fixed, reducing flexibility.
- Can give a false impression of progress.
- Integration happens only at the end.
- Does not handle the iterative nature of software development well.