Les méthodologies agiles sont des approches du développement de produits qui sont alignées sur les valeurs et les principes décrits dans le Manifeste Agile pour le développement de logiciels. Les méthodologies agiles visent à fournir le bon produit, avec une livraison incrémentielle et fréquente de petits morceaux de fonctionnalité, par le biais de petites équipes interfonctionnelles auto-organisées, permettant un retour d’information fréquent des clients et une correction de trajectoire si nécessaire.

Ce faisant, les méthodes agiles visent à corriger les difficultés rencontrées par les approches traditionnelles en “cascade”, qui consistent à livrer de gros produits sur de longues périodes, au cours desquelles les exigences des clients changent fréquemment, ce qui entraîne la livraison de mauvais produits.

Qu’est-ce que le Manifeste Agile ?

Le Manifeste Agile est une déclaration de valeurs et de principes fondamentaux pour le développement de logiciels. Le Manifeste Agile pour le développement de logiciels a été créé en 2001 et c’est une déclaration de 4 règles et 12 principes essentiels qui servent de guide pour les personnes dans le développement de logiciels agiles. Il a été créé par 17 professionnels qui pratiquaient déjà des méthodes agiles telles que XP, DSDM, SCRUM, FDD, etc., réunis dans les montagnes enneigées de l’État américain de l’Utah, à l’initiative de Kent Beck.

Application de la méthodologie agile

Pendant la plus grande partie de sa brève histoire (depuis 1999-2000), “Agile” a été principalement une approche du développement de logiciels et des projets de développement d’applications informatiques. Depuis lors, cependant, elle s’étend également à d’autres domaines, notamment dans les industries de la connaissance et des services.

L’agilité consiste à être réactif au marché et au client en répondant rapidement à ses besoins et à ses demandes et en étant capable de changer de direction en fonction de la situation. Qu’il s’agisse de l’informatique, du développement de logiciels ou de tout autre domaine où il y a un flux de travail et une livraison de produits de travail, les méthodes agiles sont applicables. Les méthodes agiles tentent de maximiser la livraison de valeur au client et de minimiser le risque de construire des produits qui ne répondent pas – ou plus – aux besoins du marché ou du client.

Elles y parviennent en décomposant le cycle de livraison traditionnellement long (typique des anciennes “méthodes en cascade”) en périodes plus courtes, appelées sprints ou itérations. L’itération fournit la cadence pour livrer un produit fonctionnel au client, obtenir un retour d’information et apporter des modifications en fonction de ce retour.

Ainsi, les méthodes agiles ont cherché à réduire les délais de livraison (livrer tôt, livrer souvent) pour s’assurer que de plus petits morceaux verticaux du produit arrivent sur le marché, ce qui permet aux clients de fournir un retour d’information tôt et de s’assurer que le produit qu’ils obtiennent finalement répond à leurs besoins.

Agile est devenu un terme générique pour désigner une variété de méthodes et de processus de planification, de gestion et de techniques pour la gestion de projets, le développement de logiciels et d’autres produits et services de manière itérative. Ces méthodes comprennent Scrum, de loin la méthode la plus répandue et la plus populaire pour les logiciels, XP (eXtreme Programming ou Paired Programming), et plus récemment Kanban.

Les méthodes agiles comprennent également des pratiques techniques – dont la plupart sont regroupées sous le terme général de DevOps – qui permettent l’automatisation des tests, l’intégration continue/la livraison/le déploiement continu (CI/ CD) et, dans l’ensemble, un cycle de livraison toujours plus court pour les logiciels et autres produits et services.

L’utilisation d’Agile comme approche de la gestion de projet a augmenté de façon spectaculaire ces dernières années. Gartner prédit que les méthodes de développement agiles seront bientôt utilisées dans 80 % de tous les projets de développement de logiciels.

Valeurs fondamentales du Manifeste Agile

Les individus et les interactions plutôt que les processus et les outils – La première valeur met l’accent sur le travail d’équipe et la communication. Nous devons comprendre que le développement de logiciels est une activité humaine et que la qualité de l’interaction entre les personnes est vitale. Les outils sont une partie importante du développement de logiciels, mais la réalisation de logiciels de qualité dépend beaucoup plus du travail d’équipe, quels que soient les outils utilisés par l’équipe.

