# Méthode agile

En ingénierie logicielle, les pratiques agiles mettent en avant la collaboration entre des équipes auto-organisées et pluridisciplinaires et leurs clients. Elles s'appuient sur l'utilisation d'un cadre méthodologique léger mais suffisamment centré sur l'humain et la communication. Elles préconisent une planification adaptative, un développement évolutif, une livraison précoce et une amélioration continue, et elles encouragent des réponses flexibles au changement$^,$.
Cette approche a été popularisée à partir de 2001 par le Manifeste pour le développement agile de logiciels. Les quatre valeurs et les douze principes adoptés dans ce manifeste sont issus d'un large éventail d'approches dont Scrum et eXtreme Programming$^,$. Depuis lors, les méthodes ou les approches qui s'inscrivent dans la philosophie de ce manifeste sont appelées « méthodes agiles » ou « approches agiles ».
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.

## Fondements

Le Manifeste pour le développement agile de logiciels est un texte rédigé aux États-Unis en 2001 par dix-sept experts du développement logiciels. Ils estimaient que le taux important d'échecs des projets de développements logiciels était dû à la lourdeur des méthodes traditionnelles inspirées du génie civil et s'appuyant sur un cycle de développement en cascade. Chacun d'entre eux avait déjà mis au point et expérimenté de nouvelles méthodes plus légères. Les approches agiles ne sont donc pas apparues avec le manifeste agile. Cependant celui-ci a défini leurs dénominateurs communs et consacré le terme d'« agile » pour les référencer$^,$. Les valeurs et les principes du manifeste agile sont défendus et promus par l'Agile Alliance créée par certains des signataires.
En s'appuyant sur leur expérience combinée du développement logiciel, les dix-sept signataires du manifeste ont proclamé qu'ils attachaient de l'importance « aux individus et leurs interactions plutôt qu'aux processus et aux outils », « à un logiciel fonctionnel plutôt qu’à une documentation exhaustive », « à la collaboration avec les clients plutôt qu'à la négociation contractuelle » et « à l’adaptation au changement plutôt qu'à l'exécution d’un plan ». Cela signifie que les éléments à gauche du mot « plutôt » dans chaque citation sont réputés avoir plus de valeur que ceux à droite, bien qu'il y ait aussi de la valeur dans ces derniers. Ces quatre citations sont appelées les quatre « valeurs » du manifeste agile.
Les quatre valeurs du manifeste agile ont été déclinées en douze principes afin d'aider opérationnellement les équipes qui souhaitaient les suivre.

## Historique
### Travaux sur le cycle de production itératif et incrémental

Les travaux sur le cycle de production itératif et incrémental remontent aux années 1930 et 1940, 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. 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.
Les approches agiles sont l'aboutissement de nombreux travaux tels que ceux de Tom Gilb (cycle de vie évolutif) 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 serait la méthode EVO, 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 development game » un modèle de développement de produits industriels basé sur l'engagement simultané des diverses disciplines concernées (ingénierie concourante).

### Apparition du terme « agile »

Le terme agile apparaît dans le monde économique anglophone en 1991.
En 1991, James Martin (en), s’appuyant sur une vision de l'évolution continue des techniques informatiques, propose une méthode de développement rapide d’application (RAD). La structure itérative, incrémentale et adaptative de cette méthode est une base des approches agiles actuelles. Elle détermine les phases essentielles du cycle de développement et met en œuvre une adaptation permanente fondée 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).

### Manifeste agile

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 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 meilleurs 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 commune des valeurs du développement agile de logiciels et de ses principes sous-jacents par les praticiens et les universitaires$^,$.
Pour décrire leur manifeste au mieux, les dix-sept signataires ont d'abord pensé au terme lightweight (léger) pour se fixer finalement sur agile (traduit à l'identique en français). D'après Fowler, ce terme traduit mieux l'aspect rapidement adaptatif de ces méthodes.
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.

## Approches agiles
### Au sens strict

