The
Capability Maturity Model (
CMM) is a model that describes the
evolution
of a
software development process. Introduced in
1991 by
Software Engineering
Institute (
SEI), a federally funded research center. It has
become maybe the most prestigious benchmark and tool for software companies,
when it comes to those creating
large-scale, idiot-proof systems. The model
describes
5 levels of maturity of development processes according to
well-defined criteria.
It is a good model if you have developed a large system that you just keep on
modifying and modifying. If you're building websites, well... it's probably
way too expensive. I have seen estimates that about 75% of software companies
are on level 1, and less than 1% on level 4. Level 5 companies are rare, and
there are only a handful, on a global scale. Companies that go through the
effort of reaching level 4 or even 5, usually make big fuss out off it, hoping
it will generate more customers, which it probably does in their market. Defense contractors usually have to be on
level 3 when bidding for large systems.
There are many companies wanting to have your money in exchange for helping
you reach the next level. Certified, of course.
The five CMM levels and the how to reach them:
- Initial - Ad hoc process, occasionally chaotic. Usually highly dependent
on a guru.
Level 1 companies must work on putting a development process in place,
with project management for estimation and evaluation of the projects. Also
required are configuration management, quality assurance practices, requirement management and
subcontractor management. This done, one can
reach
- Repeatable - The company have successfully implemented the above mentioned
process but is still dependable on individuals in times of stress.
This organization must establish practices for the above, applicable and
specific to their needs.
They must have and follow standards and procedures for these practices. The
next level is
- Defined - The process is the organization, not individuals. The
organization train itself on its practices.
The first three levels mostly works on improving Product quality. Now it
is time to put emphasis on Process quality by establishing process measurement
tools. These are used for correction of errors in the development process
itself. Go to
- Managed - The key is Continuous Process Improvement.
To move from here, one must not only improve the existing process, but
also exchange parts of it with new and better processes. To the top
- Optimizing - This company evaluate new process candidates continuously,
trying to improve and optimize their process to its need.
source: SEI