Capability Maturity Model
Het Capability Maturity Model is een model dat aangeeft op welk niveau de software-ontwikkeling van een organisatie zit. Door ervaring in het gebruik is gebleken dat het niet alleen voor software-ontwikkeling toepasbaar is maar ook op andere processen.

Het model onderscheidt vijf levels (niveaus):
Initial is chaotisch en ad hoc. Problemen worden pas opgelost als ze zich voordoen. Dit is het niveau dat iedere organisatie aankan.
Repeatable is het niveau waarbij de organisatie zover geprofessionaliseerd is (bijvoorbeeld door het invoeren van projectmanagement) dat bij het ontwikkelproces gebruik wordt gemaakt van de kennis die eerder is opgedaan. Beslissingen worden dus genomen op basis van ervaring.
Defined is het niveau waarbij de belangrijkste processen zijn gestandaardiseerd.
Managed is het niveau waarbij de kwaliteit van het ontwikkelproces wordt gemeten zodat het kan worden bijgestuurd.
Optimizing is het niveau waarbij het ontwikkelproces als een geoliede machine loopt en er alleen maar sprake is van verfijning(de puntjes op de i).

CMM level 0 bestaat dus niet. Als hier over wordt gesproken wordt er soms geduid op een incompleet ontwikkelproces, maar vaker wordt het gebruikt om aan te duiden dat het ontwikkelproces van een zeer laag niveau is (maar dus wel CMM level 1).

De meeste organisaties waar software wordt ontwikkeld, komen niet hoger dan CMM level 2, omdat er voor CMM level 3 hogere investeringen nodig zijn, die al snel bureaucratie met zich meebrengen. Omdat dit wel voorspelbare resultaten oplevert, is het deze investering in sommige gevallen waard.

Het model is ontwikkeld in opdracht van de Amerikaanse luchtmacht om een indicatie te krijgen van het niveau van organisaties die zich bezighouden met softwareontwikkeling.

Software engineering