SCRUM, eXtreme Programming, RAD, ASD … Les méthodes de développement dites « Agiles » sont nombreuses et variées. Prônées par les uns, décriées par les autres, il peut être difficile de faire le point sur la réelle utilité de ces méthodes par rapport aux méthodes traditionnelles.
Mathias Avocats vous aide à y voir plus clair.
Quelle différence avec les méthodes de développement traditionnelles ?
Traditionnellement, le développement de logiciel ou solution informatique est conçu en « cascade » ou en « V ». Le projet est conçu de manière séquentielle, il est découpé en phases :
- Phase de cadrage : le client exprime ses besoins, via un cahier des charges le plus souvent.
- Phase de conception générale : le prestataire conçoit les grandes lignes du projet, et il s’accorde avec le client sur le prix et le périmètre du projet.
- Phase de conception détaillée : le prestataire conçoit le projet dans le détail.
- Phase de production : les développeurs programment le logiciel, la solution informatique est mise sur pied.
- Phase de test et de correction : une fois le logiciel ou la solution mise sur pied, le prestataire lui fait subir une batterie de tests pour s’assurer de son bon fonctionnement, de l’absence de bugs …
- Phase de livraison : le client découvre le produit fini. Il exprime ses réserves éventuelles et le produit peut faire l’objet d’ajustements, mais à la marge : on reste dans le périmètre des prestations et du prix prévu initialement.
Chaque phase doit être validée pour passer à la suivante, et il n’y a pas de retour en arrière. Cette méthode permet de s’entendre clairement sur les besoins initiaux du client et présente plus d’assurances quant à la maîtrise budgétaire du projet. En cas de litige, elle permet aussi de déterminer plus facilement les responsabilités et les torts de chacun.
Cependant, ces méthodes manquent cruellement de souplesse, ce qui se fait ressentir sur les projets ambitieux ou de longue durée. Sur ce type de projet, les besoins du client ou les technologies disponibles peuvent évoluer, même si le budget et le planning de réalisation ont été fixés en amont. Par ailleurs, il est délicat de prendre en compte les demandes d’évolutions et de changements du client, sauf à renégocier tout le contrat et à remettre à plat le projet intégralement (ce qui se traduit en perte de temps et d’argent).
De plus, le produit n’est testé et livré qu’à la fin du cycle. Il y a donc une opacité pour le client qui ne peut exprimer de retour et éventuellement réorienter un projet en train de se perdre.
Face à ces problématiques, des développeurs ont mis au point des méthodes alternatives de gestion de projet, regroupées sous le nom de « méthodes agiles ».
Le cœur des méthodes Agiles : la souplesse
Pour les auteurs du manifeste Agile, il faut valoriser :
- « les individus et leurs interactions plus que les processus et les outils » ;
- « des logiciels opérationnels plus qu’une documentation exhaustive » ;
- « la collaboration avec les clients plus que la négociation contractuelle » ;
- « l’adaptation au changement plus que le suivi d’un plan ».
Les principes de ces méthodes Agiles sont donc de renoncer à une description exhaustive des besoins du client et des spécifications du projet en amont. Il s’agit de construire le projet au fur et à mesure en s’appuyant sur une collaboration étroite entre les équipes du client et du prestataire. Cette approche permet au projet d’évoluer avec les besoins du client et ses retours sur l’avancement du développement.
Les méthodes Agiles sont itératives et incrémentielles. Cela permet de livrer rapidement un produit utilisable, et d’implémenter au fur et à mesure de nouvelles fonctionnalités.
Les méthodes Agiles sont en général très appréciées des opérationnels, à qui elles laissent une plus grande souplesse pour gérer l’avancée du projet et redéfinir les priorités dans le travail à fournir.
Différentes méthodologies peuvent être combinées ou adaptées aux situations ; l’important étant que cela convienne au projet et aux équipes impliquées.
Parmi les plus utilisées, on peut citer :
- SCRUM : il s’agit plus d’un cadre méthodologique qu’un mode de développement spécifique. Un projet SCRUM est organisé par « sprints » périodes courtes où des listes de tâches sont établies et réparties organiquement entre les membres de l’équipe du prestataire. Pour qu’un projet SCRUM puisse aboutir, il faut une forte implication dans le temps des équipes du client.
- eXtreme Programming, ou XP : cette méthode met l’accent sur la réduction des coûts des modifications, ce qui permet d’implémenter des changements sans pour autant aboutir à un budget faramineux. Les cycles de développement sont rapides et centrés sur le recours à des binômes.
- MoSCoW : dans cette méthode, prestataire et client s’entendent sur une hiérarchisation des besoins qui permet d’être plus efficace dans la gestion du projet.
- Adaptive Software Development ou ASD : il s’agit d’un mode de développement rapide d’applications, basée sur la production automatisée de code informatique. Ce mode est centré sur la prise en compte de l’évolution des besoins pour engendrer des modifications.
Que choisir pour son projet informatique ?
Votre projet est-il court ou long, simple ou complexe ? Présente-t-il des risques de dérives fortes s’il n’est pas strictement encadré ? Le client comme le prestataire sont-ils prêts à collaborer étroitement et quasi-quotidiennement pour s’assurer de leur bonne entente sur le projet ? Le prestataire est-il habitué à travailler avec une méthode agile ? Y-a-t-il un besoin pressant du produit chez le client qui rend réellement bénéfique le fait pour lui d’avoir accès plus tôt à une version incomplète ? Autant de questions qu’il convient de se poser et d’étudier avec son co-contractant pour choisir entre méthodes traditionnelles et Agiles. Il est toujours possible de recourir à des méthodes semi-agile, en mêlant certaines rigueurs des méthodes traditionnelles avec certains modes de fonctionnement des méthodes Agiles.
Mathias Avocats vous assiste tout au long de votre projet informatique.