Méthode agile

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher


Les méthodes agiles sont des groupes de pratiques de projets de développement en informatique (conception de logiciel), pouvant s'appliquer à divers types de projets. Elles ont pour dénominateur commun l'Agile manifesto. Rédigé en 2001, celui ci consacre le terme d'« agile » pour référencer de multiples méthodes existantes. Les méthodes agiles se veulent plus pragmatiques que les méthodes traditionnelles. Elles impliquent au maximum le demandeur (client) et permettent une grande réactivité à ses demandes. Elles visent la satisfaction réelle du client en priorité aux termes d'un contrat de développement.

Les méthodes agiles reposent sur une structure (cycle de développement) commune (itérative, incrémentale et adaptative), quatre valeurs communes déclinées en douze principes communs desquels découlent une base de pratiques, soit communes, soit complémentaires.

Les premières méthodes agiles apparues sont RAD (développement rapide d'applications) (1991), puis DSDM, la version anglaise du RAD (1995). Plusieurs autres méthodes, comme ASD ou FDD, reconnaissent leur parenté directe avec RAD. Les trois méthodes agiles désormais les plus utilisées sont : la méthode Kanban, issue de la méthode industrielle Lean, la méthode Scrum publiée en 2001 par Ken Schwaber et Jeff Sutherland, et la méthode XP Extreme programming publiée en 1999 par Kent Beck.

Un mouvement plus large (management agile) couple les valeurs agiles aux techniques de l'amélioration continue de la qualité (plus particulièrement le Lean). On constate un élargissement de l'utilisation d'agile à l'ensemble de la structure de l'entreprise[1].

Itératif, incrémental et adaptatif[modifier | modifier le code]

L'évolution des cycles en matière de développement informatique a débuté avec une vision incrémentale dite « cascade » ou « cycle en V » de la succession des livrables à produire et à valider, puis s'est complexifiée en acceptant les recouvrements de phases de l'ingénierie concourante (figure : Evolution des cycles basiques).

Evolution des cycles basiques
Diverses formes d'itératif
Le cycle agile est en fait semi-itératif
Affichage mural élémentaire
Avancement graphique du projet
Critères Itératif - Incrémental - Adaptatif
Paramètres d'ajustement de planification

La notion d'itératif (retour pour affinements ou modifications) a ensuite été utilisée à partir de 1991 dans la plupart des cycles de développement (figure : Diverses formes d'itératif).

Dans la réalité des méthodes actuelles, le qualificatif d'itératif recouvre le plus souvent une réalité semi-itérative : la phase de production étant précédée de plusieurs étapes telles que l'exploration du besoin, le design de l'architecture et la planification (figure : Le cycle agile est en fait semi-itératif).

Une méthode agile est avant tout itérative sur la base d’un affinement du besoin mis en œuvre dans des fonctionnalités en cours de réalisation et même déjà réalisées. Cet affinement, indispensable à la mise en œuvre du concept adaptatif, se réalise en matière de génie logiciel sous deux aspects :

  • fonctionnellement, par adaptation systématique du produit aux changements du besoin détecté par l’utilisateur lors de la conception-réalisation du produit (notion de validation permanente de l’utilisateur avec RAD et notion de conception émergente avec XP) ;
  • techniquement, par remaniement régulier du code déjà produit (refactoring).

Une méthode agile est ensuite, éventuellement, incrémentale. Lorsque le projet, quel que soit le nombre de participants, dépasse en durée une dizaine de journées en moyenne, la production de ses fonctionnalités s’effectue en plusieurs incréments.

La notion d'adaptatif, quant à elle, nécessite au-delà d'un simple principe, la mise en œuvre de techniques de contrôle de l'évolution du livrable et d'une métrique formelle des modifications, avant, après et en cours de la production. Il en découle une planification opérationnelle élémentaire, directement visible par le biais de l'affichage mural (figure : Affichage mural élémentaire).