Les approches pouvant être qualifiées d'agiles, depuis la publication du manifeste Agile, sont :
* la méthode de développement rapide d'application (1991), dite méthode RAD, de l'anglais rapid application development ;
* la version anglaise du RAD (1995), Dynamic systems development method (DSDM) ;
* le framework Scrum, présenté en 1995 par Ken Schwaber, publié ensuite en 2010 par lui-même et Jeff Sutherland sous la forme du Guide Scrum. Il est composé notamment des méthodes du sprint planning, du burndown chart, des daily stand-up meeting (alias daily scrum) ;
* eXtreme Programming (XP), publiée en 1999 par Kent Beck ;
* Adaptive software development (ASD, 2000) qui reconnaît sa parenté avec RAD
* Développement basé sur les fonctionnalités (FDD pour feature driven development, 2003) qui reconnaît également sa parenté avec RAD
* Behavior-driven development (BDD, 2003)
* Crystal clear publiée en 2004 par Alistair Cockburn.

### Limitations et extensions
## Exemples de pratiques agiles

* Intégration continue
* Test driven development (TDD)
* Conception pilotée par le domaine (DDD pour domain-driven design)
* Équipe transverse
* Programmation en binôme
* Planning poker
* Réusinage de code
* Timeboxing
* Récit utilisateur
* Modélisation C4 pour l'élaboration collaborative d'une architecture évolutive ou émergente
* Kanban

## Modèles d'organisation agiles à grande échelle

Afin de pouvoir mener un (très) gros projet ou un portefeuille de projets nécessitant plusieurs équipes agiles, différents modèles d'organisation agiles à grande échelle ont vu le jour.
En voici la liste :
* Le Scaled Agile Framework (SAFe).
* Le framework Large-Scale Scrum (LeSS).
* Le framework Scrum@Scale.
* Le modèle Spotify.

## Entreprise agile

Une entreprise agile est une entreprise disposant d’une culture et de pratiques issues ou inspirées des approches agiles, lui offrant une grande capacité d’adaptation à son environnement.
Dans un monde devenant de plus en plus complexe et incertain, cette capacité d’adaptation fait l'objet d'un précieux levier de croissance ou de survie pour de plus en plus d’entreprises.
Les principales caractéristiques communes aux entreprises agiles sont les suivantes :
* Les processus de travail sont concrètement centrés sur la satisfaction des clients.
* L’échec est considéré comme une source d’apprentissage et d’innovation (en ayant recours à des approches surnommées “fail fast” et “test and learn” par exemple).
* Les équipes sont auto-managées (au sein d’un cadre de travail structuré) afin de mettre à profit l’intelligence collective et renforcer l’engagement des collaborateurs. Elles sont également pluridisciplinaires afin d’optimiser leur efficacité et leur réactivité.
Les entreprises agiles parviennent ainsi à réaliser des produits ou services innovants faisant l'objet d'un haut niveau de satisfaction, tout en réduisant les coûts et délais de production. Par ailleurs, le management agile offre un environnement de travail de qualité pour les équipes, limitant ainsi l'absentéisme et le turn-over.
Voici ci-dessous plusieurs sources d'auteurs différents permettant d'appréhender davantage ce modèle d'entreprise :
* Livre blanc Entreprise Agile publié en 2015 par le cabinet de conseil Deloitte
* Livre Devenir une Entreprise Agile publié en 2017 par Florent Lothon et Jérôme Carfantan
* Article Qu’est-ce qu’une entreprise agile ? publié en 2020 par Harvard Business Review France.
* Livre blanc Devenir une Entreprise Agile publié en 2021 par Ludovic Cinquin

## Critiques

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 montre plusieurs problèmes :
* le dévoiement des approches agiles, notamment à des fins commerciales ;
* le rejet des approches agiles par les développeurs ;
* l'imposition de ces approches 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 quant à lui pense que si la mise en pratique des approches 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" sont essentielles, notamment dans le framework Scrum, mais peu respectées, du fait de la nécessité de remise en question sous-jacente.
Martin Fowler 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 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 prétendument agiles.
Robert C. Martin (Uncle Bob) pense que le mouvement agile était 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 côté ses valeurs d'origine.