· Tech watch

L’Intégration Réversible : une révolution ?

L’histoire de l’informatique est jalonnée d’événements marquants qui ont constitué autant de révolutions dans la façon d’aborder les projets. Ainsi, l’avènement des langages de haut niveau dans les années 70, en facilitant l’écriture de programmes informatiques, peut être considéré comme l’un des principaux déclencheurs de l’envolée de l’industrie logicielle. L’émergence des langages objet dans les années 80 a constitué une nouvelle étape cruciale dans le développement logiciel, en permettant notamment la compréhension et la réutilisation des briques élémentaires d’un programme. Les années 90, quant à elles, ont été marquées par l’arrivée en force des méthodes de conception : désormais, les équipes de développeurs sont armées pour analyser et reprendre des pans entiers d’applications. Que nous réservent les années 2000 ? La réversibilité non plus seulement des applications, mais des projets dans leur globalité, une approche qui séduit chaque jour de nouveaux adeptes. Son nom ? L’ « Intégration Réversible ».

L’Intégration Réversible : qu’est-ce que c’est ?

L’Intégration Réversible est le nom donné à une méthodologie de gestion de projet garantissant au commanditaire d’un projet informatique la réversibilité totale de la prestation engagée. Dit autrement, c’est la possibilité donnée à un client de changer à tout moment de prestataire informatique.

Cette idée peut paraître au premier abord quelque peu extrême ; mais avec l’arrivée en masse des sociétés de service offshore (Chine, Inde, Europe de l’Est, etc.), on se dirige vers un marché de la prestation informatique de plus en plus flexible. Dans les prochaines années, il devrait être de moins en moins rare de voir un client changer de prestataire en cours de projet – comme on peut aujourd’hui changer d’architecture en cours de conception. A l’heure actuelle, un tel changement de prestataire occasionne des coûts exorbitants – et bien souvent, au final, le nouveau prestataire choisira de reprendre le projet depuis le départ.

D’où l’intérêt d’avoir un cadre normalisé, reposant sur des pratiques et des standards éprouvés. Dans ces conditions, le commanditaire garde la maîtrise totale de son projet, et ne se retrouve plus lié à vie avec un éditeur ou une société de service en particulier.

Les travaux ayant donné naissance à la méthodologie se sont appuyés sur trois piliers majeurs :
– les modèles d’amélioration de processus (CMMI|Chronique Clever Age sur CMMI [Capability Maturity Model Integration, un modèle d’amélioration de processus développé par le [SEI|Site officiel de CMMI ]], Spice|Site officiel de Spice, etc.), qui proposent un cadre formel pour les projets de développement, ainsi qu’un jeu de livrables à produire tout au long du cycle de vie du projet ;
– les méthodes de génie logiciel (qu’elles soient classiques – gestion de projet en cascade, en V, etc. – ou plus récentes – eXtreme Programming|Site officiel d’eXtreme Programming, Rational Unified Process|Site officiel de RUP, etc.), permettant d’identifier les différentes phases du projet ;
– les retours d’expérience en la matière.

Véritable recueil de bonnes pratiques, la méthodologie Intégration Réversible se veut avant tout concrète, pragmatique et adaptable à tout type de projet informatique.

Mise en oeuvre d’un projet Intégration Réversible

La mise en oeuvre d’un projet selon la méthodologie Intégration Réversible nécessite la prise en compte de quatre briques :
– le découpage du projet en phases, et pour chaque phase des conditions d’entrée et de sortie bien définies ;
– l’identification des différents acteurs du projet, ainsi que des rôles associés ;
– l’identification des livrables à produire tout au long du projet ;
– enfin, la mise en place d’un certain nombre d’outils pour assurer le suivi et la réalisation du projet.

Nous allons maintenant détailler le contenu de ces quatre briques.

Les phases

Lors du démarrage d’un projet, il est indispensable de bien en identifier toutes les phases. Ce découpage permet de placer des jalons tout au long du projet ; en particulier, chaque phase ne peut se terminer que lorsque tous les livrables qui lui sont spécifiques ont été approuvés et validés par les acteurs compétents.

Un projet Intégration Réversible se décompose en sept phases :
– une phase de lancement, permettant de cadrer le projet et de mettre à disposition les outils de suivi et de réalisation ;
– deux phases de spécifications, l’une fonctionnelle et l’autre technique, ayant pour but de définir précisément les besoins (ces deux phases peuvent bien souvent être menées en parallèle) ;
– une succession de trois phases : conception, développement et intégration, correspondant à la définition, la réalisation puis au test d’un composant, qui peut être répétée autant de fois que nécessaire ; chaque itération est terminée par une mini-livraison permettant de valider que l’on est toujours dans le périmètre des besoins ;
– enfin, une phase de livraison (incluant le déploiement) correspondant à la recette de l’application.