Un contrat agile est tout à fait possible. Il se base sur l'évaluation du périmètre connu à produire avec une technique agile comme le jeu d'estimation consensuelle. Ce principe exprime en unité d'œuvre, telle les journées idéales par exemple, un engagement de l’équipe sur des objectifs précis. Ces objectifs font l’objet du contrat-projet initial. Le contenu fonctionnel peut ensuite être modifié, en permanence et même en cours de développement, par la maîtrise d'ouvrage. Chaque modification est tracée sur la fiche de récit utilisateur de la fonctionnalité modifiée ou abandonnée en cours de développement. Les parties de développement réutilisables sont alors réintégrées dans l’évaluation formelle des modifications ou des nouvelles fonctionnalités. Dans ce contexte, l’équipe a pour obligation de livrer en fin d’incrément un nombre d’unités d’œuvre au moins égal à sa vitesse nominale prévue en début de projet (nombre de personnes * nombre de jours ouvrés de travail sur l’incrément) ; le nombre d’unité d’œuvre (UE) permettant de présenter graphiquement la productivité obtenue pour chaque incrément se compose alors ainsi : UE livrées au total = UE livrées utiles + UE livrées abandonnées. Ce principe se matérialise ensuite avec la forme de reporting agile nommé BurnUp chart (figure : Avancement graphique du projet).

L'acceptation du mode adaptatif, qui permet au client de modifier ses exigences en cours de projet, aura pour conséquence l'éventualité d'un périmètre variable (figure : Critères Itératif - Incrémental - Adaptatif). Dans la plupart des projets conséquents ou stratégiques des contraintes plus nombreuses doivent être prises en compte afin d'optimiser le pilotage de la réalisation (figure : Paramètres d'ajustement de planification).

Historique[modifier | modifier le code]

Les méthode agiles sont l'aboutissement de nombreux travaux tels que ceux de Tom Gilb (cycle de vie évolutif), de Scott Shultz (production en itérations rapides), de Brian Gallagher et de Alex Balchin. Elles intègrent aussi les techniques JRP (Joint Requirements Planning) et JAD (Joint application design) (en) qui furent initiées par Dan Gielan, puis formalisées par Chuck Morris d'IBM en 1984 et diffusées sous forme de livres en 1989 par, entre autres, J. Wood et D. Silver.

En 1986, Barry Boehm publie le modèle en spirale (développement incrémental) tandis que Hirotaka Takeuchi (en) et Ikujiro Nonaka (en) publient « The new new product developpement game[2] » un modèle de développement de produits industriels basé sur l'engagement simultané des diverses disciplines concernées (ingénierie concourante).

En 1991, James Martin (en) (RAD), s’appuyant sur une vision de l'évolution continue des technologies informatiques, propose une méthode de développement rapide d’application. Sa structure (itérative-incrémentale-adaptative), base des approches agiles actuelles, détermine le phasage essentiel (figure : Le cycle agile est en fait semi-itératif) et met en œuvre un principe adaptatif non restrictif fondé sur la validation permanente des utilisateurs et leur responsabilité directe dans la dynamique applicative.

À partir de 1994, Jean-Pierre Vickoff en France, notamment avec le Processus RAD2 publié par le Gartner Group en 1999, et Jennifer Stapleton en Grande-Bretagne, avec DSDM, introduisent des compléments et des évolutions (détails Développement rapide d'applications).

En 2001, aux États-Unis, dix-sept figures éminentes du développement logiciel se réunissent pour débattre d'un thème unificateur de leurs méthodes respectives. Les plus connus d'entre eux sont Ward Cunningham, l'inventeur du Wiki via WikiWikiWeb, Kent Beck, père de l'extreme programming et cofondateur de JUnit, Ken Schwaber (en) fondateur de Scrum et Jeff Sutherland (en) qui en fit un succès commercial, Jim Highsmith (en), prônant l'ASD, Alistair Cockburn pour la méthode Crystal clear, Martin Fowler et Dave Thomas, ainsi qu'Arie van Bennekum pour DSDM (Dynamic System Development Method). Ces 17 experts extraient alors de leurs usages respectifs les critères communs et les principes qui, selon eux, conduisent aux meilleures concepts de direction de projets et de développement de logiciels.

De cette réunion émerge le Manifeste agile, considéré comme la définition canonique du développement agile et de ses principes sous-jacents[3].

Au début des années 2000, une vague d’une dizaine de méthodes (dont XP Extreme programming et Scrum sont les principales représentantes) apparaissent. L'apport méthodologique d'XP réside dans la préconisation de pousser à l’extrême les principales pratiques de qualité de la construction applicative ainsi que les techniques adaptatives d’estimation consensuelle, de planification pilotée par l'utilisateur et de reporting visuel en temps réel de l'avancement ainsi que des problèmes rencontrés (affichage mural à base de post-it).

Valeurs[modifier | modifier le code]

Les méthodes agiles prônent 4 valeurs fondamentales (entre parenthèses, les citations du manifeste)[4] :

  • L'équipe (« Les individus et leurs interactions, plus que les processus et les outils ») : dans l'optique agile, l'équipe est bien plus importante que les outils (structurants ou de contrôle) ou les procédures de fonctionnement. Il est préférable d'avoir une équipe soudée et qui communique, composée de développeurs (éventuellement à niveaux variables), plutôt qu'une équipe composée d'experts fonctionnant chacun de manière isolée. La communication est une notion fondamentale.
  • L'application (« Des logiciels opérationnels, plus qu'une documentation exhaustive ») : il est vital que l'application fonctionne. Le reste, et notamment la documentation technique, est une aide précieuse mais non un but en soi. Une documentation précise est utile comme moyen de communication. La documentation représente une charge de travail importante, mais peut pourtant être néfaste si elle n'est pas à jour. Il est préférable de commenter abondamment le code lui-même, et surtout de transférer les compétences au sein de l'équipe (on en revient à l'importance de la communication).
  • La collaboration (« La collaboration avec les clients, plus que la négociation contractuelle ») : le client doit être impliqué dans le développement. On ne peut se contenter de négocier un contrat au début du projet, puis de négliger les demandes du client. Le client doit collaborer avec l'équipe et fournir un compte rendu continu sur l'adéquation du logiciel avec ses attentes.
  • L'acceptation du changement (« L'adaptation au changement, plus que le suivi d'un plan ») : la planification initiale et la structure du logiciel doivent être flexibles afin de permettre l'évolution de la demande du client tout au long du projet. Les premières livraisons du logiciel vont souvent provoquer des demandes d'évolution.

