CMMi

cmmi

 

Le CMMi est un référentiel de pratiques clés à mettre en oeuvre pour l’entreprise qui développe des logiciels. Son objectif est de la guider dans sa démarche d’amélioration des processus. En raison de l’adhésion croissante dont il fait l’objet, le « Capability Maturity Model » est devenu une référence.

Depuis deux ans, le CMMi (i pour integrated) a été intronisé comme successeur du CMM. Il couvre un domaine plus vaste que ce dernier. Au développement logiciel s’adjoignent d’autres secteurs. Notamment l’ingénierie systèmes et l’acquisition de logiciels.

Comme le CCM, le CMMi permet de classer en cinq niveaux de maturité les pratiques de l’entreprise (voir tableau). Le niveau de maturité 1 étant le niveau par défaut que détient toute organisation. Le niveau 3 est le niveau moyen généralement visé. Pour atteindre chaque étage, l’entreprise doit mener des actions d’amélioration au niveau de processus clés. Actions qui peuvent concerner l’entreprise entière, ou simplement une division ou un service.

La méthode utilisée s’apparente à un véritable projet d’entreprise formalisé selon une « roue de l’amélioration » . Il s’agit d’un processus itératif, que l’entreprise doit répéter autant de fois qu’il le faut pour passer au niveau supérieur. Le suivi du projet étant assuré par un instructeur (Transition Partner).

Le modèle CMMi n’induit pas d’organisation particulière. Seules les pratiques doivent satisfaire aux exigences du modèle. Son champ d’action n’est pas non plus la qualité du produit fini. Seuls les procédés sont concernés. Le postulat étant que l’entreprise a plus de chances de concevoir un logiciel de qualité si le processus pour le fabriquer est de qualité.

 

Le processus itératif, ou «roue de l’amélioration»

1. L’initialisation

Avec l’aide du prestataire, l’entreprise identifie ses objectifs stratégiques. Généralement : la réduction des coûts ou du délai de livraison, ou l’augmentation de la qualité logicielle. Elle doit établir une hiérarchie parmi ses priorités. Cette phase comprend également a définition du périmètre du projet, l’identification des acteurs, etc. C’est donc une première mise en place de l’organisation du projet, qui sera ensuite affinée en fonction du résultat du diagnostic.

2. Le diagnostic

C’est une première évaluation des pratiques de l’organisation. Elle est assurée par une équipe mixte, constituée du prestataire et de personnes clés de l’entreprise, et revêt la forme d’entretiens avec les représentants d’activités identifiées : chefs de projet, responsables qualité, développeurs, testeurs, etc. Le prestataire-évaluateur compile ces interviews avec des documents ­ référentiel de l’organisation, etc. ­ afin de les confronter aux exigences du modèle CMMi et d’apporter son jugement. S’ensuivent des recommandations générales sur les forces et faiblesses de l’organisation. Recommandations affinées dans la phase suivante.

3. La construction

Le projet d’amélioration se matérialise sous forme d’un plan d’action. L’équipe projet définit les indicateurs clés permettant de mesurer l’état d’avancement du projet. Et les solutions pour remplir les exigences du modèle CMMi. Le prestataire jouant le rôle de catalyseur. L’action porte en priorité sur les procédures où l’écart est grand entre l’existant et les objectifs visés, de façon à observer un résultat rapide.

4. La mise en oeuvre

A cette étape, on teste les solutions trouvées sur un projet pilote : un pan de l’activité ou une prestation afin de vérifier, notamment, que les indicateurs choisis sont bien adaptés. Le déploiement des processus à l’ensemble de l’organisation est précédé d’une sensibilisation des opérationnels aux nouvelles pratiques.

5. La capitalisation

Il s’agit de décrire comment s’est déroulé le cycle d’amélioration depuis la phase de diagnostic. Objectif : être plus efficace lors du processus itératif suivant. Le défi étant de modifier pas à pas les pratiques de l’entreprise pour satisfaire aux exigences du modèle CMMi, sans toutefois perturber son fonctionnement. La deuxième partie de ce bilan consiste, au moyen des indicateurs, à mesurer la progression de l’entreprise par rapport aux objectifs stratégiques.

 

Qu’est-ce que le CMMI ?