Travailler sur un logiciel plutôt que sur une documentation complète – La documentation a sa place et peut être une excellente ressource ou référence pour les utilisateurs et les collègues. Toutefois, le principal objectif du développement de logiciels est de mettre au point des logiciels qui offrent des avantages commerciaux plutôt qu’une documentation exhaustive.

Collaboration avec les clients plutôt que négociation de contrats – Les équipes de développement doivent travailler en étroite collaboration et communiquer fréquemment avec leurs clients. En écoutant et en recevant des commentaires, les équipes comprendront ce que toutes les parties prenantes veulent vraiment.

Réagir au changement en suivant un plan – Les changements sont une réalité dans le développement de logiciels, une réalité que votre processus de développement de logiciels doit refléter. Un plan de projet doit être suffisamment souple pour pouvoir être modifié en fonction de la situation.

Les 12 principes du Manifeste Agile

  • Notre priorité absolue est de satisfaire le client par la livraison rapide et continue de logiciels de valeur.
  • Nous accueillons les changements de besoins, même à un stade de développement avancé. Les processus agiles exploitent le changement pour donner au client un avantage concurrentiel.
  • Livrer des logiciels fonctionnels fréquemment, de quelques semaines à quelques mois, en privilégiant les délais les plus courts.
  • Les hommes d’affaires et les développeurs doivent travailler ensemble quotidiennement tout au long du projet.
  • Construire des projets autour de personnes motivées. Donnez-leur l’environnement et le soutien dont ils ont besoin, et faites-leur confiance pour faire le travail.
  • La méthode la plus efficace pour transmettre des informations à une équipe de développement et au sein de celle-ci est la conversation en face à face.
  • Le logiciel de travail est la principale mesure du progrès.
  • Les processus agiles favorisent le développement durable. Les commanditaires, les développeurs et les utilisateurs doivent pouvoir maintenir un rythme constant indéfiniment.
  • L’attention continue portée à l’excellence technique et à une bonne conception améliore l’agilité.
  • La simplicité – l’art de maximiser la quantité de travail non effectué – est essentielle.
  • Les meilleures architectures, exigences et conceptions émergent d’équipes auto-organisées.
  • À intervalles réguliers, l’équipe réfléchit à la manière de devenir plus efficace, puis ajuste son comportement en conséquence.

Principales méthodologies agiles

Agile est un terme général qui désigne plusieurs méthodes et pratiques. Examinons quelques-unes des méthodes les plus courantes :

  • Scrum
  • Programmation extrême (XP)
  • Développement de logiciels adaptatifs (ASD)
  • Méthode dynamique de développement de logiciels (DSDM)
  • Développement axé sur les caractéristiques (FDD)
  • Kanban
  • Développement axé sur le comportement (BDD)

Méthodologie Scrum

La méthodologie Scrum est un cadre simple pour travailler sur des projets complexes, et elle a été créée par Ken Schwaber et Jeff Sutherland.

Les méthodologies de développement logiciel agile sont itératives, ce qui signifie que le travail est divisé en itérations, qui sont appelées Sprints dans le cas de Scrum. Scrum est exécuté par de petites équipes de 7 à 9 personnes, dont un Scrum Master et un Product Owner.

Dans le cadre de Scrum, les projets sont divisés en cycles (généralement de 2 ou 3 semaines) appelés Sprints. Le Sprint représente une boîte de temps dans laquelle un ensemble de fonctionnalités doit être développé. Plusieurs sprints peuvent être combinés pour former une “Release”, c’est-à-dire la livraison officielle d’un logiciel ou d’un produit au client ou au marché.

Sprint

La fonctionnalité globale du produit est décomposée par le propriétaire du produit en fonctionnalités plus petites (généralement décrites comme des Épopées et des Histoires d’utilisateurs – ou simplement des Histoires). Ces histoires sont classées par ordre de priorité et reprises dans chaque sprint ou itération. L’objectif de cette méthode est de permettre à l’équipe de faire une démonstration au propriétaire du produit à la fin de chaque sprint, afin de s’assurer que le produit fonctionne comme prévu.

Dans l’ensemble, la méthode Scrum divise le long processus de livraison en cascade en cycles plus courts, ce qui permet aux équipes produit et au client final de revoir fréquemment le logiciel en fonctionnement et de s’assurer qu’il répond à leurs exigences commerciales. Cela permet de s’assurer que le produit final répond également aux exigences finales du client.

