Professional Documents
Culture Documents
LExtreme Programming
Rgis Medina
01/2003
LExtreme Programming
Conditions d'utilisation dXP _______________________________________________________ 17 Le client doit tre intgr au projet _______________________________________________ 17 Le logiciel doit rester toujours simple, facilement modifiable et largement test __________ 17 L'quipe doit travailler... en quipe _______________________________________________ 17 Tous les participants doivent tre prts au changement ______________________________ 18 Conclusion _____________________________________________________________________ 19
http://www.design-up.com
2/19
LExtreme Programming
INTRODUCTION
L'Extreme Programming (XP) est une mthode de dveloppement ddie de petites quipes confrontes un environnement changeant ou des besoins mal connus. Cette mthode est ne sur le terrain, partir des observations et recherches de dveloppeurs expriments soucieux de se concentrer sur les ncessits lmentaires du dveloppement : Dvelopper vite : s'assurer que les changements restent toujours faciles pour conserver une vitesse de dveloppement soutenue tout au long du projet. Dvelopper juste : liminer tout travail inutile en se focalisant sur les besoins rels du client.
La mise au point de XP dure depuis quelques annes, mais XP a rellement dmarr en octobre 1999 avec la parution du livre :
D'autres livres consacrs XP sont parus depuis, dont un en Franais cette anne :
LExtreme Programming (avec deux tudes de cas), Jean-Louis Bnard, Laurent Bossavit, Rgis Medina, Dominic Williams, Eyrolles, 2002.
Par ailleurs, le phnomne continue prendre de l'ampleur : Cre en janvier 2000, la mailing list spcialise compte en janvier 2003 prs de 3800 abonns. XP est dfendu par de grands noms du dveloppement objet, en particulier Kent Beck, Martin Fowler et Robert C. Martin. XP est dj mis en oeuvre dans des domaines aussi varis que la banque (Bayerische Landesbank, Credit Swiss Life, First Union National Bank), l'industrie automobile (DaimlerChrysler, Ford Motor Company), le transport (CSEE Transport), les tlcoms (Nortel), le commerce lectronique (Evant).
http://www.design-up.com
3/19
LExtreme Programming
Nous vous invitons ici dcouvrir XP travers : Une brve introduction : Pourquoi XP ? Une description des principes XP, Une description plus complte des pratiques XP, Une discussion des conditions de succs de XP dans un projet.
Bien sr, la prsentation qui suit reste reste extrmement synthtique. Il va de soi que la lecture de quelques ouvrages et l'exploration des sites lists dans notre rubrique Ressources demeure indispensable pour qui souhaite rellement comprendre XP et le mettre en oeuvre.
http://www.design-up.com
4/19
LExtreme Programming
Ces approches sont fondes sur l'ide que le cot de modification du logiciel augmente de manire exponentielle dans le temps. Dans une telle logique, il est d'ailleurs normal de chercher dfinir compltement le produit avant de procder sa ralisation. Or, ce qu'ont dcouvert les crateurs de XP, c'est que certaines pratiques de dveloppement permettent de rduire de manire significative le cot de changement du logiciel, tel point qu'il devient plus rentable de prendre les dcisions le plus tard possible, en s'appuyant sur l'exprience acquise au cours du dveloppement lui-mme. Il en rsulte une approche radicalement diffrente du dveloppement, fonde sur une ouverture permanente au changement : Les spcifications sont dfinies au dbut du projet, puis revues, affines et compltes tout au long du dveloppement, Le client arbitre en permanence les priorits pour que l'quipe se focalise d'abord sur les tches les plus importantes, L'application est maintenue simple et volutive travers un ensemble de pratiques de programmation strictes, Les dveloppeurs travaillent toujours ensemble, ce qui favorise le transfert de connaissances, amliore la qualit du produit et rend le travail nettement plus motivant.
http://www.design-up.com
5/19
LExtreme Programming
Feedback o o o
Simplicit o o
Courage o o
Les pages suivantes montrent comment XP supporte ces valeurs travers un ensemble de pratiques prcises et concrtes.
http://www.design-up.com
6/19
LExtreme Programming
LES PRATIQUES XP
Les pratiques XP sont pour la plupart des pratiques de "bon sens" utilises par des dveloppeurs et des chefs de projets expriments. On retrouve par exemple les tests unitaires, les relectures de code, les livraisons frquentes, une communication accrue avec le client, les "nettoyages" frquents du code, etc. La premire nouveaut d'XP consiste pousser ces pratiques l'extrme, ou comme le disent ses auteurs "tourner tous les boutons jusqu' 10 !" : des tests unitaires sont crits pour chaque classe, la relecture du code est faite au moment mme de son criture par un travail en binme permanent, l'intgration est faite chaque jour, etc. La seconde nouveaut de XP consiste organiser ces pratiques en un tout cohrent, de sorte que chaque pratique renforce les autres. Il en rsulte une mthode complte qui couvre tous les aspects du dveloppement, de la relation avec le client jusqu' l'criture du code en passant par les plannings et l'organisation de l'quipe. Voici les principaux lments du fonctionnement de XP : Gestion des livraisons : L'quipe fournit des livraisons frquentes au client. Le contenu de ces livraisons est dcid par le client lui-mme, partir des estimations fournies par les dveloppeurs. Gestion des itrations : Les livraisons sont ralises en une suite d'itrations de 2 semaines environ, au sein desquelles le projet est gr un niveau de dtail plus fin. Suivi du projet : L'avancement du projet est mesur de manire concrte par une batterie de tests de recette automatiques. Le rythme de progression est rvalu chaque itration, et le plan de dveloppement lui-mme est revu frquemment pour tirer parti de l'exprience acquise au cours du projet. Qualit du design et du code : Des pratiques strictes permettent de garder une vitesse de dveloppement leve tout au long du projet, tout en gardant une ouverture maximale au changement. La conception reste toujours le plus simple possible, le code est nettoy en permanence et des tests unitaires de non-rgression sont crits pour chaque classe. Travail en quipe : L'quipe travaille rellement... en quipe. Le code est partag par tous, les dveloppeurs travaillent systmatiquement en binmes, et l'intgration est quasiment continue.
Les pages qui suivent dcrivent ces pratiques plus en dtail. Il va de soi cependant que cette description reste synthtique, donc superficielle, et que l'tude des ressources cites dans notre section Liens est indispensable pour qui souhaite mettre la mthode en pratique.
http://www.design-up.com
7/19
LExtreme Programming
XP axe donc les efforts de pilotage du projet sur la gestion du contenu, le but tant bien sr d'apporter la plus grande valeur ajoute possible au client chaque livraison. Les dveloppeurs estiment, le client choisit Chaque livraison suit le cycle suivant :
Les trois premires tapes de ce cycle prennent place au cours de "sances de planification de livraisons", dont le but est de dterminer le contenu des livraisons venir. Ces sances runissent le client et les dveloppeurs, l'ensemble tant coordonn et arbitr par le chef de projet (ou coach, dans le vocabulaire XP).
1. Le client dcrit ses besoins sous forme de "scnarios client"
Le client dfinit ses besoins sous la forme de "scnarios client" simples, dcrivant en quelques mots chaque fonctionnalit souhaite du logiciel. Par exemple, pour un logiciel de gestion de carnet d'adresses on pourrait crire les scnarios suivants : http://www.design-up.com
2000 Regis Medina
8/19
LExtreme Programming
"Je rentre un nom ou prnom, et le logiciel affiche la liste de toutes les personnes qui possdent ce nom ou ce prnom", "Je peux enregistrer mon carnet d'adresses au format HTML.", etc.
Les scnarios sont crits dans le langage du client, et dcrivent des fonctionnalits dont l'implmentation parat suffisamment courte (une ou deux semaines maximum). Les scnarios sont nots sur des fiches cartonnes, pour tre facilement manipuls (partags, changs, dchirs, tris...). Si un scnario parat trop vague ou trop complexe, il est dcompos en scnarios plus simples. Un projet complet peut compter une centaine de scnarios ou davantage.
2. Les dveloppeurs estiment le cot d'implmentation de chaque scnario
Les estimations ne se font pas en jours rels mais en units abstraites, dont la dfinition exacte a finalement peu d'importance. Certaines quipes prfreront parler de temps idal (journes de 8 heures de programmation sans interruption), d'autres parleront de points, de "XP units" ou encore de "Gummy Bears"... L'important ce stade est de disposer d'une unit qui permette d'valuer les dures relatives d'implmentation des scnarios sans donner aux dveloppeurs le sentiment de s'engager sur des dures relles. Les estimations sont faites par l'ensemble de l'quipe, le client tant prsent pour rpondre questions que les dveloppeurs peuvent se poser sur chaque scnario. Au besoin, dveloppeurs peuvent procder quelques exprimentations sur machine pour se faire meilleure ide des difficults techniques rencontres. XP nomme ces exprimentations "spike solutions". Au terme de cette phase, chaque fiche de scnario client possde une indication de cot.
3. Le client slectionne les scnarios implmenter pour la livraison suivante
Tous les scnarios tant dcrits et valus, le client procde au choix des scnarios implmenter pour la prochaine livraison. Cependant, du fait que le cot de chaque scnario n'est connu qu'en nombre de "points" abstraits, il faut un moyen pour calculer combien l'quipe pourra traiter de scnarios. Comme nous allons le voir, chaque livraison est prpare en une suite d'itrations, qui durent chacune 2 semaines environ. XP dfinit la notion de vlocit, qui correspond au nombre de points que l'quipe peut traiter en une itration. Cette vlocit est tout d'abord estime par le chef de projet, puis recalcule chaque itration en faisant simplement la somme des points des scnarios qui ont t complts l'itration prcdente. Remarque: Cette vlocit ne reprsente en aucun cas le niveau de "performance" de l'quipe, dans la mesure o elle dpend en grande partie de la faon dont les dveloppeurs font leurs estimations. Cependant, ses variations peuvent indiquer des problmes passagers : si la vlocit baisse brutalement, c'est peut-tre que l'quipe a t ralentie pour une raison ou une autre, et il ne faut pas ignorer cette information. Connaissant le nombre d'itrations jusqu' la prochaine livraison, on est donc capables de dterminer combien l'quipe peut traiter de "points" pour cette livraison. Le client dispose de ce nombre de points pour "acheter" les scnarios implmenter pour cette livraison, et http://www.design-up.com
2000 Regis Medina
9/19
LExtreme Programming
ventuellement les livraisons suivantes. A lui donc de rpartir les scnarios comme il le souhaite dans les livraisons venir pour obtenir la plus grande valeur ajoute au plus tt.
4. Les dveloppeurs implmentent les scnarios choisis
L'implmentation proprement dite se fait en une suite d'itrations, dcrites plus en dtail dans la section suivante. Une fois la livraison effectue, on passe la suivante en rptant le mme cycle : Le client reprend les scnarios restants. Il peut en ajouter, en retirer ou en modifier son gr. Les dveloppeurs restiment les dures de tous les scnarios en se basant sur une meilleure connaissance du contexte technique et fonctionnel, Le client slectionne les scnarios implmenter, Les dveloppeurs implmentent les scnarios, etc.
http://www.design-up.com
10/19
LExtreme Programming
Les dveloppeurs prennent un un les scnarios raliser pour cette itration, et dterminent les tches concrtes qui serviront leur implmentation. Cette activit est mene en groupe, et le client est prsent pour dcrire plus prcisment les scnarios et rpondre toutes les questions d'ordre fonctionnel. Cette activit fait dj intervenir des lments de conception, puisque les tches concernent l'implmentation proprement dite. S'ils le souhaitent, les dveloppeurs peuvent exprimenter quelques "spike solutions" pour se faire une meilleure ide de la difficult de certaines tches. Comme les scnarios, les tches sont notes sur des fiches cartonnes pour tre facilement manipules. A la fin de cette phase, les dveloppeurs disposent d'une liste de tches raliser pour l'itration en cours. Il reste les rpartir entre eux.
2. Les dveloppeurs choisissent les tches qu'ils vont implmenter et valuent leur dure
L'quipe reprend la liste des tches raliser, et les dveloppeurs se les rpartissent progressivement. Chaque fois qu'un dveloppeur s'approprie une tche, il en value lui-mme la dure (en jours cette fois) et s'assure qu'il ne prend pas plus de tches qu'il ne pourra en raliser au cours de l'itration. D'une manire gnrale, les tches d'un mme scnario sont prises en charge par un mme dveloppeur, de sorte que le suivi du scnario soit correctement assur. Les tches ne sont pas affectes arbitrairement par spcialit technique : un dveloppeur peut prendre en charge une tche correspondant une technique qu'il connat peu, sachant que les implmentations se font toujours en binme et qu'il pourra donc s'associer un spcialiste de la technique en question au moment voulu (voir la section "Travail en quipe"). A la fin de cette phase, chaque dveloppeur connat la liste des tches qu'il doit raliser au cours de cette itration. A la fin de l'itration, on recommence ! Une fois l'ensemble des tches ralis, on passe l'itration suivante en reprenant le mme cycle : http://www.design-up.com
2000 Regis Medina
11/19
LExtreme Programming
Le client choisit les scnarios raliser, L'quipe dtermine la liste des tches accomplir pour l'itration, Les dveloppeurs se rpartissent les tches et valuent leurs cots, Les dveloppeurs ralisent les tches, etc.
Suivi du projet
Pour chaque scnario planifi, un ensemble de tests de recette est crit. Ces tests ont pour but de vrifier de manire automatique chacune des fonctionnalits demandes par le client. Le client (ou l'un de ses reprsentants) dfinit ces tests et participe ventuellement leur implmentation, aid de testeurs. L'volution de ces tests forme un indicateur concret de l'avancement des dveloppements : Le nombre de tests crits indique l'avancement des spcifications, Le nombre de tests valids indique l'avancement des dveloppements, Le nombre de tests en chec indique le degr de qualit du logiciel.
Le chef de projet peut ainsi reprsenter de manire trs synthtique l'volution du projet :
Les tests de recette sont lancs frquemment, et tous les participants du projet (client, direction, dveloppeurs) sont informs en permanence de leurs rsultats.
http://www.design-up.com
12/19
LExtreme Programming
La conception reste la plus simple possible "You ain't gonna need it!" : on ne fait de conception que pour les fonctionnalits existantes, pas pour les fonctionnalits futures. En corollaire : on ne fait de gnralisations dans le design que lorsque les exemples concrets se prsentent. on n'introduit pas d'optimisations si elles ne sont pas demandes par le client.
En somme, plutt que de prparer le logiciel pour le futur, XP s'assure que le travail actuel soit toujours bien fait (lisibilit du code, simplicit, tests) pour que les changements restent faciles et rapides. Le code est remani en permanence L'application est toujours maintenue aussi mallable que possible grce une activit permanente de remaniement (refactoring). Les remaniements consistent par exemple renommer les variables, les mthodes, les classes, dplacer des attributs ou des mthodes vers d'autres classes, dcomposer les grosses mthodes en des mthodes plus petites, factoriser des parties de code, etc. L'une des motivations principales de remaniement est l'absence de duplications dans le code (tout doit apparatre "Once and Only Once"). Lorsqu'un dveloppeur doit utiliser une partie de code qui se trouve dj quelque part dans l'application, il remanie l'application de manire pouvoir utiliser le code existant. De la sorte les modifications de l'application n'impactent gnralement que peu d'endroits dans le code, ce qui est primordial pour que celui-ci reste mallable. Le remaniement est galement utilis pour rendre le code plus clair : lorsqu'un dveloppeur doit comprendre une nouvelle partie du code, il la modifie afin de la rendre plus claire pour ceux qui passeront aprs lui. Une phase de remaniement prcde gnralement l'ajout de toute nouvelle fonctionnalit, de manire ce que le nouveau code s'insre aussi naturellement que possible dans l'application. Le remaniement est plus qu'un moyen de dpoussirer le code : c'est un moyen de faire merger un design aussi adapt que possible aux besoins de l'application, en supprimant au fur et mesure tout ce qui nuit sa simplicit. Chaque classe est crite avec les tests unitaires associs En plus des tests de recette, qui servent prouver que le logiciel remplit ses objectifs, XP utilise intensivement les tests unitaires de non-rgression. Ces tests sont crits par les dveloppeurs en mme temps que le code lui-mme, pour valider chaque portion de code susceptible de comporter des erreurs. Les tests doivent s'excuter sans aucune interprtation de la part du dveloppeur : ils comportent des assertions qui vrifient automatiquement si le code test fonctionne ou non. Quasiment chaque classe de l'application possde une classe "jumelle" de test. Lorsque des dveloppeurs doivent ajouter une nouvelle mthode la classe applicative, ils commencent par ajouter la classe de test un ensemble d'assertions qui dcrivent le comportement de la mthode ajouter. La mthode n'est implmente qu'ensuite, pour que ces tests passent. Bien sr, on ne http://www.design-up.com
2000 Regis Medina
13/19
LExtreme Programming
teste pas toutes les mthodes de l'application. Avec un peu de pratique, il devient facile de savoir ce qui mrite d'tre test, la rgle de base tant qu'on ne teste que ce qui peut casser ("Test everything that could possibly break"). Les classes de tests ne sont bien sr pas jetes aprs usage : elles sont gres par un framework ddi, qui permet de les excuter en groupe ou de manire globale. La batterie de tests de l'application ne cesse donc de s'enrichir, et forme avec le temps un filet de scurit qui permet aux dveloppeurs de garder une grande vitesse de dveloppement sans crainte de rgressions. Ces tests sont ainsi lancs en permanence par les dveloppeurs - en fait, chaque compilation. Tous les tests unitaires doivent passer 100% avant tout report de modifications dans la version d'intgration du logiciel. Cette pratique constitue l'une des pratiques centrales de XP. Ses avantages sont tels que chaque projet, XP ou non, se doit de s'y pencher avec la plus grande attention : Les erreurs sont trs vite dtectes et trs vite localises. Les tests donnent une vision prcise de la tche raliser et aident les dveloppeurs aller droit au but. Les tests placent les dveloppeurs dans un contexte rduit qui leur permet de s'abstraire de la complexit du reste de l'application. Il est possible de s'assurer du fonctionnement global du systme trs rapidement, aprs toute modification du code, avant ou aprs toute intgration dans la version officielle du systme.
Ce que l'on constate au final, c'est que les dveloppeurs qui utilisent les tests unitaires passent plus de temps ecrire du nouveau code, et moins de temps chercher des "bugs" dans du code existant.
Travail en quipe
Lorsque le client a slectionn les scnarios implmenter, les dveloppeurs dcident en groupe de l'affectation des scnarios. Le code est partag par toute l'quipe L'application n'est pas dcoupe en zones rserves chaque dveloppeur : chacun est susceptible de travailler sur toutes les parties de l'application. Chacun a donc la responsabilit d'crire un code aussi clair que possible, sachant que d'autres y travailleront peu aprs. D'autre part le fait qu'une mme portion de code soit visite par plusieurs dveloppeurs diminue les risques d'erreur et augmente sa qualit. Cette pratique va l'encontre du dcoupage classique du travail en domaines techniques (IHM, bases de donnes, etc.). XP exploite les spcialistes, mais en tant que consultants internes et non comme travailleurs spcialiss.
http://www.design-up.com
14/19
LExtreme Programming
Les dveloppeurs travaillent en binmes Chaque dveloppeur est responsable d'une tche qui lui est propre, mais il doit systmatiquement demander l'aide d'autres dveloppeurs pour la raliser. Le dveloppeur va s'associer : Un dveloppeur ayant des connaissances spcifiques pour la tche en cours. Un dveloppeur plus jeune, pour lui transmettre ses connaissances. Plus gnralement, un dveloppeur intress par la tche.
Le binme travaille sur une seule machine : le dveloppeur qui est aux commandes se concentre plutt sur l'criture du code, l'autre travaille davantage au niveau de la conception ou de la fonctionnalit en cours. En termes militaires, celui qui est au clavier travaille au niveau tactique, et l'autre au niveau stratgique - mais cette rpartition n'a rien de strict : les dveloppeurs s'organisent comme ils le souhaitent pour mener bien la tche en cours. Les binmes changent frquemment, de sorte que chacun est amen travailler avec tous les autres membres de l'quipe. Cette approche peut paratre coteuse au premier abord, mais elle s'avre parfaitement rentable en pratique grce : Une plus grande qualit du design et du code qui limite les retours en arrire et les longues phases de debug. Une concentration accrue des dveloppeurs. Une plus grande vitesse de dveloppement (aprs tout l'criture du code ne reprsente en soi qu'une petite fraction du travail). Une meilleure diffusion de la connaissance dans l'quipe, avec notamment une formation acclre des dbutants.
Les dveloppeurs respectent les rgles de codage de l'quipe Ces rgles sont dfinies par l'ensemble des dveloppeurs. Elles donnent au code un aspect uniforme sur toute l'application, ce qui facilite le partage du code et le travail en binmes. L'homognisation du code ne se limite pas seulement sa prsentation et au respect de rgles de programmation. L'quipe s'appuie en effet sur un systme de mtaphores commun, c'est dire un ensemble d'expressions dcrivant les acteurs du systme et leurs interactions. Ce systme de mtaphores constitue : Un vocabulaire commun qui va permettre toute l'quipe de parler des mmes choses avec les mmes mots. Par exemple, dans le monde des tlcom, il faut dfinir ce qu'est un "noeud" d'un rseau et se servir de ce mot dans le cadre de la dfinition tablie. Une mtaphore de fonctionnement, par exemple : "le logiciel de contrle de cette machine-outil fonctionne comme une machine caf". Il faut bien sr veiller ce que la mtaphore ne devienne pas une simplification abusive du concept initial ! Une source d'inspiration pour la conception d'autres lments fondamentaux d'un projet tels que: o Les structures de donnes utiles au logiciel,
2000 Regis Medina
http://www.design-up.com
15/19
LExtreme Programming
L'intgration se fait de manire quasi-continue L'intgration est faite tous les jours. Ds qu'un dveloppeur finit une tche, il met jour la version d'intgration en s'assurant que tous les tests de non-rgression de l'application passent 100%. La version "livrable" du logiciel volue donc chaque jour, en refltant fidlement l'tat d'avancement des dveloppements. L'quipe adopte un rythme durable D'une part, une quipe fatigue ne fait pas du bon travail. D'autre part, s'il y a trop de retard, c'est qu'il y a un problme de fond et il est illusoire de chercher le camoufler par davantage de travail. Pour ces raisons, l'quipe adopte la rgle suivante : pas d'heures supplmentaires deux semaines de suite.
http://www.design-up.com
16/19
LExtreme Programming
Dans tous les cas, la mthode doit tre adapte par chaque quipe son contexte particulier. Il est important cependant de respecter un certain nombre de conditions pour bnficier rellement des apports de la mthode et mriter le "label XP" ;-)
http://www.design-up.com
17/19
LExtreme Programming
D'autre part , les dveloppeurs doivent avoir la capacit et la volont de participer toutes les activits du dveloppement : contact avec le client, valuation des cots, design et codage, test, etc. Dans un tel contexte, il est important que le chef de projet soit prt laisser une autonomie assez importante l'quipe elle-mme, pour se concentrer sur la coordination de l'ensemble.
http://www.design-up.com
18/19
LExtreme Programming
CONCLUSION
Au final, on peut se demander si la mthode porte bien son nom. Le terme "extrme" voque des prises de risques insenses, alors qu'en pratique XP vise une suppression systmatique du risque. En effet, une quipe XP : s'assure en permanence qu'elle se concentre sur les besoins rels du client, dveloppe le plus important en premier, ce qui limite au maximum l'impact d'un retard eventuel, fournit une grande visibilit sur l'avancement concret des dveloppements, utilise un filet (tests unitaires) pour tous ses developpements, pratique une relecture de code immdiate et continue, etc.
Malgr cela, de nombreuses quipes trouveront la mthode extrme dans la mesure o elle implique un changement profond des mentalits et des habitudes de travail. Mais si le changement est radical, rien ne dit qu'il doit tre brutal. Les auteurs de XP prconisent au contraire une adoption progressive de la mthode, en partant des pratiques de base telles que les tests unitaires ou le travail en binmes. Aprs avoir pris connaissance des grandes lignes de la mthode, une quipe souhaitant passer XP devra commencer par exprimenter progressivement ces pratiques, tout en approfondissant en parallle sa comprhension de la mthode. Notre section Ressources fournit cet effet les rfrences des principaux livres et sites web disponibles. Cependant, comme rien ne vaut le contact n'hsitez pas nous crire, soit contact@design-up.com soit sur notre mailing list design-up@egroups.com, nous serons ravis de parler XP avec vous !
http://www.design-up.com
19/19