Principes[modifier | modifier le code]

Ces 4 valeurs se déclinent en 12 principes généraux communs à toutes les méthodes agiles[5] :

  1. La plus haute priorité est de satisfaire le client en livrant rapidement et régulièrement des fonctionnalités à forte valeur ajoutée.
  2. Le changement est accepté, même tardivement dans le développement, car les processus agiles exploitent le changement comme avantage concurrentiel pour le client.
  3. La livraison s’applique à une application fonctionnelle, toutes les deux semaines à deux mois, avec une préférence pour la période la plus courte.
  4. Le métier et les développeurs doivent collaborer régulièrement et de préférence quotidiennement au projet.
  5. Le projet doit impliquer des personnes motivées. Donnez-leur l'environnement et le soutien dont elles ont besoin et faites leur confiance quant au respect des objectifs.
  6. La méthode la plus efficace de transmettre l'information est une conversation en face à face.
  7. L’unité de mesure de la progression du projet est un logiciel fonctionnel (ce qui exclut de comptabiliser les fonctions non formellement achevées).
  8. Les processus agiles promeuvent un rythme de développement soutenable (afin d’éviter la non qualité découlant de la fatigue).
  9. Les processus agiles recommandent une attention continue à l'excellence technique et à la qualité de la conception.
  10. La simplicité et l'art de minimiser les tâches parasites, sont appliqués comme principes essentiels.
  11. Les équipes s'auto-organisent afin de faire émerger les meilleures architectures, spécifications et conceptions.
  12. À intervalle régulier, l'équipe réfléchit aux moyens de devenir plus efficace, puis accorde et ajuste son processus de travail en conséquence.

Une méthode qualifiée d'agile doit donc se composer d'un ensemble de pratiques instrumentant le cadre décrit par les 12 principes généraux agiles et en conséquence s'inscrire dans le respect des 4 valeurs fondamentales ayant inspiré le Manifeste agile.

Structure opérationnelle et pratiques du développement agile[modifier | modifier le code]

