Agile est une méthodologie de développement de logiciels qui privilégie la rapidité de livraison, la collaboration entre les entreprises et les technologies de l’information et l’adaptabilité par rapport aux approches plus traditionnelles.
D’abord décrite en 2001 (bien que le concept date depuis longtemps), le terme « agile » est une réponse à un style séquentiel de développement logiciel, où l’entreprise indique ses exigences et les développeurs fournissent un logiciel pour y répondre. En raison de la nature descendante de cette méthode, le logiciel résultant peut ne pas répondre aux besoins des utilisateurs, qui peuvent avoir évolué depuis le début du projet.
Au lieu de cela, la méthode agile se concentre sur le développement progressif, en priorisant les tests et la rétroaction des utilisateurs afin d’ajuster le logiciel en fonction de nouveaux besoins, ou de la volonté des utilisateurs de changer certaines choses, tout en veillant à ce que le produit reste pertinent et utile. En général, les adeptes estiment que l’agilité permet de finaliser des projets plus rapidement, tout en réduisant les coûts, et surtout, finit par être un logiciel répondant aux besoins des utilisateurs.
Jonathan Rasmusson auto-décrit comme le « Agile Warrior » qualifie la méthodologie comme étant « une approche itérative et temporelle pour la livraison de logiciels qui génère progressivement des logiciels dès le début du projet, au lieu d’essayer de tout mettre à la fois près de la fin ».
Les principes agiles
Le Manifeste Agile, présenté en 2001, décrit les principes clés du concept :
- 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
Autrement dit, bien qu’il y ait de la valeur dans les éléments de droite, nous apprécions davantage les éléments de gauche.
En bref, l’agile favorise la rapidité de livraison, le test et la rétroaction continue. Ses principes fondamentaux vont de pair. Elles sont :
- Livraison anticipée, création de logiciels livrables dans des « sprints » de deux semaines
- Répondre aux exigences changeantes
- Mesurer la progression de travail du logiciel en tant que métrique
- Collaboration entre les entreprises et les développeurs par des conversations en face-à-face
- Simplification – ne pas rendre le logiciel trop complexe
- De petites équipes auto-organisées qui réfléchissent régulièrement sur les meilleures pratiques
Comment fonctionne un processus agile ?
La méthode agile divise un projet en plus petites parties, nommées « user stories« . Chacune d’entre elles est une fonctionnalité souhaitée que l’utilisateur souhaite dans le logiciel. Les développeurs travaillent à travers ces « histoires d’utilisateurs » comme vous pourriez le faire avec une liste de choses à faire, en établissant les priorités et les regroupant en itérations, avec des délais estimés pour chaque itération (habituellement de deux semaines).
Une fois l’itération terminée, les développeurs doivent avoir un produit potentiellement livrable, que les utilisateurs peuvent tester. Cela signifie que les projets agiles créent quelque chose de simple qu’ils peuvent ensuite itérer en fonction de la rétroaction des utilisateurs, ce qui rend le logiciel mieux adapté aux besoins des utilisateurs tout en minimisant la complexité.
En outre, cela signifie que les développeurs ne commencent pas souvent à travailler avec un ensemble complet d’exigences, mais à la place, découvrent de nouvelles exigences grâce aux commentaires des utilisateurs qu’ils peuvent alors adapter à leurs logiciels.
La durée du sprint est toujours correcte. Cela garantit que les développeurs et les utilisateurs puissent régulièrement examiner la direction du projet et le garder sur la bonne voie. Cependant, cela signifie également qu’un projet peut être exécuté au fur et à mesure que les développeurs décident de réduire leur portée et leur ambition.
Quels types de méthodologies agiles existent ?
Bien qu’agile décrit une mentalité et une philosophie claire pour la création d’applications, elle se matérialise sous de nombreuses formes qui adoptent des approches légèrement différentes pour les projets agiles.
Probablement le plus populaire est le « Scrum« , une approche que la Scrum Alliance décrit comme apportant les concepts de développement agile au-delà de l’équipe informatique et dans la gestion. Dans ce modèle, un « ScrumMaster » mène le travail, mais la réalisation de l’objectif final est une responsabilité d’équipe.
Une autre méthodologie agile populaire est XP, qui signifie Extreme Programming. Ce modèle se concentre sur le côté technique des choses, plutôt que sur le côté commercial. Les sprints XP sont à peu près égaux à la moitié des sprints Scrum, mais la méthodologie XP est également plus flexible sur le changement ou l’ajustement des objectifs à mi-course.
Les adeptes de la méthodologie agile qui ne s’y retrouvent pas dans le Scrum ou l’Extreme Programming auront tendance à favoriser le Lean Software Development, une méthodologie inventée en 2003 et basée sur sept principes, qui favorisent généralement une approche de retour à la base, qui abandonne tout sauf les fonctionnalités nécessaires pour livrer un produit le plus rapidement possible tout en répondant aux besoins des clients.