Méthode agile

Un article de Wikipédia, l'encyclopédie libre.
Sauter à la navigation Sauter à la recherche

Les méthodes agiles sont des groupes de pratiques de pilotage et de réalisation de projets. Elles ont pour origine le manifeste Agile, rédigé en 2001, qui 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, impliquent au maximum le demandeur (client) et permettent une grande réactivité à ses demandes. Elles reposent sur un cycle de développement itératif, incrémental et adaptatif et doivent respecter quatre valeurs fondamentales déclinées en douze principes desquels découlent une base de pratiques, soit communes, soit complémentaires.

Les méthodes pouvant être qualifiées d'agiles, depuis la publication du manifeste Agile, sont :

Les deux approches de réingénierie agile du développement d'application ou d'amélioration continue (Lean), désormais les plus utilisées sont :

  • En ce qui concerne la réingénierie immédiate des processus, la méthode Extreme programming (XP), publiée en 1999 par Kent Beck.
  • En ce qui concerne l'amélioration continue, le framework Scrum, présentée en 1995 par Ken Schwaber[1], publiée ensuite en 2001 par lui-même et Mike Beedle.

Ces deux approches sont d'ailleurs techniquement complémentaires dans le cas d'un projet de développement en science de l'information (SI), XP proposant alors les techniques d'obtention de la qualité du code

Fondements[2][modifier | modifier le code]

Quatre valeurs fondamentales[modifier | modifier le code]

Les méthodes agiles prônent 4 valeurs fondamentales du manifeste Agile :

  • 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

Bien que la partie droite ait de la valeur, la partie gauche (en gras) doit être privilégiée.

Douze principes généraux[modifier | modifier le code]

  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. Leur fournir l’environnement et le soutien dont ils ont besoin et leur faire 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 devraient ê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.

Historique[modifier | modifier le code]

Les travaux sur le cycle de production itératif et incrémental remontent aux années 1930 et 40, avec les travaux de Walter Shewhart et William Edwards Deming. Ces recherches sont appliquées à la production informatique à la fin des années 1950, notamment avec le développement de parties logicielles dans le cadre du programme Mercury[3]. Gerald Weinberg (en) mentionne un projet de développement réalisé en 1957 pour Motorola qui utilisait une technique similaire à ce qui sera plus tard l'eXtreme programming[3].

Les méthodes agiles sont l'aboutissement de nombreux travaux tels que ceux de Tom Gilb (cycle de vie évolutif)[4] en 1981, 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. La première méthode agile[5] serait la méthode EVO[6], de Tom Gilb, publiée en 1976.

En 1986, Barry Boehm publie le modèle en spirale (développement incrémental) tandis que Hirotaka Takeuchi (en) et Ikujiro Nonaka publient « The new new product developpement game[7] » 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 et adaptative, base des approches agiles actuelles, détermine le phasage essentiel 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 créateur de Scrum et Jeff Sutherland (en) son promoteur, 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é[Par qui ?] comme la définition canonique de valeurs de l'agilité agile et de ses principes sous-jacents[8].

Au début des années 2000, une dizaine de méthodes agiles (dont XP Extreme programming et Scrum sont les principales représentantes) sont popularisées. 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). Scrum propose un ensemble réduit de pratiques concentrées sur le développement de l'adaptabilité par l'apprentissage et l'auto-organisation.

Méthodes agiles au sens strict[modifier | modifier le code]

Classées par date de publication :

Exemples de techniques Agiles[modifier | modifier le code]

Critiques[modifier | modifier le code]

Parmi les 17 signataires du manifeste agile, certains ont depuis émis des critiques non sur les principes Agiles, mais sur leur mise en pratique.

Ron Jeffries[9] montre plusieurs problèmes :

  • Le dévoiement des méthodes agiles, notamment à des fins commerciales
  • Le rejet des méthodes agiles par les développeurs
  • L'imposition de ces méthodes aux équipes (notamment lors d'une mauvaise utilisation des méthodes SAFe, Scaled Scrum, LeSS etc.)