La première des méthode Agiles, le RAD, depuis ses débuts en 1991, préconise la formation d'une équipe de développement particulière. Cette équipe est autonome, spécialement formée, concrètement motivée et outillée. Elle se compose essentiellement d'un profil unique de concepteurs-développeurs formés à des spécialités techniques complémentaires. L'équipe travaille avec les utilisateurs et généralement un animateur dans une salle spéciale, isolée, spécialement équipée dans le style war room, où les murs sont utilisés pour afficher un « radiateur d'information » (une forme de cockpit de management de projet). Cette organisation et ces techniques sont devenues communes à l'ensemble des méthodes agiles.

Parmi les techniques caractéristiques de la conduite de projet agile apparues plus récemment, on trouve l'expression des exigences formalisée de préférence en « récits utilisateur » et son évaluation consensuelle par l'équipe dans le cadre d'un jeu sérieux intitulé planning poker qui estime la charge à produire dans une unité de valeur pouvant être soit des « journées idéales » soit des « points de récit ».

Toutes les méthodes agiles utilisent un mode opératoire similaire, voire identique :

  • Un responsable fonctionnel définit et ordonne la production des composants de l'application.
  • Le projet est structuré en incréments de 1 à 6 semaines suivant les nécessités (taille, réactivité, visibilité...).
  • Une réunion initiale organise chaque incrément en définissant les tâches à réaliser.
  • L’équipe pilote la qualité et la performance du projet de manière consensuelle.
  • Chaque jour, une courte réunion d'avancement donne à l'équipe une vision globale du projet, met en évidence les éventuels problèmes et permet de factoriser les solutions.
  • Un 'reporting' mural (Kanban, graphes de progression, etc.) est mis à jour en temps réel par les membres de l'équipe.
  • Un incrément achevé contient une livraison complète, développée, approuvée et testée.
  • Une réunion finale présente l'application et est suivie d'une rétrospective technique du processus de développement.
  • Le responsable fonctionnel valide le travail de l'équipe et ajuste les besoins entre chaque incrément.

Pratiques communes à l'ensemble des méthodes agiles[modifier | modifier le code]

  1. Les pratiques communes liées aux ressources humaines
    • Participation de l’utilisateur final aux groupes de travail.
    • Groupes de travail disposant du pouvoir de décision.
    • Autonomie et organisation centralisée de l’équipe (motivation).
    • Spécification et validation permanente des Exigences.
  2. Les pratiques communes liées au pilotage du projet
    • Niveau méthodologique variable en fonction des enjeux du projet.
    • Pilotage par les enjeux et les risques.
    • Planification stratégique globale basée sur des itérations rapides.
    • Réalisation en jalons par prototypage actif itératif et incrémental.
    • Recherche continue d’amélioration des pratiques.
  3. Les pratiques communes liées à la qualité de la production
    • Recherche d’excellence technique de la conception.
    • Vision graphique d’une modélisation nécessaire et suffisante.
    • Vision de la documentation nécessaire et suffisante.
    • Normes et techniques raisonnables de qualité du code (métrique).
    • Architecture à base de composants.
    • Gestion des changements automatisée.

Pratiques différenciatrices des méthodes agiles[modifier | modifier le code]

