Définition de l’agilité
« Une méthode agile est une approche itérative et incrémentale, qui est menée dans un esprit collaboratif avec juste ce qu’il faut de formalisme.
Elle génère un produit de haute qualité tout en prenant en compte l’évolution des besoins des clients »
« Gestion de projet : Vers les méthodes agiles », V. Rota, 2007
Histoire de l’agilité
Origines :
Dans les années 1950, Toyota a révolutionné la production automobile en introduisant le système de production Toyota (TPS). Les idées fondamentales du TPS comprenaient l’élimination des gaspillages, la qualité totale, et la flexibilité pour répondre rapidement aux changements.
Années 1990 : Manifeste Agile :
Dans les années 1990, des professionnels du développement logiciel ont tiré des leçons du TPS et des méthodes de qualité pour les appliquer dans le domaine du logiciel. Cela a conduit à la rédaction du Manifeste Agile en 2001 par un groupe de développeurs de logiciels visionnaires, dont Kent Beck et Martin Fowler.
Principes Agiles :
Le Manifeste Agile définit quatre valeurs fondamentales et 12 principes qui mettent l’accent sur la flexibilité, la collaboration, la livraison continue de produits fonctionnels, et la réactivité aux changements.
Diffusion Mondiale :
Depuis la publication du Manifeste Agile, les principes agiles ont gagné une reconnaissance mondiale et ont été appliqués au-delà du développement logiciel, touchant divers domaines tels que la gestion de projet, le marketing, et même l’organisation d’entreprises.
Aujourd’hui :
Aujourd’hui, l’Agilité est devenue une philosophie adoptée par de nombreuses organisations cherchant à être plus réactives, flexibles, et orientées vers la satisfaction du client. Les méthodes agiles comme Scrum, Kanban, et Extreme Programming (XP) continuent d’évoluer pour répondre aux besoins changeants des entreprises modernes. L’Agilité n’est plus simplement une approche de développement, mais une culture organisationnelle favorisant l’adaptabilité et l’innovation continue.
Les 4 valeurs de l’agilité
Les méthodes agiles sont guidées par quatre valeurs fondamentales, telles que définies dans le Manifeste Agile. Comparées aux méthodes classiques, ces valeurs mettent l’accent sur certains principes clés :
- Individus et Interactions plutôt que Processus et Outils :
- Agile : Les méthodes agiles accordent une importance primordiale à la collaboration entre les membres de l’équipe et à la communication ouverte. Elles reconnaissent que le succès du projet repose sur les individus impliqués.
- Classique : Les méthodes classiques peuvent parfois mettre davantage l’accent sur les processus et les outils formels, risquant de négliger l’interaction humaine.
- Logiciel opérationnel plutôt que Documentation exhaustive :
- Agile : L’agilité favorise la création continue de logiciels opérationnels fonctionnels, considérant que la documentation doit être concise et centrée sur l’essentiel.
- Classique : Les méthodes classiques peuvent accorder plus d’importance à la documentation exhaustive, parfois au détriment du développement opérationnel.
- Collaboration avec le client plutôt que Négociation de contrats :
- Agile : Les méthodes agiles encouragent une collaboration continue avec le client tout au long du projet, privilégiant les ajustements en cours de route plutôt que la stricte conformité à des contrats initiaux.
- Classique : Les méthodes classiques peuvent être plus enclines à établir des contrats rigides dès le départ, limitant la flexibilité face aux changements.
- Réponse au changement plutôt que Suivi d’un plan :
- Agile : L’agilité reconnaît l’importance de s’adapter rapidement aux changements de besoins, privilégiant la flexibilité plutôt que la stricte conformité à des plans établis initialement.
- Classique : Les méthodes classiques peuvent parfois se concentrer davantage sur le suivi strict d’un plan préétabli, ce qui peut rendre difficile l’adaptation aux changements.
Ces quatre valeurs forment le cœur de la philosophie agile et guident la prise de décision dans le développement de logiciels et de projets.
Les 12 principes de l’agilité
Les principes détaillent davantage chaque valeur. Ils fournissent des directives spécifiques sur la manière de mettre en œuvre les valeurs.
Les principes sont plus détaillés et aident à comprendre comment appliquer les valeurs dans des contextes concrets.
Par exemple, le principe “Livrer fréquemment un logiciel opérationnel avec une préférence pour les plus courts délais” soutient la valeur “Logiciel opérationnel plutôt que Documentation exhaustive”.
La représentation graphique ci-dessus présente une pyramide où les 12 principes agiles sont regroupés, s’étendant de la base avec le support managérial jusqu’au sommet, symbolisant ainsi l’objectif ultime de tout projet : la satisfaction du client.
Support Managérial
- 5-Construction de projets autour de personnes motivées : Reconnaître et promouvoir la motivation des individus en tant que moteur essentiel du succès d’un projet agile.
- 8-Maintien d’un rythme de développement soutenable : Éviter la surcharge de travail en maintenant un rythme de développement qui peut être maintenu à long terme.
- 11-Auto-organisation des équipes : Encourager les équipes à s’auto-organiser, à prendre des décisions et à résoudre des problèmes de manière autonome.
- 12-Réflexion continue et ajustements à intervalles réguliers : Faire preuve de flexibilité et d’amélioration continue en réfléchissant régulièrement aux performances de l’équipe et en apportant des ajustements nécessaires.
Approche Technique
- 4-Collaboration étroite entre les utilisateurs et les développeurs tout au long du projet : Encourager une communication continue et une collaboration active entre les personnes qui utilisent le produit et celles qui le développent. Parfois les équipes sont distantes et il faudra mettre en place les moynes nécessaire pour arriver à assurer cette proximité.
- 6-Communication efficace par le dialogue en face-à-face : Favoriser les échanges directs pour une communication plus claire et éviter les malentendus.
- 9-Promotion de l’agilité par l’excellence technique et une bonne conception : Mettre l’accent sur des pratiques techniques solides pour assurer une base stable et évolutive pour le logiciel.
Produit
- 3-Livraison fréquente d’un logiciel opérationnel avec des cycles courts : Privilégier des périodes de développement courtes pour fournir régulièrement des versions fonctionnelles du logiciel.
- 7-Mesure de l’avancement principalement par un logiciel opérationnel : L’état d’avancement d’un projet doit être évalué en fonction de la fonctionnalité opérationnelle du logiciel plutôt que de la documentation ou des plans
- 10-Simplicité comme élément essentiel : Favoriser la simplicité dans la conception et l’exécution, éliminant tout élément non essentiel.
Finalité
- 1-Satisfaction du client par la livraison continue de logiciels utiles : Priorité à la satisfaction client en livrant régulièrement des fonctionnalités opérationnelles, mettant ainsi en avant la création de valeur continue
- 2-Accueil positif des changements de besoins, même tard dans le projet : La flexibilité face aux changements est essentielle. Les équipes doivent être capables de s’adapter rapidement aux évolutions des exigences du client.
Les méthodes agiles les plus populaires
Il existe plusieurs méthodes agiles populaires utilisées dans le développement logiciel et au-delà. Voici quelques-unes des méthodes agiles les plus répandues :
- Scrum :
- Scrum est l’une des méthodes agiles les plus populaires. Il se base sur des itérations de travail appelées “sprints” et comprend des rôles clés tels que le Scrum Master, le Product Owner, et l’équipe de développement.
- Kanban :
- Kanban se concentre sur la gestion visuelle du flux de travail. Il utilise des tableaux pour représenter les tâches à faire, en cours, et terminées. Kanban met l’accent sur la flexibilité et la gestion continue du flux de travail.
- Extreme Programming (XP) :
- XP est axé sur l’amélioration continue de la qualité et de la productivité. Il comprend des pratiques telles que la programmation en binôme, les tests automatisés, et des cycles de développement courts.
- Lean Software Development :
- Inspiré du système de production Toyota, le Lean Software Development met l’accent sur l’élimination des gaspillages, la livraison continue de valeur, et l’amélioration continue.
- Crystal :
- Crystal est une famille de méthodes agiles, chacune adaptée à des tailles d’équipes et à des types de projets spécifiques. Chaque variante de Crystal met l’accent sur des aspects particuliers de la flexibilité et de l’adaptabilité.
- Feature-Driven Development (FDD) :
- FDD se concentre sur la conception par fonctionnalité et la construction itérative de fonctionnalités. Il est particulièrement adapté aux projets de grande envergure.
- Dynamic Systems Development Method (DSDM) :
- DSDM est axé sur la livraison rapide de fonctionnalités tout en maintenant la qualité. Il met l’accent sur la collaboration entre les membres de l’équipe et les parties prenantes.
- Adaptive Software Development (ASD) :
- ASD vise à être flexible et à s’adapter rapidement aux changements. Il met en avant la communication continue, la collaboration et l’expérimentation.
Ces méthodes agiles peuvent être adaptées en fonction des besoins spécifiques d’une équipe ou d’un projet. Il est également courant de voir des organisations combiner différentes pratiques pour créer leur propre approche agile, souvent appelée “méthode hybride”
Les fondamentaux de Scrum
Le Cycle de vie Scrum
Scrum est la méthode agile la plus populaire.
il s’agit d’un cadre de gestion de projet agile qui met l’accent sur la flexibilité, la collaboration et la livraison continue de produits fonctionnels. Il est largement utilisé dans le développement logiciel, mais peut également être appliqué à d’autres domaines. Voici une explication plus détaillée :
- Itératif et Incrémental
- Scrum organise le travail en cycles itératifs appelés “sprints”, généralement de deux à quatre semaines. À la fin de chaque sprint, une version du produit, potentiellement livrable, est présentée.
- Rôles Principaux :
- Scrum Master:
- Responsable de s’assurer que Scrum est compris et mis en oeuvre.
- S’assure que l’Équipe Scrum adhère à la théorie, aux pratiques et aux règles de Scrum.
- Servant Leader au service de l’équipe Scrum.
- Product Owner :
- Responsable de maximiser la valeur du produit et du travail de l’Équipe de Développement.
- Gère le Product Backlog et s’assure de sa compréhension.
- Ses décisions sont visibles dans le contenu et
l’ordonnancement du Product Backlog et doivent être
respectées par toutes les parties prenantes.
- Équipe de Développement:
- Constituée de 3 à 9 professionnels qui livrent à chaque Sprint
un incrément « terminé » et potentiellement livrable du produit - Auto-organisée
- Nul (même pas le Scrum Master) n’indique à l’Équipe de Développement comment transformer les items du Product Backlog en incréments de fonctionnalités potentiellement livrables.
- Pluridisciplinaire
- avec toutes les compétences nécessaires pour créer un incrément du produit
- Composée de Développeurs qui contribuent à produire le produit
- Scrum ne reconnaît pas d’équipes à l’intérieur de l’Équipe de Développement indépendamment des domaines spécifiques qui doivent être couverts tels que l’exécution de tests ou l’analyse fonctionnelle
- Responsable dans son ensemble
- Même si les membres de l’Équipe de Développement peuvent détenir individuellement des compétences et des centres d’intérêt spécifiques
- Constituée de 3 à 9 professionnels qui livrent à chaque Sprint
- Scrum Master:
- Artéfacts Scrum :
- Backlog Produit : Liste hiérarchisée des fonctionnalités, tâches et améliorations à apporter au produit.
- Backlog de Sprint : Éléments du backlog produit sélectionnés pour être traités lors du sprint en cours.
- Incrément : Version du produit résultant du travail accompli pendant un sprint.
- Cérémonies Scrum :
- Réunion de Planification de Sprint (Sprint Planning) : L’équipe de développement planifie le travail à accomplir pendant le sprint.
- Daily Scrum : Réunion quotidienne courte pour synchroniser les membres de l’équipe sur le travail en cours.
- Revues de Sprint : Présentation de ce qui a été accompli pendant le sprint.
- Réunions de Rétrospective : Évaluation de ce qui a bien fonctionné et des opportunités d’amélioration.
- Adaptabilité :
- Scrum intègre des principes favorisant l’adaptabilité aux changements. Les ajustements peuvent être apportés à la fin de chaque sprint en fonction des retours d’utilisateur et des évolutions du projet.
En résumé, Scrum est un cadre agile qui offre une approche structurée et itérative pour la gestion de projet, mettant l’accent sur la collaboration, la transparence et l’adaptabilité.
L’équipe Scrum
Le contrat agile: entre le forfait et la régie
Engagement de moyens ou de résultats ?
- La contractualisation constitue l’un des freins au déploiement des méthodes Agile. En particulier en France dont la culture du forfait classique et du clivage MOA/MOE est lourdement ancrée.
- Lorsque le client souhaite un engagement de résultat, nous proposons un mécanisme de troc :
- La somme des Story Points du Product Backlog initial permet d’estimer le budget initial du projet.
- Les User Story les plus prioritaires seront développées dans la limite du budget restant en Story Points.
- On propose une étape de cadrage agile pour définir et s’engager sur un MVP (Minimum Viable Product).
- Autre type de contractualisation possible entre l’engagement de moyens et l’engagement de résultats.
Indicateurs de performances des méthodes agiles
Les KPI agile constituent un élément crucial dans le suivi du projet. Parmis les plus importants on cite :
Prédictibilité :
- Nombre de fonctionnalités démontrées en fin d’itération par rapport aux fonctionnalités prévues.
Productivité :
- Nombre de “story point” qui ont été implémentés dans un sprint rapporté à la taille de l’équipe.
Qualité fonctionnelle :
- Nombres d’anomalies découvertes après la livraison de l’incrément produit.
Qualité technique :
- Couverture de code par les tests unitaires et complexité cyclomatique.
Implication de l’équipe :
- Lors de chaque rétrospective, chaque membre de l’équipe du prestataire se prononce sur sa proposition (sur une échelle de 1 à 5) à recommander cette équipe et ce projet à un de ses collègues.
Satisfaction du client :
- A chaque démonstration de sprint, chaque membre de l’équipe client se prononce sur sa proposition (sur une échelle de 1 à 5) à recommander cette équipe et ce projet à un de ses collègues.
Exemple concret d’application de l’approche agile à un projet web
Réussir un projet quelque soit la méthodologie
On réussit un projet lorsqu’on a fait le bon produit, celui que les utilisateurs attendent vraiment, au bon moment et au meilleur coût.
Un projet réussi est un projet qui donne le sourire à tout le monde.
Aux utilisateurs, aux commanditaires, sponsors voire actionnaires.
Ainsi qu’à l’équipe du projet qui a le sourire parce qu’elle est épanouie et fière de son travail
0 commentaires