CMMI est l’acronyme de Capability Maturity Model Integration. Certains diraient que CMMI est un modèle avec de multiples représentations, quand d’autres le décriraient comme un ensemble de modèles. Tous s’accordent néanmoins sur le fait qu’il s’agit d’une fusion de la pléthore de modèles d’amélioration des processus pour l’ingénierie système et logicielle créée au cours des ans.

Un des objectifs de CMMI est de fournir un vocabulaire commun au travers d’un ensemble de modèles et de fournir des clarifications sur leurs interrelations.

 

Des processus, des procédures et des modèles

Un processus est une série d’étapes aidant à résoudre un problème. Les étapes doivent être décrites de façon à être non ambiguës c’est à dire compréhensibles et pouvant être mises en oeuvre de façon consistante par n’importe qui. L’objectif n’est pas de transformer les individus en robot, mais de réduire les efforts redondants.

Ainsi le processus de soumission d’un plan projet s’appuie-t-il sur une procédure expliquant comment en écrire un, accompagnée d’un exemple à partir duquel effectuer des copier-coller.

Un modèle est un guide de bonnes pratiques élaborées en étudiant d’autres organisations performantes. Un modèle ne contient pas les étapes nécessaires à la mise en oeuvre d’un programme d’amélioration des processus. Le modèle dit simplement : “c’est une bonne chose à faire”! Or sans modèle de référence, vous n’avez rien sur quoi appuyer votre programme d’amélioration, ni rien contre lequel mesurer vos résultats!

 

Les représentations du modèle CMMI

Il y a deux représentations différentes de CMMI : la représentation étagée et la représentation continue.

La première concentre l’amélioration dans l’aptitude à fonctionner de façon mature en terme de processus de développement. Cette aptitude est réprésentée en 5 niveaux (ou étages) de maturité (initial, géré, défini, géré qualitativement, optimisé).

Chaque niveau de maturité consiste en plusieurs domaines de processus ou groupes de pratiques exécutées collectivement pour réaliser un objectif spécifique. Ainsi si au niveau 1, une organisation n’a que des processus adhoc (non gérés), au niveau 2 de maturité, cette organisation se concentre sur l’amélioration des problèmes de gestion qui affectent l’efficacité du projet au quotidien. Elle met donc en place un système basique de gestion de projets, incluant gestion des exigences, planification de projet, contrôle et surpervision de projet, gestion des relations fournisseurs, métriques et analyses, assurance qualité des produits et processus, gestion de configuration.

Au niveau 3, les meilleures pratiques et leçons tirées des projets précédents ont bouilloné au-delà de chaque équipe projet, au point de créer une identité organisationnelle.


Pourquoi utiliser le modèle CMMI ?

En mettant en œuvre CMMI dans leur organisation, les différents acteurs trouvent dans le modèle une aide, des indications et des idées concernant l’ingénierie système, logicielle, le développement en équipe ou le « sourcing » de fournisseurs.

Contrairement à ce que l’on entend parfois, CMMI ne fournit pas un ensemble de processus prêts à l’emploi, qu’il faudrait appliquer en dépit de l’existant. CMMI est un modèle d’amélioration des processus. Son utilité est double : d’une part il fournit un ensemble d’outils pour mesurer un état d’avancement et de maturité dans les processus de développement ; d’autre part il permet de guider l’entreprise dans sa démarche d’amélioration des processus en lui indiquant des « cheminements privilégiés » (ordonnancement des processus à améliorer, etc.).

L’entreprise peut ainsi mesurer son état d’avancement, tant du point de vue de la capacité de chacun de ses processus (modèle de capacité) que de la maturité de son organisation (modèle de maturité), maturité résultante de la capacité de plusieurs processus conjugués.

 

Mettre en place le CMMI

Dans cette démarche d’amélioration permanente, l’amélioration des processus liés à la gestion des exigences figure parmi les premières étapes proposées par CMMI. Réussir à définir clairement les exigences (par des acteurs habilités à le faire), mais aussi réussir à passer des exigences à la conception et au développement pour finalement mesurer la conformité aux exigences des applications délivrées, voilà un véritable enjeu.