La méthode Scrum se caractérise par des cérémonies spécifiques telles que la réunion quotidienne de bilan, la réunion de révision sprint, la démonstration au propriétaire du produit et la réunion de rétrospective sprint. Toutes ces réunions offrent à l’équipe des possibilités de collaboration et d’examen afin de s’assurer que le développement se déroule comme prévu et que tout problème est résolu rapidement.

Programmation extrême (XP)

L’Extreme Programming (XP) – ou programmation jumelée – est une méthodologie développée par Kent Beck au début des années 90. Cette méthodologie agile se concentre sur l’amélioration des relations interpersonnelles comme clé du succès dans le développement de logiciels. XP vise également à promouvoir le travail d’équipe, à favoriser l’apprentissage des développeurs et à encourager un bon environnement de travail. Elle se caractérise par le fait que les développeurs travaillent en paires, l’un d’eux programmant pendant que l’autre observe, et qu’ils changent régulièrement de rôle tout au long du sprint. De cette façon, ils permettent une révision continue du code et un retour d’information qui améliore la qualité du code et les capacités des développeurs.

L’Extreme Programming (XP) favorise un retour d’information continu entre le client et les équipes de développement, une communication fluide entre tous les participants, la simplicité des solutions mises en œuvre et la volonté de faire face aux changements. XP est particulièrement adapté aux projets dont les exigences sont indistinctes et très changeantes, et qui présentent un risque technique élevé.

Développement logiciel adaptatif (ASD)

Le développement de logiciels adaptatifs (ASD) a été développé par Jim Highsmith et Sam Bayer au début des années 1990. Il intègre les principes de l’adaptation continue, c’est-à-dire s’adapter au changement et non le combattre. Le développement de logiciels adaptatifs utilise un cycle de développement dynamique connu sous le nom de spéculation, collaboration et apprentissage. Ce cycle est consacré à l’apprentissage constant et à la collaboration intense entre les développeurs et les clients en raison de l’évolution constante de l’environnement commercial.

Contrairement à la plupart des méthodologies de développement de logiciels qui utilisent un cycle de vie statique, c’est-à-dire Plan-Design-Build, les ASD offrent un cycle de vie itératif non linéaire, où chaque cycle peut itéré et être modifié pendant qu’un autre cycle est en cours d’exécution. Il s’oriente vers le développement rapide d’applications (RAD), qui met l’accent sur la vitesse de développement pour créer un produit de haute qualité, nécessitant peu d’entretien et impliquant autant que possible l’utilisateur. Les principales caractéristiques de l’ASD sont les suivantes :

  1. Spéculer : C’est la phase de lancement du projet où il est nécessaire d’établir les principaux objectifs et buts du projet en comprenant les limites (zones à risque) avec lesquelles le projet fonctionne.
  2. Collaborer : C’est la phase où la plus grande partie du développement est centrée, en maintenant une coordination entre les équipes qui garantit que ce qui est appris par une équipe est communiqué aux autres et ne doit pas être appris à nouveau par d’autres équipes à partir de zéro.
  3. Apprendre : La dernière étape se termine par une série de cycles de collaboration – le travail consiste à saisir ce qui a été appris, qu’il soit positif ou négatif. Cette étape est essentielle pour l’efficacité du projet.

Méthode dynamique de développement de logiciels (DSDM)

La méthode dynamique de développement de logiciels (DSDM) a été développée en 1994 par un groupe de vendeurs et d’experts dans le domaine du développement de logiciels. La méthode DSDM se concentre sur les projets logiciels qui se caractérisent par des budgets et des calendriers serrés. Elle se concentre sur la livraison fréquente de cycles de produits, et le développement est itératif et incrémentiel.

Avec la méthode de développement dynamique de logiciels (DSDM), on peut concevoir une feuille de route de livraisons précoces et continues pour le projet, en mettant en œuvre une solution incrémentale, en s’adaptant à partir du retour d’information obtenu tout au long du processus et en vérifiant que les avantages attendus sont atteints.

La méthode DSDM est un modèle agile qui peut sans aucun doute aider les organisations habituées à travailler sur des projets à changer leur mentalité et leur façon de travailler pour améliorer leur capacité à fournir de la valeur et à réduire le temps de mise sur le marché.

Développement axé sur les caractéristiques (DAD)