Il conseille aux développeurs, non pas d'abandonner l'agile comme le titre de sa note laisse penser, mais de détacher sa réflexion des méthodes agiles imposées et de rester concentré sur le développement d'un logiciel qui marche, par exemple en mettant en pratique l'Extreme Programming.

Andy Hunt[10] quant à lui pense que si la mise en pratique des méthodes agiles ne marche pas, c'est parce que nous préférons appliquer des règles simples alors qu'elles imposent une constante remise en question. Les deux valeurs "inspection" et "adaptation au changement" étant essentielles, notamment dans la méthode Scrum, mais peu respectées, du fait de la nécessité de remise en question sous-jacente.

Martin Fowler[11] indique que la plupart des projets agiles en 2018 sont "faux-agile" et ne respectent pas ses valeurs et ses principes. Ainsi, les trois principaux défis sont de :

  • Se battre contre l'industrie agile complexe et sa tendance à imposer les processus aux équipes
  • Insister sur l'importance de l’excellence technique
  • Organiser les équipes autour d'un produit et non d'un projet

Dave Thomas[12] pointe du doigt le fait que beaucoup de personnes et d'entreprises ont profité du courant "agile" afin de vendre des produits et des services. De manière humoristique, il dit "l'Agile est mort, vive l'agilité". Utiliser un nom plutôt qu'un adjectif permettrait selon lui de mieux détecter les vendeurs peu scrupuleux de produits et services soit-disant agiles.

Robert C. Martin (Uncle Bob)[13] pense que le mouvement agile étant censé promouvoir les idéaux du Software craftsmanship mais a en fait horriblement échoué. Selon lui, le mouvement agile est devenu commercial, et a mis de coté ses valeurs d'origine.

Notes et références[modifier | modifier le code]

  1. (en) « Ken Schwaber », sur Scrum Guides, (consulté le 2 janvier 2015)
  2. « Manifeste pour le développement Agile de logiciels », sur agilemanifesto.org (consulté le 14 août 2019)
  3. a et b (en) Craig Larman, Victor R. Basilii, « Iterative and incremental development : a brief history » [PDF], sur craiglarman.org,
  4. Tom Gilb, « Evolutionary Development », SIGSOFT Softw. Eng. Notes, vol. 6, no 2,‎ , p. 17–17 (ISSN 0163-5948, DOI 10.1145/1010865.1010868, lire en ligne, consulté le 31 mai 2019)
  5. "EVO is perhaps the oldest IID method with a significant agile and adaptative quality, first taking shape in the 1960s then published in 1976."(en) Craig Larman, « Agile & Iterative Development : Chap 7 », sur craiglarman.com, (consulté le 3 mai 2014)
  6. (en) Tom Gilb, « Fundamental Principles of Evolutionary Project Management », sur gilb.com, (consulté le 3 mai 2014)
  7. (en) Hirotaka Takeuchi (en) et Ikujiro Nonaka, « The New New Product Development Game (Article preview) », sur The magazine (Harvard business review), (consulté le 14 mai 2012)
  8. « 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
  9. (en) « Developers Should Abandon Agile », sur https://ronjeffries.com, (consulté le 24 mai 2018)
  10. (en) « The Failure of Agile », (consulté le 24 mai 2018)
  11. « The State of Agile Software in 2018 », sur martinfowler.com (consulté le 2 septembre 2019)
  12. (en) Dave Thomas (pragdave), « Agile is Dead (Long Live Agility) », sur Agile is Dead (Long Live Agility) (consulté le 2 septembre 2019)
  13. « Clean Coder Blog », sur blog.cleancoder.com (consulté le 3 septembre 2019)

Annexes[modifier | modifier le code]

Sur les autres projets Wikimedia :

Articles connexes[modifier | modifier le code]