Même si la disponibilité d’un référentiel comme CMMI facilite la transition vers des processus maîtrisés, le passage à l’action reste toujours plus difficile que prévu sur le papier. Les résistances au changement, la peur d’un processus trop formalisé et trop lourd sont quelques exemples des freins que l’on peut rencontrer. D’autres difficultés peuvent venir de CMMI lui-même. Parce qu’il a été lui-même écrit dans un style intentionnellement ambigu afin de couvrir plusieurs situations organisationnelles et de projets, deux des difficultés de mise en œuvre du CMMI portent donc sur son interprétation et sur les décisions organisationnelles qu’il induit.

Il existe des étapes discernables de maturité des processus. Dans les années 1987-1990, le SEI a procédé à des évaluations de processus dans des organisations de tous types pour valider ce modèle de degrés de maturité et de capacité de processus.

Le Capability Maturity Model pour logiciels (connu comme SW-CMM ou plus simplement CMM) a longtemps servi de base pour évaluer la maturité des processus de nombreuses organisations. Celà les a aidé à indentifier les activités et à les améliorer de façon ciblée. Il a été développé sous la direction du SEI.

C’est un des modèles qui ont servi de point de départ pour la famille des produits CMMI. Le SEI a défini une transition qui aide les organisations à migrer de SW-CMM vers CMMI.

La famille de produits CMMI intègre d’autres niveaux de maturité (par exemple systems engineering, développement intégré de produits, supplier sourcing). Parallèlement, une convergence a été visée vers ISO 15504 (SPiCE). De ceci découlent deux représentations:

CMMI-Staged pour définir la maturité des processus (plus proche de SW-CMM dans sa présentation)

CMMI-Continuous pour définir la capacité de processus (plus proche de ISO 15504 / SPiCE dans sa présentation)

 

Le modèle CMMI

Le modèle CMM d’évaluation de la capacité en terme de développement conçu par le Software Engineering Institute (SEI), est utilisé dans le monde entier afin d’améliorer la façon de manager, de développer et de maintenir des applications, des équipements et des systèmes.


Issu de l’expérience, le CMMI est un modèle décrivant quelles sont les pratiques à mettre en oeuvre dans une organisation afin d’améliorer et d’assurer la maîtrise des coûts, des délais et des performances des applications, des équipements et des systèmes développés.

Le CMMI est à la fois :

  • une version étendue du CMM, prenant en compte les aspects “système” des développements, le CMM se limitant au logiciel,
  • une nouvelle version du CMM, prenant en compte des demandes d’évolution provenant d’industriels après 8 années d’utilisation.

Le modèle est constitué de cinq niveaux de maturité :

cmm

Niveau 1 – Initial :

  • le processus de développement n’est pas défini. La réussite des projets dépend du savoir-faire de quelques personnes clés dans l’organisation. Ce savoir-faire n’est pas formalisé ni partagé par les différentes équipes projet de l’organisation,

Niveau 2 – Reproductible :

  • les entrées et les sorties des différentes activités sont gérées et contrôlées. Les règles sont connues et appliquées par les équipes. Le développement est planifié et suivi. Les produits sont vérifiés par rapport aux exigences initiales,

Niveau 3 – Défini :

  • les meilleures pratiques mises en oeuvre au niveau 2 sur les projets sont généralisées à toute l’organisation. Un projet instancie le processus standard afin de définir la meilleure solution répondant à ses propres objectifs. L’efficacité de chacun des processus est mesurée et renforcée,

Niveau 4 – Maîtrisé :

  • chaque processus est systématiquement mesuré. Les données sont consolidées et exploitées pour la prise de décision et l’anticipation des risques,

Niveau 5 – Optimisation :

  • les processus sont totalement maîtrisés et optimisés en permanence. Toute évolution est anticipée et gérée.

 

CMMI ou comment maîtriser vos développements

Dans un contexte de mondialisation et de concurrence chaque jour un peu plus sévère, la maîtrise des coûts et des délais est devenue une priorité pour tous les acteurs de l’industrie. Or, le moins que l’on puisse dire, c’est que ce n’est pas le point fort de l’industrie logicielle, qui est habituée à des dépassements qui seraient jugés inacceptables dans bien d’autres contextes. Des modèles existent aujourd’hui pour remédier à ces travers en rationalisant les processus de développement. CMMI® en fait partie.

 

La genèse de CMMI

