# Capability Maturity Model Integration

CMMI, sigle de capability maturity model integration, est un modèle de référence, un ensemble structuré de bonnes pratiques, destiné à appréhender, évaluer et améliorer les activités des entreprises d'ingénierie.
CMMI a été développé dans les années 1980 par le Software Engineering Institute de l'université Carnegie-Mellon, initialement pour appréhender et mesurer la qualité des services rendus par les fournisseurs de logiciels informatiques du département de la Défense des États-Unis (DoD). Il est maintenant largement employé par les entreprises d'ingénierie informatique, les directeurs des systèmes informatiques et les industriels pour évaluer et améliorer leurs propres développements de produits. CMMI est une marque déposée par l'ISACA.

## Historique

Dans les années 1980, le département de la Défense des États-Unis (DoD) a demandé l'élaboration d'un référentiel de critères lui permettant d'évaluer ses fournisseurs de logiciels. Après une lente maturation, le SEI (Software Engineering Institute) financé par le DoD a présenté en 1991 le Capability Maturity Model (CMM). Ce modèle de référence ne concerne que les bonnes pratiques du génie logiciel. Après un fort engouement pour ce modèle, d'autres modèles similaires ont vu le jour, tels que :
* SE-CMM (pour system engineering) ;
* SA-CMM (pour software acquisition) ;
* IPD-CMM (pour integrated product development) ;
* People CMM pour le management des ressources humaines ;
* SS-CMM pour supplier sourcing.
Tant et si bien qu’il fallut rebaptiser le CMM « initial » en SW-CMM (pour software).
En 2001, le SEI a proposé une nouvelle version de son modèle, le CMMI (capability maturity model integration) qui englobe les bonnes pratiques des autres modèles, sauf la gestion des ressources humaines qui n'est pas encore considérée (version 1.1). La version du modèle a été réactualisée en 2006 (version 1.2). Cette version du CMMI tendait à simplifier le modèle et améliorait la prise en compte des composants de type matériel. La dernière version du modèle produite par le SEI date de 2011 (version 1.3).
En 2013, l'Université Carnegie-Mellon a créé une entité indépendante, le CMMi Institute, pour gérer les aspects pratiques du CMMi indépendamment du SEI. En 2016, l'ISACA a racheté le CMMi Institute, en conservant son nom et son site. En 2018, une version 2.0 de CMMi a été publiée par l'ISACA.

## Modèle CMMI

Le modèle CMMI définit une échelle de mesure de la maturité à cinq niveaux, ainsi que les indicateurs nécessaires pour évaluer les activités menées par une équipe par rapport à cette échelle - l'équipe peut être un groupe de travail, un ou plusieurs projets, une société voire une institution d'État.
CMMI est un cadre générique de processus qui se décline en trois modèles (appelés constellations) :
* CMMI-DEV pour le développement de systèmes (logiciel ou autre, modèle publié en août 2006)
* CMMI-ACQ pour la maîtrise des activités d'achat (modèle publié en novembre 2007)
* CMMI-SVC pour la fourniture de services (modèle publié en février 2009)
La particularité de ces trois modèles de processus est qu'ils ont une partie commune (le noyau ou core en anglais) qui représente environ 60 % des pratiques. D'un modèle à l'autre, les différences portent essentiellement sur la catégorie « Ingénierie » dont les pratiques varient selon l'activité concernée.
Le CMMI-DEV est un modèle de processus (référentiel de bonnes pratiques) pour la réalisation de tout type de produit (ou système). C'est cependant dans le développement et la maintenance de logiciel qu'il est le plus utilisé. Sa portée utile s'étendant de l'apparition d'un besoin jusqu'à la livraison du produit correspondant, il y a d'autres modèles utiles pour d'autres domaines du logiciel, par exemple pour les infrastructures et opérations ITIL.
Le modèle CMMI est majoritairement utilisé dans des sociétés d'informatique, toutefois les principes de CMMI s'appliquent à n'importe quelle activité d'ingénierie : architecture, mécanique, électronique…

## Maturité

