La gestion de projet informatique dite agile, effet d’annonce ou réalité ?


Et si les méthodes informatiques traditionnelles n’étaient plus les plus efficaces ?


Depuis plus de 15 ans, on entend parler des méthodes dites agiles. Un fossé s’est créé entre les partisans de ces méthodes et les partisans des méthodes plus traditionnelles, les méthodes dites « agiles » se voulant plus humaines, souples et adaptées mais qu’en est-il vraiment ?


L’objectif des méthodes Agile


Les méthodes dites agiles tirent leurs origines de l’« Agile Manifesto » rédigé en 2001 17 experts du développement d'applications informatiques. Ces méthodes ont une approche itérative et collaborative permettant de prendre en compte à la fois les besoins initiaux mais aussi les besoins liés aux évolutions. Elles portent le client au centre de leur cycle de développement du début à la fin du projet, permettant ainsi d’obtenir des retours réguliers afin d’appliquer les changements nécessaires. L’objectif de base de ces méthodes est de proposer à chaque étape du projet une version fonctionnelle de l’application aux utilisateurs puis intégrer les fonctionnalités de manière itérative autant de fois que nécessaire afin d’arriver aux résultats souhaités.


Ces méthodes reposent sur quatre grandes valeurs et 12 principes fondamentaux.
Collaboration : les individus et leurs interactions, plutôt que les processus et les outils.
Equipe : des logiciels opérationnels, plutôt qu'une documentation exhaustive.
Application : la collaboration avec les clients, plutôt qu'une négociation contractuelle des relations.
Acceptation : l'adaptation au changement, plutôt que le suivi d'un plan.


Les principes de ces méthodes consistent à mettre le client et sa satisfaction au centre de la réalisation du projet tout en maîtrisant l’avancement du projet :
1.    La plus haute priorité est de satisfaire le client en livrant rapidement et régulièrement des fonctionnalités à grande valeur ajoutée.
2.    Accueillir positivement les changements de besoins, même tard dans le projet. Les processus agiles exploitent le changement pour donner un avantage compétitif au client.
3.    Livrer fréquemment un logiciel opérationnel avec des cycles de quelques semaines à quelques mois et une préférence pour les plus courts.
4.    Les utilisateurs ou leurs représentants et les développeurs doivent travailler ensemble quotidiennement tout au long du projet.
5.    Réaliser les projets avec des personnes motivées. Fournissez-leur l’environnement et le soutien dont elles ont besoin et faites-leur confiance pour atteindre les objectifs fixés.
6.    La méthode la plus simple et la plus efficace pour transmettre de l’information à l'équipe de développement et à l’intérieur de celle-ci est le dialogue en face à face.
7.    Un logiciel opérationnel est la principale mesure d’avancement.
8.    Les processus agiles encouragent un rythme de développement soutenable. Ensemble, les commanditaires, les développeurs et les utilisateurs doivent être capables de maintenir indéfiniment un rythme constant.
9.    Une attention continue à l'excellence technique et à une bonne conception renforce l’agilité.
10.    La simplicité – c’est-à-dire l’art de minimiser la quantité de travail inutile – est essentielle.
11.    Les meilleures architectures, spécifications et conceptions émergent d'équipes auto-organisées.
12.    À intervalles réguliers, l'équipe réfléchit aux moyens de devenir plus efficace, puis règle et modifie son comportement en conséquence.
Au travers de ces différents principes, on peut observer la volonté de remettre l’humain au centre de la réalisation du projet, en impliquant le client à chaque étape et en ayant la volonté de satisfaire ses besoins. Ceci est réalisable grâce à la prise en compte des retours clients et un fonctionnement itératif dans la réalisation du projet.
Malgré l’ensemble des avantages que semblent apporter ces méthodes pourquoi celle-ci ne sont pas systématiquement utilisées et pourquoi existe-t-il des détracteurs à ces méthodes ?


Limites ou idées fausses sur cette méthode


Avec l’arrivée de ces nouvelles méthodes, un certain nombre d’idées plus ou moins fondées est véhiculé.
Les méthodes agiles sont réservées uniquement aux « petits » projets : Les méthodes agiles ont été conçues au départ pour la réalisation de logiciel Informatique qui ont une durée de vie de plusieurs années. L’objectif de ces méthodes est de limiter au maximum l’effet tunnel dans la réalisation de projet informatique en utilisant des cycles de développement itératif afin de prendre en compte les modifications et nouveaux besoins clients. Ces méthodes sont justement pensées et adaptées pour les longs projets.
Les méthodes agiles sont des méthodes de développement rapide ou de prototypage : un fonctionnement par itération ne signifie pas un développement rapide. Les méthodes agiles imposent la mise en place de tests automatiques et une certaine qualité de codes, ce qui ne constitue pas la meilleure approche à adopter dans le cadre d’un prototypage.


Les développements agiles sont difficilement maintenables à cause du manque de documentation : Les méthodes agiles nécessitent une grande rigueur dans la conception du logiciel en imposant la mise en place de tests automatiques et une documentation du code réalisé. La documentation dans le cadre des méthodes agiles est le code source et les tests automatiques. L’avantage est d’obtenir une documentation conforme et à jour, avec les spécifications et le code généré. Dans le cadre des méthodes agiles l’effort est porté sur la qualité du code et des tests plutôt que dans la réalisation des documents plus classiques.


L’agilité peut s’appliquer à chaque projet et dans chaque cas : pour être agile, il faut le vouloir mais aussi le pouvoir. Utiliser les méthodes agiles au niveau d’un projet informatique nécessite un certain nombre de prérequis. Le client doit pouvoir se rendre disponible dans les différentes étapes de la réalisation du projet si ce n’est pas le cas la méthode agile ne pourra être efficace. De même les développeurs doivent être sensibilisés à ces méthodes et respecter les spécifications dans la réalisation du code et des tests.


Comment tirer le meilleur de ces méthodes

Pour qu’une méthode soit efficace, il faut tout d’abord sensibiliser le client à cette méthode en lui indiquant les avantages mais aussi les droits et devoirs de chacune des parties prenantes.


Les outils utilisés dans le cadre de la réalisation de projet doivent être pensés et construis au service de cette méthode. Mettre en place une méthode agile en utilisant des outils ne permettant pas un fonctionnement itératif ne permet pas de tirer l’ensemble des bénéfices de ces méthodes. Il faut que les outils utilisés permettent d’obtenir une version minimaliste du logiciel utilisable dès le début du projet, la possibilité de mettre en place de nouvelles fonctionnalités de manière itérative tout en respectant la mise en place de tests automatiques et la documentation du code.


Les méthodes agiles permettent de remettre l’humain au cœur des projets et d’obtenir les bonnes applications au bon moment grâce à un fonctionnement itératif et en acceptant les changements durant le projet, toutefois la bonne réussite nécessite des outils cohérents avec ces méthodes et une sensibilisation de l’ensemble des parties prenantes.