L’intérêt d’un tel découpage est multiple :
– il permet déjà d’établir une relation contractuelle entre client et prestataire sur des livrables à court terme, limitant d’autant les risques de dérive ;
– le modèle itératif et le système de livraisons partielles obligent l’équipe projet à rester en contact permanent avec la maîtrise d’ouvrage, qui peut mesurer concrètement l’avancement du projet ;
– il permet à une équipe qui doit reprendre un projet en cours de bien se situer par rapport à ce qui a déjà été fait et ce qui reste encore à faire, en s’appuyant notamment sur les livrables qui ont été produits lors des phases précédentes.

Les acteurs

L’identification des acteurs est une autre condition essentielle à la réussite d’un projet informatique : quels sont les profils requis ? Quelles sont les responsabilités associées à chaque rôle ? Un projet Intégration Réversible identifie jusqu’à neuf acteurs intervenant à différentes phases.

Pour assurer le suivi tout au long du projet, trois rôles sont définis :
– un chef de mission, responsable du bon déroulement de la mission dans son ensemble et interlocuteur privilégié de la maîtrise d’ouvrage ;
– un chef de projet, responsable opérationnel et interlocuteur privilégié de la maîtrise d’œuvre ;
– un responsable qualité, chargé de la bonne application du plan d’assurance qualité.

La conception (y compris les spécifications) fait également appel à trois rôles :
– un consultant fonctionnel, chargé de rédiger les spécifications fonctionnelles ;
– un consultant technique, chargé de rédiger les spécifications techniques ;
– un architecte, responsable du design de l’application.

Enfin, la réalisation nécessite a minima :
– des développeurs, pour le codage proprement dit ;
ainsi que d’autres profils selon le type d’application ; par exemple, dans le cas d’une application web, il peut être utile de faire appel à :
– un graphiste, pour élaborer la charte graphique de l’application ;
– un intégrateur web (XHTML / CSS / Javascript) chargé de la réalisation des maquettes.

Notez que la séparation effective des responsabilités entre des personnes physiques différentes dépendra largement de la taille du projet : pour des projets modestes (jusqu’à quelques dizaines de jours hommes), un chef de mission faisant office de chef de projet et de responsable qualité est une pratique courante ; de même, un consultant technique peut jouer le rôle d’architecte. Mais pour des projets de taille plus importante, il est primordial d’affecter des ressources distinctes à des rôles distincts, afin que chacun puisse se concentrer sur sa mission particulière. En outre, cela favorise la « revue par les pairs » (peer review), qui consiste à porter des regards croisés sur les réalisations.

Les livrables

De même que pour les phases et les acteurs, l’identification préalable des livrables est capitale pour le bon déroulement du projet. Dans l’Intégration Réversible, on distingue deux sortes de livrables :

  • Les livrables de suivi de projet, qui comprennent notamment :
  • * les comptes-rendus des réunions (réunions du comité de pilotage, réunions du comité de projet, réunions d’avancement de projet, etc.) ;
  • * le plan projet, mis à jour tout au long du projet ;
  • * le plan d’assurance-qualité, définissant la politique d’assurance-qualité, ainsi que les normes de développement, d’accessibilité, etc. ;
  • * le plan de gestion des risques, dans lequel les risques sont identifiés, classés selon leur gravité et leur probabilité d’apparition, et pour lesquels des mesures de résorption sont proposées (lui aussi est régulièrement mis à jour).
  • Les livrables du projet, dont en particulier :
  • * les dossiers de spécifications fonctionnelles et techniques ;
  • * le dossier de conception ;
  • * les rapports de tests (unitaires, d’intégration, de sécurité, de montée en charge, d’interface et de recette) ;
  • * les guides d’installation, d’utilisation et d’exploitation ;
  • * la documentation auto-générée à partir du code ;
  • * l’application (code source et exécutable).

Ces livrables sont généralement attachés à des phases du projet, et doivent tous faire l’objet d’une validation explicite, dont les modalités sont définies en début de projet (responsabilités, délais). Seule la validation de tous les livrables attachés à une phase autorise le passage à la ou les phases qui en dépendent.

Toute validation constitue un accord entre client et prestataire : chaque modification ultérieure peut donner lieu à une renégociation de la charge ou des délais impartis, selon son impact sur la suite du projet. D’où la nécessité de prendre très au sérieux les étapes de validation.

Les outils

La dernière brique constituant l’Intégration Réversible concerne les outils à mettre en place pour la réalisation et le suivi du projet. Le choix des outils est laissé libre, mais il est recommandé, afin de garder une indépendance maximale, de s’appuyer sur des outils « open source », qui ont fait leurs preuves au sein des communautés de développeurs de logiciels libres.