Seules quelques techniques complémentaires entre elles, ou mieux adaptées à des typologies et à des tailles de projets données, différencient les méthodes agiles. Les pratiques différenciatrices les plus marquantes sont :

  • La méthode RAD préconise lors de la phase de Construction de l'application des techniques similaires à celles d'XP mais non extrêmes dans leur mise en œuvre : des revues de code personnelles, puis collectives et l'intégration avant chaque focus (ou show). Par contre, le RAD limite la programmation en binôme aux parties les plus stratégiques. Toute méthode de conduite de projet devrait inclure un mode opératoire pour les arrêts d'urgence (Go/NoGo). Sur ce point la force du RAD se situe dans la présence d'un animateur-facilitateur. Cette ressource, de préférence externe, doit être neutre en regard des autres intervenants. Elle répond à une autorité supérieure à tous les participants du projet. Ainsi, lorsque le contexte stratégique, économique ou technique d'un projet évolue, ou si les conditions de réalisation se dégradent, l'animateur reporte le problème au dirigeant qui l'a mandaté. Ce dernier peut alors prendre, dans les meilleurs délais, et avec des informations objectives les décisions qui s'imposent.
  • Le RAD dans sa version 2 recommande la variabilité de la taille et de la maturité des groupes de travail en fonction des phases du projet afin d'optimiser l'engagement des ressources et de préserver leur intérêt par un travail adapté à leurs préoccupations. Le plus sérieux apport de RAD2 à la communication de projet et à la formalisation des exigences applicatives est le groupe d'animation et de rapport (GAR). Avec RAD 2, l'organisation performante des réunions est basée sur un mode opératoire des entretiens et sur des techniques de validation permanente. Le RAD propose des techniques de pilotage stratégique comme la livraison en fonctionnalité réduite ou la livraison par thèmes.
  • La méthode DSDM (nom donné au consortium commercialisant la méthode RAD en Angleterre) se particularise par la spécialisation des acteurs du projet dans une notion de « rôles ». Ainsi, l'on trouvera dans les réunions DSDM des sponsors exécutifs, des ambassadeurs, des utilisateurs visionnaires, des utilisateurs conseillers, sans oublier l'animateur-facilitateur et des rapporteurs.
  • La méthode scrum affirme sa différence dans la généralisation d'un cérémonial basé sur des pratiques de courtes réunions à chaque étape de la vie du projet (rétrospectives). Ces temps de travail commun ont pour objectifs d'améliorer la motivation des participants, de synchroniser les tâches, de débloquer les situations difficiles et d'accroître le partage de la connaissance.
  • Pour FDD, la particularité nommée mission focused réside dans une forte orientation vers un but immédiat mesurable guidé par la notion de valeur métier. C'est en fait l'ambition globale d'une itération qui se trouve ainsi renforcée. Cet aspect se retrouve aussi dans la méthode RAD sous la forme des objectifs de Focus ou dans Scrum dans la notion d'objectifs de Sprint.
  • XP (extreme programming) est très axé sur la partie Construction de l'application. Une de ses originalités réside dans l’approche de planification qui se matérialise sous la forme d’un jeu intitulé planning game et qui implique simultanément les utilisateurs et les développeurs. On notera aussi des techniques particulières liées à la production du code comme le test driven development (TDD), la programmation en binôme (Pair programming), l'appropriation collective du code, la refactorisation (refactoring) et l'intégration continue.

Critères d'éligibilité[modifier | modifier le code]

De multiples facteurs contextuels peuvent être pris en considération pour valider ou invalider la possibilité d'application d'une méthode agile. Les principaux critères d'éligibilité pourraient être les suivants :

  1. Favorisant :
    • Besoin rapide de mise à disposition du produit
    • Imprévisibilité des besoins du client
    • Nécessité de changements fréquents
    • Besoin de visibilité du client sur l'avancement des développements
    • Présence de l'utilisateur assurant un feedback immédiat
  2. Défavorisant :
    • Indisponibilité du client ou de l'utilisateur
    • Dispersion géographique des ressources humaines
    • Inertie des acteurs du projet ou refus des changements
    • Gouvernance complexe de la DSI

Dans les cas où les critères d'éligibilité de l'utilisation d'une approche agile n'ont pas été respectés, un risque de dérive lié à un formalisme léger peut apparaître.

Principales critiques[modifier | modifier le code]

Dans la réalité de leur mise en œuvre, toutes les méthodes ne respectent pas à l'identique les principes fondamentaux agiles.

Scrum nécessite une importante spécification préalable à la mise en production (backlog produit), ce qui le classerait en partie du côté prédictif des méthodes. Certains estiment que ce point ne serait pas un problème si Scrum disposait d'une métrique formelle de gestion des modifications. Mais l'objectif de Scrum est essentiellement orienté sur la maîtrise d’une livraison d’incréments (sprint). Son processus réfute donc la possibilité de modifier les fonctionnalités en cours de réalisation (à l'exception d'un simple affinement depuis la version 2011). Pour cette raison, certains prétendent que Scrum ne peut être alors considéré comme réellement itératif et adaptatif.

Par ailleurs, comme Scrum ne propose aucune technique d'ingénierie du logiciel, il est indispensable de faire appel à une autre méthode pour assurer la qualité et la fiabilité des développements informatiques.

D'aucuns expliquent, notamment lors de projets complexes, qu'il serait nécessaire d'ajouter à Scrum comme à eXtrême Programming les pratiques de structuration des exigences qui leur font défaut.

Méthodes agiles[modifier | modifier le code]

Classées par date de publication :