L’industrie logicielle a souvent été pointée du doigt pour son manque de fiabilité tant sur le plan du respect des délais que de la qualité des produits livrés. A tel point qu’au milieu des années 80, le Department of Defense (DOD) américain lançait un appel d’offre pour l’élaboration d’un référentiel de critères permettant d’évaluer la capacité de ses fournisseurs. Après une lente mais nécessaire maturation, la première version du “Modèle d’évolution des capacités logiciel” (Capability Maturity Model®) voyait le jour en 1991, fruit du travail conjoint du Software Engineering Institute (SEI), un centre de recherche financé par le DOD, et du Mitre Corporation, une organisation à but non lucratif.

Cette première version était composée d’une liste de pratiques réparties par secteurs-clés (Gestion des exigences, Planification de projet, etc.), sur lesquelles s’appuyait une méthode d’évaluation du niveau de maturité d’une entreprise dans le domaine du développement logiciel. Les niveaux de maturité étaient répartis sur une échelle allant de 1 (initial) à 5 (en amélioration continue). Deux ans plus tard, en 1993, le SEI rendait public une version améliorée de son modèle, CMM version 1.1.

Très vite, l’engouement autour de ce modèle d’amélioration des processus de développement allait dépasser la seule industrie du logiciel, donnant naissance à de multiples “clones” : SE-CMM (pour System Engineering), SA-CMM (pour Software Acquisition), IPD-CMM (pour Integrated Product Developpement) et même People-CMM (pour la gestion des ressources humaines). Tant et si bien qu’il fallut rebaptiser le CMM “initial” en SW-CMM (pour Software), afin d’éviter les confusions. Dans le même temps, d’autres modèles voyaient le jour ; citons par exemple SPICE (Software Process Improvement and Capability dEtermination), de l’organisme ISO, ou SECAM (Systems Engineering Capability Assessment Model) de l’International Concil on System Engineering (INCOSE).

Cette prolifération de modèles (complémentaires ou concurrents) engendra une certaine confusion allant à l’encontre du but initialement recherché : la rationalisation des processus. Aussi fut-il décidé de rassembler tant bien que mal les divers modèles au sein d’un modèle unique baptisé Capability Maturity Model Integration® (CMMI). Dans la version actuelle (CMMI version 1.1) datant de 2002, seule la gestion des ressources humaines n’a pas (encore ?) été intégrée.

A noter que pour ne pas entrer en conflit direct avec CMMI, la norme ISO/IEC15504 issue de SPICE se contente de définir des exigences pour réaliser une évaluation, dont en particulier l’utilisation d’un modèle compatible avec un “modèle de référence”, tout en fournissant (mais sans obligation de l’utiliser) son propre modèle. Le modèle CMMI respecte également ces exigences, et constitue donc une alternative.

 

Risques et bénéfices

La mise en place d’une démarche de rationalisation s’appuyant sur CMMI (ou sur tout autre modèle) n’est pas sans présenter des risques. Le risque le plus important est commun à toute tentative pour faire évoluer les choses : la résistance au changement. Afin de minimiser ce risque, il faut s’assurer d’une part du soutien inconditionnel de la direction (ce qui n’est pas forcément gagné d’avance, bien que la décision provienne en général de cette même direction) ; et d’autre part de l’adhésion et de la participation d’un maximum de collaborateurs au processus d’amélioration, ce qui ne pourra se faire que si la sensibilisation a été convaincante.

Un autre risque identifié provient de la relative complexité du modèle, qui nécessite une adaptation aux besoins et aux objectifs réels de l’organisation. Vouloir trop en faire d’un coup risque de se transformer en une tâche insurmontable et par là de condamner définitivement tout effort ultérieur en ce sens. Il faut savoir rester modeste dans ses ambitions, procéder par petites couches successives en réitérant le processus plusieurs fois.

Enfin, Il ne faut pas perdre de vue que CMMI ne constitue pas une méthodologie, mais un modèle : il décrit ce qu’il faut réaliser, mais il ne dit pas explicitement comment le réaliser. Il ne faut donc pas croire que CMMI soit une solution miracle qui résoudra tous vos problèmes : c’est à chaque organisation de définir les méthodes et outils à mettre en place de façon à satisfaire les critères.