D'après la définition donnée dans le CMMI, la maturité d'une organisation est le degré auquel celle-ci a déployé explicitement et de façon cohérente des processus qui sont documentés, gérés, mesurés, contrôlés et continuellement améliorés.
Un niveau de maturité (maturity level) (pour l'approche étagée) correspond à l'atteinte d'un niveau de capabilité uniforme pour un groupe de processus. Un niveau d'aptitude (capability level) mesure l'atteinte des objectifs d'un processus pour le niveau donné (concerne l'approche continue de CMMI) .

## Descriptif du modèle

Dans l'approche étagée (il existe une approche dite continue), les bonnes pratiques préconisées par le modèle (version 1.2) sont rassemblées en 22 domaines de processus eux-mêmes regroupés en 5 niveaux de maturité. Les domaines de processus rattachés à un niveau de maturité M ne peuvent être stabilisés et efficaces que si les domaines de processus des niveaux inférieurs ( < M ) sont déjà stabilisés et efficaces (principe d'empilement). Les cinq niveaux sont :

### « Initial » (niveau de maturité 1)

    Il n'y a pas de grand pilier directionnel, aucune façon de faire ou standard ne sont établis (ou bien ils sont documentés mais ne sont pas utilisés), tout doit être fait. Il n'y a pas de surveillance (monitoring), aucune évaluation de performance et la communication est absente. Les faiblesses ne sont pas identifiées et les employés ne sont pas au courant de leurs responsabilités de façon définie et absolue. Les réactions aux incidents se font en mode urgence, sans identification claire des priorités. À ce niveau les solutions ainsi que les projets sont décidés, développés et instaurés par un individu. Les compétences et les ressources propres de cet individu sont la raison du succès ou de l'échec du projet (par dérision, ce niveau est aussi nommé héroïque ou chaotique). Il n'y a pas de description du niveau de maturité 1 dans le modèle.

### « Managed », (discipliné, niveau de maturité 2)

    Une discipline est établie pour chaque projet et se matérialise essentiellement par des plans de projet (plan de développement, d'assurance qualité, de gestion de configuration…). Le chef de projet a une forte responsabilité dans le niveau 2 : il doit définir, documenter, appliquer et maintenir à jour ses plans. D'un projet à l'autre, il capitalise et améliore ses pratiques de gestion de projet et d'ingénierie.

### « Defined », (ajusté, niveau de maturité 3)

    Ce niveau est caractérisé par une standardisation adéquate des pratiques, une capitalisation centralisée (en particulier sur les mesures réalisées dans les projets) et une maîtrise du référentiel interne (ou Système Qualité). Il existe des lignes directrices, un plan stratégique et une planification de l'amélioration de processus pour le futur, en ligne avec les objectifs d'affaire de l'organisation. Les employés sont formés et conscients de leurs responsabilités ainsi que de leurs devoirs.

### « Quantitatively managed », (géré quantitativement, niveau de maturité 4)

    Les projets sont pilotés sur la base d'objectifs quantitatifs de qualité produit et processus. La capacité des activités (ou sous-processus) critiques est déterminée par l'organisation, ainsi que les modèles de performance et de prévision associés. L'expression de la qualité demandée par le client est prise en compte pour quantifier les objectifs du projet et établir des plans selon la capacité des processus de l'organisation.

### « Optimizing », (en optimisation, niveau de maturité 5)

    Les processus qui sont gérés quantitativement pour le pilotage de projet (niveau de maturité 4) sont en optimisation constante afin d'anticiper les évolutions prévues (besoins clients, nouvelles technologies…).

### Niveau 1

Le niveau 1 initial est le niveau où le résultat final est imprévisible. À ce niveau l'effort individuel prévaut à l'effort collectif dirigé vers un but établi. L’atteinte des résultats repose plus sur les hommes, sur leur engagement et bonne volonté, que sur l’application disciplinée de bonnes pratiques. La réussite d'un projet repose en général sur le talent d'un individu, c'est pourquoi on surnomme ironiquement ce niveau l'ère des héros. Mais une réussite éventuelle ne sera pas nécessairement reproductible.
L'évaluation de l'efficacité et des performances est absente. La direction n'établit pas de plan ou de vision qui sont liés à des besoins. La documentation est inexistante.

#### Exemple

La supervision des sauvegardes est réalisée par un technicien qui s'intéresse aux systèmes de sauvegarde. Il comprend et maîtrise ce qu'il réalise. En général il vérifie quotidiennement les résultats des traitements de la veille, personne ne le contrôle ou supervise. Si nécessaire il applique les correctifs au système, néanmoins, il travaille de manière autarcique. Si pour une raison quelconque (surcharge, congés) il n'est pas en mesure de réaliser les contrôles nécessaires, ceux-ci ne sont alors pas pris en charge.

### Niveau 2 (managed / discipliné)

Le niveau 2 est discipliné. Les activités et produits (techniques et de gestion, intermédiaires et finals) sont maîtrisés par le projet. Les processus projet sont disciplinés, ce qui se caractérise par :
* les activités sont planifiées et exécutées conformément à une politique (ou directive) d'organisation,
* les rôles, responsabilités et acteurs sont définis et connus,
* les acteurs disposent des compétences et des ressources adéquates pour réaliser les produits,
* les produits sont contrôlés,
* la mise en œuvre du processus fait l'objet d'un suivi, de vérifications et d'ajustement si nécessaire.
Le niveau 2 se compose de sept domaines de processus traitant de :
* la gestion des exigences,
* la planification de projet,
* le suivi de projet,
* la gestion des fournisseurs,
* l'utilisation de métriques,
* l'assurance qualité
* et la gestion de configuration.
Chacun de ces sept domaines de processus contribue à donner à l'organisation une bonne visibilité sur ses développements : visibilité sur le contenu, les coûts, les délais, la qualité des produits développés et des processus utilisés. Typiquement, les membres d'une équipe de développement, comme le management, connaissent l'état d'avancement de leur projet et des évolutions en cours, ainsi que ce qu'il reste à faire.

### Niveau 3 (defined / ajusté)

Le niveau 3 est Ajusté. À ce niveau, l’organisation dispose d’un ensemble de processus standards qui sont ajustés par chaque projet, selon le contexte client propre, avec des règles fixées par l'organisation. Les processus standards sont développés, maintenus, supportés et leur application contrôlée par un groupe processus (le SEPG - Software/System Engineering Process Group ou EPG). Chaque projet capitalise son expérience et permet de bonifier le capital collectif. C'est aussi à ce niveau que les cycles de vie et processus d'ingénierie sont standardisés par typologie de projet.
Le niveau 3 met en place des boucles d'amélioration : l'expérience, les forces et difficultés rencontrées lors des développements, sont capitalisées pour améliorer les développements futurs. Par exemple, des problèmes rencontrés sur un projet seront analysés dans un bilan de fin de projet pour éventuellement enrichir une base de risques types et anticiper ce problème lors de développements similaires.
Le niveau 3 repose sur les bases du niveau 2. Ainsi le domaine de niveau 2 « Gestion des exigences » est complété au niveau 3 par le domaine « Développement des exigences ». Une fois que, au niveau 2, l'organisation a appris à gérer ses exigences, elle peut au niveau 3 mettre en place des pratiques d'ingénierie pour définir ces exigences. D'une manière générale, les domaines de processus de niveau 2 sont des prérequis pour les domaines de niveau 3.
Le niveau 3 se compose de onze domaines de processus traitant de :
* Développement des exigences (Requirements Development)
* Gestion des risques (Risk Management)
* Analyse et prise de décision (Decision Analysis and Resolution)
* Définition du processus organisationnel (Organizational Process Definition)
* Focalisation sur le processus organisationnel (Organizational Process Focus)
* Formation organisationnelle (Organizational Training)
* Gestion de projet intégrée (Integrated Project Management)
* Solution technique (Technical Solution)
* Intégration de produit (Product Integration)
* Vérification (Vérification)
* Validation (Validation)
On trouve ainsi dans ce niveau une accumulation de choses que l’on peut regrouper sous les thèmes suivants :
* l’ingénierie des exigences, de l’expression des besoins aux spécifications et à la recette ;
* le perfectionnement de la gestion de projet ;
* la « personnalisation » de la gestion de chaque projet et la capitalisation de l’expérience d’un projet à l’autre ;
* les méthodes de prise de décision.

### Niveau 4 (quantitatively managed / géré quantitativement)

Le niveau 4 est géré quantitativement. À ce niveau, les processus clés sont sous contrôle statistique (surveillance d’indicateurs quantitatifs, et actions correctrices si dérives). Élimination des causes spéciales de variation.
Par exemple, la capitalisation a permis d’établir la productivité moyenne du processus (taille produite/charge consommée). Le projet se fixe un objectif de productivité en relation et prend des mesures dès qu’il y a des dérives.
Les méthodes statistiques de contrôle des processus mises en place au niveau 4 permettent de focaliser les actions d'amélioration sur les pratiques pour lesquelles ces actions sont les plus utiles. Au niveau des projets, elles permettent d'identifier des activités n'ayant pas atteint des résultats attendus et ainsi prendre des actions. Par exemple, en fonction de la taille, technologie, complexité d'un nouveau composant, les tests doivent permettre d'identifier un nombre de défauts compris dans une fourchette définie. Si le nombre de défauts identifiés est en dehors de cette fourchette, une analyse sera lancée pour en comprendre les raisons. Cette fourchette est définie à partir de calculs statistiques basés sur des résultats des tests des précédents composants développés.
Le niveau 4 se compose de deux domaines de processus traitant de :
* Performance du processus organisationnel (organizational process performance)
* Gestion de projet quantitative (quantitative project management)

### Niveau 5 (optimizing / en optimisation)

Le niveau 5 est en optimisation. L’organisation est dans une boucle permanente d’optimisation (réduction des causes communes de variation) des processus et des technologies, optimisation basée sur des analyses coût/bénéfice. Des analyses causales statistiques menées régulièrement permettent ces améliorations.
Les boucles permanentes d'optimisation sont mises en place dès le niveau 3. Au niveau 5, celles-ci se basent sur des méthodes statistiques pour focaliser les analyses causales sur les événements dont l'analyse apportera des informations permettant d'optimiser les processus, en évitant de perdre du temps sur l'analyse d'événement apportant moins d'information.
Le niveau 5 se compose de deux domaines de processus traitant de :
* Gestion de la performance organisationnelle (Organizational Innovation and Deployment)
* Analyse causale et résolution (Causal Analysis and Resolution)

### Autres composants

* Les objectifs génériques : le modèle CMMi fournit cinq objectifs génériques (GG). Ces objectifs génériques (et les pratiques associées) s'appliquent à tous les domaines de processus (PA).
* Les pratiques génériques : les pratiques génériques appartiennent aux objectifs génériques. Elles doivent être systématiquement implémentées pour prétendre atteindre un niveau de maturité ou de capacité.
* Les objectifs spécifiques : les objectifs spécifiques sont liés à un domaine de processus (PA).
* Les pratiques spécifiques : elles sont liées à un objectif spécifique, donc à un domaine de processus (PA).
* Les produits d'activité : ce sont tous les éléments générés par un projet (plan de projet, spécification, cahier de test unitaire, revue par les pairs, etc.)

### Autres déclinaisons

* CMM-TSP (team software process) qui détermine les pratiques normées d'une équipe projet.
* CMM-PSP (personal software process) qui détermine les pratiques normées d'une ressource individuelle de développement.

## Pour aller plus loin

Les deux normes concernant les processus de développement logiciel, un article de comparaison peut-être consulté Comparaison entre ISO 9001 et CMMI.
CMMI, utilisé en mode continu, est un des modèles de processus accepté par la norme ISO 15504.
CMMI ne peut être utilisé pour la maintenance quotidienne des logiciels. Il existe cependant d'autres modèles pour ce type d'activité, comme le modèle de la maturité de la maintenance S3M.