Méthodes Agiles et gestion de projets Eric LELEU Consultant Solutions Collaboratives Contact ericleleu@nordnet.fr Site Personnel http://home.nordnet.fr/~ericleleu Blog http://ericleleu.spaces.live.fr La réussite d'un projet informatique ne passe pas uniquement par la qualité des ingénieurs qui le réalise! Il est indéniable que l'efficience de la méthode utilisée est tout aussi essentielle. Si on considère la gestion de projet, les équipes utilisent depuis de nombreuses années la méthode en "cascade" ou cycle en "V". Les risques de ces méthodes sont connus : retard de livraison, budget dépassé, fonctionnalités développées mais non utilisées,... Pour autant, depuis quelques années, un nouveau concept fait ses preuves : l'agilité. Site SharePoint http://home.nordnet.fr/~ericleleu/sharepoint Plus collaboratives et permettant une plus forte implication des acteurs, les méthodes agiles font leurs preuves en favorisant des relations de confiance et une transparence propices à une meilleure efficacité. Dans un contexte de concurrence où les risques doivent être maîtrisés, tous les axes d'amélioration sont à étudier : la méthodologie de gestion d'un projet en fait donc partie. Personnellement, je propose à mes clients dans le cadre de la gestion de leur projet, un mix entre le cycle en "V" et les méthodes agiles : J'utilise les principes de base des méthodes agiles (Scrum essentiellement) et je les applique en majorité au cycle de développement. Et je dois avouer que cela fonctionne plutôt bien...
Définition : 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. Les méthodes Agiles sont des procédures de conception de logiciel qui se veulent plus pragmatiques que les méthodes traditionnelles : En impliquant au maximum le demandeur (client), ces méthodes permettent une grande réactivité à ses demandes, visent la satisfaction réelle du besoin du client et non les termes du contrat de développement. Cette méthode est donc une réponse au malaise et aux difficultés liées aux méthodes de développement traditionnelles : Les individus et les interactions plutôt que les processus et les outils Des fonctionnalités opérationnelles plutôt qu une documentation exhaustive Collaboration avec le client plutôt que la contractualisation des relations Acceptation du changement plutôt que la conformité aux plans Cycle de développement
Avantages L agilité modifie donc notre façon de concevoir des produits, et d envisager un Projet Informatique (notamment en termes d estimation, de planification et de suivi). Les bénéfices sont réels et évidents: Visibilité Vélocité Adaptabilité et réactivité (dimensions clés du «Time to Market») Réduction des risques Qualité Efficacité Méthodes : SCRUM (la plus populaire) Xp (Extrême Programming) DSDM (Dynamic Systems Development Method) ASD (Adaptative Software Development) Il faut tirer profit de chacune des méthodes (prendre les techniques et les pratiques qui nous semblent utiles et les adapter à notre façon de travailler) en gardant soin de respecter ces principes : Mode ITERATIF court Mode Incrémental (livraisons de fonctionnalités opérationnelles à chaque itération) Focus sur les Tests à chaque itération Feedback Client et Utilisateurs
Valeurs Il existe 4 valeurs tirées du Manifeste des méthodes Agiles. L'équipe («Personnes et interaction plutôt que processus et outils») : Dans l'optique agile, l'équipe est bien plus importante que les outils (structurants ou de contrôle) ou les procédures de fonctionnement. Il est préférable d'avoir une équipe soudée et qui communique composée de développeurs (éventuellement à niveaux variables) plutôt qu'une équipe composée d'experts fonctionnant chacun de manière isolée. La communication est une notion fondamentale. L'application («Logiciel fonctionnel plutôt que documentation complète») : Il est vital que l'application fonctionne. Le reste, et notamment la documentation technique, est une aide précieuse mais non un but en soi. Une documentation précise est utile comme moyen de communication. La documentation représente une charge de travail importante, mais peut pourtant être néfaste si elle n'est pas à jour. Il est préférable de commenter abondamment le code lui-même, et surtout de transférer les compétences au sein de l'équipe (on en revient à l'importance de la communication). La collaboration («Collaboration avec le client plutôt que négociation de contrat») : Le client doit être impliqué dans le développement. On ne peut se contenter de négocier un contrat au début du projet, puis de négliger les demandes du client. Le client doit collaborer avec l'équipe et fournir un feed-back continu sur l'adaptation du logiciel à ses attentes. L'acceptation du changement («Réagir au changement plutôt que suivre un plan») : La planification initiale et la structure du logiciel doivent être flexibles afin de permettre l'évolution de la demande du client tout au long du projet. Les premières releases du logiciel vont souvent provoquer des demandes d'évolution.
Principes Ces 4 valeurs se déclinent en 12 principes généraux communs à toutes les méthodes agiles : «Notre première priorité est de satisfaire le client en livrant tôt et régulièrement des logiciels utiles». «Le changement est bienvenu, même tardivement dans le développement. Les processus agiles exploitent le changement comme avantage compétitif pour le client». «Livrer fréquemment une application fonctionnelle, toutes les deux semaines à deux mois, avec une tendance pour la période la plus courte». «Les gens de l'art et les développeurs doivent collaborer quotidiennement au projet». «Bâtissez le projet autour de personnes motivées. Donnez leur l'environnement et le soutien dont elles ont besoin, et croyez en leur capacité à faire le travail». «La méthode la plus efficace pour transmettre l'information est une conversation en face à face». «Un logiciel fonctionnel est la meilleure unité de mesure de la progression du projet». «Les processus agiles promeuvent un rythme de développement soutenable. Commanditaires, développeurs et utilisateurs devraient pouvoir maintenir le rythme indéfiniment». «Une attention continue à l'excellence technique et à la qualité de la conception améliore l'agilité». «La simplicité - l'art de maximiser la quantité de travail à ne pas faire - est essentielle». «Les meilleures architectures, spécifications et conceptions sont issues d'équipes qui s'auto-organisent». «À intervalle régulier, l'équipe réfléchit aux moyens de devenir plus efficace, puis accorde et ajuste son comportement dans ce sens».
Tronc des pratiques communes à l'ensemble des méthodes Agiles 1. Les pratiques communes liées aux ressources humaines Participation de l utilisateur final aux groupes de travail. Groupes de travail disposant du pouvoir de décision. Autonomie et organisation centralisée de l équipe (motivation). Spécification et validation permanente des Exigences. 2. Les pratiques communes liées au pilotage du projet Niveau méthodologique variable en fonction des enjeux du projet. Pilotage par les enjeux et les risques. Planification stratégique globale basée sur des itérations rapides. Réalisation en jalons par prototypage actif itératif et incrémental. Recherche continue d amélioration des pratiques. 3. Les pratiques communes liées à la qualité de la production Recherche d excellence technique de la conception. Vision graphique d une modélisation nécessaire et suffisante. Vision de la documentation nécessaire et suffisante. Normes et techniques raisonnables de qualité du code (métrique). Architecture à base de composants. Gestion des changements automatisée.