Téléchargez l`article : « L`Extreme Programming : réduire le coût du
Transcription
Téléchargez l`article : « L`Extreme Programming : réduire le coût du
best practices revues et corrigées • L’Extreme Programming : réduire le coût du changement dans les projets informatiques Par Christophe Legrenzi, chercheur et consultant international, expert associé de Best Practices Systèmes d’information Les approches traditionnelles de développement ont montré leurs limites. Les méthodes agiles commencent à s’imposer, notamment pour réduire les cycles de développement et mieux satisfaire les utilisateurs. U n facteur d’échec courant dans les projets de développement informatique est le manque d’implication des « clients » qui vont utiliser l’application. Les approches traditionnelles, dont le classique modèle en cascade (le fameux « V »), consistent à recueillir l’ensemble des besoins en début de projet, pour ensuite développer toutes les fonctionnalités afférentes. Entre l’expression initiale des besoins et la livraison finale, il arrive cependant que le contexte ait changé, modifiant les exigences de départ. Il arrive également que certains besoins aient été mal formulés par les clients ou mal compris par les équipes chargées du projet : les écarts en résultant sont alors identifiés au mieux en phase de recette, voire après la livraison. Cela entraîne mécontentement et insatisfaction chez les utilisateurs, ainsi qu’une surcharge de travail pour les équipes projet, quand tout cela ne se traduit pas par l’abandon pur et simple du projet. C’est pour pallier ces difficultés que sont apparues les méthodes agiles, parmi lesquels l’Extreme Programming, mais aussi Scrum ou la plus récente Crystal Clear, pour ne citer que les méthodes formalisées. Depuis quelques années, le lean management est également considéré comme une méthodologie agile applicable aux projets informatiques. 1. Présentation de l a Best Practice L’Extreme Programming, XP en abrégé, est une méthode de développement agile créée en 1996 par Kent Beck, Ward Cunningham et Ron Jeffries, dans le cadre du projet Chrysler Comprehensive Compensation (C3) mené par le groupe automobile Chrysler. Au départ, le projet faisait intervenir trois équipes différentes, qui travaillaient dans une logique de compétition plutôt que de coopération. Cette organisation avait ralenti le projet, les dépassements de délais et de budget menaçant. Par ailleurs, le code ainsi produit s’était avéré redondant et trop complexe pour garantir la fiabilité de l’application. Kent Beck fut recruté par Chrysler alors que le projet avait été gelé, le temps d’établir un diagnostic. Le verdict fut sans appel, l’application telle qu’elle avait été développée ne pouvait être mise en production. Kent Beck fut alors rejoint par d’autres consultants et experts du développement agile, afin de remettre le projet sur les rails. Son idée était d’identifier les pratiques qui faisaient avancer et celles qui freinaient le développement, afin de promouvoir autant que possible les premières et de réduire les autres. Parmi les avancées identifiées, le partage du référentiel de code entre toutes les équipes fut une étape stratégique pour développer la coopération. Avec un seul et même référentiel pour tous, chacun pouvait intégrer du code et en modifier à sa guise sans pour autant perdre les versions précédentes. En outre, cela incitait chacun à écrire des tests pour son code, afin d’être sûr que les changements introduits par les autres n’en modifiaient pas l’exécution. Grâce à ces bonnes pratiques, le projet rattrapa son retard et fut finalisé dans les temps. L’expérience issue de ce projet fut ensuite appliquée à d’autres, permettant de vérifier la pertinence des principes de ce qui allait devenir l’Extreme Programming. La méthode fut officialisée en 1999 avec la publication de l’ouvrage Extreme Programming Explained de Kent Beck. Le premier objectif de l’Extreme Programming est de réduire les coûts du changement en introduisant de la flexibilité dans le processus de développement. Pour cela, la méthode reprend des règles simples, connues dans l’industrie du logiciel, mais en les poussant à l’extrême : par exemple, la revue de code est faite en permanence, les tests sont systématiques, la simplicité est privilégiée à tous les niveaux et les cycles de développement sont très rapides pour s’adapter au changement. Les projets basés sur l'XP sont constitués de séries d’itérations courtes, n’excédant pas quelques semaines. Ils sont gérés comme une démarche collective, impliquant l’ensemble de l’équipe ainsi que le client. Chaque itération débute par l’exploration des scénarios clients, ces scénarios étant ensuite traduits en tâches réparties entre les membres de l’équipe. Chacune des fonctionnalités développées doit être testée avant de livrer une version, l'XP préconisant d’ailleurs d’écrire les tests avant d’entamer le développement proprement dit. Le projet s’achève quand les clients ne sont plus en mesure de fournir de scénario. Les projets basés sur l'Extreme Programming mettent en œuvre un ensemble de bonnes pratiques : 12 décembre 2011 - N° 78 - Best Practices - Systèmes d’Information • 9 best practices revues et corrigées • Un représentant du client doit être présent sur le site de développement, afin de permettre un échange régulier avec l’équipe et de répondre aux questions. • Jeu du planning : le client crée des scénarios basés sur ce qu’il souhaite obtenir, scénarios qui sont ensuite évalués par l’équipe. Une fois ces estimations effectuées, le client choisit les scénarios qui vont être implémentés en fonction de ses priorités et du temps disponible. • Intégration continue : dès qu’un élément est prêt, il est immédiatement testé et intégré pour éviter d’avoir à intégrer l’ensemble des éléments en fin de projet, avec le risque de découvrir à ce moment-là seulement des problèmes. • Des livraisons petites mais fréquentes. La première livraison est généralement la plus importante. • Rythme soutenable : dans la logique de l’Extreme Programming, le besoin d’heures supplémentaires signale un problème de planning. C’est donc ce dernier qu’il faut revoir, l’efficacité des équipes décroissant si celles-ci sont fatiguées. • Tests : les tests sont essentiels dans la démarche d’Extreme Programming. Pour chaque nouvelle fonctionnalité, les développeurs écrivent un test unitaire conservé tout au long du projet. L’ensemble de ces tests sont relancés à chaque modification pour détecter immédiatement les dysfonctionnements. Des procédures de tests fonctionnels sont par ailleurs écrites en se basant sur les scénarios clients. Une fois que la livraison en cours passe l’ensemble des tests fonctionnels (recette), elle est considérée comme terminée. • Conception simple : plus une application reste simple, plus elle est aisée à faire évoluer ultérieurement. Il n’est pas nécessaire de prévoir d’autres fonctionnalités que celles nécessaires pour les scénarios choisis. • Utilisation de métaphores : tout membre de l’équipe doit comprendre la logique de l’application, chacun est donc impliqué dans sa conception et son évolution. Des analogies et métaphores sont utilisées pour s’assurer que tout le monde comprend aisément le système en cours de développement. • Réingénierie du code (refactoring) : il s’agit de retravailler régulièrement le code existant sans introduire de nouvelles fonctionnalités, simplement dans le but d’en améliorer la structure, la lisibilité ou les performances. • Appropriation collective du code : tous les membres de l’équipe ont le même niveau de responsabilité sur l’application et les mêmes droits. Chacun peut faire des modifications du code qu’il n’a pas développé, les tests permettant de vérifier si tout fonctionne. • Normes et conventions de dénomination : celles-ci sont indispensables dès lors que chaque développeur peut intervenir sur le code d’un autre. • Programmation en binôme : les développeurs travaillent par deux, l’un écrivant le code, l’autre lui suggérant des options ou l’aidant à identifier d’éventuels problèmes. Les binômes changent régulièrement. Ce mode de travail favorise en outre le partage des connaissances. Le s v ale u rs de l’E xt re me P ro g ramming Dans certains cas, l'XP peut également favoriser une fuite en avant, les équipes étant constamment en train de développer de nouveaux scénarios et les versions n’étant jamais gelées. À terme, une telle situation peut coûter plus cher que les approches traditionnelles. Pour éviter cette dérive, il est important que le client ait bien compris l’intérêt d’une méthode comme XP et sache se montrer raisonnable dans les scénarios proposés. • Communication : celle-ci est primordiale au sein de l’équipe de développement, mais aussi avec les clients et les responsables du projet. • Simplicité : prévoir d’emblée l’ensemble des fonctionnalités génère des pertes de temps. Au contraire, privilégier la simplicité permet de créer des applications aisées à faire évoluer. • Retour d’information (feedback) : les tests interviennent à tous les niveaux (unitaire, fonctionnel, intégration). Ils permettent à chaque étape de savoir si le code produit fonctionne. • Courage : dans un projet, l’équipe peut parfois être amenée à prendre des décisions difficiles, comme de modifier l’architecture initiale ou de supprimer du code. Le courage est nécessaire pour faire ces choix. • Respect : un aspect essentiel dans toute démarche collaborative. 10 • 2. Regard critique L’Extreme Programming est une méthodologie créée pour pallier les dysfonctionnements des approches traditionnelles. Elle ne convient pas à tous les types de projets et un usage dans des contextes inadaptés présente un certain nombre de risques. Ainsi, du fait de ses itérations courtes, la méthode n’est pas vraiment adaptée au développement des applications cœur de métier, dont la durée de vie est d’au moins huit à douze ans. La performance opérationnelle de l’entreprise dépendant fortement de ces applications et celles-ci n’ayantt pas vocation à changer fréquemment, l’XP est très rarement utilisé dans ce cadre. De la même manière, avec l’XP, peut apparaître une tendance à développer des fonctionnalités à faible valeur ajoutée pour l’entreprise, en laissant trop la main aux utilisateurs : la somme des optima individuels aux yeux des utilisateurs ne donne jamais mathématiquement l’optimum global pour l’entreprise. Il existe également un risque opérationnel quand les fonctions études-développement ne sont pas clairement séparées de la mise en production-exploitation. C’est une bonne pratique qu’il faut respecter autant que faire se peut. Par ailleurs, la méthode imposant de travailler en binôme et dans un cadre collectif peut susciter des blocages culturels dans les organisations habituées Best Practices - Systèmes d’Information - N°78 - 12 décembre 2011 best practices revues et corrigées Métaphores du système iè re ve rs liv ra is D Pl an Planification release er n de Scénarios utilisateur Spécifications io Itération n on Bugs A cl ppr ie o nt ba ti o Nouveau scénario utilisateur n Scénarios de test Tests d'acceptation Transition architecturale Estimations incertaines Estimations confiantes Transition à d’autres modes de travail. Dans de tels cas, une résistance au changement est possible. Enfin, la méthode ne met pas forcément en avant la documentation du projet. Or une faible documentation entraîne une dépendance forte à l’égard des individus ayant développé l’application. Il existe un risque réel de fragilisation du code et de construction « d’usines à gaz » si la méthode n’est pas bien suivie, en particulier les exigences de simplicité, les petites releases et le refactoring. Souvent, l’XP est utilisé conjointement avec des technologies de type Java ou autres qui ne sont pas toujours en phase avec les enjeux de performance requis par le métier, comme les temps de réponse, la simultanéité des accès, etc. Pour pallier ce risque potentiel, il faut éviter d’être « dogmatique » en matière d’environnements de développements et ne pas oublier ce type d’exigences dans les scénarios. C’est d’ailleurs souvent plus facile à dire qu’à faire, surtout avec des équipes internes formées à un outil précis. 3. Que faire ? Quelques pistes de solutions Une fois les risques et les bénéfices d’une méthode comme l'XP bien compris, il est possible d’identifier les cas où les entreprises peuvent en tirer le meilleur parti. Il va de soi que les applications amenées à changer fréquemment sont la meilleure cible pour des projets menés selon l’XP. Cela dit, il est plus facile de mettre en œuvre la méthode sur de nouvelles applications que sur des applications existantes, cellesci n’ayant pas toujours été écrites d’une manière simple. L’Extreme Programming fonctionne particulièrement bien sur des projets de taille petite ou moyenne, avec des équipes Prochaine itération Le cycle de développement de l’Extreme Programming proportionnées : au-delà d’une vingtaine de développeurs, il devient en effet difficile de fonctionner de manière efficace avec les principes décrits précédemment. Sur ces projets, il est important de prévoir des points de contrôle en amont (expression des besoins) et en aval (recettes) afin de prévenir les risques de dérives liées à des besoins trop fluctuants. En outre, les clients ne pensent pas toujours dans leurs scénarios à exprimer certains enjeux non fonctionnels, mais importants pour le métier, comme les temps de réponse ou le nombre d’accès simultanés requis. Là aussi, un cadrage préalable permet de ne pas oublier ces exigences. La méthode peut également s’avérer précieuse pour les phases de prototypage, permettant de montrer rapidement au client une application fonctionnelle et d’échanger avec lui sur les différents scénarios possibles. Dans ce cas, il faut néanmoins faire attention à la maturité du client concernant ces méthodes, présenter une application trop simple à des utilisateurs peu au fait de ces approches pouvant s’avérer contre-productif. De manière générale, un certain nombre de principes de l’Extreme Programming peuvent être utilisés dans le cadre d’approches plus traditionnelles, afin d’améliorer certains aspects comme la communication, la diffusion des connaissances ou les tests. Enfin, l’Extreme Programming peut être utilisé en complément d’autres méthodes agiles. Geoffrey Bourne, spécialiste du développement agile travaillant dans le secteur financier, met notamment en avant la complémentarité de l’Extreme Programming avec Scrum et le lean IT, chacun s’adressant à un niveau différent de l’organisation. Le lean IT répond ainsi aux enjeux stratégiques du management, tandis que Scrum s’adresse aux chefs de projets en leur offrant de nombreux outils pour gérer l’organisation des équipes. l'XP est quant à lui un outil tactique, qui trouve sa place directement au sein des équipes de développement. • 12 décembre 2011 - N° 78 - Best Practices - Systèmes d’Information • 11