La méthodologie de développement piloté par les caractéristiques (Feature Driven Development, FDD) est principalement orientée vers des équipes plus importantes comptant plus de personnes que celles auxquelles d’autres méthodologies agiles telles que Scrum sont normalement appliquées. La FDD a été développée par Jeff De Luca et Peter Coad en 1997. Cette méthodologie se concentre sur des itérations courtes, qui permettent des livraisons tangibles du produit dans une courte période de temps (2 semaines).

Les projets comportant plusieurs équipes et un grand nombre de personnes représentent le défi que tous ne seront pas aussi talentueux et disciplinés. La FDD comprend des activités spécifiques qui permettent de relever les défis de communication et de coordination de ces projets.

Le FDD est un processus en 5 étapes, dont les 3 premières sont séquentielles et les deux dernières sont itératives (comme le montre le schéma ci-dessus). Toutes les méthodologies agiles suivent une série de principes qui les font se ressembler. Cependant, la FDD offre des solutions sur la façon d’organiser l’équipe et de programmer le code, ce qui la rend particulièrement viable pour les grandes équipes de développement qui construisent des logiciels complexes.

La méthode Kanban

La méthode Kanban a été définie par David Anderson au début et au milieu des années 2000, en réponse à certains des défis posés par les différentes méthodes Agiles, en particulier Scrum. Ces méthodes, tout en essayant de résoudre les défis des méthodes traditionnelles/chutes d’eau, ont elles-mêmes été victimes de certains des mêmes défis.

Le cycle de sprint de 2-3 semaines est devenu trop long pour attendre de nombreux contextes d’affaires, les changements requis dans la structure organisationnelle (nouveaux rôles et responsabilités) et une gestion de projet / processus de planification ont mis trop de pression sur les organisations, et de nombreuses équipes se sont retrouvées à ne même pas respecter les engagements de portée et de qualité au niveau du sprint. Pour la plupart des organisations, la mise en œuvre de ces méthodes est devenue très perturbatrice.

La méthode Kanban a été définie comme l’opposé de cela – une méthode d’amélioration évolutive non perturbatrice, qui permet en fin de compte aux équipes de livrer en continu plutôt que par tranches de 2 à 3 semaines, d’obtenir un retour d’information plus rapide et de réduire le délai d’exécution pour apporter de la valeur au client.

Le kanban est un système visuel permettant de gérer le travail au fur et à mesure qu’il se déroule dans un processus. Kanban Il visualise à la fois le processus (le flux de travail) et le travail réel qui passe par ce processus. L’objectif du Kanban est d’identifier les goulets d’étranglement potentiels dans votre processus et de les éliminer, afin que le travail puisse le traverser de manière rentable à une vitesse ou un débit optimal.

Le kanban est défini comme un système de production hautement efficace et efficient. L’origine de la méthodologie du Kanban se trouve dans les processus de production “juste à temps” (JAT) conçus par Toyota, dans lesquels des cartes étaient utilisées pour identifier les besoins matériels dans la chaîne de production.

Développement axé sur le comportement (BDD)

Le Behavior Driven Development (BDD) est une méthodologie de développement agile axée sur le comportement. Elle a été créée par Dan North en 2003 comme une évolution de la méthodologie BDD. Dan North avait pour objectif de réunir des personnes non techniques dans le processus de création des fonctionnalités techniques du système. Il arrive que lorsque nous développons un logiciel, nous omettons involontairement d’inclure des concepts commerciaux présents dans la fonctionnalité, ce qui peut entraîner un flux de bogues récurrents et même graves.

La BDD utilise des concepts de langage universel qui encouragent la collaboration entre des personnes avec ou sans connaissances techniques dans un projet de logiciel. Le processus de développement de BDD est basé sur l’écriture de scénarios et de fonctionnalités de test. Ceux-ci contiennent les exigences et les critères d’acceptation pour le comportement du système. Il indique les fonctionnalités nécessaires pour démarrer, ce qu’elles feront ensuite et quels seront les résultats après leur exécution.

Le BDD aide les équipes à communiquer plus précisément les exigences, à découvrir les défauts à un stade précoce et à construire des logiciels qui restent viables dans le temps.

Résumé

Il existe toute une série de modèles et de méthodologies de développement différents basés sur les principes Agiles. Ces dernières années, la liste des organisations qui attribuent le succès de cette méthodologie s’est allongée. Certains des plus grands noms des médias, de la technologie, de la finance et même de certaines agences gouvernementales nationales ont adopté et loué l’efficacité d’Agile.