Méthodologie agile
La « méthodologie agile » est un terme général utilisé pour désigner les concepts, les pratiques et parfois les outils qui reflètent tous la philosophie de développement de produits connue sous le nom d'"Agile".
Le mouvement Agile est né en 2001 lors d'une réunion de 17 développeurs avant-gardistes lors d'une retraite dans l'Utah. La philosophie et les principes établis lors de la retraite ont constitué la base des méthodologies Agile et Agile ultérieures qui ont été développées à partir de leur travail initial.
Depuis la publication du document original, « Le Manifeste pour le développement agile de logiciels », la méthodologie Agile a eu un profond effet transformateur non seulement sur le développement logiciel, mais aussi sur les organisations dans presque tous les domaines. Les valeurs de création de produits Lean, de découverte itérative, de développement axé sur le changement et de travail collaboratif réalisé au sein de tous les groupes d'entreprise et sociaux ont constitué la base de nouveaux modèles commerciaux et de produits avancés dans le monde entier.
Ce guide de la méthodologie Agile servira de vue d'ensemble pour introduire les principes fondamentaux d'Agile. Nous commencerons par une définition de la méthodologie oofagile telle que proposée dans le Manifeste de 2001, et poursuivrons en décrivant certaines des ramifications les plus connues issues de l'agile. Enfin, nous discuterons de certaines des méthodes et outils Agiles les plus populaires.
Qu'est-ce que Agile?
Agile est une approche du travail (initialement du développement de logiciels) qui peut être considérée comme un engagement envers le changement et les améliorations continus.
Valeurs agiles
Agile est décrit succinctement dans les valeurs suivantes, qui ont été écrites en 2001 par l'équipe originale du Manifeste Agile :
- Individus et interactions sur les processus et les outils
- Logiciel de travail sur une documentation complète
- Collaboration client sur la négociation de contrat
- Répondre au changement plus de suivre un plan
En regardant ces principes, il est facile de voir qu'Agile se définit aussi bien par ce qu'il n'est pas que par ce qu'il est. Les quatre valeurs décrites ci-dessus ont toutes pour fil conducteur de privilégier la découverte itérative et la collaboration par rapport aux livrables rigides. En se concentrant sur ces éléments, les équipes Agiles peuvent non seulement créer de meilleurs produits avec moins de déchets, mais elles peuvent également laisser place à la découverte, tout en restant fonctionnels. releases flowing to le client final.
Développement Agile vs Waterfall
Les fondateurs d'Agile ont proposé une rupture majeure avec les méthodes de travail traditionnelles de l'industrie du logiciel. À l’époque (vers 2001), les logiciels étaient en grande partie créés dans le cadre d’un projet unique visant à produire un produit numérique basé sur des spécifications spécifiques définies des mois à l’avance. La vision du produit a été déterminée par un groupe de consultants, de cadres et d'administrateurs qui formeraient ensuite une liste d'exigences à transmettre aux équipes de direction. Les équipes de gestion délégueraient ensuite le travail de codage, de compilation, de test et de développement du logiciel demandé, à effectuer sur une période définie dans le cadre d'un budget défini.
Les développeurs ont qualifié ce système de méthodologie « en cascade », car les exigences logicielles et les livrables étaient tous dictés depuis le sommet de l'entreprise jusqu'aux principaux développeurs.
Les premiers collaborateurs Agile ont rejeté cette forme de développement logiciel pour plusieurs raisons. Avant tout, Waterfall était trop rigide pour répondre aux demandes des clients qui pouvaient changer au cours du développement. Deuxièmement, la conception de produits en cascade signifiait que toutes les innovations devaient être conçues avant que le projet ne soit lancé. Ce cadre rigide laisse peu de place à la découverte de nouvelles possibilités de fonctionnalités jusqu'après la release est fini. De plus, le logiciel peut ne pas fonctionner comme prévu, donc la découverte de ce développement intermédiaire dans un projet en cascade a entraîné des retards coûteux.
Les fondateurs d'Agile ont plutôt proposé une méthode de création de logiciels ouverte à la découverte, à l'innovation et à l'itération. Plutôt que de s'attendre à ce qu'un logiciel complet, doté de fonctionnalités complètes, soit livré à une certaine date, les versions fonctionnelles pourraient être released progressivement. Cela réduit le temps de mise sur le marché et permet de budgétiser le développement par phases, et non en une seule fois.
Et surtout, Développement agile reconnaît que le produit tel qu'il a été initialement imaginé n'est peut-être pas en mesure de fournir le niveau de valeur attendu aux clients et à l'entreprise elle-même. Travailler dans les phases de construction permet d'ajouter de nouvelles idées ou de modifier les stratégies de produits, permettant au développement de réagir d'une manière que Waterfall ne peut pas.
Principes agiles
Pour pallier les défauts de la cascade, la philosophie Agile encourage les idées à venir de partout dans l'entreprise. Il est également important que les cycles de développement de produits soient axés sur des changements itératifs, livrés fréquemment, par opposition aux principaux produits releases qui ont pris des mois ou des années pour créer une version fonctionnelle.
À la place des cycles de développement traditionnels axés sur la gestion en cascade, le groupe a proposé les méthodes de travail suivantes, radicales à l’époque :
- Lors de la création d'un nouveau logiciel, commencez par des concepts et des idées simples plutôt que par des livrables exhaustifsDéveloppez un prototype fonctionnel de preuve de concept qui illustre le potentiel du concept à apporter de la valeur aux clients et aux parties prenantes internes.
- Faites collaborer les gens d'affaires et les équipes de développeurs pour déterminer les moyens de faire progresser, d'améliorer et de faire évoluer le prototype fonctionnel vers des versions plus robustes.
- Réservez quotidiennement du temps et de l'espace pour des conversations directes entre les individus et les membres de l'équipe afin que les progrès soient suivis et que de nouvelles opportunités d'amélioration du produit soient découvertes. Cela peut prendre la forme de réunions debout rapides ou de réunions scrum plus longues.
- Fournir fréquemment de nouvelles versions de travail de logiciels, en intégrant et en continu deployles nouveaux changements dans l'environnement de production en direct. Chaque version modifiée représente une version améliorée de la précédente.
- Réfléchissez au résultat de chaque période de travail (un « sprint ») et utilisez les leçons apprises pour améliorer le développement ultérieur.
- Donnez au client une voix dans le processus, soit par le biais d'enquêtes directes, soit par le biais de signaux de données indirects, afin de continuer à améliorer le produit
Fabrication agile et Lean
Agile absorbe de nombreuses leçons de la fabrication au plus juste, une philosophie lancée lors de la croissance de la fabrication industrialisée de pointe dans la seconde moitié du 20e siècle. La fabrication au plus juste élimine les étapes inutiles de la création de produits tout en améliorant le rythme de production. Ces méthodes ont été mises à profit par la société automobile japonaise Toyota, formant le Toyota Production System (TPS).
Les principales leçons pour Agile tirées du lean incluent :
- Créez le processus le plus efficace possible.
- Éliminer les déchets (Muda) en combinant les processus et en supprimant ceux qui n'aboutissent pas à un meilleur produit.
- Mesurez rigoureusement les résultats afin que les produits aient une qualité constante et des cycles de fabrication cohérents.
- Laissez les travailleurs contribuer à l'amélioration des processus et comptez sur le personnel clé pour atteindre les objectifs de qualité, de rapidité et d'efficacité.
- Identifiez les étapes du processus qui contribuent aux retards ou à la mauvaise qualité, et résolvez ces problèmes de « flux » afin qu'un processus fluide et efficace crée des produits cohérents sur une base fiable.
Qu'est-ce que la méthodologie Agile ?
La méthodologie Agile est un ensemble de méthodes de travail qui reflètent toutes les idéaux Agile codifiés pour la première fois en 2001. En tant que telle, il existe en fait plusieurs méthodologies qui peuvent être incluses sous l'égide de la « Méthodologie Agile ». Celles-ci constituent les méthodes Agile les plus populaires, chacune étant décrite plus en détail ci-dessous.
La méthodologie Agile se définit par les traits suivants :
- Les équipes sont constituées d'experts en la matière provenant de différents secteurs de l'organisation (équipes interfonctionnelles).
- Des équipes interfonctionnelles sont responsables de la création de versions prototypes de concepts de logiciels/produits basés sur des idées innovantes provenant de l'équipe elle-même ainsi que des équipes de rétroaction des clients et de stratégie produit.
- Le produit logiciel est ensuite révisé au cours d'un court « sprint » pour ajouter plus de fonctionnalités, de caractéristiques, d'améliorations et de correctifs.
- Les idées de modification et d'amélioration du produit proviennent de l'ensemble de l'entreprise. Des discussions sur ces questions ont lieu fréquemment.
- Les équipes interfonctionnelles discutent de l'avancement des travaux, des défis, des priorités et des nouvelles opportunités émergentes au cours de courtes réunions quotidiennes « debout ».
- Une fois qu'un sprint est terminé, les modifications créées pendant le sprint sont incorporées dans la version actuelle du produit.
- Des contrôles de qualité sont introduits tout au long du processus, y compris des tests réguliers et l'intégration des commentaires des clients. Problèmes avec un release sont découverts et (idéalement) traités avant l'intégration et la livraison du nouveau release.
- À la fin de chaque sprint, l'équipe interfonctionnelle prend le temps de réfléchir aux résultats ainsi qu'au déroulement du processus. De nouveaux objectifs et jalons seront probablement fixés en fonction de ce qui a été appris.
- De nouveaux sprints sont organisés pour les équipes interfonctionnelles, qui ajouteront de nouvelles fonctionnalités, améliorations et correctifs.
Quels sont les types de méthodes agiles ?
Il existe de nombreuses versions et ramifications populaires d'Agile ainsi que des méthodes antérieures au Manifeste Agile mais partageant ses valeurs. Ils incluent Scrum, Lean, Kanban, Extreme Programming (XP), Feature Driven Development (FDD), Dynamic Systems Development Method (DSDM) et Crystal.
Scrum
Scrum se concentre sur l'utilisation de sprints agressifs pour compléter les améliorations Agiles itératives. Les équipes Scrum se coordonnent pour accomplir le travail majeur au cours des sprints, et chaque sprint est planifié de manière à ce qu'un travail important puisse être accompli sans compromettre la qualité et l'intégrité du release.
Scrum se distingue par l'introduction des rôles de « Scrum Master » et de « Product Owner », qui ont tous deux la responsabilité de veiller à ce que tous les petits processus s'additionnent pour produire les résultats souhaités. Le concept de « Product Backlog » est également important, qui représente les fonctionnalités, améliorations et correctifs opportuns à introduire dans le prochain sprint.
Il a été prouvé que la méthodologie Scrum s'adapte à plusieurs équipes dans de très grandes organisations de plus de 800 personnes. Regarde comment Digital.ai Agility, anciennement VersionOne, prend en charge planification de sprint scrum en facilitant la gestion de votre backlog produit.
"Lean"
Le Lean Manufacturing, décrit en partie ci-dessus, donne la priorité à la création d’une valeur continue et cohérente grâce à un « flux » de travail prévisible. Il met l'accent sur la rapidité et l'efficacité du flux de développement et s'appuie sur un retour d'information rapide et fiable entre les programmeurs et les clients. Lean utilise l’idée d’un produit du travail « extrait » via la demande du client. Il concentre l’autorité et la capacité de décision sur les individus et les petites équipes, car la recherche montre que cela est plus rapide et plus efficace que le flux de contrôle hiérarchique.
Le Lean se concentre également sur l'efficacité de l'utilisation des ressources de l'équipe, en essayant de s'assurer que tout le monde est productif la plupart du temps possible. Il se concentre sur le travail simultané et le moins possible de dépendances de flux de travail intra-équipe. Lean recommande également fortement que les tests unitaires automatisés soient écrits en même temps que le code est écrit.
Kanban
Kanban est une méthode de gestion de la production étroitement liée à l’histoire du Lean. La méthode Kanban utilise principalement un « tableau Kanban » qui suit le volume actuel des éléments de travail et les étapes de travail par lesquelles ils ont progressé. Un tableau Kanban utilise des notes autocollantes (ou un équivalent virtuel) pour suivre le nombre d'éléments de travail en cours à chaque étape du processus. Une fois qu’un élément de travail est terminé, le pense-bête est déplacé vers l’étape suivante du processus.
Kanban met l'accent sur le flux en visualisant le volume actuel des éléments de travail et leur progression dans le cycle de développement. Lorsque de nombreux éléments de travail sont regroupés en une seule étape, c'est un signe qu'il faut immédiatement s'attaquer à la quantité de travail en cours (WIP) afin que le sprint ou le groupe de tâches puisse être mené à son terme. L'élimination des travaux en cours peut également servir de signal pour « retirer » de nouveaux éléments de travail du retard puisqu'il existe désormais une nouvelle capacité.
Programmation extrême (XP)
Extreme Programming, ou « XP » a été créé à la fin des années 90 par Kent Beck, collaborateur d'Agile Manifesto. Comme Agile, il favorise une forte implication des clients, des boucles de rétroaction rapides, continuous testing, une planification continue et un travail d'équipe rapproché pour fournir des logiciels fonctionnels à des intervalles très fréquents, généralement toutes les 1 à 3 semaines.
La recette XP originale est basée sur quatre valeurs simples : simplicité, communication, feedback et courage. Il fonctionne également à travers douze pratiques de soutien critiques :
- Jeu de planification
- Petite releases
- Tests d'acceptation client
- Design simple
- Programmation en binôme
- Développement piloté par les tests
- Refactoring
- Intégration continue
- Propriété collective du code
- Normes de codage
- Métaphore
- Rythme durable
Développement basé sur les fonctionnalités (FDD)
Développement basé sur les fonctionnalités (FDD) est une variante de la méthodologie Agile qui décrit des phases de travail spécifiques et très courtes, qui doivent être accomplies séparément par fonctionnalité. Il s'agit notamment de la visite guidée du domaine, de la conception, de l'inspection de la conception, du code, de l'inspection du code et de la promotion à la construction.
Le concept principal de FDD est que l'état futur prévu du produit peut être représenté à l'aide de modèles et que travailler sur les fonctionnalités permet de construire un modèle de produit holistique représenté par des éléments « utiles aux yeux du client ».
FDD recommande des pratiques de programmation spécifiques telles que les « builds réguliers » et la « propriété de composants/classes ». Les partisans de FDD affirment qu'il évolue plus facilement que les autres approches et qu'il est mieux adapté aux équipes plus grandes.
Méthode de développement de systèmes dynamiques (DSDM)
DSDM est un autre ancêtre d'Agile, décrit pour la première fois en 1994. Les germes de la création de DSDM sont venus du développement rapide d'applications (RAD), qui visait à standardiser livraison de logiciel cadres. Après l'avènement d'Agile, DSDM a encore évolué et mûri pour fournir une base complète pour la planification, la gestion, l'exécution et la mise à l'échelle des processus agiles et des projets de développement logiciel itératifs.
DSDM repose sur neuf principes clés qui tournent principalement autour des besoins/valeur de l'entreprise, de l'implication active des utilisateurs, des équipes responsabilisées, des livraisons fréquentes, des tests intégrés et de la collaboration des parties prenantes. DSDM appelle spécifiquement « l'aptitude à l'emploi » comme principal critère de livraison et d'acceptation d'un système, en se concentrant sur les 80 % utiles du système qui peuvent être utilisés. deployed dans 20% du temps.
DSDM hiérarchise certains livrables à l'aide d'un modèle de boîte de temps, et les éléments dont la priorité est inférieure sont présélectionnés pour être écartés afin de respecter les délais de la boîte de temps.
Cristal
La méthodologie Crystal est l'une des approches les plus légères et les plus adaptables du développement logiciel. Plusieurs des principes clés du cristal incluent le travail d'équipe, la communication et la simplicité, ainsi que la réflexion pour ajuster et améliorer fréquemment le processus. Comme d'autres méthodologies de processus agiles, Crystal favorise la livraison précoce et fréquente de logiciels fonctionnels, une forte implication des utilisateurs, l'adaptabilité et la suppression de la bureaucratie ou des distractions.
Crystal est en fait composé d'une famille de méthodologies agiles telles que Crystal Clear, Crystal Yellow, Crystal Orange et autres, dont les caractéristiques uniques dépendent de plusieurs facteurs tels que la taille de l'équipe, la criticité du système et les priorités du projet. Cette famille de cristaux répond à la prise de conscience que chaque projet peut nécessiter un ensemble de politiques, de pratiques et de processus légèrement adaptés afin de répondre aux caractéristiques uniques du projet.
Les avantages de la méthodologie Agile
Les méthodes agiles peuvent toutes avoir leurs propres forces et objectifs, mais les avantages suivants ont tendance à être réciproques :
- Les versions de travail des logiciels sont livrées assez rapidement et fréquemment
- La qualité et l'intégrité d'une construction sont comprises tôt dans le processus
- Les dépendances et les goulots d'étranglement du processus de livraison sont minimisés
- Les produits reflètent l'état actuel des demandes tel qu'il est compris à partir des signaux indiqués par les clients, les concurrents et le marché dans son ensemble
- Les innovations peuvent être introduites à n'importe quelle étape du cycle de vie du produit
- Les contributions collaboratives proviennent de toutes les équipes, plutôt que des meilleurs conseillers/administrateurs/consultants qui émettent ensuite des ordres vers le bas
- Les risques sont réduits par rapport aux cycles de développement qui ne mettent pas l'accent sur les versions fonctionnelles
- L'accent est mis sur la satisfaction du client et le moral des équipes ; si ni l’un ni l’autre n’est satisfait, alors il est entendu que les produits et les processus ne répondent pas aux besoins
- Le travail est rendu plus gérable et prévisible tout en introduisant des flexibilités qui peuvent s'adapter aux perturbations ou aux changements soudains de stratégie
Principaux outils à utiliser avec les méthodes Agiles
Certains des outils les plus recommandés pour les méthodes Agiles incluent :
- Logiciel de planification agile: Fournit des outils kanban et autres pour la gestion des portefeuilles de backlogs de produits et la planification des sprints.
- Release Logiciel d'orchestration: Permet l'affectation d'éléments de travail tout en fournissant release capacités d'orchestration et d'automatisation.
- Release DeployLogiciel de gestion: Simplifie et automatise le processus de deploynouveau releases à l'environnement d'exploitation, y compris ceux basés sur le cloud et les conteneurs.
- Continuous Testing Logiciels: Permet une gestion efficace et tests automatisés tout au long du processus de développement, réduisant ainsi les risques et les coûts tout en accélérant la livraison.
- Solutions d'intelligence d'affaires et d'analyse: Créez une source unique de vérité qui ajoute de la transparence à release les échéanciers, les risques liés au changement et les possibilités d'améliorer la qualité et la valeur ajoutée des releases.