Autres méthodes se reconnaissant un lien avec l'agilité[modifier | modifier le code]

  • MACAO
  • 2TUP (2 track unified process, prononcez « toutiyoupi ») préconise un cycle de vie en Y qui dissocie la résolution des questions fonctionnelles et techniques. Le cycle de vie de 2TUP s'apparente à un cycle de développement en cascade mais introduit une forme itérative interne à certaines tâches. Il n'est pas certain que ce cycle s'apparente réellement à une approche agile. Par contre, 2TUP préconise des formes de recherche de qualité et de performance intéressantes telles que les services réutilisables et la conception générique (Framework et Patron de conception Design pattern) proches des mécanismes architecturaux de RUP.
  • RUP se caractérise par une approche globale nommée « Vue 4+1 ». Les 5 composants de cette vue sont : la vue des Cas d'utilisation, la vue Logique, la vue d'Implémentation, la vue du Processus, la vue du Déploiement. À l'instar du guide d'activité de RAD 2, RUP offre également un guide de processus formel et adaptable. Ce guide est propre à RUP et orienté outil. À noter que Rational Unified Process, propriété d'IBM, n'est pas une méthode agile stricto sensu. Mais il en existe une déclinaison agile, mais non libre de droits, sous l'acronyme de AUP (Agile unified process (en)).

Bibliographie francophone[modifier | modifier le code]

  • RAD, le développement d'applications client-serveur, Jean-Pierre Vickoff, Macmillan, 1996 (ISBN 2744002224)
  • Systèmes d'information et processus agiles, Jean-Pierre Vickoff, Hermes Science Publication, 2003 (ISBN 2746207028)
  • L'eXtreme Programming, de Jean-Louis Bénard, Laurent Bossavit, Régis Médina, Dominic Williams Eyrolles 2004 (ISBN 221211561X)
  • Maîtriser les projets avec XP : Pilotage par les tests-client, Thierry Cros, Éditions Cépadues, 2004 (ISBN 2854286391)
  • Méthode agile, Les meilleures pratiques, Compréhension et mise en œuvre, Jean-Pierre Vickoff, QI, 2009 (ISBN 978-2912843074)
  • SCRUM, le guide de la méthode agile la plus populaire, Claude Aubry, InfoPro, Dunod, 2010 (ISBN 978-2100540181)
  • Le marketing de l'Incertain. Méthode agile de prospective par les signaux faibles et les scénarios dynamiques,Philippe Cahen, Kawa, 2011 (ISBN 978-2-918866-22-0)

Bibliographie anglophone[modifier | modifier le code]

  • Rapid Application Development, James Martin, Macmillan, 1991 (ISBN 978-0023767753)
  • Extreme Programming Explained: Embrace Change, Kent Beck, (Addison-Wesley, October 5, 1999) 978-0201616415 (ISBN 978-0201616415)
  • Agile Software Development With Scrum, Ken Schwaber, Mike Beedle, (Prentice Hall, October 21, 2001) (ISBN 978-0130676344)

Voir aussi[modifier | modifier le code]

Sur les autres projets Wikimedia :

Articles connexes[modifier | modifier le code]

Références[modifier | modifier le code]

Agile, de quoi s'agit-il ? Conférence de l'Association Française du Droit d'Internet et des Technologies (AFDIT)

  1. Travaux de Jean-Pierre Vickoff publiés par l'Agile Alliance (en) et par ADELI (fr)
  2. (en) Hirotaka Takeuchi (en) et Ikujiro Nonaka (en), « The New New Product Development Game (Article preview) », sur The magasine (Harvard business review),‎ janvier 1986 (consulté en 14/05/2012)
  3. « Le Manifeste agile a été rendu public en 2001, et plusieurs implémentations de la méthode, comme XP, SCRUM, et Crystal, existent. », Kieran Conboy et Brian Fitzgerald, Extreme Programming And Méthodes agiles - XP/Agile Universe 2004 : 4e Conférence sur Extreme Programming et les Méthodes Agiles, Calgary, Canada, du 15 au 18 août 2004, Actes, chapitre Vers un cadre conceptuel pour les Méthodes Agiles, Springer Verlag, New York, [pas clair], (ISBN 354022839X), (en) lien
  4. Manifeste pour le développement Agile de logiciels
  5. Traduction des principes sous-jacents au manifeste