Introduction to CMM & CMMI
Software Quality: It is the prime requirement of any Quality Software that it should reasonably be bug-free, delivered on time and within budgetary constraints. It should meet the defined requirements or expectations, and should be maintainable. Therefore to produce error free and high quality software there arises a great need that certain internationally recognized standards be followed.
Quality Standards: Various Quality Standards are available
ISO 9001: 2000 – is Quality Management System Certification. To achieve this, an organization is expected to satisfy the requirements defined in CL. 1 to 8 of ISO 9001: 2000
Six Sigma – is a process improvement methodology focused on reduction in variation of the processes around the mean. Its objective is to make the process defect free.
CMM – CMM means – Capability Maturity Model. It is a standard for assessing and improving processes related to software development. The software community had developed it in the year 1986 under the leadership from SEI � Software Engineering Institute. It is a process capability maturity model related to software applications & it helps in defining and understanding of the processes followed by the organization. It provides guidance to the measurement of software process maturity and helps process improvement programs. CMM had been devised as a tool for objectively assessing the ability of government contractors’ processes to perform a contracted software project.
CMM emphasizes on the appropriateness of the Process followed for developing a software product. CMM aims to ensure that the process is capable to produce error free product. Process driven companies are more successful as compared to people driven companies. Hence a company needs to have a good process for software development for being successful.
Advent of CMMI: In CMM, the entire emphasis had been on the software practices. However software was becoming a major factor in the systems which were being built that it had become virtually impossible to logically separate the two disciplines of systems & practices. Hence SEI redirected all its effort toward the integration of system and software practices which led to the birth of CMMI which stands for Capability Maturity Model Integration.
CMMI has now superceded CMM. The older term CMM has been renamed now to Software Engineering CMM (SE-CMM).
Prior to going deep into CMM or CMMI, lets understand what a software process is.
A Software Process can be defined as set of activities, methods, practices and transformations which people employ to develop and maintain software and the associated products. The quality of a software product is essentially determined by the quality of the processes employed to develop and maintain it.
Broad Comparison between CMM and ISO
|Features||CMM / CMMI||ISO 9000|
|Needs a quality management system||Applicable||Applicable|
|Emphasizes on continuous improvement||Applicable||Not Applicable|
|Assesses process maturity||Applicable||Not Applicable|
|Caters to self-assessment||Applicable||Applicable|
|Applicable to organizations||Applicable to software only||Applicable|
|Applicable to projects||Applicable to software only||Not Applicable|
|Applicable to programs||Applicable to software only||Applicable|
Five Maturity Levels of SEI CMM:
Continuous process improvement is based on many small but evolutionary steps. CMM organizes these steps into 5 maturity levels. Each maturity level comprises of a set of process goals which, upon getting satisfied, stabilizes an important component of the software process. Organizing the goals into different levels helps the organization to prioritize their improvement actions. The five maturity levels of CMM are as under.
1) Initial: The software process is characterized as ad hoc, and occasionally even chaotic. Few processes are defined, and success depends on individual effort and heroics.
2) Repeatable: Basic project management processes are established to track cost, schedule, and functionality. The necessary process discipline is in place to repeat earlier successes on projects with similar applications.
3) Defined: The software process for both management and engineering activities is documented, standardized, and integrated into a standard software process for the organization. All projects use an approved, tailored version of the organization’s standard software process for developing and maintaining software.
4) Managed: Detailed measures of the software process and product quality are collected. Both the software process and products are quantitatively understood and controlled.
5) Optimizing: Continuous process improvement is enabled by quantitative feedback from the process and from piloting innovative ideas and technologies.
Detailed Information is available on http://www.sei.cmu.edu/cmmi/