L’ensemble des outils constitue ce qu’on appelle l’« atelier d’intégration réversible ». Cet atelier se présente sous la forme d’applications web plus ou moins intégrées les unes avec les autres. Il est composé a minima :
– d’un outil de remontée d’anomalies (comme Bugzilla|Site officiel de Bugzilla ou Mantis|Site officiel de Mantis), ainsi que d’un outil de demande d’évolutions logicielles ;
– d’un gestionnaire de tâches, permettant notamment de mesurer l’avancement du projet ;
– d’un espace de stockage, pour le partage et la validation des documents ;
– d’un gestionnaire de versions des sources de type CVS|Site officiel de CVS ou Subversion|Site officiel de Subversion, avec un accès au code possible depuis une interface web ;
– de « { {mailing lists }} » spécialisées (pilotage, développeurs, etc.), gérées par exemple par Mailman|Site officiel de Mailman ;
– de générateurs de rapports automatiques (tests, avancement du projet, nombre de remontées d’anomalies, etc.).

Cette liste n’est pas exhaustive ; d’autres outils peuvent être ajoutés, selon les besoins et les habitudes des uns et des autres (Wiki, forum de discussion, agenda partagé, etc.).

On assiste actuellement à l’émergence de projets libres (citons par exemple Horde|Site officiel de Horde, Dotproject|Site officiel de Dotproject, phprojekt|Site officiel de phprojekt ou encore gForge|Site officiel de gForge) qui proposent chacun une panoplie d’outils intégrés dans un environnement cohérent. Chacun peut constituer d’ores et déjà une bonne base de départ, complétée soit par des outils externes, soit par des développements spécifiques (à reverser ensuite à la communauté, cela va de soi !).

Les clés de la réussite

L’Intégration Réversible suit l’évolution naturelle des choses. Si révolution il y a, elle est sur le plan conceptuel : le plus difficile – car allant à l’encontre de la plupart des pratiques actuelles – est sans doute pour les sociétés de service d’accepter de ne plus avoir le monopole d’un projet ou d’un client. C’est donc aux porteurs de projets de faire pression sur les prestataires afin de gagner cette indépendance, en profitant du marché qui leur est favorable et en faisant jouer la concurrence. Mais cette concurrence ne doit pas jouer uniquement sur les coûts : qualité, présence de livrables et d’étapes de validation bien définis, utilisation d’outils et de normes ayant fait leurs preuves, etc. doivent également entrer en compte au moment du choix.

Inutile de le cacher, l’adoption de la méthodologie Intégration Réversible sur un projet a un coût : livrables et étapes de validation supplémentaires, contrôles de suivi et de qualité, etc. Mais, à l’instar des (r)évolutions antérieures, ce surcoût ne doit pas constituer une barrière : l’adoption des langages de haut niveau, des langages objet ou des méthodologies de conception a également nécessité des investissements supplémentaires que personne aujourd’hui n’oserait remettre en question.

Car le coût global d’un projet ne s’arrête pas à sa simple réalisation : il faut prendre en compte non seulement les coûts de maintenance, qu’elle soit corrective ou évolutive, mais également les risques de dérive ou même d’abandon du projet (pratiquement un tiers des projets informatiques sont interrompus avant leur terme). D’où la nécessité de réduire au minimum ces risques, tout en préparant au mieux la reprise du projet par l’équipe de maintenance.

L’Intégration Réversible répond à ces deux exigences, en s’appuyant sur :
– des normes de gestion de projet et d’amélioration de processus reconnues et largement utilisées ;
– des outils pratiques, faciles d’emploi et éprouvés.

Il y aura toujours des sceptiques pour rappeler qu’une telle tentative de rationnalisation des projets informatiques a déjà eu lieu dans les années 80 (normes qualité ISO 900x, etc.), sans grand succès. Mais il faut savoir que les sauts technologiques ne se font jamais du premier coup : il y a toujours une première vague, portée par l’euphorie de la nouveauté, qui aboutit généralement à une désillusion collective. Cette première sensibilisation permet toutefois généralement de soulever des problèmes pertinents et de poser les bonnes questions.

Aussi, lorsque la seconde vague survient, plus raisonnable, plus proche des besoins concrets, elle peut s’établir sur un terrain préparé. C’est ce qu’on voit aujourd’hui avec l’Intégration Réversible, qui se veut 100 % opérationnelle.

Par ailleurs, il faut garder à l’esprit que les projets « nouvelles technologies » sont généralement mis en œuvre par des intervenants jeunes, ayant au maximum une dizaine d’années d’expérience, et qui ont évolué jusque là sans beaucoup de méthode (nombre d’entre eux sont issus du monde des start-ups). L’Intégration Réversible peut être un moyen de canaliser toutes ces énergies pour la réalisation de projets ambitieux.

Rien de révolutionnaire, en somme : quelques pratiques saines, une bonne dose de rigueur, et le tour est joué ! La réussite de vos projets sur le long terme ne repose alors plus sur des individus (avec les risques et les aléas que cela comporte), mais sur l’application d’une méthode efficace.