0 evaluări0% au considerat acest document util (0 voturi)
195 vizualizări199 pagini
Référentiel des Pratiques Agiles: édition eBook
Une production de l'Institut Agile
Préface de Pierre Pezziardi, Directeur Informatique, Bred Banques Populaires
Référentiel des Pratiques Agiles: édition eBook
Une production de l'Institut Agile
Préface de Pierre Pezziardi, Directeur Informatique, Bred Banques Populaires
Référentiel des Pratiques Agiles: édition eBook
Une production de l'Institut Agile
Préface de Pierre Pezziardi, Directeur Informatique, Bred Banques Populaires
Une production de l'Institut Agile Prface de Pierre Pezziardi, Directeur Informatique, Bred Banques Populaires 1 Agile: de A Z (...ou presque...) RFRENTIEL DES PRATIQUES AGILES EDITION EBOOK (c) 2011 Institut Agile (c) 2011 Laurent Bossavit Chapitre 1 Prface AGILE ? En ce dbut d'anne 2011, nous sommes un tournant important du monde de l'informatique d'entreprise. Les mthodes classiques de dveloppement logiciel - le fameux cycle en V o phase aprs phase un logiciel merge de spcifications rputes "justes" - ont chou adresser la complexit toujours grandissante de nos Systmes d'Information. La productivit, s'y est dgrade, c'est dire que le cot marginal et le dlai de mise disposition d'une nouvelle fonctionnalit dans le SI ne fait qu'augmenter. "Trop long, trop cher" sont les principaux griefs adresss aux DSI, dont la dure moyenne du mandat a considrablement diminu, passant en dessous des deux ans en France (source Cigref)... En marge de ce phnomne gnralis, des diteurs professionnels ou Open Source obtiennent des rsultats l'extrme oppos : leur productivit est stable malgr la masse croissante de code qu'ils doivent grer : Google, Eclipse, Firefox, iPhone OS ... Mais ces diteurs ne fonctionnent plus selon des mthodes classiques, mais au sein d'quipes intgres produisant en cycles courts des logiciels qualifis d'utile par leurs utilisateurs. Mais au fond qui pourrait ne pas le souhaiter ? Qui peut prfrer livrer dans des dlais longs des logiciels laissant les utilisateurs insatisfaits ? Alors en matire d'informatique, les modes se succdent, reflets de cette perptuelle insatisfaction : UML, SOA, RAD, ERP, EAI, MDA, XML, Cloud (was ASP)... et rcemment l'Agile et (bientt) le Lean. Rfrentiel des pratiques Agiles 4 Le march l'a bien compris. tout le monde doit tre agile ! Pourtant ces nouvelles mthodes ne rclament pas qu'un simple coup de peinture, mais l'abandon de rgles et d'habitudes profondment ancres. Le dirigeant qui souhaitera obtenir les rsultats des pionniers ne pourra pas se payer uniquement de mots avec "la suite de modlisation XYZ, votre meilleur outil pour agiliser vos quipes", "notre chef de projet MOA agile 800 jour", "10 leons pour devenir agile en 15 jours !". Ce serait reproduire la tragdie de la diffusion du Lean au-del des frontires de son inventeur Japonais Toyota : en ne reprenant que les pratiques superficielles, sans changer les habitudes managriales qui laissent peu d'autonomie aux quipes, nos industriels occidentaux n'ont tir que de maigres bnfices de cette mthode. Pendant ce temps, Toyota est devenu leader mondial, car pour lui le Lean n'est pas un corpus fig d'outils, mais une dynamique quotidienne damlioration continue emmene par la base avec le soutien des cadres. Si votre objectif est de rechercher la satisfaction de vos clients, en livrant rgulirement des fonctionnalits, sans perturber celles qui fonctionnent dj, ce recueil de pratiques est fait pour vous. Il ne se lit pas comme un vulgaire manuel d'agilit en 15 leons, mais comme un jeu de cartes vous permettant de toucher du doigt des principes qui se sont avrs utiles dans de nombreuses quipes, et que vous pourrez progressivement apprendre, puis utiliser - ou pas - dans les vtres. J'espre que vous prendrez autant de plaisir que moi le parcourir. Pierre Pezziardi, 13 avril 2011 Pierre Pezziardi est Directeur Informatique de la Bred Banques Populaires, et auteur de "Lean Management, Mieux, plus vite, avec les mmes personnes" publi aux ditions Eyrolles. Chapitre 1: Prface 5
Table des matires Prface.........................................................................................iv Table des matires....................................................................vi Remerciements........................................................................ xii Guide de Lecture ..................................................................... xv PREMIRE PARTIE: AGILE Chapitre 1 Au commencement tait... le Gnie Logiciel...................... 17 Chapitre 2 La rupture Agile ...................................................................... 24 Chapitre 3 Quel avenir pour les approches Agiles?............................... 32 Chapitre 4 Un capital: les pratiques Agiles............................................. 37 Chapitre 5 Comment utiliser le rfrentiel............................................ 47 vi DEUXIME PARTIE: LES PRATIQUES Chapitre 6 BDD (Behaviour-Driven Development) .............................. 52 Chapitre 7 Backlog...................................................................................... 56 Chapitre 8 Bote de temps......................................................................... 58 Chapitre 9 Build automatis ..................................................................... 60 Chapitre 10 Cartes CRC (Classe, Responsabilit, Collaborateurs) ...... 63 Chapitre 11 Carton, Conversation, Confirmation................................... 65 Chapitre 12 Charte projet............................................................................ 66 Chapitre 13 Conception au tableau blanc ................................................. 68 Chapitre 14 Conception simple................................................................... 70 Chapitre 15 Critres de simplicit ............................................................. 75 Chapitre 16 Dcoupage d'une user story.................................................. 77 Chapitre 17 Dfinition de "prt" ................................................................ 78 Chapitre 18 Dfinition de 'fini' .................................................................... 79 Table des matires vii Chapitre 19 Dploiement continu.............................................................. 82 Chapitre 20 Dveloppement incrmental................................................. 84 Chapitre 21 Dveloppement itratif.......................................................... 85 Chapitre 22 Dveloppement par les tests ................................................ 86 Chapitre 23 Dveloppement par les tests client ..................................... 92 Chapitre 24 Entretien du backlog............................................................... 94 Chapitre 25 Equipe........................................................................................ 96 Chapitre 26 Estimation................................................................................. 98 Chapitre 27 Estimation relative................................................................ 100 Chapitre 28 Facilitation.............................................................................. 102 Chapitre 29 Gestion de versions............................................................... 103 Chapitre 30 Given - When - Then............................................................ 104 Chapitre 31 Graphe burn-down................................................................ 105 Chapitre 32 Grille INVEST......................................................................... 107 viii Chapitre 33 Intgration continue............................................................. 110 Chapitre 34 Itration.................................................................................. 115 Chapitre 35 Langage omniprsent (ubiquitous language).................... 117 Chapitre 36 Livraisons frquentes ........................................................... 119 Chapitre 37 Niko-niko................................................................................ 121 Chapitre 38 Objets fantaisie (Mock Objects).......................................... 123 Chapitre 39 Personas.................................................................................. 125 Chapitre 40 Planning poker....................................................................... 127 Chapitre 41 Points (estimation en) .......................................................... 129 Chapitre 42 Programmation en binmes................................................ 131 Chapitre 43 Radiateurs d'information..................................................... 136 Chapitre 44 Refactoring ............................................................................. 138 Chapitre 45 Responsabilit collective du code ...................................... 142 Chapitre 46 Rythme soutenable............................................................... 145 Table des matires ix Chapitre 47 Rtrospective jalon............................................................... 146 Chapitre 48 Rtrospectives d'itration................................................... 148 Chapitre 49 Runion quotidienne............................................................. 151 Chapitre 50 Rle - fonctionnalit - bnfice.......................................... 154 Chapitre 51 Salle ddie............................................................................. 155 Chapitre 52 Scrum de Scrums................................................................... 157 Chapitre 53 Story mapping........................................................................ 159 Chapitre 54 Tableau des tches................................................................ 161 Chapitre 55 Tableau kanban...................................................................... 164 Chapitre 56 Temps de cycle ...................................................................... 167 Chapitre 57 Test d'utilisabilit ................................................................. 168 Chapitre 58 Test exploratoire .................................................................. 170 Chapitre 59 Tests fonctionnels automatiss.......................................... 172 Chapitre 60 Tests unitaires automatiss ................................................ 176 x Chapitre 61 Trois questions ...................................................................... 178 Chapitre 62 Tches choisies ...................................................................... 179 Chapitre 63 User stories ............................................................................ 180 Chapitre 64 Vlocit ................................................................................... 186 ANNEXES Chapitre 65 Bibliographie .......................................................................... 188 Table des matires xi Chapitre 2 Remerciements Fdrant un rseau de comptences individuelles reconnues, mandat par des entreprises dveloppant un savoir-faire et une culture distincte bases sur ces comptences, mais agissant en toute indpendance et neutralit, lInstitut Agile a pour missions de dvelopper en France le march du produit Agile, de prsenter une dfinition claire et cohrente de ce que recouvre le terme Agile, de recenser les attentes du march, de mettre au point des programmes de collecte dinformations et de mesures sur les effets constats des pratiques dites Agiles. Pour plus d'informations: http://institut-agile.fr/ Merci tous ceux qui ont soutenu le projet de l'Institut Agile, commencer par les partenaires et soutiens financiers: Rfrentiel des pratiques Agiles 12 Remerciements personnels de la part de Laurent Bossavit tous ceux, qui ont un moment ou un autre donn un coup de pouce crucial: bien qu'il soit impossible faute de place de rendre chacun l'hommage qui convient, je tiens saluer Godefroy Beauvallet pour ses conseils et Chapitre 2: Remerciements 13 Xavier Warzee pour y avoir cru le premier. Merci galement pour leurs ides et encouragements Karim, Vincent, Romain, Benoit, Alex, Manu et Manu, Gilles, Jrme, Arthur, Colin et Alain. Merci pour leur amiti Bernard Notarianni et Jonathan Perret. Pour leur patience, Sophie, Axel, Erwan et Mika. Image de couverture: reprsentation en volume dite "Alexander", extraite de Wikimedia Commons, par l'utilisateur Bastianow d'aprs J. Scholten. Rfrentiel des pratiques Agiles 14 Chapitre 3 Guide de lecture La premire partie de cet ouvrage en prsente les motivations: pourquoi vouloir publier, en 2011, soit dix ans aprs la parution du Manifeste Agile, et alors que ne nombreux livres dj parus sur le sujet, un parcours encyclopdique travers les nombreuses pratiques dites "agiles"? Si vous souhaitez aller rapidement l'essentiel, vous pouvez commencer directement par le chapitre 5, prsentant le canevas des fiches consacres aux pratiques Agiles. Si vous prfrez prendre le temps de connatre les questions de fond qui sous-tendent le travail ralis, suivez l'ordre chronologique. Le premier chapitre aborde donc le positionnement de ces approches Agiles sous l'angle historique, en remontant aux origines de la discipline dont la plupart des personnes concernes se rclament encore aujourd'hui, le Gnie Logiciel. Le chapitre suivant est consacr notamment dcrire le mouvement Agile comme tablissant une rupture avec cet hritage; il s'attache mettre en lumire les diffrences les plus structurantes entre les deux courants de pense. Afin d'clairer la fois les enjeux du prsent livre et plus largement les perspectives d'avenir qui s'ouvrent, dans l'analyse de l'Institut Agile, ces nouvelles pratiques, le chapitre 3 tablit un bilan des annes 2001-2011 et cite quelques dfis restant relever. Au chapitre 4, nous verrons plus en dtail pourquoi les "pratiques Agiles" constituent la matire la plus intressante produite par ce mouvement au cours de cette dcennie. Le chapitre 5 aborde pour finir le canevas de description dtaille de ces diffrentes pratiques. Chapitre 3: Guide de lecture 15 La deuxime partie est consacre aux pratiques Agiles proprement parler. Abordes par ordre alphabtique, chacune y est dcrite selon le canevas prcdemment dcrit, de la faon la plus concise mais galement la plus claire possible. Rfrentiel des pratiques Agiles 16 Chapitre 4 Au commencement tait... le Gnie Logiciel De mme qu'il existe une Histoire de France ou une Histoire des sciences, il existe une Histoire, ft-elle brve, de l'activit qui consiste crer des logiciels. Mais contrairement au deux premires, on a parfois l'impression que ceux qu'elle concernent - nous, les programmeurs, analystes, dveloppeurs, ingnieurs; les testeurs, les chefs de projets, etc. - ne s'y intressent quasiment pas. Notre profession semble tourner le dos son pass. Ainsi des ides techniques nous sont-elles prsentes comme "neuves" et "rvolutionnaires" alors que, pour qui s'est pench sur l'historique de la discipline, il ne s'agit que de rchauff: des ides prsentes dans tel ou tel dialecte de Lisp ou de Smalltalk depuis trente ou quarante ans. (Si vous ne me croyez pas, penchez-vous sur les comparaisons entre XML et les "s-expressions" ou entre la Programmation Oriente Aspects et les MOP ou Meta-Object Protocols.) On pourrait aussi se demander combien, parmi ceux qui se rclament aujourd'hui du mouvement Agile, ont conscience de ses prdcesseurs, tels le RAD ou le Processus en Spirale d Barry Boehm. De faon gnrale, notre profession tend considrer toute ide ge de plus de cinq ans comme obsolte et digne de peu d'intrt, et c'est sans doute en partie pour cela qu'on a parfois l'impression que l'industrie du logiciel est le jouet de cycles qui relvent plus de la mode que du progrs. Chapitre 4: Au commencement tait... le Gnie Logiciel 17 RETOUR AUX SOURCES Pourtant, il semble impossible de comprendre les enjeux que recouvrent le terme "Agile", et les raisons qui ont pouss un nombre considrable de professionnels se mobiliser pour le faire connatre, sans en comprendre les racines lointaine, et son positionnement par rapport ces origines. Parmi les ides qui ont faonn les mtiers du logiciel, une l'a fait de faon particulirement forte et durable, l'ide du Gnie Logiciel. Le logiciel relve-t-il vraiment d'une activit d'ingnieur? La question, lancinante, revient comme un serpent de mer dans les confrences consacres au sujet, mais elle est rarement traite sous un angle historique. Rares sont ceux qui semblent conscients que le "logiciel" ayant lui- mme une histoire d' peine plus d'un demi-sicle, il a bien fallu inventer l'expression Gnie Logiciel; que celle-ci ne va pas de soi, et que l'application des techniques de l'ingnieur au domaine du logiciel relve, non pas des lois de la nature, mais d'une dcision laquelle il a fallu rallier divers groupes: des militaires, des scientifiques, des groupes industriels. Nous allons donc brivement rappeler la discrte histoire du Gnie Logiciel. C'est une excursion qui a de quoi satisfaire les esprits curieux, mme s'il devaient en ressortir plus convaincus que jamais de la pertinence de ce mariage. Mais nous verrons que cette histoire a de quoi alimenter bien des doutes... DE GARMISCH ROME On fait en gnral remonter l'histoire de la discipline l'anne 1968, et en particulier une confrence organise sous l'gide de l'OTAN dans le cadre enchanteur de Garmisch-Partenkirchen, une station de sports d'hiver, aux pieds des montagnes de Bavire. Il y eut non pas une mais deux confrences de l'OTAN sur le Gnie Logiciel, un an d'intervalle; mme les rares auteurs qui font rfrence la confrence de 1968 semblent ignorer celle qui se tient en 1969 Rome. Les actes des deux confrences sont disponibles sur le Web, dans une version PDF d'une qualit remarquable alors que la plupart des documents de cette poque sont en gnral simplement scanns, donc non indexs ni "cherchables". Ils mritent d'tre lus avec attention. (On y Rfrentiel des pratiques Agiles 18 trouve par exemple ce conseil de Peter Naur qui recommande de s'intresser aux ides d'un jeune architecte, Christopher Alexander. Le mme Alexander qui sera redcouvert vingt anx plus tard par un certain Kent Beck, donnant naissance au mouvement des Design Patterns.) Structurs d'une faon trs systmatique, ils couvrent la quasi-totalit des proccupations encore d'actualit aujourd'hui quant la faon de mener des projets dans le domaine du logiciel. Environ cinquante experts venus de onze pays sont prsents. Parmi les participants on compte des sommits comme Edsger Dijkstra (connu pour sa campagne contre le "goto" et en faveur de la programmation structure), Alan Perlis (crateur d'Algol et auteur de proverbes qui sont au logiciel ce qu'une certaine tradition japonaise est au jeu de Go) ou Peter Naur (co-crdit de l'invention de la notation BNF pour dcrire les langages de programmation). Ces documents sont loquents quant au degr de controverse que suscite la question du gnie logiciel. Voici une citation d'un participant: "La chose la plus dangereuse dans le domaine du logiciel est l'ide, apparemment presque universelle, que vous allez spcifier ce qu'il y a raliser, puis le raliser. Voil d'o viennent la plupart de nos ennuis. On appelle russis les projets qui sont conformes leurs spcifications. Mais ces spcifications s'appuient sur l'ignorance dans laquelle taient les concepteurs avant de dmarrer le boulot!" Les titres de la confrence de 1968 refltent un certain degr d'incertitude: "Rflexions sur le squencement de l'criture d'un logiciel", "Vers une mthodologie de la conception", "Quelques rflexions sur la production de systmes de grande taille". Certes la plupart des participants utilisent l'expression "Gnie Logiciel" comme si elle allait de soi, et des lacunes sont dj apparentes (on parle notamment assez peu du facteur humain), mais on peut deviner une vritable controverse sur les grandes lignes de ce qui proccupera cette discipline. En 1969 les titres des articles publis ont gagn en assurance. "Critres pour un langage de description de systmes", "La conception de systmes trs fiables en exploitation continue", etc. Mais c'est surtout en lisant entre les lignes qu'on dcle un changement, et notamment en lisant "The Writing of the NATO reports" de Brian Randell, une sorte de "making of" datant de 1996. Une drle d'ambiance rgne apparemment la confrence de 1969, mais on ne peut que la deviner dans la description demi-mot qu'en fait Randell: Chapitre 4: Au commencement tait... le Gnie Logiciel 19 Contrairement la premire confrence, ou il tait tout fait clair que le terme de Gnie Logiciel refltait l'expression d'un besoin plutt qu'une ralit, Rome on avait dj tendance en parler comme si le sujet existait dj. Et, pendant la confrence, l'intention cache des organisateurs se prcisa, savoir: persuader l'OTAN de financer la mise en place d'un Institut International du Gnie Logiciel. Cependant les choses ne se passrent pas comme ils l'avaient prvu. Les sessions qui taient censes fournir les preuves d'un large et ferme soutien cette initiative furent en fait domines par le plus grand scepticisme, au point qu'un des participants, Tom Simpson de chez IBM, crivit une superbe et courte satire intitule "Masterpiece Engineering" (Ingnierie du Chef- d'Oeuvre). Un article qui parlait, par exemple, de mesurer la productivit des peintres en nombre de coups de pinceau par journe. Et Randell d'ajouter que les organisateurs russirent le "persuader" d'omettre cet article satirique de Tom Simpson des actes officiels! L'acte de naissance dfinitif du Gnie Logiciel ayant ainsi t associ un acte de censure, Randell ajoute qu'il s'interdit pendant la dcennie qui suivit d'utiliser le terme, le jugeant injustifi. Il n'acceptera de revenir sur cette dcision que pour une confrence marquant en 1979 le dixime anniversaire de Rome, o il profita de l'occasion pour adresser Barry Boehm, alors la "nouvelle star" de la discipline, une srie de piques, que Boehm "ignora soigneusement, je suis navr de le rapporter, moins qu'il n'ait pas t en mesure de les reconnaitre comme telles". QUARANTE ANS DE CRISE Comment expliquer, malgr ces dbuts au mieux hsitants, le succs qu'allait connatre par la suite l'ide mme de Gnie Logiciel? Il est parfois difficile de faire le tri, s'agissant de ce sujet, entre ralit et mythologie. L'poque des pionniers tant relativement rcente, l'essentiel de ce qu'il en reste est constitu de ce que les historiens professionnels appellent la littrature primaire - des crits que nous devons ceux-l mme qui sont t les acteurs de ces vnements, qui ont particip aux projets ou assist aux confrences de cette poque. Le regard que portent des auteurs tel que Frederick Brooks ou Edsger Dijkstra sur le sujet est ncessairement partial: c'est sur leur Rfrentiel des pratiques Agiles 20 recommandation que la discipline se met en place. Plus rcemment, des historiens ont commenc proposer un regard plus distanci sur ces jeunes annes du Gnie Logiciel. L'un des facteurs qui contribuera pendant cette premire dcennie convaincre une large population de sy'intresser sera, selon ces historiens, l'utilisation permanente d'une "rhtorique de crise": on se rfre chaque occasion la "Crise du Logiciel". Cette soi-disant Crise se manifestait par divers aspects. Les projets de dveloppement dpassaient les dlais et budgets impartis, les logiciels produits taient de mauvaise qualit et leurs performances insuffisantes, ils ne rpondaient pas aux exigences exprimes, ils taient difficiles faire voluer. La situation tait catastrophique et il y avait urgence y mettre bon ordre! La ralit, telle que la rapportent les historiens, est plus nuance. D'une part, les seuls agiter le chiffon rouge de la Crise l'poque furent sans doutes les mmes personnes qui militrent pour la cration d'un Institut du Gnie Logiciel. Les actes des deux confrences, relvent les historiens, ne font quasiment pas rfrence une "crise" et certains des intervenants cherchent mme explicitement relativiser certains constats parmi les plus alarmistes. SUR-PLACE Plus de quarante ans aprs, les "symptmes" de la "crise" semblent persister, inchangs. D'importantes drives continuent frapper des projets informatiques de grande ampleur: ainsi Chorus), le nouveau systme d'information destin toutes les administrations franaises, dfraie la chronique en 2010 par ses drapages considrables. Le projet prvu sur quatre ans dmarre en Mars 2006, son cot annonc aux parlementaires l'origine est dj important: 600M. Ds le dbut 2008 apparaissent les premires drives et l'on apprend que des retards sont envisager, que le budget serait dpass. Fin 2008, une "mise au point" du ministre permet d'apprendre qu'en fait le budget communiqu ne tenait pas compte des cots de fonctionnement, chiffrs 100M annuels sur cinq ans: la facture serait donc de 1,1Md. Un petit oubli, en somme. (Un rapport parlementaire de juillet 2010, un peu inquitant, recommande "d'actualiser l'valuation du cot complet de Chorus" - ce qui laisse supposer que ce cot rel est encore inconnu l'heure actuelle...) Les dlais s'accumulent, et ds 2009 Chorus qui devait Chapitre 4: Au commencement tait... le Gnie Logiciel 21 tre dploy entirement partir de 2010 se voit repouss janvier 2011, et ce malgr une rvision la baisse de ses objectifs fonctionnels. Il y a pire: Chorus... ne fonctionne pas. Plus exactement son installation perturbe le paiement des factures aux fournisseurs des administrations. Alors que l'Etat gronde le secteur priv sur les dlais de paiement, son propre systme d'information met en difficult de trs nombreuses PME qui se retrouvent dans l'incapacit d'encaisser leur d: un comble! Est-ce une difficult transitoire? C'est en tout cas un transitoire qui dure... et la Cour des Comptes met fin 2010 des rserves sur l'ventualit que Chorus puisse un jour assumer pleinement la comptabilit de l'Etat franais. Ce n'est l que l'exemple le plus rcent et le plus visible, mais chacun au sein de la profession peut rapporter des "histoires de guerre" du mme type, concernant des projets parmi les plus petits et les plus simples aussi bien que les plus importants. Combien de livres, d'articles ou de prsentations dans la profession ne commencent-il pas par l'vocation du fameux (et controvers) rapport CHAOS, dit par le Standish Group, et qui est la source quasi systmatique des "statistiques" sur le taux d'chec des projets informatiques: vers la fin des annes 2000, moins d'un tiers des projets mens par les entreprises interroges pouvaient selon le rapport tre considr comme russis; un taux cependant en amlioration par rapport aux annes 1990 o un projet sur six seulement entrait dans cette catgorie. Cependant les chiffres et la mthodologie du Standish Group ont t vivement critiques. En effet, s'agissant de projets de dveloppement logiciel, ou mme plus gnralement dans les technologies de l'information en gnral, la mesure prcise de diffrentes quantits pertinentes qui servent d'indicateurs objectifs (productivit, dlais, ROI) est rendue difficile par la complexit mme du sujet. On peut donc difficilement se prononcer sur la ralit de la crise elle- mme, mais il est vident que le discours de crise a jou, et continue de jouer, un rle important de justification. MONOPOLE Malgr ce peu de succs apporter des solutions la "crise", la discipline devient une institution et continue bien se porter pendant les annes 70, 80, 90. Il faut dire (et, regret car ils sont passionnants, sans rentrer dans le dtail) que bien des bouleversements caractrisent ces dcennies, Rfrentiel des pratiques Agiles 22 qui rendent difficile l'valuation des progrs rellement accomplis. L'informatique des annes 1960 concerne encore surtout des systmes militaires ou scientifiques; elle va dans un premier temps se diffuser vers les milieux d'affaires, subir de profondes mutations lorsque s'imposent successivement l'ordinateur personnel, les interfaces graphiques, les rseaux d'entreprise et enfin l'Internet. De faon moins visible extrieurement, des innovations telles que la programmation objet ou UML seront tour tour accueillies comme "LA solution" tous les maux qui constituent la "crise". A chacune de ces rvolutions, chaque mode, succde une dsillusion, et la prise de conscience qu'une seule innovation ne saurait suffire: selon l'expression consacre "il n'y a pas de balle d'argent". (Ceux qui se dclarent sceptiques quant la ralit de la crise sont enclins dire: "tant pis, de toutes faons il n'y a jamais eu de loup-garou non plus!".) Voil le contexte dans lequel, discrtement d'abord avant d'clater au grand jour au dbut 2001, se dveloppe un nouveau courant (une nouvelle mode?) qui prendra le nom de "mthodes Agiles" l'issue d'une rencontre entre quelques auteurs, "gourous" ou consultants qui cherchent, bien que chacun d'une "chapelle" diffrente, une synthse entre leurs diffrentes approches. Cela se passe aux Etats-Unis, Snowbird, une... station de ski. L'histoire ne se rpte pas, dit-on, elle bgaie. Chapitre 4: Au commencement tait... le Gnie Logiciel 23 Chapitre 5 La rupture Agile Citons l'histoire officielle (dans la traduction qu'en propose Fabrice Aimetti): Du 11 au 13 Fvrier 2001, dans l'htel The Lodge de la station de ski Snowbird situe dans les montagnes Wasatch de l'Utah, dix-sept personnes se sont runies pour parler, skier, se dtendre, essayer de trouver un terrain d'entente et bien sr, manger. Ce qui en est sorti s'appelle le Manifeste du Dveloppement Agile de Logiciels. Y participrent des reprsentants de l'Extreme Programming, de SCRUM, de DSDM, de l'Adaptive Software Development, de Crystal, du Feature-Driven Development, du Pragmatic Programming, et d'autres personnes sensibles la ncessit de trouver une alternative aux pesants processus de dveloppement logiciel pilots par la documentation. Le ton est donn: le mouvement Agile se positionne d'emble en raction une situation juge insatisfaisante, et qui trouve pourtant son inspiration aux racines de la discipline du Gnie Logiciel: les "processus de dveloppement" sont excessivement "pilots par la documentation". Mais pourquoi cette approche "Agile" devient-elle une alternative, pourquoi ce moment? Et surtout, comment la caractriser? THORIE DE LA RUPTURE La thorie de la rupture est due Clayton Christensen qui la prsente en 1997 dans The Innovator's Dilemma. Le sous-titre, loquent, avertit Rfrentiel des pratiques Agiles 24 du risque que prsentent certaines innovations ou "ruptures technologiques": "lorsque de nouvelles technologies entranent la chute de grandes entreprises". Christensen distingue deux types d'innovation, l'innovation de continuit et l'innovation de rupture. La premire est caractrise par des produits qui renforcent, dans le contexte concurrentiel, la position dominante des acteurs dj bien placs sur ce march: ces produits sont jugs sur des critres de performance dj reconnus. Imaginez par exemple la dernire gnration des appareils photos numriques, qui passent de 8 12 megapixels. (Une innovation "rvolutionnaire" n'est pas ncessairement une rupture en ce sens, ainsi l'article Wikipedia consacr la thorie prcise que l'automobile fut une rvolution mais pas, dans ses effets sur les acteurs de l'conomie industrielle, une vritable rupture.) L'innovation de rupture se caractrise par l'ouverture de nouveaux marchs, et la mise en danger des acteurs dominants dans un march donn; elle propose quelque chose d'inattendu en dcalage avec les critres de valorisation dominants. L'histoire de la photo numrique ses dbuts est ce titre clairante, sa victime emblmatique tant Polaroid, l'un de ces noms de marque passs dans l'usage courant, tant son emprise sur un important segment du march tait complte. Pourtant, en 2001 Polaroid se mettait en faillite, pour ne renatre de ses cendres qu' la suite du rachat de la marque et presque uniquement de cela par des investisseurs cherchant profiter d'une image encore favorable. Pourtant, seulement dix ans plus tt, bien malin qui aurait pu prdire la photographie le bel avenir qui est devenu notre prsent: disparition inluctable non seulement des modles argentiques mais galement de tout un secteur d'conomie qui en dpendait, comme les petites boutiques qui assuraient le dveloppement de nos "ploches". Ainsi en 1991 le modle Fotoman, est selon une critique pourtant lucide "incapable de produire des images de qualit professionnelle". En noir et blanc et d'une rsolution maximum de 320x240, il cote la bagatelle de 1000$. Ce n'est en fait qu'un gadget, conseill aux personnes qui souhaitent s'amuser sur leur PC triturer et retoucher leurs photos. Comment un tel produit arrive-t-il, petit petit, s'imposer jusqu' vingt ans plus tard avoir totalement dtrn la gnration prcdente? Pour avoir un dbut de rponse, il faut comprendre que les acteurs dominants du march le sont en vertu de l'excellence de leurs produits selon des critres de performance apprcis par la clientle: en Chapitre 5: La rupture Agile 25 l'occurrence, la finesse de l'image, le bon rendu des couleurs, etc. De ce point de vue la photo numrique prsente des avantages (facilit de stockage, moins d'usure mcanique, manipulation numrique) mais ceux- ci ne sont pas suffisant pour l'emporter face aux concurrents dominants. Oui, mais certains marchs n'ont que faire de ces critres de performance majeurs. Parmi les premiers clients auxquels s'adresse le numrique on trouve des fabricants d'avions, qui doivent prendre leurs appareils sous toutes les coutures pendant leur construction pour des raisons rglementaires, et vont donc faire des conomies considrables sur le dveloppement chimique, mais ne se soucient gure d'une rsolution trs fine. Ou bien encore des journalistes qui vont privilgier la transmission rapide d'une information brlante mais ne sont que peu handicaps, compte tenu des qualits d'impression, par une rsolution limite ou par le noir et blanc. L'innovation de rupture est donc porte par des produits initialement totalement inadquats quand on les juge l'aune des critres de performance tablis, mais qui vont conqurir un march de niche puis se dvelopper. L'innovation plus classique, "de continuit", permet progressivement ces produits de rattraper tout ou partie de leur retard sur ces critres dominants, et c'est ainsi qu'ils peuvent finir par mettre en danger les leaders du march. Alors, en quoi le dbat entre "Gnie Logiciel" et "Agile" peut-il tre considr comme une instantiation de ce modle? Certes, il faut faire preuve d'un peu de prudence: considrer l'un et l'autre comme des "produits" en concurrence sur un "march" relve, sinon de la mtaphore, d'une moins d'une interprtation assez libre de ces termes. Je trouve pourtant que le modle s'applique plutt bien, et permet d'expliquer non seulement le succs initial de l'approche Agile mais galement ses volutions au cours des dernires annes. (Evolutions qui sont souvent mal connues des personnes qui pratiquent ces approches et mme de certains experts: toujours ce blocage sur l'histoire...) L'ide est donc d'analyser le Gnie Logiciel comme le produit dominant, et d'expliquer cette domination par le fait qu'il rpond aux critres exigs par le march. L'histoire du projet Chorus nous suggre que "le succs du projet" ne fait pas ncessairement partie de ces critres... alors quels sont-ils? Selon quel critre de performance le discours classique du Gnie Logiciel, issu des confrences de 1968 et 1969, est-il, malgr ces checs, jug satisfaisant, tel point qu'on enseigne encore le cycle en V dans les universits? Rfrentiel des pratiques Agiles 26 Pour obtenir une rponse, il faut se repencher sur les origines du Gnie Logiciel dans la "crise du logiciel". Celle-ci se manifeste initialement par des difficults fournir des prvisions fiables quant aux projets, souvent lies des allers-retours autour des exigences. Le critre de performance exig de tout ce qui se prsente comme une solution ladite crise est, en un mot, la possibilit de contrler tout ala. On va privilgier la traabilit, la documentation, et le respect des contraintes que ces outils permettent de suivre le mieux: dlais (et donc cots) matriss, spcifications respectes. "A NE PEUT PAS MARCHER" Cette phrase qui constitue le leitmotiv d'un des chapitres du livre de Kent Beck illustre bien en quoi l'approche Agile joue le rle du produit "gadget", totalement insuffisant, dans l'analogie avec la photo numrique autour des annes 1990. Planifier en permanence, itrativement, a ne peut pas marcher, on ferait peur au client (pas assez de contrle). Mettre une nouvelle version en exploitation tous les mois ou deux, a ne peut pas marcher, on ferait peur aux utilisateurs (pas assez de contrle). Dmarrer le dveloppement avec une vision architecturale rsume en une mtaphore, a ne peut pas marcher, et si on s'tait tromps? (Pas assez de contrle.) Ne pas anticiper sur les besoins futurs lors de la conception, a ne peut pas marcher, on se retrouvera coincs (pas assez de contrle). Faire crire les tests par les programmeurs, a ne peut pas marcher, tout le monde sait que les programmeurs ne peuvent pas tester leur propre travail et que le test est une profession part entire (pas assez de spcialisation, donc de contrle). Travailler en binmes, a ne peut pas marcher, a va prendre deux fois plus longtemps, et ils risquent de ne pas s'entendre (pas assez de contrle, mais aussi une vision du dveloppement comme activit mcanique, rduite la saisie de code au clavier). Pour la plupart ces arguments sont lgitimes, de mme qu'il est lgitime de condamner en 1990 la nouvelle technologie numrique comme tout fait inadquate. Chapitre 5: La rupture Agile 27 VALEURS CLASSIQUES CONTRE VALEURS AGILES L'approche Agile quand elle est initialement destine des projets qui ne se soucient que trs peu de contrler et de tracer. On privilgie la communication directe et orale avec le client, lui permettant d'ajuster sa demande en temps rel; la qualit du produit et sa pertinence pour rpondre aux besoins rels (plus qu' ceux exprims), la matrise des priorits fonctionnelles sous contrainte de dlais. Ne pas chercher faire concurrence aux "mthodologies" dominantes et aux approches de management orientes sur les production documentaires de ces dernires permet aux "agilistes" comme on ne les appellera que plus tard de s'affranchir de nombreuses contraintes, et d'inventer un mode de dveloppement trs souple, bas sur des itrations courtes rgies par la rgle du "timebox" (on cherche en faire le maximum en temps imparti plutt qu' terminer un objectif fixe quitte jouer les prolongations), dcompos par incrments fonctionnels. Les phases amont et le travail documentaire sont rduits l'essentiel, c'est--dire ce qui permet l'quipe de partager une mme comprhension de l'objectif. Le chef de projet perd ses prrogatives: il n'attribue plus les tches et ne joue plus les intermdiaires, le client tant prsent sur place. Des dispositifs techniques (automatisation des tests, intgration continue) limitent au minimum les cots d'intgration et de refonte. Une mtaphore souvent employe compare l'quipe Agile des musiciens de jazz qui improvisent, par rapport leurs collgues dans une formation classique: l'absence de contrle n'implique pas moins de technicit, et de satisfaction procure par le rsultat final. Une recherche textuelle dans les actes des confrences de l'OTAN (NATO1968), compare la mme recherche (grce Google Books) dans les actes de la confrence europenne sur XP et les processus agiles (XP2008) permet d'objectiver quelque peu ces diffrences de valeurs: le mot-cl "control" apparat plus de 100 fois dans NATO1968, 27 fois dans XP2008 (et souvent dans le contexte "groupe contrle vs groupe exprimental", pour les papiers scientifiques le mot-cl "team" apparat plus de 100 fois dans XP2008, seulement 17 fois dans NATO1968 Rfrentiel des pratiques Agiles 28 le mot-cl "skill" apparat seulement 5 fois dans NATO1968, 15 fois dans XP2008 le mot-cl "motivation" apparat seulement une fois dans NATO1968 ("la motivation de cette confrence..."), 12 fois dans XP2008 et pour la plupart au sens "motivation de l'quipe" Le critre de performance privilgi par l'approche Agile, ce n'est plus le contrle, mais bien l'exploitation du talent individuel et collectif. Lorsque les approches Agiles se font connatre sous ce nom, en 2001, ces valeurs sont codifies sous la forme du fameux Manifeste Agile. AGILE, DIX ANS APRS Mais depuis 2001, les pratiques ont volu: le challenger Agile a progress sur plusieurs critres de performance y compris ceux reconnus par le modle dominant. C'est exactement ce que prdit la thorie de la rupture, pourtant cette volution est en grande partie invisible, trs peu reconnue par les professionnels qui ont rejoint la communaut rcemment et ignore mme d'un certain nombre de vtrans. (Ou bien, elle se traduit pour certains par un inconfort, un sentiment que "Agile c'est devenu n'importe quoi".) Plusieurs pratiques considres dsormais comme au coeur de Scrum sont ainsi apparues depuis 2001, postrieurement au terme Agile lui- mme: par exemple les Rtrospectives et le Task Board, deux pratiques trs proche du "noyau" mais pourtant d'importation relativement rcente. Quant Extreme Programming son statut de "work in progress" est acquis depuis la deuxime dition du livre de Kent Beck. Des pratiques sont apparues pour combler par exemple des lacunes dans la prise en compte de l'ergonomie par les approches Agiles, ou encore pour donner des directives plus prcises sur la faon d'organiser les "phases amont", le recueil des exigences: on parle de Personas, de Charte Projet, de Story Mapping. Initialement vcue comme une obligation draisonnable, la pratique Extreme Programming dsigne l'origine par le conseil "faites crire vos tests de recette par le client" a beaucoup volu et donn naissance des coles et appellations diverses: ATDD ou pilotage par les tests client, BDD ou Spcifications Excutables. Bien que ce sujet soit actuellement en pleine fermentation, une tendance se dgage clairement: ces volutions commencent rpondre de faon satisfaisante aux Chapitre 5: La rupture Agile 29 exigences de formalisation et de traabilit qui sont l'apanage des organisations les plus exigeantes en termes de contrle. Des pans entiers de pratiques ont enfin servi occuper de nouveaux terrains. En 2001, Scrum et XP se focalisent sur de petites quipes colocalises dont la proccupation presque exclusive est le dveloppement dans un contexte projet: la "date de fin" est une des proccupations majeures, on conoit le projet comme un effort unique au-del duquel l'quipe passe autre chose. Ce n'est qu'au fil du temps que la recherche d'adaptation des approches agiles d'autres contextes conduit explorer des pratiques alternatives. Ainsi l'approche Lean et Kanban peut-elle trouver un terrain d'application fertile parmi les quipes charges de maintenance ou de TMA. La communaut Agile voit aussi se dvelopper des mouvements visant repenser d'autres mtiers, l'image de DevOps qui runit des admin systmes sensibles aux volutions du dveloppement. AGILE DANS DIX ANS? En 2010, la photo numrique a entirement remplac la technologie prcdente (et une nouvelle mutation s'amorce, celle du cinma, mais c'est une autre histoire). Peut-on imaginer un avenir comparable pour les approches Agiles? Il convient de rester prudent. D'une part, on apprend vite quand on s'intresse l'histoire et la sociologie des sciences et des techniques que le progrs n'est jamais gagn d'avance. Rejet par toute la communaut mdicale de son temps, Semmelweiss ne fut reconnu comme un pionnier de l'hygine mdicale qu'aprs avoir t pouss une dpression nerveuse qui lui fut fatale. Il faut du temps, beaucoup de travail et sans doute un peu de chance pour qu'une ide s'impose de manire irrversible; le plus simple est sans doute encore de considrer que tout est rversible. Il existe une autre raison d'tre prudent: le statut de "challenger" ne confre pas automatiquement l'infallibilit de ceux qui se rangent sous sa bannire. Comme le disait Carl Sagan: "They laughed at Columbus, they laughed at Fulton, they laughed at the Wright brothers. But they also laughed at Bozo the Clown." On s'est moqus de Christophe Colomb, de Robert Fulton - l'inventeur du bateau vapeur - des frres Wright, et de Semmelweiss. Mais on s'est aussi moqus de tout un tas de gugusses que l'histoire a eu bien raison d'ignorer. Rfrentiel des pratiques Agiles 30 Notamment, certaines lacunes persistantes continuent plomber la communaut Agile, et risquent de mettre en pril l'avenir du sujet. Chapitre 5: La rupture Agile 31 Chapitre 6 Quel avenir pour les approches Agiles? En dix ans, de 2001 2011, les approches dites agiles pour le dveloppement de logiciels (Extreme Programming, Scrum) ont chang de statut: initialement considres comme marginales, elles sont dsormais perues comme lune des alternatives majeures l'interprtation traditionnelle d'une discipline, le gnie logiciel, qui savre incapable de remplir les promesses sans doutes excessives avances lors de la confrence fondatrice de 1968. En France notamment, de nombreux cabinets de conseil remportent un succs croissant en rpondant lapptence dentreprises de tous profils pour une expertise sur ces stratgies, vues comme mieux capables de rpondre au contexte de crise et dinstablit actuel. Une rupture, plus qu'une simple volution, semble se dessiner. Pour autant, ces approches, explores essentiellement sur le terrain par des intervenants de projets de toutes sortes, sont encore mal comprises par le public quelles visent, souvent mal expliques, leurs bnfices attendus spcifis de faon trop vague, de sorte que beaucoup dquipes qui sy essayent font fausse route dans leur application; avec pour consquences que le march quelles reprsentent tarde se dvelopper, et la promesse dune amlioration globale dans lindustrie du logiciel semble toujours aussi lointaine. Rfrentiel des pratiques Agiles 32 AGILE: DES VALEURS OU DES PRATIQUES? Un dbat agite rgulirement les listes et forums de diffusions destines aux spcialistes du sujet: "Qu'appelle-t-on Agile, finalement; s'agit-il d'une philosophie, de valeurs, ou de pratiques concrtes?" Les agilistes forment ce qu'il convient d'appeler une "communaut", le terme consacr ds lors qu'un nombre important de personnes, communiquant via Internet, s'intressent un mme sujet. Le terme peut sembler intrinsquement flatteur: il voque respect mutuel, solidarit. Pourtant, il n'est pas anodin, car il sous-tend parfois des connotations moins agrables: fermeture sur soi-mme, rejet des "autres". En dehors de cette communaut justement, des voix s'lvent parfois pour poser la question plus brutalement: "Est-ce que a veut dire quelque chose, Agile- avec-un-grand-A?" A cette question, et justement pour viter de trancher d'une faon trop dogmatique, il convient de rpondre par une autre question: "Dans une bonne bouteille, vous buvez l'tiquette?" Ce qui est important dans l'ensemble certes un peu htroclite de notions associes au terme "Agile", ce n'est videmment pas le mot "Agile", de la mme faon que ce qui nous procure du plaisir dans une bonne bouteille de vin, c'est (en principe) son contenu. En principe? Oui, une des vertus de cette analogie, c'est de nous rappeler que trop souvent c'est bien de l'tiquette qu'on se dlecte. On appelle "effet de halo" le biais cognitif qui nous fait trouver plus plaisant un produit lorsqu'on sait qu'il provient d'une "bonne" marque, alors mme que si nous faisions l'essai l'aveugle nous ne saurions pas distinguer une piquette d'un cru la mode. Sans jeter la pierre personne, le fait est que nous courons un risque trop parler des tiquettes: Agile, Lean, Scrum, XP... On entend trop souvent des choses parfaitement absurdes, par exemple "Lean est le successeur d'Agile". C'est un contre-sens pour qui connat le contenu qu'on dsigne par le terme Agile: un ensemble de pratiques, certes pas toutes de la mme origine, certes pas toutes aussi largement connues et pratiques, mais dont statistiquement, en interrogeant un assez grand nombre de personnes faisant partie de la communaut depuis longtemps (cette appartenance pourrait se dterminer par un critre concret tel que la participation des confrences), le recouvrement nous donnerait une ide assez prcise. Citons en vrac, et pour l'exercice: le dveloppement par les tests (TDD), le refactoring, l'automatisation du build, l'intgration continue, la Chapitre 6: Quel avenir pour les approches Agiles? 33 conception incrmentale, les User Stories, les tests de recette, les critres "Done", les Personas, le Story Mapping, le Planning Poker, les itrations timeboxes, les rtrospectives, le tableau des tches, le libre choix des tches, la runion quotidienne ou "mle", la programmation en binmes, les demandes d'aide explicites... Parmi les approches dites Agiles on peut effectivement recenser certaines dont les prconisations sont des sous-ensembles de cette longue liste: Scrum et XP notamment. Si on se pose la question de savoir de quel mode de pense sont issues les pratiques Agiles, alors oui, on retombe sur quelque chose qui a de nombreuses affinits avec le discours Lean. Pour autant, le recouvrement en termes de pratiques est relativement faible. Or, soyons clair l-dessus, ce qui fait le succs ou non d'un projet, ce n'est pas le nom du discours dont on se revendique, l'attachement identitaire des membres de l'quipe: "nous sommes Agiles" ou "nous sommes Lean". Ce qui fait le succs d'un projet, c'est ce que font les gens! De ce point de vue, force est de constater que beaucoup d'quipes se proclament "Agiles" alors mme qu'elles peinent appliquer de faon comptente des pratiques aussi lmentaires que le refactoring, ou qu'elles rvlent lorsqu'on interroge les ingnieurs des contresens sur des notions de base comme la vlocit. Une partie de ce dficit est mettre sur le compte de la communaut Agile elle-mme. Pendant de longues annes, elle ne s'est que peu proccupe de donner une description systmatique, dtaille, cohrente et mise jour des pratiques dsignes par le terme "Agile". C'est justement ce constat qui a motiv l'ouvrage que vous avez en mains. LE PROJET DE L'INSTITUT AGILE: UN AVENIR POSSIBLE A quoi pourrait ressembler un march des prestations informatiques dans lequel les approches Agiles auraient pleinement trouv leur place ? les entreprises consommatrices qui sy intressent trouveraient une information claire, cohrente, neutre et indpendante de tout discours commercial sur ce que recouvre rellement le terme Agile - ce Rfrentiel tant un dbut de rponse, sans doute complter Rfrentiel des pratiques Agiles 34 les entreprises prestataires comptentes dans le domaine Agile bnficieraient dune reconnaissance de ces comptences et dun accs facilit aux contrat les exigeant cette reconnaissance proviendrait notamment, au travers de partenariats entre les grandes SSII et les acteurs aux comptences les plus pointues, du succs reconnu de projets de rfrence notables par leur chelle ou leur importance les bnfices rels de ces pratiques feraient lobjet dtudes empiriques, galement ralises de faon neutre et indpendante, agrgeant des chantillons statistiquement reprsentatifs ces lments empiriques permettraient dune part de justifier lutilisation des approches Agiles, mais aussi dinflchir leur volution au fil du temps, vers plus defficacit les parcours de formation permettant dobtenir les comptences ncessaires la mise en oeuvre de projets Agiles seraient identifis, afin de pouvoir recruter les comptences appropries pour ces projets le milieu de la recherche et de lenseignement, en lien avec lindustrie, contribuerait pleinement la consolidation et lvolution des connaissances et comptences dans ce domaine pour autant, lensemble de cet cosystme resterait fidle ce qui est la fois la particularit et la valeur de la dynamique Agile, savoir dtre avant tout un mouvement de terrain initi par des intervenants oprationnels (dveloppeurs, chefs de projet) et qui sappuie sur leur exprience au quotidien. LES OBSTACLES SURMONTER L'analyse faite plus haut du discours Agile, replac dans le contexte historique plus global qui est celui du Gnie Logiciel, et vu sous l'angle de la thorie de la rupture, claire un certain nombre d'obstacles qui peuvent encore empcher cette situation de se raliser. L'obession persistante de la communaut pour le sujet de la certification continue de mener bataille sur un terrain, le contrle des qualifications, o elle reprsente prcisment ce qu'il ne faut pas faire, une concurrence frontale au modle dominant. Le mouvement Agile doit trouver des solutions cette question lancinante, mais des solutions qui soient compatibles avec sa propre philosophie. Des modles ont t proposs, inspirs notamment par le succs des "rseaux sociaux": ils Chapitre 6: Quel avenir pour les approches Agiles? 35 ont pour nom WeVouchFor (dfunt), Entaggle (naissant). La version Web du prsent Rfrentiel des pratiques servira de base l'Institut Agile pour proposer, sans prtentions, des outils permettant Il faut rpondre enfin une autre question lancinante, celle du modle contractuel. Nous continuons dire que le contrat forfaitaire est un frein l'adoption des pratiques Agiles en France, mais quelle solution proposons-nous? La prolifration de jargon rend difficile la conversation au-del du cercle des initis; la communication sur les pratiques Agile est brouillonne et trop centre sur les tiquettes: Scrum vs Kanban vs Lean vs XP. Le prsent travail est un dbut de rponse, mais l'Institut Agile veut encourager ceux qui prsentent la ralit du terrain, les lments concrets et visibles qui au sein d'une quipe permettent d'identifier les pratiques Agiles et les bnfices qu'elles apportent. A ce sujet, il est regrettable que l'une des critiques les plus courantes du mouvement Agile soit dsormais la suivante: "Depuis 10 ans, il n'y a toujours pas de chiffres probants". La communaut Agile a dsormais suffisamment d'ampleur pour tre en principe capable de fournir ces chiffres. Certes, il y a dix ans, la demande "montrez-nous vos statistiques" pouvait raison tre rejete comme un discours de dlgitimation, une faon de remettre leur place ces "hippies du logiciel". Mais nous ne sommes plus en 2001, nous sommes en 2010; les lments empiriques sont ncessaires, non seulement pour tayer ce que nous avanons, mais aussi pour faire le tri entre celles des pratiques qu'il faut conserver et celles qu'il faut modifier ou liminer de notre discours. Non seulement ncessaires, mais disponibles, pour peu que nous nous donnions la peine d'aller les chercher. Dans cette logique, il est critique que la communaut Agile se rapproche de la communaut de la recherche et de l'enseignement. Pour l'instant, rares sont les chercheurs qui s'intressent l'Agilit, tout simplement parce que les travaux dans ce domaine ne trouveraient pas tre publis. Ceci pourrait tre rpar en entamant une dmarche explicite pour faire de ce sujet une discipline soeur, voire concurrente, du Gnie Logiciel. Aprs tout, cette dernire a pu persister pendant 40 ans sans solutionner les difficults qui ont motiv sa cration... il est temps qu'elle subisse la concurrence. Cette liste n'est sans doute pas exhaustive mais suffirait probablement tracer une feuille de route pour les approches Agiles au cours des 10 ans venir. Rfrentiel des pratiques Agiles 36 Chapitre 7 Un capital: les pratiques Agiles La question "sommes-nous Agiles" n'a que peu d'intrt. Bien plus importante est la question "qu'avons-nous appris, qui nous permet dans la pratique de mieux russir nos projets?" C'est la rponse cette question qui semble le mieux cerner la contribution du mouvement Agile, un capital progressivement enrichi au cours des dix annes coules. On peut tenter de le structurer un peu en ajoutant: ce capital se compose de principes, concepts, pratiques et comptences. Principes, concepts, pratiques et comptences : voici rsums, par ordre croissant d'importance, les lments qui font le contenu de l'approche Agile. Les principes, c'est ce qui nous proccupe quand on s'arrte pour rflchir; les concepts, ce sont les dfinitions auxquelles on revient pour viter de se tromper; les pratiques, c'est ce qui nous distingue visiblement d'autres quipes; mais le plus important reste les comptences, c'est--dire que nous nous attachons amliorer. Lors de la runion o fut crit le fameux Manifeste, c'est cette question qui animait les participants. Leur objectif tait de dcrire leurs points de convergence les plus forts possibles: c'est une dmarche qui les conduisait ncessairement une formulation un peu abstraite, un peu loigne de la ralit quotidienne des projets qu'ils vivaient alors. Ce sont donc les "douze principes" rputs sous-tendre la pratique Agile. Les principes fournissent un garde-fou utile. Si je m'aperois que la mise en place de pratiques censment Agiles a eu pour rsultat de dmoraliser toute l'quipe, le cinquime principe, "btissez le projet autour de personnes motives", m'avertit qu'il y a probablement une Chapitre 7: Un capital: les pratiques Agiles 37 contradiction quelque part. A tout le moins, je dois le prendre comme un srieux avertissement, envisager que j'ai pu faire fausse route. Mais on ne peut pas construire un projet sur la seule base de quelques principes. Admettons, nous somme tous d'accord pour "satisfaire le client en livrant tt et rgulirement des logiciels utiles". Cela ne constitue pas un conseil oprant, ou comme on le dit en anglais avec beaucoup de pertinence, "actionable". C'est comme si on vous conseillait, pour gagner en bourse: "achetez des actions lorsque les prix sont bas et revendez-les lorsque les prix sont hauts". Parfaitement juste et sens, mais aussi parfaitement inutile: on demande immdiatement comment? Les concepts doivent tre matriss sous peine de contresens fatals. Scne vcue: un "Scrum Master" nouvellement certifi dbarque sur une liste de diffusion et demande, "est-il raisonnable de fixer pour le prochain Sprint une vlocit de 80% parce qu'un membre de l'quipe est absent?". Des questions de ce type mettent mal l'aise quant l'efficacit et la qualit des formations! La mise en place d'une approche Agile exige de connaitre un peu de thorie. Pour acqurir un concept thorique il suffit le plus souvent d'en recevoir la dfinition, par exemple "la vlocit est obtenue en faisant le total des points (estimations) associs aux User Stories qui ont t termines dans l'itration qui vient de s'achever". Cette dfinition suffit identifier les erreurs de notre jeune Scrum Master; la vlocit est quelque chose qui se mesure, non quelque chose qui se dcrete l'avance; c'est une mesure qui s'exprime dans la mme unit que les estimations, donc des points ou des hommes-jours mais en aucun cas un pourcentage. Le rflexe qui joue est le mme que celui du physicien qui on annoncerait une vitesse exprime en mtres carrs: ce n'est pas la peine de vrifier le calcul, il faut d'abord rectifier une incomprhension thorique. Nuanons quand mme le propos: certains des termes utiliss pour dcrire Scrum ou XP exigent plus qu'une dfinition brute, il faut comprendre comment les mettre en relation. La communaut Agile affectione les simulations de projet comme outil pdagogique pour garantir que des termes comme vlocit ou itration sont bien compris. Les pratiques, c'est ce dont on peut constater la mise en place sur le terrain, de faon visible. Par exemple, une heuristique souvent utile pour juger si une quipe prend au srieux l'approche Agile: les murs de la salle de travail sont-ils recouverts de tableaux blancs remplis, de grandes feuilles de papier chargs de Post-It, de documents divers relatifs Rfrentiel des pratiques Agiles 38 au projet et mis jours rcemment? La prsence de ces indices n'est videmment pas une garantie de succs, mais elle met en vidence certaines pratiques communes parmi les quipes Agiles: utilisation d'un tableau de tches par exemple. Ou bien encore, passer un peu de temps avec un dveloppeur, et constater quelques diffrences visibles entre son travail et ce qu'on a vu faire ailleurs. Lorsqu'il programme, on le voit systmatiquement se proccuper de tests unitaires automatiss, qui se matrialisent par une "barre verte" ou "barre rouge" dans l'outil qui gre ces tests. Ou bien, on remarque qu'il ne travaille que rarement seul, mais le plus souvent avec un autre dveloppeur assis au mme bureau; il ne travaille pas en silence mais explique (sans trop lever la voix pour ne pas perturber d'autres binmes) le raisonnement derrire le code qu'il propose son collgue. Les comptences, c'est ce qu'on peut voir quand on examine de plus prs certaines pratiques (mais pas toutes), ce sont celles parmi les pratiques qui amnent distinguer des niveaux de performance. Telle quipe est meilleure que l'quipe voisine dans le domaine de la conception volutive. Tel dveloppeur est plus dou qu'un autre pour le refactoring, il l'applique de faon plus fluide, une plus grande chelle, avec plus de rapidit. Certaines pratiques ne sont pas ncessairement des comptences: d'un certain point de vue une runion de type "stand-up" ou "daily Scrum", c'est simplement une runion. On constate, ou non, que l'quipe se runit une fois par jour heure fixe pour changer sur les progrs accomplis. Par contre on peut considrer que l'animation de cette runion est une comptence. Si cette comptence est prsente cela se traduit par une runion courte et le sentiment (subjectif, certes) qu'elle a t utile. Si cette comptence fait dfaut, la runion peut s'terniser et sembler contre-productive. Attention, "animer un stand-up court" ne dcrit pas une comptence! On prfrera quelque chose comme: "telle personne est capable d'quilibrer les temps de parole lors d'une runion, en encourageant les plus timides contribuer et les plus extravertis se limiter". Cette comptence s'appuie sur de l'observation (il faut avoir not qui a parl ou pas parl) et sur de l'autorit (adopter le ton juste lorsqu'on demande quelqu'un de rendre la parole: ni minauderie ni clat de voix). Conclusion: pour pouvoir obtenir les bnfices d'une approche Agile, il est important d'avoir accs une description approfondie et dtaille du contenu de cette approche, avec une attention particulire aux pratiques et aux comptences qui, sans doute parce qu'elles sont plus Chapitre 7: Un capital: les pratiques Agiles 39 difficile dcrire finement, ont jusqu' prsent surtout fait l'objet d'une "tradition orale", d'un apprentissage par la transmission individuelle. Mme si cette dernire garde son importance dans la culture Agile, elle ne peut que bnficier d'un corpus crit, si celui-ci est soigneusement ralis et entretenu. PRATIQUES AGILES: PRCAUTIONS D'UTILISATION Attention, terrain min. Nous venons d'exposer que pour tirer parti des approches Agiles, il tait plus efficace de s'intresser en priorit aux pratiques: ce que font les quipes et les individus; les principes servant plutt de rgles gnrales pour vrifier la cohrence de ces actions. Pour autant, il y a un risque majeur trop se focaliser sur ces pratiques: celui de tomber dans l'imitation, ce que l'on connait sous le nom de Culte du Cargo, en rfrence ces tribus mlansiennes qui, durant la seconde guerre mondiale, voyaient les militaires japonais et amricains construire des pistes d'atterrissage et des tours de contrle. Activits systmatiquement suivies de l'arrive d'avions charges de cargaisons de vivres et autres objets sophistiqus. Lorsque la guerre cessa, et faisant le lien logique entre l'activit et son rsultat, certains chefs tribaux promirent leurs ouailles la reprise des livraisons: il suffisait pour cela... de construire des rpliques en bambou des tours et des pistes! On aurait tort de se moquer, tant on retrouve souvent la mme attitude au sein d'quipes et d'entreprises dans le domaine du logiciel. "Chez Goopple les quipes utilisent des pratiques Agiles: du TDD, des rtrospectives, des itrations. Et regardez leur valorisation en bourse! Chez nous aussi, faisons du TDD, des rtrospectives et des itrations. On devrait avoir les mmes rsultats." (De mme pour l'approche "classique" des projets de dveloppement: les botes qui marchent bien font un contrat, puis un cahier des charges, puis une conception technique dtaille, puis implmentent et testent, alors on va faire la mme chose. Ainsi se perptue une "mthode" qui, en ralit, ne fonctionne pas.) L'utilisation judicieuse des pratiques et des comptences proposes par la communaut Agile exige d'abord de bien connatre les mcanismes par lesquels on produit du logiciel, puis de comprendre en quoi les pratiques qu'on souhaite utiliser modifient ces mcanismes. Rfrentiel des pratiques Agiles 40 Si l'on ne se proccupe pas du tout de la question sous-jacente, "qu'est-ce que c'est, finalement, que cette activit qui consiste produire du logiciel", on se retrouve dans une situation analogue celle des tribus Mlansiennes, qui voient arriver "magiquement" du cargo mais ignorent tout de la formidable complexit du systme industriel qui, des milliers de kilomtres, est responsable de la production de ces richesses. Voici donc, en version courte, la notice d'utilisation des pratiques Agiles: On dploie une pratique dans le but d'en obtenir des bnfices bien identifis; l'hypothse selon laquelle nous obtiendrons ces bnfices doit tre justifie par un mcanisme suppos (on pourrait aussi dire une modlisation de l'activit de dveloppement) qui nous permet de penser que cette pratique aura les bnfices attendus. L'utilisation sur la dure de cette pratique ou comptence doit tre soumise une vrification empirique. Si nous n'obtenons pas, dans un dlai pralablement tabli, les bnfices attendus d'une faon que nous pouvons un tant soit peu objectiver, alors il nous faudra, d'une part abandonner ou modifier cette pratique, d'autre part remettre en question notre comprhension des mcanismes. La question "qu'est-ce que c'est que la production de logiciel" est videmment trs vaste, mais on ne peut pas en faire l'conomie. Pour tre utile, la description des pratiques Agiles doit faire le lien entre la nature de cette activit d'une part, les "lois" et les contraintes qui la rgissent, et d'autre part les bnfices attendus et le raisonnement qui nous laisse penser que ces pratiques apporteront ces bnfices. Agilit en kit: les outils de montage Une autre raison pousse vouloir donner un coup de projecteur sur les pratiques Agiles, plutt que sur les tiquettes Scrum, XP, etc. Chacune de ces diffrentes approches est prsente comme un tout: un ensemble de pratiques qui vont donner un bnfice maximal si on les met en place ensemble. Oui, mais vouloir passer d'un seul coup de "pas Agile du tout" "tout Scrum" ou "tout XP" est, du point de vue humain et managrial, une situation trs rare. Elle peut se produire lorsque les quipes sont en crise et sont prtes tout pour en sortir; ou encore lorsque des gens se retrouvent pour un nouveau projet qui ont dj utilis Scrum ou XP prcdemment. Mais la situation encore la plus courante est celle Chapitre 7: Un capital: les pratiques Agiles 41 d'quipes et d'entreprises qui veulent bien mettre un pied dans l'eau, mais pas plonger la tte la premire. Une premire ide est d'appliquer la logique Agile la transition elle- mme: "Adoptez la pratique qui vous semble la plus importante, puis itrez". Ce type de conseil a un intrt limit, d'une part parce qu'il n'est justement pas vident de dterminer quel outil "agile" est pertinent dans telle ou telle situation, d'autre part parce qu'une seule pratique utilise en isolation peut avoir des bnfices marginaux. Enfin, il existe un risque que le discours consistant dire "cette pratique ne s'applique pas dans mon contexte" serve de prtexte ne pas se remettre en question. Pour viter les cueils du type "Culte du Cargo", nous voudrions une dmarche qui permette de dployer, dans un contexte donn, et diverses tapes d'un projet, les pratiques agiles les plus pertinentes. Avec au dpart un "kit" de pratiques, et des outils permettant un assemblage cohrent, on va fabriquer une mthodologie sur mesure. Le premier de ces outils est la modlisation du processus de dveloppement. Un exemple. Un des principes Agiles consiste tester tout au long du projet: on a remis en cause l'approche classique consistant laisser le test pour la fin. La base de cette critique est une rflexion sur les modles qui conduisent prendre cette dcision. Dans un modle trop simplifi, on part du principe que la production de code aboutit une certaine production de dfauts, et qu'il suffit une fois le code produit de procder l'limination de ces dfauts: Figure 1: Diagramme "naf" Si on croit cela, on va lgitimement remettre les tests la fin du projet. Le diagramme ci-dessus, dans une notation appele "diagramme d'effets", Rfrentiel des pratiques Agiles 42 permet de rendre explicite cette supposition, et on peut le comparer avec le diagramme suivant: Figure 2: Diagramme "corrig" Dans ces diagrammes on s'intresse aux caractristiques quantitatives des situations: une bulle est une quantit susceptible, si on le voulait, d'tre mesure. Une flche est un lien de cause effet. Lorsqu'elle est orne d'un "+", l'effet et la cause vont dans le mme sens (si l'un augmente, l'autre augmente, et vice-versa); orne d'un "-", cause et effet vont dans le sens oppos. On doit ce type de diagramme Peter Senge et Jerry Weinberg. Je dis "susceptibles d'tre mesure" parce que ces diagrammes donnent surtout des rsultats qualitatifs. Il existe des outils permettant de transformer des diagrammes de ce type en simulations numriques. Mais ds que l'on fait intervenir tous les facteurs qui rendent l'analyse plus raliste, la complexit des modles rend cette analyse laborieuse, alors qu'on peut obtenir de trs bons rsultats sur la base d'une analyse quantitative. Ainsi on voit sur le second diagramme que le cot du test est fonction de plusieurs variables, notamment la taille du projet et le dlai entre ralisation et test: on rend compte du fait que plus il s'coule de temps entre l'introduction d'un dfaut et sa mise en vidence par le Chapitre 7: Un capital: les pratiques Agiles 43 test, plus il est difficile corriger. Comme les effets de ces deux variables se renforcent, on peut s'attendre ce que le cot du test augmente plus que linairement avec la taille des projets. Les paramtres qui nous proccupent sont souvent les mmes d'un projet un autre: taille du projet, taille de l'quipe, dlai, productivit, qualit, etc. Par contre les influences qui s'exercent sur ces paramtres peuvent tre trs diffrentes, selon le type d'entreprises (SSII, diteur, industriel), le secteur d'activit (finance, scientifique, commerce) et autres caractristiques du contexte. Et, toujours en fonction du contexte, la priorit accorde ces diffrents paramtres peut tre trs diffrente. Chez un diteur on pourra privilgier le respect des dlais par rapport la qualit, dans un contexte industriel l'inverse peut se produire; dans la finance de marchs les performance peuvent tre le critre dominant, etc. Par consquent, il faut s'attendre ce que chaque projet soit rgi par un modle diffrent. L'idal est de runir plusieurs personnes concernes par la situation et chercher explorer, dans une session de type "brainstorm", les liens de causalit entre les diffrentes variables. Ensuite, on cherche trouver des interventions: des modifications dans la faon habituelle d'aborder le projet qui, en modifiant le sens d'une relation existante, en supprimant ou crant de nouvelles relations, aient une influence favorable sur les paramtres qui nous proccupent sans pour autant avoir d'influence nfastes. (C'est souvent l qu'est l'os...) Souvent, on ne trouve une rponse efficace qu'aprs avoir obtenu un "dclic" qui permet de rduire le modle un nombre moins importants de variables. Les pratiques agiles sont autant d'interventions permettant de modifier la structure des influences mutuelles entre les paramtres du projet. Ainsi la pratique du dveloppement par les tests modifie profondment l'interaction modlise ci-dessus: pour une bonne partie l'activit de test a lieu avant le dveloppement, la valeur moyenne du paramtre "dlai entre l'introduction d'un dfaut et le test permettant de le dtecter" est rduit de plusieurs ordres de grandeur. Ces diagrammes d'effets font partie des outils utiliss par les meilleurs consultants tiquets "Agiles" pour s'assurer de l'efficacit de leurs interventions. Pour tre efficace avec une approche Agile il faut non seulement trs bien connatre les mcanismes "typiques" qui rgissent les projets de dveloppement, mais encore tre capable d'analyser finement les variations de ces mcanismes propres un contexte donn. La simple connaissance des pratiques ne suffit pas: il faut savoir pourquoi et Rfrentiel des pratiques Agiles 44 comment elles fonctionnent, mais aussi quand elles sont susceptibles de ne pas fonctionner. LE MONDE EST UNE SCNE Les chapitres qui viennent n'aborderont pas de faon dtaille les "rles", qu'ils soient traditionnels et connus - testeur, dveloppeur, analyste - ou nouveaux et propres tel ou tel approche Agile: Scrum Master, Product Owner, Coach... Pourquoi? Il convient de rappeler le principe suivant: Ce qui compte surtout pour le succs d'un projet, c'est ce que les gens font. Il existe bien sr des contraintes: les journes de travail ne faisant (en principe) que 8 heures, une mme personne ne peut pas tout faire. On doit bien se spcialiser afin de mener certaines activits de faon comptente; le temps que j'investis devenir un meilleur dveloppeur est autant de temps que je ne passerai pas acqurir des rudiments de graphisme. Le principe de Ricardo ou principe de l'avantage comparatif me pousse m'associer une personne comptente dans le domaine graphique, et montre que je peux y trouver un avantage mme dans le cas o je suis un peu dou en graphisme. (Ce qui est contre-intuitif dans le principe de Ricardo, c'est l'ide que mme si je suis strictement meilleur en dveloppement ET en graphisme qu'une autre personne, m'associer avec elle en nous spcialisant chacun dans un domaine peut quand mme tre intressant pour chacun des deux.) Mais ce qui vaut en analyse conomique ne vaut pas ncessairement dans un projet. Par exemple les acteurs d'un projet ne travaillent pas chacun dans leur coin: ils ont besoin, chacun, de comprendre ce que font les autres acteurs. Trop de spcialisation peut engendrer le "syndrome du bb", d'aprs une conversation entre parents, par exemple au supermarch: "Dis donc, le bb n'est pas avec toi?" - "Ah non, je croyais qu'il tait avec toi..." - "Alors o est-il?" Transpos au monde du projet, cela donne des tches importantes qui ne sont pas ralises parce que chacun pense qu'elles relvent de la responsabilit de quelqu'un d'autre. Prenons donc l'exemple d'un des nouveaux "rles" Agiles les plus emblmatiques, celui du Scrum Master. Le Scrum Master est charg: de lever les obstacles signals par l'quipe lors des runions quotidiennes ("mles") d'tre un facilitateur lors de ces runions de rappeler l'quipe les fondamentaux thoriques de Scrum Chapitre 7: Un capital: les pratiques Agiles 45 de protger l'quipe des interruptions Sur le papier, ce rle est cohrent. Mais imaginez la situation suivante: dans votre quipe, une personne est trs doue pour agir et communiquer vers l'extrieur; une autre est trs l'aise pour animer des runions. A votre avis, vaut-il mieux: donner l'une de ces personnes les quatre responsabilits ci- dessus, au risque que deux d'entre elles soient moins bien assures, ou jeter aux orties la dfinition stricte du rle du Scrum Master, et rpartir ces quatre responsabilits entre les deux quipiers en fonction de leurs talents? La seconde solution a plus de chances d'tre efficace. Un rle formellement dfini n'est qu'une "checklist", le rappel utile d'un certain "lot" d'activits ou responsabilits dont il est important de garantir que chacune est assure par au moins un membre de l'quipe, afin d'viter le "syndrome du bb". La spcialisation a du sens au niveau des responsabilits isoles, pas au niveau de rles agrgeant plusieurs responsabilits. Il existe, bien sr, des corrlations. Un dveloppeur comptent est probablement une personne plus apte se charger d'un travail de rdaction technique qu'un graphiste comptent. Mais c'est seulement une tendance (peut-tre mme pas une tendance trs marque). Lorsqu'il s'agit de se rpartir des tches prcises, identifies, au sein d'un projet particulier, entre des personnes relles, dans toute leur singularit, la notion de rles doit passer au second plan. Rfrentiel des pratiques Agiles 46 Chapitre 8 Comment utiliser le rfrentiel Nous voici donc prts aborder le contenu de la dmarche Agile, les pratiques elles-mmes. Comme indiqu plus haut, les chapitres sont destins tre lus en "accs direct" plutt que squentiellement: vous lirez ainsi la description d'une pratique vous intressant en particulier. Suivant votre situation, vous pourrez vous intresser des aspects diffrents d'une mme pratique; ci-dessous, nous abordons le schma auxquel se conforme chacun des chapitres restants. CANEVAS DE DESCRIPTION D'UNE COMPTENCE Voici les lments qui semblent pertinents pour dcrire une pratique agile. Nous allons prendre pour exemple une pratique Scrum relativement rcente, la Dfinition de 'fini'. Parlons d'abord, mme si ce n'est pas la premire chose qu'on lira (ce sera le nom, abord plus bas), du descriptif succint d'une pratique. Le rfrentiel n'a pas vocation se substituer aux livres, articles et contenus de formation qui donnent une dfinition plus prcise et plus dtaille de chaque pratique, comptence et outil abords. Il s'agit donc ici de se borner un paragraphe court qui reprend l'essentiel. Un autre exercice dlicat consiste choisir un nom canonique pour cette pratique. La plupart de nos collgues francophones utilisent un demi-anglicisme, et parlent de "Definition du Done", quand ce n'est pas le terme anglais qu'ils utilisent directement. Quand c'est possible, il est Chapitre 8: Comment utiliser le rfrentiel 47 prfrable de vraiment traduire, c'est pourquoi nous prfrons "fini" "done". Le but n'est pas de faire voluer le lexique, mme s'il est tentant de chercher jouer de son influence... Notre prfrence irait peut-tre au terme "Liste Sashimi", le terme "sashimi" bnficie actuellement d'un petit effet de mode, et comme l'illustre le site Web d'un collgue coach, J.B. Rainsberger il est parlant et plaisant. Mais cette appellation pour dsigner une pratique spcifique reste tout fait marginale. En tout cas, pour toutes ces raisons, il semble important de recenser les synonymes connus qui dsignent la mme pratique ou des pratiques tellement voisines que nous les considrerons comme une seule (par exemple le Sprint de Scrum ne diffre pas assez de l'Itration d'XP pour y voir deux pratiques distinctes). Une pratique s'accompagne gnralement d'un certain nombre d'erreurs classiques, de contre-sens et d'abus. En rencensant les plus courantes, on donne de la profondeur la description brve (mais toujours sans chercher se substituer un contenu plus pdagogique), et on encourage se mfier des imitations et contrefaons. Conformment la division "principes, concepts, pratiques, comptences" on fera ressortir de cette pratique le ct visible: on sait qu'une quipe utilise une pratique quand on peut le constater par des signes observables dans l'espace de travail, par exemple une feuille de paperboard sur laquelle on peut lire la (ou les) dfinition(s) de "fini". (C'est l un arbitrage, certaines personnes diront qu'il suffit qu'une quipe connaisse sa dfinition de "fini" et que tout le monde soit d'accord. Pourquoi pas: dans ce cas, le signe observable consiste s'asseoir avec plusieurs personnes dans l'quipe et leur demander de rciter cette dfinition. Il est presque certain que dans ces conditions chacun donnera une dfinition de "fini" lgrement diffrente; ce qui nous renvoie donc la rubrique "erreurs classiques".) Comme indiqu prcdemment, une pratique ne vaut que par les bnfices qu'elle confre au projet. Dcider, en conscience, d'adopter une pratique, c'est s'engager vrifier quelques temps aprs si ces bnfices ont bien t obtenus, et remettre en question sa vision du fonctionnement du projet si ce n'est pas le cas. L'objectif n'est pas d'utiliser telle et telle pratique pour le plaisir de s'identifier comme "Agile" mais bel et bien d'obtenir ces bnfices. Notamment, chaque pratique se caractrisera aussi par un cot d'utilisation plus ou moins grand et une efficacit plus ou moins nette: notre objectif, idalement, est d'obtenir avec le minimum de pratiques, exigeant le minimum d'effort Rfrentiel des pratiques Agiles 48 pour les adopter, le plus grand nombre de bnfices possibles sur les aspects du projet qui nous intressent. Peu importe d'o viennent ces pratiques - de Scrum, d'XP, de Lean... Il est cependant important, pour plusieurs raisons approfondies plus loin, de positionner les pratiques dans un contexte historique, de retracer leurs origines et leur volution. La "dfinition de 'fini'" ne fait partie de Scrum que depuis quelques annes, et son intgration dfinitive dans les pratiques considres comme indispensables ne remonte qu' 2006-2007 environ d'aprs les diffrentes sources disponibles: listes de diffusion, blogs, livres sur le sujet. Ou bien il est possible de pratiquer Scrum sans utiliser une dfinition explicite de "fini" - auquel cas on doit se demander s'il est ncessaire dans un contexte particulier d'utiliser cette pratique - ou bien cet volution s'explique par le fait que seules les quipes qui l'utilisaient russissaient dans leur application de Scrum, et qu'on a finalement mis le discours en conformit avec la pratique. La diffrence entre ces deux scnarios n'est pas anodine. BIBLIOGRAPHIE SCIENTIFIQUE Un dernier lment, mais qui a son importance, consiste relever les travaux scientifiques pertinents. Ceux-ci sont de deux types: thoriques ou conceptuels, qui vont donner un clairage plus prcis et plus rigoureux sur les mcanismes par lesquels une pratique produit ses effets; et, les plus importants, empiriques, qui vont constater dans des conditions contrles la ralit et l'importance quantitative de ces prtendus effets. Cette validation scientifique n'est pas un prrequis l'utilisation de pratiques qui ont montr leur efficacit. J'aurai l'occasion de revenir sur ce sujet, mais il faut bien constater que le dialogue entre les chercheurs qui s'intressent la dynamique des projets agiles d'une part, et les praticiens d'autre part, n'est pas encore d'une grande qualit. On ne s'tonnera pas, par consquent, que la recherche tarde s'intresser ce que les praticiens trouvent vident depuis longtemps, ou que ces derniers ignorent des rsultats que les chercheurs considrent comme acquis. Mais la convergence au fil du temps entre ces deux communauts me semble indispensable. Si les pratiques sont rellement utiles et produisent leurs effets de faon fiable, alors on doit tre en mesure de le prouver; sinon c'est qu'elles ne sont qu'un placebo, et leur utilisation est nuisible puisqu'elles Chapitre 8: Comment utiliser le rfrentiel 49 mobilisent une partie de l'nergie des intervenants d'un projet, qu'ils pourraient consacrer d'autres pratiques qui elles sont rellement utiles. Les travaux les plus importants sont mentionns dans le chapitre correspondant aux quelques pratiques qui on fait l'objet de telles recherches; une bibliographie reprend l'ensemble de ces rfrences, en annexe. CANEVAS DE DESCRIPTION D'UNE COMPTENCE Que dire de plus pour clairer prcisment une comptence, par rapport ce qu'on peut dire concernant une pratique? Notre exemple sera le Refactoring, comptence centrale dans Extreme Programming. Tout d'abord, une comptence est aussi une pratique: elle se constate certains signes visibles, elle apporte un bnfice prsum, qui peut tre dmontr par des tudes empiriques. Le canevas de description d'une comptence est donc en rgle gnrale un sur-ensemble de celui qui vaut pour les pratiques. La principale diffrence est qu'une comptence nous amnes distinguer des niveaux de performance. Cela n'a pas tellement de sens de dire qu'une personne ou mme une quipe est "doue" pour tablir sa "definition of Done". Soit elle a une dfinition, et la trouve satisfaisante; soit elle n'en a pas. Il n'y a pas grand chose dire une quipe qui lui permettra d'amliorer sa pratique de la dfinition. (Certes, une quipe peut avoir une mauvaise dfinition de "fini", si elle est incomplte ou au contraire trop rigoureuse. Pour autant on ne parlera pas d'amliorer une comptence, mais simplement d'amliorer... le document!) Au contraire, une personne peut matriser plus ou moins bien les diffrentes techniques du refactoring, et s'amliorer dans ce domaine, soit par la recherche et la pratique personnelle, soit par des mcanismes d'apprentissage en travaillant auprs d'un mentor qui lui enseignera des lments plus avancs que ceux dj connus, soit en suivant une formation qui fixera des objectifs pdagogiques adapts. N'tant pas lui-mme un support pdagogique, le rfrentiel n'a pas vocation recenser l'intgralit des savoirs-faires qui composent une comptence donne, mais simplement de fournir des pointeurs vers les ressources documentaires, lorsqu'elles existent, qui font autorit. Par exemple, le livre de Martin Fowler qui dfinit plusieurs dizaines de Rfrentiel des pratiques Agiles 50 refactorings lmentaires. La connaissance encyclopdique de tous ces refactorings n'est certes pas une exigence pour pouvoir prtendre matriser le sujet, mais d'vidence l'une des choses qui distinguera un expert d'un dbutant sera le nombre de ces refactorings qu'il est capable d'utiliser bon escient. PLACE AUX PRATIQUES! Vous voil maintenant quips pour tirer le meilleur parti de cet outil. Bonne lecture! N'oubliez pas son pendant sur le Web, constamment actualis: http://referentiel.institut-agile.fr/ Chapitre 8: Comment utiliser le rfrentiel 51 Chapitre 9 BDD (Behaviour-Driven Development) Pratique DE QUOI S'AGIT-IL? BDD est une laboration des pratiques TDD (dveloppement par les tests) et ATDD (dveloppement par les tests client). Au lieu de parler de "tests", une personne utilisant BDD prfrera le terme "spcifications". Il s'agit en fait de runir dans un mme document des exigences (User Stories) exprims selon le formalisme rle-fonction- bnfice et des scnarios ou exemples exprims selon le canevas given- when-then, ces deux notations tant les plus lisibles. En mettant l'accent sur le mot "spcifications", BDD cherche fournir une rponse unique ce que nombre d'quipe Agiles considrent comme deux activits spares: l'laboration de tests unitaires et de code "technique" d'une part, l'laboration de tests fonctionnels (servant formaliser les exigences) et de "fonctionnalits" d'autre part. Plutt que parler de "test unitaire d'une classe", une personne ou une quipe utilisant BDD prfre dire qu'elle fournit les "spcifications du comportement (behaviour) de la classe". Cela se traduit par une plus grande attention porte au rle documentaire de ces spcifications: leur nom doit tre parlant et, complt par leur description structure par le canevas given-when-then, doit pouvoir servir de documentation technique. Rfrentiel des pratiques Agiles 52 Plutt que parler de "test fonctionnel" on prfrera "spcifications du comportement du produit"; par ailleurs le volet technique de BDD est complt par un ensemble de techniques favorisant la conversation avec les interlocuteurs responsables de la dfinition du produit. En supplment des techniques de refactoring utilises dans TDD, l'approche BDD prte, en matire de conception, une attention particulire la rpartition des responsabilits ce qui conduit favoriser la technique dite de "mocking". En synthse, BDD consiste augmenter TDD et ATDD d'un certain nombre de principes supplmentaires: appliquer le principe des "cinq pourquoi" chaque User Story propose pour en comprendre l'objectif raisonner "de l'extrieur vers l'intrieur", c'est--dire toujours implmenter le comportement qui contribue le plus directement cet objectif dcrire ces comportements dans des notations accessibles tous: experts fonctionnels, dveloppeurs, testeurs appliquer ces techniques jusqu'aux plus bas niveaux de description du logiciel, en tant attentif la rpartition des comportements entre classes ON L'APPELLE GALEMENT... On parle galement de "behaviour driven design" pour des raisons similaires celles invoques dans le cas de TDD. Le terme n'a pas t francis. ERREURS COURANTES bien que son crateur, Dan North, explique avoir conu BDD pour rpondre des difficults rcurrentes lors de l'enseignement de TDD, il faut bien constater que BDD mobilise un plus grand nombre de concepts que TDD, et il semble difficile d'envisager qu'un programmeur novice soit form d'abord BDD sans s'tre pralablement familiaris avec TDD il est parfaitement possible d'appliquer BDD sans outils particuliers, et indiffremment du langage: l'erreur serait d'y Chapitre 9: BDD (Behaviour-Driven Development) 53 voir un sujet purement technique ou de rduire la pratique l'utilisation d'un outil COMMENT RECONNAITRE SON UTILISATION? au sein d'une quipe utilisant BDD, une partie significative de la "documentation fonctionnelle" du produit devrait tre disponible sous la forme de User Stories agrmentes de scnarios excutables QUELS BNFICES EN ATTENDRE? Une quipe utilisant dj TDD ou ATDD peut souhaiter voluer vers BDD pour les raisons suivantes: BDD propose un cadre plus prcis pour le dialogue avec les experts fonctionnels les notations issues de l'approche BDD (notamment le canevas given-when-then) sont plus proches du langage courant et moins contraignantes compares des outils du type Fitnesse l'approche BDD permet de gnrer automatiquement une documentation technique partir des "spcifications" ORIGINES l'anctre de BDD est un outil, agiledox, qui permet de gnrer automatiquement une documentation technique partir de tests unitaires JUnit, ralis par Chris Stevenson en 2003 visant liminer le mot "test" et le remplacer par "comportement", Dan North ralise l'outil JBehave et le diffuse partir de mi-2004 en collaboration avec Chris Matts, North formule le canevas given-when-then pour intgrer l'activit d'analyse l'approche BDD, qu'il dcrit dans un article "Introducing BDD" qui parat en 2006 sont apparus depuis de nombreux outils confirmant l'engouement pour l'approche BDD, tels RSpec ou, plus rcemment, Cucumber ou GivWenZen Rfrentiel des pratiques Agiles 54 O SE RENSEIGNER POUR EN SAVOIR PLUS? (LIVRES, ARTICLES) "Introducing BDD", de Dan North (2006) "Translating TDD to BDD", de Liz Keogh (2009) PUBLICATIONS ACADMIQUES ET TRAVAUX DE RECHERCHE Le peu de publications ce sujet se concentre sur des questions d'implmentation, par exemple cet article. Chapitre 9: BDD (Behaviour-Driven Development) 55 Chapitre 10 Backlog Concept DE QUOI S'AGIT-IL? Un "backlog" est une liste de fonctionnalits ou de tches, juges ncessaires et suffisantes pour la ralisation satisfaisante du projet: si une tche contenue dans le backlog ne contribue pas aux objectifs du projet, il faut l'en retirer; a contrario, ds qu'on a connaissance d'une tche qu'on pense ncessaire pour le projet, on doit l'inclure dans le backlog Ces proprits s'apprcient relativement l'tat des connaissances de l'quipe un instant donn: l'laboration du backlog peut se poursuivre tout au long du projet. Il est le principal rfrentiel de l'quipe en matire d'exigences ERREURS COURANTES Le backlog n'est pas un cahier des charges. Dans l'absolu, sa forme n'est pas impose: on peut le reprsenter par un document Excel, un fichier texte, une base de donnes ou encore par un ensemble de Post-It ou fiches cartonnes, ces dernires formes tant les plus courantes parmi les quipes Agiles. L'important est l'aspect "atomique" des lments d'un backlog, par opposition un document narratif dans lequel, par exemple, une seule Rfrentiel des pratiques Agiles 56 phrase peut contenir plusieurs exigences distinctes, ou au contraire dcrire sur plusieurs paragraphes une exigence unique. Tous les lments du backlog ne sont pas dcrits au mme niveau de dtail chaque moment du projet: les lments dont la ralisation est prvue une date lointaine peuvent tre des pans entiers de fonctionnalits dcrits en une seule phrase, alors que ceux dont la ralisation est imminente peuvent tre trs dtaills et accompagns de nombreux lments de dtails tels que tests, dessins d'interface, etc. Chapitre 10: Backlog 57 Chapitre 11 Bote de temps Concept DE QUOI S'AGIT-IL? Une bote de temps ou "timebox" est une priode fixe pendant laquelle on cherche excuter le plus efficacement possible une ou plusieurs tches. On peut utiliser les "timebox" diffrentes chelles de temps. La "technique du pomodoro" s'appuie sur des botes de 25 minutes. Dans un autre domaine que le logiciel, le "speed dating" est connu pour ses botes de 7 minutes. D'autres domaines peuvent utiliser des dures allant de la journe plusieurs semaines. Le plus important est qu'on s'astreint, la fin de la priode, s'arrter de travailler pour effectuer un bilan: l'objectif est-il atteint, ou partiellement atteint si on s'est fix plusieurs tches? Dans le cas o une seule tche tait prvue on ne tient compte que de deux tats possibles de compltion: 0% ou 100%. ORIGINES Le "timeboxing" est une variante de la pratique ancienne de la "deadline", mais son utilisation explicite comme stratgie de gestion de projets logiciels remonte sans doute James Martin, Rapid Application Development, en 1991. Il s'inspire des travaux de Scott Shultz chez Rfrentiel des pratiques Agiles 58 l'industriel DuPont, qui met au point une stratgie de prototypage de nouveaux produits en moins de 90 jours. Chapitre 11: Bote de temps 59 Chapitre 12 Build automatis Pratique DE QUOI S'AGIT-IL? Le terme "build" dsigne la production, partir de l'ensemble des fichiers qui sont sous la responsabilit d'une quipe de dveloppement, du produit sous sa forme dfinitive. Cela inclut non seulement la compilation des fichiers sources, ventuellement leur regroupement sous la forme de fichiers compresss (Jar, zip, etc.) mais galement la production de fichiers d'installation, de mise jour ou cration de bases de donnes, et ainsi de suite. On parle de "build automatis" ds lors que toutes ces tapes peuvent tre ralises de manire totalement rptable et sans intervention humaine, uniquement partir des fichiers sources prsents dans l'outil de gestion des versions. ERREURS COURANTES ne pas confondre build automatis et intgration continue: l'intgration continue consiste dclencher le plus frquemment possible le processus de construction (idalement, automatiquement chaque publication de code dans l'outil de gestion des versions) et vrifier l'intgrit du rsultat produit, notamment par l'excution de tests automatiss Rfrentiel des pratiques Agiles 60 en particulier, les outils d'intgration continue (CruiseControl, Hudson, etc.) sont distincts des outils d'automatisation du build (make, Ant, Maven, rake, etc.) la prise en charge par un environnement de dveloppement (IDE) de certaines oprations d'assemblage n'est pas suffisante: il doit tre possible de raliser le "build" en dehors de l'IDE on conseille en gnral s'assurer que le "build" dure moins de 10 minutes, tests automatiss compris; au-del, on compromet la capacit de l'quipe pratiquer l'intgration continue ORIGINES le principe d'automatiser une mcanique complexe d'assemblage de composants logiciels ne date pas d'hier: l'outil "make" remonte ... 1977 bien que la pratique ne soit pas nouvelle, ni limite aux approches Agiles, ce sont ces dernires qui relancent l'intrt pour une automatisation complte; la vogue des environnements intgrs pendant les annes 90 a putt eu pour effet de marginaliser les outils du type "make", on assiste ensuite un revirement dans les annes 2000 COMMENT RECONNAITRE SON UTILISATION? Pour s'assurer de la mise en place d'un build automatis, le plus simple est d'effectuer un test l'improviste: demander par exemple une quipe de fournir une version installable de son produit. Utilisez un chronomtre pour mesurer le temps ncessaire l'obtention d'une version, puis tentez l'installation sur une machine qui n'a pas t prpare par l'quipe de dveloppement. Toute "surprise" pendant ce processus peut tre considre comme une piste d'amlioration du build automatis. QUELS BNFICES EN ATTENDRE? L'automatisation du build est un prrequis l'utilisation efficace de l'intgration continue. Elle apporte cependant des bnfices propres: Chapitre 12: Build automatis 61 elle limine une source de variation et par consquent de dfauts; une procdure manuelle qui contient de nombreuses tapes, toutes ncessaires, offre autant d'opportunits de se tromper elle impose de documenter l'ensemble des hypothses et suppositions qui caractrisent l'environnement cible, ainsi que les dpendances envers des produits externes O SE RENSEIGNER POUR EN SAVOIR PLUS? (LIVRES, ARTICLES) Pragmatic Project Automation, de Mike Clark (2004) Rfrentiel des pratiques Agiles 62 Chapitre 13 Cartes CRC (Classe, Responsabilit, Collaborateurs) Pratique DE QUOI S'AGIT-IL? Les cartes CRC sont un exercice mlant "jeux de rles" et conception objet. Afin de dcrire rapidement plusieurs manires d'aborder la conception d'une mme partie du systme, on crit sur des fiches cartonnes les noms des principales classes concernes, et, afin de cerner la faon dont elles interagissent, les responsabilits de chacune et celles avec lesquelles elles doivent collaborer. On cherche ensuite valider le modle de conception en simulant un scnario d'excution, chaque dveloppeur participant la runion jouant le rle d'une des classes concernes. Ainsi un dialogue typique pourrait tre: "Bonjour Contrleur d'Authentification, je suis une Requte Web" - "Trs bien, je vais noter vos informations d'identit et l'opration que vous souhaitez effectuer et les transmettre au Gestionnaire d'Accs, s'il vous accepte je vous redirigerai vers l'Afficheur de Page", etc. Chapitre 13: Cartes CRC (Classe, Responsabilit, Collaborateurs) 63 ORIGINES La technique des cartes CRC est invente par Ward Cunningham en reprenant, sur des fiches cartonnes, la maquette d'une application Hypercard destine documenter la conception d'un systme; elle fait l'objet d'un article cocrit avec Kent Beck (1989) (Pour l'anecdote, c'est partir de l'ide originale de cette mme application que Ward Cunningham invente en 1995 le concept du Wiki, qui devient quelques annes plus tard l'anctre de Wikipedia et l'une des innovations les plus marquantes de ce qu'il convient d'appeler le Web 2.0) Rfrentiel des pratiques Agiles 64 Chapitre 14 Carton, Conversation, Confirmation Concept DE QUOI S'AGIT-IL? Formule propose par Ron Jeffries selon laquelle une User Story est la conjonction de trois lments: le carton ou Post-It, qui permet de donner une forme tangible et durable ce qui n'est sans cela qu'une abstraction, savoir: une conversation qui peut avoir lieu en plusieurs temps au fil d'un projet, entre toutes les personnes concernes par un aspect fonctionnel d'un logiciel: clients, utilisateurs, dveloppeurs, testeurs; cette conversation est en grande partie orale mais trs souvent complte par des documents; la confirmation, enfin, la plus formalise possible, que l'objectif dont il a t question au cours de cette conversation est atteint. Chapitre 14: Carton, Conversation, Confirmation 65 Chapitre 15 Charte projet Pratique DE QUOI S'AGIT-IL? L'quipe rsume, dans un document trs court, idalement susceptible d'tre affich aux murs de l'espace de travail au format d'une feuille de "paperboard", les enjeux principaux du projet, son primtre et les accords rciproques passs avec les commanditaires du projet. La communaut Agile s'est approprie divers techniques ou formalismes intressants pour leur capacit condenser ces informations: par exemple le "dessin riche" issu de l'approche SSM, le "diagramme de contexte" hrit de l'approche Yourdon pour l'analyse structure, ou le A3 du Lean (qui tire prcisment son nom du format de papier). ON L'APPELLE GALEMENT... Le terme anglais est "project charter". ERREURS COURANTES vitez d'utiliser un "modle de document" pour une charte de projet; l'intrt de l'exercice consiste cerner l'information Rfrentiel des pratiques Agiles 66 qui, dans le contexte unique de votre projet, permettra l'quipe de prendre des dcisions avises une charte de projet ne doit pas dpasser une page en longueur, faute de quoi elle deviendra un nouveau document rbarbatif et rarement lu QUELS BNFICES EN ATTENDRE? On constate souvent, quand on interroge les membres d'une mme quipe, des divergences surprenantes entre leurs rponses des questions du type: "Quel est l'objectif de ce projet? Quels en sont les aspects les plus importants? Qui cherchez-vous satisfaire? De quels moyens disposez-vous?" L'tablissement d'une charte mais surtout le fait de s'assurer que son contenu soit connu et approuv par l'ensemble de l'quipe donne au projet une unit d'intention qui est un facteur de succs souvent critique. ORIGINES le contenu idal d'une charte projet est dfini dans un article longtemps rest confidentiel, voire obscur: "Charters and Charterings, Immunizing your Project Against Foreseeable Failure" (2001) l'adoption de cette pratique par la communaut Agile a t lente et graduelle, et sa popularit plus rcente s'explique probablement par la volont de rpondre la critique souvent formule qu'une approche Agile porte trop peu d'intrt la "vue d'ensemble" du projet Chapitre 15: Charte projet 67 Chapitre 16 Conception au tableau blanc Pratique DE QUOI S'AGIT-IL? Afin de prendre les dcisions de conception "juste temps", les dveloppeurs au sein de l'quipe guettent certains moments critiques o un choix se pose parmi plusieurs alternatives qui peut avoir une influence durable sur la suite du projet. Lorsqu'un choix de ce type est identif, une runion impromptue autour d'un tableau blanc ou d'une session de cartes CRC s'organise, mobilisant une partie de l'quipe (gnralement deux ou trois dveloppeurs). Deux facteurs d'efficacit de ce type de session sont noter: on envisage plusieurs alternatives, idalement un minimum de trois; le choix dfinitif se fait parmi des alternatives acceptables sur la base de critres telles que simplicit ou cohrence avec l'existant; on prouves chacune des alternatives proposes en considrant un scnario concret; par exemple en imaginant comment le test de recette associ une user story serait trait dans une conception donne Rfrentiel des pratiques Agiles 68 ON L'APPELLE GALEMENT... En anglais le terme consacr, provenant de Ron Jeffries dans sa description d'Extreme Programming, est "quick design session". QUELS BNFICES EN ATTENDRE? Dans une approche Agile l'activit de conception est rpute tre "lisse" tout au long du projet, plutt que concentre dans une phase explicite de conception en amont de l'implmentation. Cependant, il n'est pas suffisant de supprimer cette phase explicite de conception pour s'assurer que les activits de conception, qui restent ncessaires, sont menes de faon satisfaisante. Les sessions de conception au tableau blanc sont l'une des deux pratiques Agiles qui jouent ce rle, l'autre tant le refactoring. Chapitre 16: Conception au tableau blanc 69 Chapitre 17 Conception simple Comptence DE QUOI S'AGIT-IL? L'adhsion cette pratique implique trois rgles de conduite, sur lesquelles l'quipe appuie sa stratgie de conception logicielle: la conception est value selon les 4 critres de simplicit noncs par Kent Beck, ce qui suppose notamment la pratique du refactoring mais galement l'adoption de l'heuristique YAGNI (voir dfinition ci-dessous), fort controverse; les lments de conception tels que patrons de conception ou "design patterns", architecture base de "plugins", etc. sont conus comme ayant un cot et pas uniquement une valeur; l'quipe cherche diffrer aussi longtemps qu'il est possible de le faire de faon responsable les dcisions importantes de conception, afin d'obtenir le plus d'information possible sur la pertinence de ces dcisions avant d'en payer le cot Elle s'appuie souvent sur ces pratiques annexes: sessions improvises de conception sessions CRC, moins rpandues remanier vers un pattern rtrospectives ou revues de conception Rfrentiel des pratiques Agiles 70 ON L'APPELLE GALEMENT... la littrature anglophone dsigne souvent cette pratique par l'expression YAGNI, un acronyme qui signifie "You Aren't Gonna Need It", c'est--dire "Tu n'en auras pas besoin"; allusion l'argumentation utilise par certains programmeurs pour justifier une dcision de conception ("Plus tard nous aurons besoin de telle ou telle capacit technique, alors pourquoi pas la raliser maintenant") on emploie galement le terme de "Conception Emergente", pour insister sur le fait que la conception n'est pas considre comme une activit qui a lieu antrieurement la programmation et impose un cadre cette dernire; mais qu'au contraire une bonne conception ou une bonne architecture rsultent d'une attention porte tout au long du projet aux qualits structurelles du code, et "mergent" donc des interactions entre les dtails de bas niveau et les proccupations d'ensemble ERREURS COURANTES la premire erreur, fatale, serait de ngliger, par exemple lors du recrutement, l'importance des comptences en conception au sein de l'quipe, au motif que la conception est "mergente" ou "au fil de l'eau": ces termes ne signifient pas qu'elle se fera toute seule! il s'agit exclusivement de conception logicielle et ce serait un abus d'invoquer ces rgles pour argumenter par exemple une dcision relevant des exigences du client ou d'un arbitrage d'ergonomie la pratique doit tre modre, voire est contre-indique, lorsque: le cot du dploiement de nouvelles versions du logiciel est important le projet exige ou doit s'accomoder d'une quipe plthorique et disperse Chapitre 17: Conception simple 71 ORIGINES l'expression YAGNI est associe Extreme Programming ds les premiers jours (1998) la formulation des critres de simplicit est peine plus tardive (avant 2000) l'application dlibre du remaniement en vue d'obtenir certains patrons de conception fait l'objet d'une premire publication par Joshua Kerievsky, "Refactoring to Patterns" (2004) les pratiques agiles ayant trait la conception sont relativement stables dans la priode 2000-2010, avec peu d'innovations par rapport d'autres domaines comme les tests automatiss COMMENT S'AMLIORER? Sur le plan individuel: Dbutant je suis capable d'identifier des lments de conception redondants et de proposer des simplifications du code existant Intermdiaire je suis capable de diffrer une dcision de conception lie une exigence future, et de dterminer les critres qui permettront d'arbitrer cette dcision Avanc je suis capable d'identifier le moment pertinent pour introduire une dcision de conception trs structurante, par exemple une architecture base de "plugins" A titre collectif, une tape majeure est franchir par toute quipe abordant la Conception Simple: partager les dcisions de conception. Celles-ci ne sont pas uniquement le fait des architectes ou dveloppeurs senior, elles sont comprises et mise en oeuvre par l'ensemble de l'quipe qui sait se les approprier. Rfrentiel des pratiques Agiles 72 COMMENT RECONNAITRE SON UTILISATION? l'quipe dispose d'un "backlog" de tches spcifiquement lies la conception: dfauts identifis ncessitant un refactoring explicite opportunitis de simplification dcisions potentielles, diffres en attendant plus d'informations ce "backlog" ne stagne pas, et ne sert pas de cahier de dolances jamais confrontes; une partie du temps productif de l'quipe est effectivement consacre ces volutions de conception l'quipe utilise une ou plusieurs pratiques annexes (sessions improvises, CRC, revues de conception) offrant une opportunit d'aborder le sujet on doit considrer comme un signal d'alarme, indiquant que la pratique n'est pas correctement mise en oeuvre, toute impression que des volutions relativement simples prennent de plus en plus de temps mesure que le projet progresse QUELS BNFICES EN ATTENDRE? une rduction du cot total de dveloppement une rduction des risques lis la surconception ("gold plating") O SE RENSEIGNER POUR EN SAVOIR PLUS? (LIVRES, ARTICLES) Is Design Dead?, article de Martin Fowler publi en 2000 et mis jour en 2004, synthse du point de vue Agile sur la conception logicielle PUBLICATIONS ACADMIQUES ET TRAVAUX DE RECHERCHE Empiriques Chapitre 17: Conception simple 73 Les tudes empiriques font tat de faon constante d'un taux important d'volution des exigences au cours d'un projet Capers Jones estime qu'en moyenne 35% des exigences (volume calcul en points de fonction) d'un projet sont modifies au cours de sa dure ("Assessment and Control of Software Risks", 1994) Les recherches se sont jusqu' prsent focalises sur la prvention de ces volutions, il n'existe pour l'instant pas de travaux notables axs sur l'approche Agile consistant tenir la volatilit des exigences comme un constat auquel s'adapter, non une difficult surmonter... Rfrentiel des pratiques Agiles 74 Chapitre 18 Critres de simplicit Concept DE QUOI S'AGIT-IL? Grille d'valuation propose par Kent Beck pour juger qu'un code source est "simple": le code est dot de tests unitaires et fonctionnels et tous ces tests passent le code ne fait apparatre aucune duplication le code fait apparatre sparment chaque responsabilit distincte le code contient le nombre minimum d'lment (classes, mthodes, lignes) compatible avec les trois premiers critres Le premier critre est ais juger, bien qu'il sous-entende quelque chose de moins trivial, savoir que le logiciel en question est correct, ne prsente pas de dfauts. Les tests unitaires ne sont au mieux qu'une indication favorable de cet tat; le discours Agile tient cependant pour acquis qu'ils sont la solution la plus pragmatique connue ce jour. Les second et troisime critres prsentent une plus grande part de subjectivit. Ainsi le second peut tre interprt littralement: malheureusement, la "programmation par copier-coller" est une pratique encore rpandue dans l'industrie et plombe de nombreux projets, le refactoring est un antidote efficace. Mais les programmeurs plus chevronns sont capables d'identifier comme "duplication" des Chapitre 18: Critres de simplicit 75 ressemblances plus subtiles entre lments de code. De mme le troisime s'appuie sur les notions non triviales de couplage et cohsion. Le quatrime critre, sous rserve d'avoir pu se mettre d'accord sur les trois premiers, peut tre plus facilement objectiv. Rfrentiel des pratiques Agiles 76 Chapitre 19 Dcoupage d'une user story Concept DE QUOI S'AGIT-IL? On considre en gnral que l'estimation associe une user story doit tre suffisamment petite pour qu'il soit envisageable de raliser cette story en une seule itration. Lorsque ce n'est pas le cas, il est ncessaire de dcouper une story en plusieurs, plus petites mais de telle sorte que chacune garde un rel intrt pour le responsable produit ou l'utilisateur final. Chapitre 19: Dcoupage d'une user story 77 Chapitre 20 Dfinition de "prt" Pratique DE QUOI S'AGIT-IL? Par analogie la "dfinition de 'fini'", l'quipe explicite et rend visible les critres (gnralement une dclinaison de la grille INVEST) faute desquels une fonctionnalit ne saurait faire l'objet d'un travail au cours de l'itration qui commence. ON L'APPELLE GALEMENT... Traduction directe de "definition of ready". QUELS BNFICES EN ATTENDRE? vite de commencer travailler alors que les critres de satisfaction ne sont pas clairs, ce qui risquerait d'entraner de coteux allers-retours avant de se mettre d'accord ORIGINES appellation trs rcente, formule par Jeff Sutherland en 2008 Rfrentiel des pratiques Agiles 78 Chapitre 21 Dfinition de 'fini' Pratique DE QUOI S'AGIT-IL? L'quipe affiche de faon visible une liste de critres gnriques qui conditionnent le fait de pouvoir considrer un incrment comme "fini". Faute de remplir ces critres en fin de Sprint ou d'itration le travail ralis n'est pas comptabilis dans la vlocit. ON L'APPELLE GALEMENT... En anglais "done" signifie "termin, fini". L'anecdote veut que quand on demande un dveloppeur si quelque chose est "fini" cela n'a qu'un sens technique: il a fini de coder. Si le sens de la question est de savoir s'il a fini de coder, de tester, de mettre jour les tests et la documentation, il faut le regarder droit dans les yeux en insistant: "est-ce que c'est fini- fini?" On parle de "Definition of Done" ou "Done List", en franais on pourra entendre "Dfinition de fini" ou "Dfinition de termin". Le terme "Sashimi" plus imag gagne du terrain pour dsigner une "tranche" fonctionnelle laquelle rien ne saurait manquer. Chapitre 21: Dfinition de 'fini' 79 ERREURS COURANTES Accorder trop d'importance la liste peut tre contre- productif: elle doit dfinir le minimum faire pour qu'on puisse considrer un incrment comme termin Si la liste n'est qu'implicite, au lieu d'tre affiche au mur, elle perd beaucoup de son intrt, ce qui fait sa valeur tant prcisment que chacun est au courant de tous les critres Constater qu'un incrment n'est pas rellement fini mais se dire "on reviendra dessus plus tard" rduit considrablement l'intrt de cette pratique. COMMENT RECONNAITRE SON UTILISATION? l'quipe est capable de montrer, sur demande, sa dfinition de "fini" ces critres sont voqus en fin de Sprint ou d'itration et justifient la dcision de comptabiliser un incrment dans la vlocit, ou non QUELS BNFICES EN ATTENDRE? en amont, fonctionne comme une "checklist" guidant la rflexion des dveloppeurs pendant l'estimation et la ralisation en aval, moins de temps perdu en travaux de "rfection" une fois qu'une fonctionnalit a t accepte rduit les risques de brouille entre l'quipe et ses commanditaires en instaurant un contrat clair ORIGINES Propose par Dan Rawsthorne en 2002-2004 Rpandue sous ce terme partir de 2007 environ Considre comme un lment majeur de Scrum Rfrentiel des pratiques Agiles 80 PUBLICATIONS ACADMIQUES ET TRAVAUX DE RECHERCHE Aucun travail de recherche thorique ou empirique connu ne concerne cette pratique. On peut cependant considrer comme pertinents les travaux de Flores et Winograd, Macomber: Understanding Computers and Cognition, Flores F., Winograd T., 1987, prsentant le modle "Conversation for Action" Securing Reliable Promises on Projects, Macomber H., 2001 Chapitre 21: Dfinition de 'fini' 81 Chapitre 22 Dploiement continu Pratique DE QUOI S'AGIT-IL? Le dploiement continu, prolongement de l'intgration continue, est une pratique visant rduire le plus possible le temps de cycle, le temps coul entre l'criture d'une nouvelle ligne de code et l'utilisation relle de ce mme code par des utilisateurs finaux. L'quipe s'appuie sur une infrastructure qui automatise l'ensemble des tapes de dploiement (ou "mise en production"), de sorte qu'aprs chaque intgration qui se solde par des tests passant avec succs, l'application en production est mise jour. QUELS BNFICES EN ATTENDRE? Dans le contexte des entreprises qui l'ont mise en place initialement (startups du Web 2.0), le principal bnfice du dploiement continu est la rduction du temps de cycle, avec deux effets principaux: le retour sur investissement pour chaque nouveau dveloppement commence bien plus tt, ce qui limite les besoins en capitaux il est possible d'obtenir trs rapidement des retours des utilisateurs sur une nouvelle fonctionnalit, ce qui permet par exemple de tester plusieurs hypothses et de retenir celle qui reprsente une amlioration du produit Rfrentiel des pratiques Agiles 82 QUELS COTS OU INVESTISSEMENTS FAUT- IL CONSENTIR? L'infrastructure permettant le dploiement continu tient compte non seulement du test automatis, mais galement (entre autres) de la surveillance du comportement de l'application en production pour dtecter rapidement des anomalies qui n'auraient pas t rvle par ces tests, et de la possibilit de retour en arrire trs rapide dans le cas d'une telle anomalie. L'investissement ncessaire est donc sensiblement plus important. ORIGINES cette pratique relativement rcente (2008) est reprsentative de deux tendances dans la communaut Agile: adaptation des pratiques Agiles pour les besoins des nouvelles gnrations de startups, ou Lean Startup extension de l'approche Agile des mtiers connexes au dveloppement, en l'occurrence les mtiers de l'exploitation; c'est le mouvement Devops Chapitre 22: Dploiement continu 83 Chapitre 23 Dveloppement incrmental Concept DE QUOI S'AGIT-IL? Le dveloppement incrmental consiste raliser successivement des lments fonctionnels utilisables, plutt que des composants techniques. Un dcoupage en incrments est dit "vertical", en rfrence l'imagerie habituelle qui prsente les composants techniques d'une architecture logicielle comme les couches empiles d'un gteau. (Cet article en est une illustration typique.) Un incrment est une fonctionnalit complte, mtaphoriquement une tranche verticale du gteau. Une approche incrmentale implique ncessairement d'adopter galement, au moins dans une certaine mesure, une approche itrative, mais les deux concepts ne sont pas identiques. Rfrentiel des pratiques Agiles 84 Chapitre 24 Dveloppement itratif Concept DE QUOI S'AGIT-IL? Le dveloppement itratif implique de dcouper un projet en un certain nombre de cycles, ou itrations, au cours desquelles on prvoit de rpter les mmes activits. Ainsi, on considre comme itratif un cycle dans lequel on prvoirait, l'issue d'une phase de spcifications et d'analyse, de rpter 3 fois une itration au cours de laquelle on raliserait successivement la conception, le dveloppement et le test. Un tel cycle serait itratif mais ne serait pas "Agile" au sens strict: l'approche Agile privilgie des itrations nombreuses et trs courtes, et considre que chaque itration doit regrouper l'ensemble des activits du dveloppement, de la spcification jusqu'au test. A distinguer du dveloppement incrmental qui consiste planifier par lments fonctionnels ayant de l'intrt sparment. Chapitre 24: Dveloppement itratif 85 Chapitre 25 Dveloppement par les tests Comptence DE QUOI S'AGIT-IL? Ce terme dsigne une technique de dveloppement qui entremle la programmation, l'criture de tests unitaires et l'activit de remaniement. Elle propose les rgles suivantes: crer un seul test unitaire dcrivant un aspect du programme s'assurer, en l'excutant, que ce test choue pour les bonnes raisons crire juste assez de code, le plus simple possible, pour que ce test passe remanier le code autant que ncessaire pour se conformer aux critres de simplicit recommencer, en accumulant les tests au fur et mesure La pratique est indissociable de la famille d'outils de tests xUnit, qui elle doit son vocabulaire: "barre verte" signifie que l'ensemble des tests unitaires accumuls passent avec succs, "barre rouge" signifie qu'au moins un test est en chec. (L'chec d'un unique test suffit dclencher l'affichage rouge, avec sa connotation d'alerte: cette tolrance zro reflte la philosophie de l'outil et de la pratique.) L'expression "drouler les tests" dsigne le fait de lancer ou d'excuter tous les tests accumuls ("suite" ou "batterie" de tests). Rfrentiel des pratiques Agiles 86 L'une des notions les plus importantes pour un dbutant est celle de granularit d'un test. Supposons par exemple qu'on crive un correcteur orthographique. Un test "gros grain" consisterait vrifier que lorsqu'il est appel avec un mot mal orthographi, par exemple "importent", le correcteur renvoie la suggestion "important". Un test "grain fin" l'inverse vise vrifier la bonne implmentation d'un aspect plus prcis de l'algorithme de correction: par exemple qu'une fonction calculant la "distance" entre ces deux mots renvoie bien 1 (une seule lettre a chang). ON L'APPELLE GALEMENT... Le nom anglais est "Test Driven Development", l'acronyme TDD tant trs souvent utilis. On parle galement, moins souvent, de dveloppement pilot par les tests. A l'origine on parle de "Test First Coding", programmation en commenant par les tests, souvent abrg en "Test First". A mesure qu'une communaut de programmeurs s'empare de cette pratique on cherche lui donner un nom plus valorisant. La variante "Test Driven" insiste sur le rle dterminant des tests. Une construction inverse partir de l'acronyme TDD le rinterprte en "Test Driven Design", ou conception par les tests. ERREURS COURANTES Quelques erreurs courantes des programmeurs novices en dveloppement par les tests: oublier de drouler les tests frquemment crire de nombreux tests la fois crire des tests d'une granularit inadapte crire des tests non probants, par exemple dpourvus d'assertions crire des tests pour du code trivial, par exemple des accesseurs Quant l'organisation de l'quipe autour de cette pratique, les cueils suivants sont courants: Chapitre 25: Dveloppement par les tests 87 adoption partielle: seuls certains dveloppeurs plus motivs ou mieux forms utilisent TDD; on ne peut pas attendre de bnfices collectifs dans ce cas mauvais entretien de la batterie de tests: en particulier, une batterie de tests qui prend trop longtemps drouler dlaissement de la batterie de tests: dcoulant parfois du mauvais entretien, parfois d'autres facteurs tel un trop brusque renouvellement de l'quipe ORIGINES L'ide d'une squence chronologique dans laquelle l'laboration de tests prcde celle des programmes eux-mmes n'est pas nouvelle; c'est en fait dans la mesure o cette tche incombe aux programmeurs eux-mmes qu'il existe une rupture. Depuis 1976 date la publication du livre de Glenford Myers Software Reliability, et jusqu' l'apparition d'Extreme Programming, il sera communment admis "qu'un programmeur ne doit jamais tester son propre code". Cette affirmation prsente comme un axiome fournit une justification l'tablissement du test comme une discipline spare de la programmation, le "test indpendant". Jusqu'aux annes 1990, la tendance se confirme avec la vogue de l'approche "black box testing" et la domination du march par des outils qui enregistrent et rejouent des squences de clics (ce qui suppose videmment que le code soit dj crit!). On peut donc faire remonter l'historique de cette pratique aux premiers outils encourageant les programmeurs tester leur propre code: l'article "A Brief History of Test Frameworks" prsente l'histoire apparemment parallle de deux outils remontant 1992 environ l'vnement le plus dterminant est sans conteste la cration par Kent Beck de l'outil SUnit pour Smalltalk, dont toute la famille xUnit va s'inspirer (The Smalltalk Report, octobre 1994) l'ide d'crire les tests en premier est dcrite comme un des piliers de l'approche Extreme Programming ds 1996 l'laboration du "Test First" en "Test Driven" fait partie d'une priode d'intense laboration sur le Wiki C2.com entre 1996 et 2002 Rfrentiel des pratiques Agiles 88 des techniques spcifiques avec leurs propres outils apparaissent pendant cette priode, l'une des plus connues est sans doute l'approche "Mock Objects" de Freeman et McKinnon en 2000 le livre de Kent Beck Test Driven Development: By Example achve de codifier la pratique en 2003 on assiste ensuite la naissance de plusieurs pratiques inspires par TDD mais qui s'en cartent suffisamment pour tre considres comme des innovations part entire: "ATDD" ou "dveloppement pilot par les tests fonctionnels" et "BDD)" sont les plus notables (2006-2010) COMMENT S'AMLIORER? Niveaux de performance individuels: Dbutant je suis capable d'crire un test unitaire avant le code correspondant je suis capable d'crire le code permettant de faire passer un test Intermdiaire je pratique la "correction de dfauts pilote par les tests", lorsqu'un dfaut est dtect j'cris le test le mettant en vidence avant de le corriger je suis capable de dcomposer une fonctionnalit coder en un certain nombre de tests crire je connais plusieurs "recettes" pour guider l'criture de mes tests (par exemple: "pour un algorithme rcursif, crire d'abord le test pour le cas terminal") je suis capable d'extraire des lments rutilisables de mes tests unitaires afin d'obtenir un outil de test adapt mon projet Avanc je suis capable d'laborer une "feuille de route" pour une fonctionnalit complexe sous forme de tests envisags, et de la remettre en question si ncessaire je suis capable de piloter par les tests diffrents "paradigmes" de conception: objet, fonctionnel, par vnements... Chapitre 25: Dveloppement par les tests 89 je suis capable de piloter par les tests diffrents types de domaines techniques: calcul, interface graphique, accs aux donnes... COMMENT RECONNAITRE SON UTILISATION? la couverture de code est un des moyens courants de constater l'utilisation du dveloppement par les tests; une couverture leve ne signifie pas ncessairement une bonne utilisation, mais une couverture infrieure environ 80% est contrario un signe d'utilisation probablement dficiente les historiques de la gestion de versions (logs CVS ou git par exemple) font apparatre des modifications quilibres: chaque publication de code principal s'accompagne d'une publication de nouveaux tests (hors refactoring) QUELS BNFICES EN ATTENDRE? de faon informelle, de nombreux retours d'exprience d'quipes utilisant TDD font tat d'une rduction trs significative du nombre de dfauts, en contrepartie d'un surcot modr du dveloppement initial ces mmes retours suggrent que ce surcot est compens par l'limination d'une partie importante de l'effort de mise au point en fin de projet en imposant l'criture du test avant celle du code, cette pratique annule le "biais de confirmation" qui est la justification avance par Myers pour affirmer qu'un dveloppeur "ne doit jamais tester son propre code" bien que les travaux scientifiques ce sujet restent circonspects, de nombreux vtrans de cette pratique y voient un facteur d'amlioration de la conception objet de leur code, et plus gnralement de la qualit technique: on entend ainsi que la pratique du TDD a pour rsultat du code possdant une meilleure cohsion et un plus faible couplage Rfrentiel des pratiques Agiles 90 O SE RENSEIGNER POUR EN SAVOIR PLUS? (LIVRES, ARTICLES) Test Driven Development: By Example, de Kent Beck PUBLICATIONS ACADMIQUES ET TRAVAUX DE RECHERCHE Cette pratique considre par des auteurs tels que Steve McConnell (Code Complete, 2nd Edition) comme l'une des contributions les plus importantes du mouvement Agile a fait l'objet de plusieurs tudes. De mme que pour le binmage, les valuations empiriques sont souvent sont menes sur des populations d'tudiants plutt que sur des professionnels dans des conditions relles d'exercice, ce qui limite la porte de leurs conclusions. Empiriques "Test Driven Development: Empirical Body of Evidence" recense les principales tudes connues en 2006, portant majoritairement sur les effets constats informellement de rduction des dfauts (globalement favorable) et d'augmentation de l'effort (globalement neutre) "Realizing quality improvement through test driven development" est une tude plus rcente dans un contexte industriel, confirmant ces rsultats (2008) "Does Test-Driven Development Improve the Program Code? Alarming Results from a Comparative Case Study " est l'une des premires s'intresser l'effet de TDD sur les mtriques usuelles considres comme corrles la qualit du code, et "s'alarme" d'un effet dfavorable du TDD sur ces dernires (2008) Chapitre 25: Dveloppement par les tests 91 Chapitre 26 Dveloppement par les tests client Pratique DE QUOI S'AGIT-IL? Sur le modle du dveloppement par les tests, cette pratique ajoute au dveloppement de tests de recette automatiss une contrainte supplmentaire: ceux-ci doivent tre raliss en amont des dveloppements correspondants. L'idal recherch (mais atteint relativement rarement) consiste ce que le responsable du produit, client ou expert fonctionnel soit en mesure de dfinir de nouvelles fonctionnalits sous la forme de tests de recette, sans que l'intervention des dveloppeurs soit ncessaire. ON L'APPELLE GALEMENT... Couramment dsigne par l'acronyme ATDD ("acceptance test driven development"), plus rarement STDD ("storytest driven development"). ERREURS COURANTES Plus encore que la simple utilisation de tests de recette automatiss, cette pratique est lie des outils tels que Fit/FitNesse, Cucumber, etc. Rfrentiel des pratiques Agiles 92 Il convient par consquent d'tre d'autant plus vigilant ce que le choix des outils ne se fasse pas au dtriment de la facilit, pour les responsables produit, dialoguer avec les dveloppeurs propos de la dfinition des exigences. ORIGINES Kent Beck aborde brivement cette pratique dans son livre "Test Driven Development: By Example" mais la juge peu praticable (2003) c'est partir de 2003-2004 et sous l'impulsion de Fit/FitNesse que cette pratique fait son chemin malgr les objections souleves par Beck QUELS BNFICES EN ATTENDRE? de mme que le dveloppement par les tests oblige concevoir les applications pour tre facilement testable au niveau unitaire, le dveloppement par les tests client oblige crer des interfaces spcifiques pour le test fonctionnel; il est gnralement conseill de ne pas tester directement travers l'IHM mais de fournir une couche ddie au test applicatif par exemple Chapitre 26: Dveloppement par les tests client 93 Chapitre 27 Entretien du backlog Pratique DE QUOI S'AGIT-IL? Le responsable client et tout ou partie de l'quipe se runissent rgulirement pour un "toilettage" du backlog, l'occasion duquel on peut: identifier des user stories qui n'auraient plus de sens crer de nouvelles stories si des besoins nouveaux ont t signals rvaluer la priorit des stories entre elles attribuer des estimations des stories qui n'en ont pas encore corriger des estimations en fonction de nouvelles informations dcouper des user stories prioritaires mais encore trop lourdes pour tre planifies dans une prochaine itration. ON L'APPELLE GALEMENT... En anglais "backlog grooming", littrallement "toilettage" ou "pouillage" du backlog. Rfrentiel des pratiques Agiles 94 QUELS BNFICES EN ATTENDRE? L'intrt de cette runion est de s'assurer de la pertinence du backlog. Contrairement un cahier des charges celui-ci est un "document" par nature volutif: il n'est pas ncessaire par exemple que toutes les user stories aient t finement dcoupes et estimes en dbut de projet, par contre il est important qu' tout moment une quantit suffisante de stories soient finement dcoupes et estimes. Il arrive frquemment qu'un backlog "enfle" excessivement au cours d'un projet, se chargeant de fonctionnalits qui ne sont pas vraiment prioritaires mais qu'on a considr comme potentiellement de bonnes ides ne pas oublier: en l'absence d'une effort dans le sens inverse, cette inflation peut s'avrer nfaste au respect du calendrier de livraison souhait. ORIGINES On doit apparemment l'expression "backlog grooming" Mike Cohn et elle remonte au moins 2005. Chapitre 27: Entretien du backlog 95 Chapitre 28 Equipe Concept DE QUOI S'AGIT-IL? Une "quipe" au sens Agile est un petit groupe de personnes affectes un seul projet, pour la plupart temps plein (un membre d'une quipe peut avoir par ailleurs des responsabilits oprationnelles, c'est--dire qui ne constituent pas un "projet" proprement parler). La notion d'quipe implique le partage des responsabilits: bon ou mauvais, le rsultat obtenu est le fait de l'quipe plutt que de tel ou tel individu. L'quipe runit l'ensemble des comptences ncessaires: fonctionnelles et techniques. L'accent est mis sur les rsultats obtenir plus que sur les rles et responsabilits de chacun: un dveloppeur peut tester, analyser ou dcouvrir des exigences, mme si celles-ci restent soumises la validation du client; un testeur peut dvelopper si ncessaire, etc. ON L'APPELLE GALEMENT... En anglais "Whole Team" ou "One Team". Rfrentiel des pratiques Agiles 96 ERREURS COURANTES l'erreur la plus lmentaire est de penser qu'il suffit de runir un groupe de personnes pour constituer une quipe une quipe est constitue d'au minimum 3 personnes ( deux, on forme un binme), et dpasse rarement une dizaine une mme personne peut intervenir sur plusieurs projets pendant une mme priode, mais ne fait gnralement pas partie de plus d'une quipe la fois ORIGINES Kent Beck propose l'expression "Whole Team" fin 2004 pendant la rdaction de la deuxime dition de son livre "Extreme Programming Explained", en remplacement de sa prcdente ide du "Client sur site", juge trop restrictive. Chapitre 28: Equipe 97 Chapitre 29 Estimation Concept DE QUOI S'AGIT-IL? Une "estimation" au sens usuel en dveloppement logiciel consiste valuer l'effort ncessaire la ralisation d'une tche de dveloppement. On cherche ensuite a "agrger" ces estimations individuelles de faon tablir une planification prvisionnelle d'un projet. ERREURS COURANTES Il existe de nombreuses coles de pense au sein de la communaut Agile concernant les estimations et leur utilisation. Cependant un consensus se dgage sur un certain nombre d'erreurs lmentaires ne pas commettre: une "estimation" n'est pas la mme chose qu'un "engagement"; il n'est pas judicieux de reprocher un programmeur de mettre 3 jours terminer ce qu'il avait prvu de raliser en 2 - la notion d'estimation implique une incertitude; confondre "estimation" et "engagement" conduit les personnes concernes gonfler artificiellement leurs estimations, ce qui est contre-productif une "estimation" n'est pas dfinitive; elle est le reflet l'information dont on disposait au moment de l'mettre: il est par consquent toujours admissible de rviser une estimation, Rfrentiel des pratiques Agiles 98 la hausse ou la baisse, lorsqu'on a acquis de nouvelles informations plus pertinentes Chapitre 29: Estimation 99 Chapitre 30 Estimation relative Pratique DE QUOI S'AGIT-IL? Une des nombreuses pratiques d'estimation utilises par des quipes Agiles. Celle-ci prconise d'attribuer des estimations aux tches ou user stories, non pas considres isolment, mais en regroupant ensemble des lments considrs comme de difficult quivalente. Une mise en oeuvre possible consiste tracer sur un tableau blanc plusieurs colonnes, autant qu'on souhaite avoir de valeurs distinctes l'issue de l'activit. Plus le nombre de colonnes est important, plus le rsultat sera prcis; mais plus il prendra de temps. Certaines quipes utilisent pour cet exercice les "tailles tee-shirt", de XS XXL. Cette technique peut galement tre utilise pour ajouter des user stories un backlog dj estim: plutt que de les estimer isolment, on cherchera les rapprocher d'une user story dj connue dont la difficult serait comparable. ON L'APPELLE GALEMENT... On parle galement d'estimation par affinit ("affinity estimation") ou d'estimation par similitude d'effort. Rfrentiel des pratiques Agiles 100 ORIGINES le nom "Affinity Estimating" semble d Lowell Lindstrom qui met au point cette technique lors d'un Scrum Gathering en 2008 l'ide d'estimation en "tailles tee-shirt" remonte au moins 2005 QUELS BNFICES EN ATTENDRE? exprimer les estimations de faon relative, surtout lorsqu'on utilise une unit telle que les points, est une faon d'viter les erreurs courantes lies l'activit d'estimation: exiger trop de prcision, ou confondre estimation et engagement Chapitre 30: Estimation relative 101 Chapitre 31 Facilitation Concept DE QUOI S'AGIT-IL? Un facilitateur est une personne dsigne pour animer une runion. Il ou elle s'interdit gnralement de participer au contenu de la runion, mais se cantonne crer les conditions dans lesquelles un groupe en runion pourra parvenir l'objectif qu'il s'est pralablement fix. La facilitation est une comptence part entire, dont les tenants et les aboutissants dpassent largement le cadre des approches Agiles; plutt que d'en faire ici une description complte, on se rfrera avec profit aux publications de l'IAF, International Association of Facilitators. Rfrentiel des pratiques Agiles 102 Chapitre 32 Gestion de versions Concept DE QUOI S'AGIT-IL? La gestion de versions n'est pas proprement parler une "pratique" Agile, puisqu'elle caractrise (heureusement) de trs nombreux projets de dveloppement mens selon d'autres principes. Il est cependant pertinent de la citer ici pour deux raisons: bien qu'elles soient devenues rares, certaines quipes restent encore rfractaire l'utilisation d'outils de gestion de versions, or il s'agit l non seulement d'une "bonne pratique" mais d'un prrequis nombre de pratiques Agiles (intgration continue par exemple) il est judicieux pour une quipe Agile d'expliciter sa politique de gestion de versions, et de s'assurer que celle-ci est adapte aux pratiques qu'elle utilise Chapitre 32: Gestion de versions 103 Chapitre 33 Given - When - Then Concept DE QUOI S'AGIT-IL? La matrice Given-When-Then est un format recommand pour le test fonctionnel d'une User Story: (Given) (Etant donn) un contexte, (When) (Lorsque) l'utilisateur effectue certaines actions, (Then) (Alors) on doit pouvoir constater telles consquences Par exemple: Etant donn un solde positif de mon compte, et aucun retrait cette semaine, Lorsque je retire un montant infrieur la limite de retrait, Alors mon retrait doit se drouler sans erreur ou avertissement Des outils tels que JBehave, RSpec ou Cucumber encouragent l'utilisation de cette formule. Rfrentiel des pratiques Agiles 104 Chapitre 34 Graphe burn-down Pratique DE QUOI S'AGIT-IL? L'quipe affiche en grand format, sur un des murs de son local, un graphe reprsentant la quantit de travail restant effectuer (sur l'axe vertical) rapporte au temps (sur l'axe horizontal). C'est un "radiateur d'information". Ce graphe peut concerner l'itration en cours ("iteration burndown") ou plus couramment l'ensemble du projet ("product burndown"). ON L'APPELLE GALEMENT... Claude Aubry, expert Scrum, a propos la francisation "beurdone"; elle est reste quelque peu marginale. QUELS BNFICES EN ATTENDRE? En rendant non seulement visible mais indniable la situation relle de l'itration ou du projet par rapport au planning initialement prvu, cette pratique oblige l'quipe confronter les difficults plus rapidement. (Corollairement, pour tre efficace ce graphe doit tre affich dans un format assez grand et dans un endroit o il suscite des discussions; on vitera de le placer l'cart dans un couloir, au format A4...) Chapitre 34: Graphe burn-down 105 ORIGINES Cette pratique est dcrite pour la premire fois par Ken Schwaber sur son site "Control Chaos" (2000) Elle devient populaire dans la communaut Scrum partir de 2002 Diverses alternatives sont ensuite proposes, sans toutefois dtrner le "burn down" comme choix le plus simple, telles que le "burnup" (on inverse l'axe des Y) ou le plus sophistiqu "Cumulative Flow Diagram", partir de 2003 Rfrentiel des pratiques Agiles 106 Chapitre 35 Grille INVEST Concept DE QUOI S'AGIT-IL? La grille des critres INVEST permet de juger de la qualit d'une User Story; elle conduira ventuellement reformuler son nonc, voire modifier en profondeur la Story (ce qui se traduit souvent physiquement: on dchire la fiche ou le Post-It correspondant et on en crit une autre). Une bonne User Story est: Indpendante des autres Ngociable initialement, plutt qu'un engagement ferme Verticale, ou ayant de la valeur en soit Evalue en termes de complexit relative Suffisamment petite (en anglais Small) Testable en principe, ce qu'on vrifie en crivant un test Plus en dtail, une bonne User Story: Pour rpondre au critre I, doit pouvoir tre implmente avant ou aprs n'importe quelle autre; une erreur classique tant par exemple d'argumenter que "la Story sur la prise de commande implique d'avoir ouvert un compte, donc il faut raliser en premier celle concernant l'identification (login) de l'acheteur". C'est un peu comme supposer qu'on ne peut crire le chapitre 2 d'un roman qu'aprs avoir achev le chapitre 1: plus facile, mais avec un peu d'imagination on arrive trs bien inverser cette squence. Dans notre exemple l'quipe de Chapitre 35: Grille INVEST 107 dveloppement mettra en place les "bouchons" ncessaires pour simuler un utilisateur identifi. Pour rpondre au critre N, ne formuler dans un premier temps que l'essentiel, savoir l'objectif fonctionnel recherch; on vitera par exemple de spcifier dans une User Story des lments techniques, par exemple "En tant qu'acheteur, lorsque j'cris dans le champ texte puis que je clique sur le bouton Recherche, la liste gauche du champ de recherche est renseigne avec les articles correspondants". Ces dtails d'implmentation feront l'objet d'une discussion permettant d'identifier la meilleure solution; initialement, une formulation du type "L'acheteur peut chercher des articles par mot-cl" est suffisante pour l'estimation et la planification. Pour rpondre au critre V, reprsenter un incrment rellement utile pour l'utilisateur final ou du point de vue du client. Par exemple, "raliser le schma de la base de donnes pour la facturation" n'est pas un incrment ayant de la valeur en soi, mais une tche technique. A contrario, "mettre une facture pour les achats d'articles en France" en laissant pour plus tard une seconde Story dont l'nonc serait "mettre une facture pour des achats livrs depuis l'tranger" reprsente un meilleur dcoupage: chaque incrment permet de raliser une partie distincte du chiffre d'affaires. Pour rpondre au critre E, tre suffisamment comprise, mais galement suffisamment prcise. Il arrive parfois qu'on formule des User Stories qui reprsentent presque un projet part entire, par exemple "Optimiser le calendrier de livraison des achats". Les conditions de satisfaction doivent tre suffisamment prcises et restreintes pour que l'quipe de dveloppement puisse quantifier l'effort d'implmentation, sinon dans l'absolu du moins en termes de complexit relative. (L'quipe estime par exemple que "Livrer en deux fois lorsque des carts suprieurs une semaine sparent les dates de livraison de deux articles du panier" reprsente deux fois l'effort requis pour "Emettre la facture", cette dernire servant en quelque sorte d'talon.) Pour rpondre au critre S, ne pas dpasser quelques jours- hommes. La granularit exacte est fonction du nombre de personnes dans l'quipe de dveloppement et de la dure de l'itration, le critre dterminant tant la possibilit de Rfrentiel des pratiques Agiles 108 terminer au minimum une, et idalement cinq ou six au minimum, User Stories dans une seule itration. Pour rpondre au critre T, tre suffisamment bien comprise pour qu'il soit possible de fournir un exemple dtaill: "Lorsque j'achte l'article X au prix Y, sachant que la TVA sur la catgorie Livres est de Z, la facture doit indiquer le montant total suivant:..." La fonctionnalit envisage doit entraner de la part du produit des consquences ou des comportements observables. Ainsi "Amliorer la performance" n'est pas une bonne User Story, il est prfrable de prciser: "La page contenant les rsultats de recherche doit s'afficher en moins de 2 secondes". Chapitre 35: Grille INVEST 109 Chapitre 36 Intgration continue Pratique DE QUOI S'AGIT-IL? On appelle "intgration" tout ce qu'il reste faire une quipe projet, quand le travail de dveloppement proprement parler est termin, pour obtenir un produit exploitable, "prt l'emploi". Par exemple, si deux dveloppeurs ont travaill en parallle sur deux composants A et B, et considrent leur travail comme termin, vrifier que A et B sont cohrents et corriger d'ventuelles incohrences relve de l'intgration. Ou encore, si le produit final est fourni sous la forme d'un fichier compress, regroupant un excutable, des donnes, une documentation, les tapes consistant produire ces fichiers et les rassembler relvent aussi de l'intgration. Une quipe qui pratique l'intgration continue vise deux objectifs: rduire presque zro la dure et l'effort ncessaire chaque pisode d'intgration pouvoir tout moment fournir un produit exploitable Dans la pratique, cet objectif exige de faire de l'intgration une procdure reproductible et dans la plus large mesure automatise. Pour la plupart des quipes utilisant actuellement une approche Agile, cela se traduit ainsi: l'quipe utilise un rfrentiel de gestion de versions du code source (CVS, SVN, Git, etc.) Rfrentiel des pratiques Agiles 110 l'quipe a automatis entirement le processus de compilation et gnration du produit ce processus inclut l'excution d'une batterie de tests unitaires et fonctionnels automatiss chaque publication dans le rfrentiel des sources en cas d'chec ne serait-ce que de l'un de ces tests, l'quipe cherche prioritairement rtablir la stabilit du produit ERREURS COURANTES Attention ne pas confondre les outils (serveurs d'intgration continue du type Cruise Control, Hudson, etc.) avec la pratique. L'intgration continue n'est pas en premier lieu une question d'outil mais d'attitude, et s'appuie sur un outillage diversifi: outils d'automatisation de la compilation et gnration, outils de test, et bien sr outils de gestion des versions. L'oppos d'une intgration continue serait une quipe prvoyant un unique pisode d'intgration, la toute fin du projet. Gnralement, cette intgration s'avre alors longue et pnible, ce qui conduit la plupart des dveloppeurs expriments prfrer plusieurs pisodes d'intgration au fil du projet, afin d'anticiper les difficults et d'amliorer la procdure d'intgration. L'intgration continue consiste pousser ce raisonnement sa limite. Par consquent, toute activit qui n'apparat qu'au moment d'une livraison intermdiaire et que l'quipe vit comme longue et pnible est candidate pour tre prise en compte au titre de l'intgration continue... mme si l'quipe estime dj utiliser cette pratique. ORIGINES l'expression "intgration continue" est relativement ancienne, on la trouve par exemple dans cet article de 1993, qui ne l'emploie que pour recommander au contraire une intgration assez frquente mais "programme" dans le cadre d'un processus incrmental la technique du "Daily Build and Smoke Test" est un prcurseur, applique dans les annes 90 par Microsoft pour Chapitre 36: Intgration continue 111 Windows NT 3.0 et dcrite entre autres par Steve McConnell en 1996 on ne parle alors pas d'automatisation, ni des tests, ni du"build", c'est--dire les tapes de compilation, dition de liens et production de l'excutable et des fichiers annexes; l'accent est mis sur la frquence, le cycle quotidien tant considr comme "extrme" l'expression "Smoke Test" est hrite de l'lectronique: le test le plus basique pour un circuit complexe consiste le mettre sous tension; si on voit de la fume s'chapper d'un des composants, c'est qu'il y avait une erreur... il s'agit d'un test rudimentaire pour s'assurer du bon fonctionnement gnral du logiciel, sans prjuger de l'existence de dfauts moins vidents l'ide d'intgration continue comme un objectif de l'organisation du projet, caractrisant un processus de dveloppement "moderne" et par contraste aux intgrations infrquentes qui ont t la rgle jusqu'alors, apparat dans "Software project management: a unified framework" de Walker Royce, en 1998 l'ide d'intgration continue, avec les ingrdients suivants, est propose par Extreme Programming en 1997 et dcrite par Martin Fowler en 2000: utilisation d'un rfrentiel de gestion de versions du code source automatisation du processus de "build" prsence de tests unitaires et fonctionnels automatiss (en lieu et place d'un "smoke test" manuel) excution au minimum quotidienne de l'ensemble (build+test) gestion manuelle du processus d'intgration le premier "serveur d'intgration continue", Cruise Control, est publi sous une license Open Source en 2001 par rapport la pratique prcdente, il automatise la surveillance du rfrentiel des versions, le lancement de l'ensemble (build+test), la notification des rsultats et la publication de rapports Rfrentiel des pratiques Agiles 112 la priode 2001-2007 est surtout marque par l'apparition de nombreux outils de ce type, la concurrence entre outils attirant l'attention de faon sans doute disproportionne sur ces aspects un peu annexes un progrs important, cependant, est l'ide de rendre visible l'tat de l'intgration la plus rcente par un signal visuel, l'ide remonte environ 2004 dans les premiers temps elle a plutt l'aspect d'un gadget, utilisant une lampe d'ambiance on voit ensuite apparatre de vritable tableaux de bord de l'intgration continue, semblable des tableaux de bord industriels partir de 2007 on commence parler de "dploiement continu", tout d'abord comme un idal thorique; c'est un article d'un ingnieur chez l'diteur IMVU qui fera sensation et marque l'avnement concret de cette pratique, au dbut 2009 COMMENT RECONNAITRE SON UTILISATION? Le signe le plus courant de la pratique au sein d'une quipe est la prsence d'un moniteur ddi ou d'un indicateur visuel (lampe, cran LED ou LCD, etc.) ddi l'affichage du rsultat de l'intgration la plus rcente. Plus subtilement, il convient d'observer comment l'quipe ragit une intgration "casse" signalant un dfaut dans le produit. Ds lors que l'quipe est consciente d'un dfaut, mais tolre et laisse persister une situation o elle n'est pas en mesure de livrer un produit exploitable, il n'est plus possible de parler d'intgration continue! Il est, de ce fait, presque tentant de parler de l'intgration continue comme d'une comptence (d'quipe) plutt que comme d'une pratique. QUELS BNFICES EN ATTENDRE? le principal intrt de l'intgration continue est de rduire la dure, l'effort et la douleur provoque par chaque intgration, l'exprience suggrant qu'il existe un "cercle vicieux" dans le sens inverse: plus les intgrations sont espaces, plus elles sont Chapitre 36: Intgration continue 113 difficiles, et plus (en raction la douleur provoque) on a tendance les espacer l'intgration continue dmultiplie le bnfice d'une batterie tendue de tests unitaires: elle permet de dtecter au plus tt les dfauts n'apparaissant qu' l'intgration et par consquent de minimiser leurs consquences et les risques associs aux dfauts d'intgration l'intgration continue permet de tirer le meilleur parti du dveloppement incrmental: des questions comme l'installation et le dploiment du produit ne sont pas laisses de ct jusqu' la fin du projet mais rsolues ds le dpart dans le cadre de la pratique O SE RENSEIGNER POUR EN SAVOIR PLUS? (LIVRES, ARTICLES) Continuous Integration, Martin Fowler (2006) Continuous Integration: Improving Software Quality And Reducing Risk, de Paul Duvall (2007) PUBLICATIONS ACADMIQUES ET TRAVAUX DE RECHERCHE Sur le plan de l'valuation empirique, l'une des questions les plus importantes semblerait tre la suivante: si l'on compare le cot total, c'est--dire le cot unitaire d'une intgration multipli par le nombre d'intgrations au cours d'un projet, existe-t-il une frquence optimale d'intgration? Cette question semble pour l'instant sans rponse, et aucune tude ne semble avoir t directement consacre l'valuation de l'intgration continue. Rfrentiel des pratiques Agiles 114 Chapitre 37 Itration Concept DE QUOI S'AGIT-IL? Une itration au sens Agile est une "boite de temps" ou "timebox" dont la dure: varie d'un projet l'autre, de 1 semaine 4 semaines, rarement plus est en principe fixe sur la dure du projet Dans la plupart des cas les itrations sont alignes avec les semaines civiles, dbutant un lundi et se terminant un vendredi. La dure fixe des itrations permet d'appliquer une simple formule de proportionnalit pour dduire, compte tenu de la vlocit observe et de l'effort estim restant fournir, la dure prvisionnelle du projet. ON L'APPELLE GALEMENT... Le terme "Sprint" est galement utilis et vient de Scrum. Les deux termes "Sprint" et "itration" sont utiliss indiffremment sans connotation particulire. Chapitre 37: Itration 115 ORIGINES L'usage courant du terme "itration" suggre bien l'ide de base de rpter plus d'une fois une mme dmarche, mais son association avec la stratgie consistant dlibrment "trononner" la dure d'un projet en sous-priodes semble remonter Objectory, prcurseur d'Unified Process, vers 1993. Rfrentiel des pratiques Agiles 116 Chapitre 38 Langage omniprsent (ubiquitous language) Pratique DE QUOI S'AGIT-IL? Pratique de conception issue du livre de David Evans "Domain Driven Design" (2003), elle consiste notamment s'attacher utiliser le vocabulaire et les notions des clients et experts mtiers, non seulement dans les discussions autour des exigences, mais galement dans le code source. (D'autres techniques complmentaires sont dtailles dans le livre d'Evans, mais le nom de "langage omniprsent" reflte l'intention principale.) QUELS BNFICES EN ATTENDRE? L'un des obstacles couramment rencontr par les projets de dveloppement concerne la difficult de la traduction entre deux langages techniques, celui des dveloppeurs d'une part, celui des experts mtier d'autre part. Pour une part cette traduction est invitable: les dveloppeurs doivent s'exprimer en termes d'algorithmes, par exemple, qui n'ont pas Chapitre 38: Langage omniprsent (ubiquitous language) 117 ncessairement un quivalent dans le vocabulaire de l'entreprise pour laquelle ils travaillent. Cependant on constate souvent que ce vocabulaire du logiciel "dborde" du cadre dans lequel il est justifi, au point que les interlocuteurs des dveloppeurs se sentent dmunis, voire alins, lors des conversations avec ces derniers. L'adoption explicite et dlibre d'un "langage omniprsent" permet de mitiger ces difficults et reprsente donc un facteur de succs d'une approche Agile. ORIGINES dans les premires annes, Kent Beck tente de populariser une pratique d'Extreme Programming appele "Mtaphore"; celle-ci est rarement utilise car mal comprise (2000 environ) le terme "langage omniprsent" apparat avec le livre de David Evans (2003) un consensus s'tablit ensuite pour ne plus parler de "Mtaphore", et remplacer cette pratique par les recommandations, juges plus prcises, de David Evans concernant ce "langage omniprsent" (2004) Rfrentiel des pratiques Agiles 118 Chapitre 39 Livraisons frquentes Pratique DE QUOI S'AGIT-IL? Une quipe Agile met frquemment son produit entre les mains d'utilisateurs finaux, aptes l'valuer et formuler des critiques ou des apprciations. Ce qu'on entend par "frquemment" varie selon le contexte technique, mais on estime en gnral qu'une telle livraison doit avoir lieu toutes les quatre six itrations au grand maximum. (Dans certains contextes, tels que le dveloppement Web, on peut souvent envisager des frquences plus leves, par exemple une livraison par itration; la limite tant le dploiement continu.) ON L'APPELLE GALEMENT... Le terme anglais est "small release" ou "frequent releases", on entend parfois le proverbe "release early, release often". ERREURS COURANTES livrer le produit un responsable marketing ou un chef de projet pour qu'il "teste" la dernire version n'est pas suffisant, pas plus qu' une quipe d'assurance qualit; au minimum une Chapitre 39: Livraisons frquentes 119 livraison doit tre une "version beta" value par des utilisateurs reprsentatifs dans certains contextes (logiciels embarqus, par exemple) il n'est pas possible de prvoir une livraison frquente tous les utilisateurs; cela ne doit pas servir de prtexte ne pas organiser une livraison frquente des utilisateurs (sites pilotes, clients volontaires, etc.) QUELS BNFICES EN ATTENDRE? Savoir organiser une mise en production frquente ds les dbuts du projet est l'une des pierres angulaires de la rduction du risque par l'approche Agile: on diminue l'effet tunnel pour la planification du projet on s'assure plus rapidement de l'adquation du produit aux besoins rels on obtient un retour plus rapide sur la qualit et la stabilit du produit Rfrentiel des pratiques Agiles 120 Chapitre 40 Niko-niko Pratique DE QUOI S'AGIT-IL? L'quipe affiche, sur un mur visible de tous, un calendrier de type journalier. A la fin de chaque journe de travail les membres de l'quipe indiquent par un dessin ou en collant des gommettes de couleur leur valuation subjective de cette journe. ON L'APPELLE GALEMENT... Le terme "feeling board" est galement utilis. C'est un radiateur d'information. Le terme est d'origine japonaise, le redoublement indiquant un effet d'onomatope, "niko" signifie "sourire". ORIGINES propos par Akinori Sakata dans cet article dbut 2006 Chapitre 40: Niko-niko 121 QUELS BNFICES EN ATTENDRE? L'intrt de la pratique est d'objectiver un lment, la motivation ou le bien-tre de l'quipe, habituellement subjectif et difficile mesurer. C'est une excellente illustration du "Principe de Gilb": "Si vous avez besoin de quantifier quelque chose, il existe toujours une manire de le faire qui soit prfrable ne pas le quantifier du tout." En d'autres termes, il n'est pas ncessaire qu'une mesure soit parfaite ou trs prcise, ds lors que votre objectif est de rendre quantifiable quelque chose qui ne l'est pas encore: l'essentiel est de commencer. O SE RENSEIGNER POUR EN SAVOIR PLUS? (LIVRES, ARTICLES) Niko-niko, d'Emmanuel Chenu (2009) Rfrentiel des pratiques Agiles 122 Chapitre 41 Objets fantaisie (Mock Objects) Concept DE QUOI S'AGIT-IL? Technique couramment utilise dans la mise au point de tests unitaires automatiss. Il s'agit de crer pour les besoins d'un test une version spcifique d'un composant logiciel (typiquement une classe, qui sera par consquent instancie par un objet), qui au lieu de reproduire le fonctionnement rel de ce composant en fournit une version "pr-enregistre": par exemple, le "mock" d'une base de donnes est un objet qui simule la base de donnes, en renvoyant des donnes prdtermines quelle que soit la requtre qu'on lui transmet. ON L'APPELLE GALEMENT... On parle galement de "simulacres". Le terme "stub" (bouchon) n'est pas proprement parler un synonyme, mais fait partie du mme vocabulaire cr pour parler avec plus de prcision de certaines techniques lies aux tests unitaires. Le terme gnrique pour l'ensemble des objets de ce type est "doublure" (en anglais "test double" par analogie "stunt double"). Chapitre 41: Objets fantaisie (Mock Objects) 123 ORIGINES le terme est d Steve Freeman, Tim McKinnon et Philip Craig, c'est une allusion un passage d'Alice au Pays des Merveilles de Lewis Carroll sur la Tortue Fantaisie (Mock Turtle), leur article "Endo-Testing: Unit Testing with Mock Objects" est publi en 2000 QUELS BNFICES EN ATTENDRE? Le principal intrt de cette technique est qu'elle permet de dcoupler des parties du code de faon les tester de faon rellement "unitaire", c'est--dire sans que le rsultat du test soit dpendant d'un composant qui n'a rien voir avec celui que l'on teste, mais dont ce dernier dpend pour son fonctionnement. ERREURS COURANTES Cette technique un peu controverse a de nombreux adeptes mais galement des dtracteurs, qui estiment que l'utilisation de ces objets fantaisie ou "mocks" complique, souvent inutilement, le code des tests unitaires, au dtriment de leur rle de documentation technique. Rfrentiel des pratiques Agiles 124 Chapitre 42 Personas Pratique DE QUOI S'AGIT-IL? Lorsque le projet l'exige (par exemple si l'ergonomie joue un rle dterminant dans le succs du projet), l'quipe rdige la fiche biographique dtaille d'un utilisateur fictif de son produit: c'est ce qu'on appelle une "persona". Le plus souvent cela prend la forme d'une page A4 avec la photo de ce personnage (dcoupe par exemple dans un magazine), son nom et des dtails de sa situation sociale, personnelle et professionnelle: "Amanda Jones, 34 ans, attache de presse d'un grand groupe alimentaire, etc." Un produit logiciel tant le plus souvant destin plusieurs catgories de personnes, avec potentiellement des prfrences diffrentes qui peuvent les amener avoir des attentes diffrentes quant au produit, on ralise autant de "personas" qu'on a identifi de catgories importantes. Ces fiches biographiques sont affiches dans le local de l'quipe. QUELS BNFICES EN ATTENDRE? Le principe des Personas se rsume l'observation suivante: un concepteur qui cherche faire plaisir tous les utilisateurs concevable est contraint tellement de compromis que sa cration ne convient finalement personne. Chapitre 42: Personas 125 Par consquent, il est prfrable de dcrire de faon prcise et personnalise un utilisateur nammoins reprsentatif, et justifier ses choix (de fonctionnalit, de conception graphique, d'ergonomie) en fonction de cet utilisateur. Partager ces informations au sein de l'quipe permet galement de responsabiliser chacun sur les consquences de ses choix. Un dveloppeur soucieux d'optimiser son produit pour "Jeanine, retraite" vitera de lui-mme de proposer un dialogue de prfrences contenant 50 rglages; ce ne serait pas ncessairement le cas s'il avait en tte la notion plus abstraite de "l'utilisateur". ERREURS COURANTES Ne pas confondre les Personas avec diffrents autres outils utiliss pour la gestion des exigences ou dans le marketing: ce ne sont pas des "rles d'utilisateurs" (par exemple administrateur, agent de saisie, etc.) caractriss principalement par leur fonction professionnelle ce ne sont pas non plus des "segments de march" (l'exemple canonique tant la mnagre de moins de cinquante ans) dfinis par des critres principalement dmographiques PUBLICATIONS ACADMIQUES ET TRAVAUX DE RECHERCHE Deux tudes empiriques notables concernent cette pratique: "An Empirical Study Demonstrating How Different Design Constraints, Project Organization and Contexts Limited the Utility of Personas" de Ronkko et al. (2005) est une tude de cas qui s'appuie sur trois projets pour montrer que les enjeux politiques prsents au sein de toute entreprise peuvent limiter voire annuler l'efficacit de cette pratique "Real or Imaginary: The effectiveness of using personas in product design" de Long (2009) prsente une tude exprimentale, utilisant des tudiants, qui tend confirmer l'intrt de la pratique Rfrentiel des pratiques Agiles 126 Chapitre 43 Planning poker Pratique DE QUOI S'AGIT-IL? Une mthode ludique d'estimation, utilises par de nombreuses quipes Agiles. L'quipe se runit avec son client ou Product Owner. Autour de la table, chacun dispose d'un jeu de cartes reprsentant des valeurs typiques pour l'estimation en points d'une user story. Le client prsente rapidement l'objectif d'une story. Chacun choisit ensuite une estimation, en silence, et prpare la carte correspondante face cache. Lorsque tout le monde est prt, on retourne les cartes simultanment et on donne lecture des estimations. Les membres de l'quipe ayant donn les estimations la plus basse et la plus haute sont invits expliquer leur raisonnement; aprs une brve discussion, on cherche mettre une estimation faisant consensus, ventuellement en rptant le jeu. ERREURS COURANTES Un danger potentiel du Planning Poker rside dans l'obligation de "converger" vers une estimation produisant un consensus. En procdant de la sorte, on risque d'ignorer une information importante, savoir le degr d'incertitude que reprsentait une divergence importante entre les estimations initiales. Chapitre 43: Planning poker 127 ORIGINES le Planning Poker est une adaptation du "Wideband Delphi" propos par Barry Boehm dans les annes 1970 sa forme actuelle est propose par James Grenning dans un article paru en 2002 rendue populaire notamment dans la communaut Scrum, et comme nombre d'autres techniques lies la planification, par le livre de Mike Cohn *Agile Estimating and Planning paru en 2005 QUELS BNFICES EN ATTENDRE? le format de la runion permet d'exploiter la connaissance de tous les membres de l'quipe, alors que dans une runion " btons rompus" il arrive souvent que certaines personnes ne s'expriment jamais la discussion qui a lieu suite la rvlation des estimations initiales permet de mettre en commun des connaissances sur la user story en question et les difficults potentielles de son estimation PUBLICATIONS ACADMIQUES ET TRAVAUX DE RECHERCHE Plusieurs tudes initiales menes par Nils Christian Haugen semblent confirmer l'intrt de la pratique, qui produirait des estimations lgrement plus fiables que l'estimation par un seul "expert". Rfrentiel des pratiques Agiles 128 Chapitre 44 Points (estimation en) Pratique DE QUOI S'AGIT-IL? La plupart des quipes Agiles prfrent mettre des estimations dans une unit autre que les classiques hommes-jours. L'une des principales raisons en est que l'usage de la vlocit pour la planification permet de s'affranchir de toute unit: quelle que soit l'unit utilise, on peut calculer la dure prvisible du projet en termes du nombre d'itrations, chaque itration produisant une certaine quantit de fonctionnalits. Une raison plus socio-psychologique tient au fait que l'estimation dans une unit arbitraire tels que les "points" fait peser sur les dveloppeurs une moindre pression. ERREURS COURANTES La principale erreur consiste investir trop de temps ou d'nergie dans le dbat sur l'unit d'estimation, dans la mesure o la planification base sur la vlocit rend ce choix largement sans consquence. ON L'APPELLE GALEMENT... L'expression anglophone consacre est "story points". Chapitre 44: Points (estimation en) 129 Plusieurs synonymes existent exprimant avec plus ou moins de fantaisie l'intention de se dmarquer des estimations "ralistes" en hommes-jours: l'un des plus courants est "NUTS", acronyme anglophone pour "Nebulous Units Of Time". On peut galement croiser des "cahouettes" (francisation de "nuts"), des "nounours" (francisation de "gummi bears", c'est dire des bonbons en forme d'ourson), etc. Rfrentiel des pratiques Agiles 130 Chapitre 45 Programmation en binmes Comptence DE QUOI S'AGIT-IL? Deux programmeurs partagent un seul poste de travail (cran, clavier, souris), se rpartissant les rles entre un "conducteur" (aux commandes) et un "copilote" (surveillant l'cran et intervenant en cas de besoin), intervertissant les rles frquemment. ON L'APPELLE GALEMENT... De l'anglais "pair programming", ou programmation (ou dveloppement) par paires, on parle aussi de binmage. Donne les verbes: binmer, "pairer" (frquent au Qubec). ERREURS COURANTES les deux programmeurs doivent tre actifs et impliqus tout au long de la session, sinon, aucun bnfice ne peut en tre attendu un calcul simpliste assimile le binmage un doublement des cots; les tudes mettent en vidence qu'il n'en est rien, Chapitre 45: Programmation en binmes 131 lorsqu'il est pratiqu correctement, mais dans le cas limite o un seul programmeur travaille rellement, c'est bien le risque encouru on doit entendre parler le conducteur; binmer c'est aussi "programmer haute voix", s'il est silencieux le copilote doit intervenir imposer le binmage ne peut en aucun cas s'avrer fructueux dans une situation o les aspects relationnels, y compris les plus concrets (hygine personnelle, etc.) prsentent un obstacle ORIGINES longue tradition en milieux universitaires, militaires... suggre par Larry Constantine (Constantine on Peopleware) sous le nom "Dynamic Duo" (1995) simultanment dcrite dans les "Organizational Patterns" de Jim Coplien (1995) pratique Extreme Programming ds ses dbuts (1996) la variante "ping pong" (cf. ci-dessous) est dcrite en 2003 COMMENT S'AMLIORER? L'un des principaux cueils la pratique du binmage est la passivit. Lorsqu'on l'utilise conjointement avec le dveloppement par les tests, une variante appele "ping pong programming" favorise l'change de rles: l'un des deux programmeurs crit un test unitaire qui choue, puis passe le clavier son collgue qui cherche alors faire passer ce test, et peut alors son tour crire un test. Cette variante peut tre utilise soit pour des raisons pdagogiques, soit dans un esprit plus ludique par des programmeurs dj confirms. Dbutant je suis capable de participer en tant que copilote et intervenir bon escient je suis capable de participer en tant que conducteur, en particulier d'expliquer tout moment le code que j'cris Intermdiaire Rfrentiel des pratiques Agiles 132 je reconnais le bon moment pour abandonner le clavier et changer de rle je reconnais le bon moment pour "voler" le clavier et changer de rle Avanc je suis capable de m'insrer dans le rle de copilote en cours de dveloppement d'une tche commence par un autre COMMENT RECONNAITRE SON UTILISATION? l'agencement du mobilier dans la pice et des postes de travail sont adapts au binmage (on peut reconnatre une quipe novice tout amnagement qui rend le binmage inconfortable, par exemple trop peu de place pour deux siges) l'ambiance sonore est matrise: les conversations de N binmes simultanes crent un murmure perceptible mais qui ne perturbe pas le travail si vous pouvez voir des programmeurs portant un casque audio en entrant dans la pice, c'est un signe ngatif suggrant non seulement l'absence de binmage mais galement de conditions dfavorables son adoption QUELS BNFICES EN ATTENDRE? une plus grande qualit des dveloppements; "programmer haute voix" conduit mieux apprhender les complexits et les dtails pernicieux, limitant ainsi le risque d'erreurs ou de se fourvoyer une meilleure diffusion des connaissances dans l'quipe, notamment lorsqu'un dveloppeur peu familier d'un module travaille avec un autre qui le connait mieux une amlioration plus rapide des comptences des dveloppeurs juniors, au contact de leurs ans une rdution de l'effort de coordination, puisqu'au lieu de N dveloppeurs on est amen coordonner N/2 binmes Chapitre 45: Programmation en binmes 133 une meilleure capacit rester concentrer et rsister aux interruptions: lorsqu'un des deux membres du binme doit s'interrompre, l'autre peut rester focalis sur la tche et aider son collgue se reconcentrer ensuite QUELS COTS OU INVESTISSEMENTS FAUT- IL CONSENTIR? Sans que ce soit confirm de faon probante par des tudes empiriques, on estime que dans le cas idal, la programmation en binmes se traduit par un surcot de 15% par rapport la situation o chaque dveloppeur travaille sparment, surcot qui serait facilement compens par l'amlioration de la qualit, puisqu'une mauvaise qualit se traduit par une pnalit de maintenance tout au long du projet. O SE RENSEIGNER POUR EN SAVOIR PLUS? (LIVRES, ARTICLES) Pair Programming Illuminated, de Laurie Williams PUBLICATIONS ACADMIQUES ET TRAVAUX DE RECHERCHE Thoriques Les travaux thoriques les plus intressants sont ceux qui poursuivent l'approche ethnographique initie entre autres par Sallyann Freudenberg (ne Bryant), en examinant " la loupe" des interactions entre programmeurs dans leur milieu habituel How Pair Programming Really Works cite certains de ces travaux assez reprsentatifs de la tendance rcente remettre en question le modle "conducteur/copilote" Empiriques The Collaborative Software Process, thse doctorale de Laurie Williams, la plus connue des tudes ce sujet, rapportant les conclusions initiales suivantes: Rfrentiel des pratiques Agiles 134 amlioration de la qualit, pas de surcot constat de faon statistiquement significative The effectiveness of pair programming: A meta- analysis, une mta-analyse recensant et regroupant les 18 principales tudes empiriques connues ce jour, conclusions: le binmage amliore la qualit et permet de rduire les dlais de dveloppement, mais conduit une augmentation du cot (i.e. en termes de charge); la rduction du dlai concerne surtout les tches les plus simples confies des juniors et peut s'accompagner d'une rduction de la qualit. La plupart des tudes empiriques (14 sur les 18 analyses dans la rfrence ci-dessus) souffrent d'un dfaut qui entche leurs conclusions; elles sont menes sur des populations d'tudiants plutt que sur des professionnels dans des conditions relles d'exercice. Chapitre 45: Programmation en binmes 135 Chapitre 46 Radiateurs d'information Pratique DE QUOI S'AGIT-IL? "Radiateur d'information" est le terme gnrique dsignant un affichage mural (passif, par exemple une feuille de papier, ou actif, par exemple un cran affichant des rsultats d'intgration continue) ralis par une quipe pour diffuser publiquement une information juge pertinente: nombre total de tests, vlocit, nombre d'incidents en exploitation, etc. ON L'APPELLE GALEMENT... un terme apparent est "Big Visible Chart" (un grand graphe bien visible). pour gnraliser on utilise galement le terme "informative workspace" on peut enfin rapprocher ces termes de la notion de "Visual management" de la pense dite Lean Rfrentiel des pratiques Agiles 136 QUELS BNFICES EN ATTENDRE? L'usage significatif de radiateurs d'information vhicule deux messages importants: l'quipe n'a rien cacher (notamment ses clients) l'quipe n'a rien se cacher: elle admet et confronte ses difficults Le principal intrt de cette pratique est donc de responsabiliser les diffrents intervenants. Un avantage annexe consiste susciter des conversations lorsque des personnes extrieures l'quipe visitent les locaux. ORIGINES le terme "information radiator" est d Alistair Cockburn, entre 2000 et 2002 le terme "big visible chart" remonte la mme poque, il est en tout cas antrieur 2001 Chapitre 46: Radiateurs d'information 137 Chapitre 47 Refactoring Comptence DE QUOI S'AGIT-IL? Refactorer consiste modifier un code source de faon en amliorer la structure, sans que cela modifie son comportement fonctionnel. ON L'APPELLE GALEMENT... L'anglicisme est le plus souvent employ: l'activit est le refactoring, on utiliser galement le verbe refactorer. Par le substantif, un refactoring, on dsigne une modification gnrique qu'il est possible d'appliquer un code pour le transformer. On peut galement traduire par remanier, remaniement. Le terme de refactorisation est galement rencontr, mais nettement moins courant. ERREURS COURANTES Attention, refactorer n'est pas: rcrire du code corriger des bugs amliorer un aspect extrieurement visible du logiciel, comme l'IHM Rfrentiel des pratiques Agiles 138 ORIGINES Connue sous le nom de "factoring" chez les programmeurs Forth depuis 1984 Formellement dcrite par Bill Opdyke en 1992 Intgre par Kent Beck dans Extreme Programming en 1997 Popularise par Martin Fowler en 1999 COMMENT S'AMLIORER? Niveaux de performance individuels: Dbutant je connais la dfinition j'utilise quelques refactorings de mon environnement de dveloppement j'utilise quelques refactorings que je sais appliquer manuellement je connais les risques de rgression associs au refactorings manuels et automatiques je reconnais la duplication et sais l'liminer par refactoring Intermdiaire je reconnais et j'limine une gamme plus tendue de "mauvaises odeurs" dans le code je peux enchaner plusieurs refactorings pour mener bien une intention de conception, en matrisant leurs dpendances (mthode dite "Mikado") j'applique le refactoring en continu, en ayant rarement besoin d'une longue session de refactoring Avanc j'ai un sens aigu de la duplication et des diffrentes formes de couplage je matrise des refactorings concernant d'autres lments que le code: schmas de bases de donnes, de documents... je suis en mesure de faire voluer mon code vers des structures de mon choix issues de diffrentes origines: paradigme objet, paradigme fonctionnel, "patterns" connus Chapitre 47: Refactoring 139 COMMENT RECONNAITRE SON UTILISATION? les historiques de la gestion de versions (logs CVS ou git par exemple) contiennent des entres libelles "Refactoring" les modifications correspondantes sont rellement isofonctionnelles (pas d'effet sur les tests unitaires, pas de code ajout) QUELS BNFICES EN ATTENDRE? les aspects objectifs de la qualit du code (longueur, duplication, couplage, cohsion, complexit cyclomatique) s'amliorent au fil du temps en lien avec la [proprit collective], la connaissance des dcisions de conception est mieux partage dans l'quipe des schmas de conception, ou des modules gnriques, mergent et peuvent tre rutiliss par la suite O SE RENSEIGNER POUR EN SAVOIR PLUS? (LIVRES, ARTICLES) Refactoring, de Martin Fowler Refactoring (SourceMaking) Le Refactoring, Rgis Medina La mthode Mikado PUBLICATIONS ACADMIQUES ET TRAVAUX DE RECHERCHE Les travaux empiriques concernant la pratique du remaniement sont quivoques, et peinent mettre en vidence les bnfices prtendus par les quipes de dveloppement, qui y voient pourtant une pratique indispensable. C'est un sujet de recherche prioritaire compte tenu de l'importance accorde cette pratique au sein des mouvements Agile, Extreme Programming et Software Craftsmanship. Thoriques Rfrentiel des pratiques Agiles 140 Refactoring Object-Oriented Frameworks, thse de doctorat de Bill Opdyke Empiriques An Empirical Evaluation of Refactoring, tude prliminaire, bilan: pas d'effets constats Refactoring--Does It Improve Software Quality?, tude prliminaire, bilan: effets nfastes selon certaines mtriques sur des projets open source Chapitre 47: Refactoring 141 Chapitre 48 Responsabilit collective du code Pratique DE QUOI S'AGIT-IL? Une quipe tablit gnralement des conventions, tacites, orales ou implciites, prcisant quel dveloppeur peut intervenir sur quelle partie du code source dont l'quipe a la charge. Diffrents modes existent: ainsi un module ou un fichier peut tre la responsabilit exclusive d'un dveloppeur, un autre membre de l'quipe ne pouvant le modifier qu'avec sa permission. Lorsque cette responsabilit est collective, tous les dveloppeurs sont autoriss et encourags modifier toute partie du code lorsque c'est ncessaire, soit pour raliser une tche en cours, soit pour corriger un dfaut ou amliorer la structure de l'ensemble. ON L'APPELLE GALEMENT... Le terme anglais est "collective code ownership". Rfrentiel des pratiques Agiles 142 ERREURS COURANTES Il est frquent que des rgles tacites existent qui sont en contradiction avec les rgles explicite de l'quipe: par exemple, une quipe peut avoir ostensiblement adopt un modle de responsabilit collective, mais un des dveloppeurs manifeste des mouvements d'humeur lorsqu'on modifie certains fichiers, conduisant l'quipe les considrer comme de facto sous sa responsabilit exclusive. Il est important de vrifier qu'une responsabilit collective revendique se traduit effectivement dans les faits. QUELS BNFICES EN ATTENDRE? Un modle de responsabilit collective diminue les risques de blocage en cas d'absence d'un des dveloppeurs favorise la transmission des connaissances techniques rend chacun des dveloppeurs responsable de la qualit de l'ensemble favorise une conception du code dicte par des dcisions techniques et non par la structure sociale de l'quipe QUELS COTS OU INVESTISSEMENTS FAUT- IL CONSENTIR? Si la notion de responsabilit collective est bien accepte dans le discours Agile car conforme la philosophie gnrale de responsabilit partage, elle a ses dtracteurs qui y voient plusieurs risques, auxquels il convient d'tre attentif: rendre chacun responsable de la qualit peut amener ce que personne ne s'en proccupe ou ce que chacun se renvoie la balle la possiblit d'intervenir sur toutes les parties du code peut tre dfavorable la dfinition d'interfaces claires et explicites entre ces diffrentes parties, alors que ces interfaces sont garantes d'une bonne conception Chapitre 48: Responsabilit collective du code 143 ORIGINES Ds ses dbuts, Extreme Programming fait une pratique part entire de ce qui n'est l'origine qu'un priori favorable, issu des pratiques des dveloppeurs Smalltalk - pour qui la notion de "fichier" est nettement moins structurante, compte tenu des outils de dveloppement utiliss. Rfrentiel des pratiques Agiles 144 Chapitre 49 Rythme soutenable Pratique DE QUOI S'AGIT-IL? L'quipe vise un rythme de travail tel qu'il pourrait tre soutenu indfiniment. Ceci implique en gnral de refuser ce qui est parfois considr comme un "mal ncessaire": heures supplmentaires, travail le week-end. ON L'APPELLE GALEMENT... Le terme anglais originel tait "40 hour week" soit "semaine de 40 heures". On lui a prfr "sustainable pace", terme plus gnral. QUELS BNFICES EN ATTENDRE? L'approche Agile considre que le recours autre qu'exceptionnel des mesures telles que les heures supplmentaires est rarement productif, et contribue en fait masquer des dfauts de planification, de management ou de qualit interne. Il est prfrable de mettre au jour ces dfauts et d'en traiter la cause profonde plutt que de leur appliquer un traitement symptmatique. Chapitre 49: Rythme soutenable 145 Chapitre 50 Rtrospective jalon Pratique DE QUOI S'AGIT-IL? A mi-chemin de la dure prvue du projet, ou bien en fin de projet (et surtout lorsque l'quipe prvoit d'tre ensuite nouveau runie pour un nouveau projet), l'ensemble des membres permanents de l'quipe (au sens large, et pas seulement les dveloppeurs) consacre une voire deux journes entires un bilan approfondi. Plus encore que lors d'une rtrospective d'itration, cette runion doit tre facilite, suivre un format qui peut varier selon les objectifs mais qui sera dcid l'avance. ON L'APPELLE GALEMENT... On parle en anglais de "project retrospective" ou "interim retrospective" pour la distinguer de la rtrospective d'itration. ERREURS COURANTES Il est souvent conseill de faire appel un facilitateur extrieur plutt que de confier ce rle un membre de l'quipe: on considre que le facilitateur ne peut pas jouer ce rle s'il prend galement part aux discussions. Rfrentiel des pratiques Agiles 146 Les enjeux d'une rtrospective jalon sont diffrents et par certains aspects plus importants que ceux d'une rtrospective d'itration; l'accent est mis sur des questions stratgiques, sur le long terme, sur la sant relationnelle de l'quipe, alors qu'une rtrospective d'itration s'intresse souvent des questions concrtes et tactiques. ORIGINES le terme "Rtrospectives" est d au livre de Norm Kerth (cf. ci-dessous) en 2001 la pratique de la rtrospective jalon reste marginale au sein des quipes agiles, qui privilgient le plus souvent les rtrospectives d'itration, populaires partir de 2006 O SE RENSEIGNER POUR EN SAVOIR PLUS? (LIVRES, ARTICLES) Project Retrospectives, de Norm Kerth (2001) Chapitre 50: Rtrospective jalon 147 Chapitre 51 Rtrospectives d'itration Pratique DE QUOI S'AGIT-IL? L'quipe se runit priodiquement, le plus souvent un rythme cal sur celui des itrations, pour rflchir explicitement sur les vnements saillants depuis la prcdente runion de ce type, et dcider collectivement des actions d'amlioration ou de remdiation suggres par la discussion. Le plus souvent il s'agit d'une runion facilite et utilisant un format prdtermin, l'intention tant de s'assurer que tous les membres de l'quipe ont l'occasion de s'exprimer. ON L'APPELLE GALEMENT... Le terme "retrospective" est emprunt directement l'anglais, on le prfre "debriefing" ou "post-mortem" pour ses connotations plus neutres. On parle galement de "heartbeat retrospectives" pour insister sur le fait que leur rgularit contribue donner au projet une cadence (le sens littral est "battement de coeur"). Le terme "reflection workshop" (atelier de rflexion) utilis par Alistair Cockburn est moins utilis mais connu de quelques experts. Rfrentiel des pratiques Agiles 148 ERREURS COURANTES Une rtrospective a pour objet de mettre jour des lments soit factuels, soit d'ordre relationnel, qui ont des effets tangibles sur le travail de l'quipe, et d'en tirer des pistes d'amlioration; elle ne doit pas se transformer en discussion "de comptoir" ou en dfouloir. A contrario, une rtrospective ne peut fonctionner que si chacun se sent libre de s'exprimer, la responsabilit de l'animateur est d'tablir les conditions de la confiance entre participants; cela peut exiger la prise en compte des relations hirarchiques; la prsence d'un responsable peut entraner des tensions. Comme toute runion impliquant l'ensemble de l'quipe, elle reprsente un investissement en temps consquent; si la runion est inefficace, que ce soit pour des raisons usuelles (manque de prparation, participants en retard ou dissips) ou spcifiques ce format (rticences des participants, non-dits), cette pratique pourtant trs utile risque d'tre discrdite au sein de l'quipe. Une rtrospective d'itration doit aboutir des dcisions; ni trop peu (il y a toujours quelque chose amliorer), ni en trop grand nombre (il ne sera pas possible de rgler toutes les difficults en une seule itration). Une ou deux pistes d'amlioration par rtrospective suffisent. Si les mmes constats reviennent systmatiquement d'une rtrospective sur l'autre, sans que les dcisions prises soient suivies d'effets, c'est le signe d'une ritualisation des rtrospectives. COMMENT RECONNAITRE SON UTILISATION? assister en observateur une runion de ce type est la meilleure faon de constater la mise en place de cette pratique dfaut, on sera attentif aux pistes et dcisions d'amlioration prises lors de la rtrospective: elles peuvent prendre la forme d'un document crit, ou simplement de Post-It matrialisant les dcisions prises et affichs sur un tableau mural spcifique Chapitre 51: Rtrospectives d'itration 149 QUELS BNFICES EN ATTENDRE? en premier lieu, les rtrospectives permettent de tirer le meilleur parti des cycles itratifs: elles sont l'occasion d'adapter et d'amliorer graduellement le fonctionnement de l'quipe en mettant entre les mains des acteurs du projet les dcisions sur le fonctionnement du projet, les rtrospectives responsabilisent les participants et favorisent l'appropriation des dcisions ORIGINES Alistair Cockburn revendique l'usage du terme "reflection workshop" ds 1995, bien que la premire description par crit apparaisse dans son livre de 2001 la notion de "reflection" et d'ajustement est inscrite au Manifeste Agile ds 2001, trs probablement inspire par Cockburn le terme "Rtrospectives" est d au livre de Norm Kerth (cf. ci-dessous) en 2001 la pratique se diffuse notamment par le biais des confrences XP Day en Europe partir de 2003 le livre de Diana Larsen et Esther Derby ciblant spcifiquement les quipes Agiles finit de codifier la pratique de la rtrospective d'itration en 2006 O SE RENSEIGNER POUR EN SAVOIR PLUS? (LIVRES, ARTICLES) Project Retrospectives, de Norm Kerth (2001) Agile Software Development, de Alistair Cockburn (2001, rdit 2006) Agile Retrospectives, de Esther Derby et Diana Larsen (2006) Rfrentiel des pratiques Agiles 150 Chapitre 52 Runion quotidienne Pratique DE QUOI S'AGIT-IL? L'quipe se runit une fois par jour, heure fixe, pour mettre en commun les apports de chacun au produit ou l'infrastructure de dveloppement, et signaler les obstacles rencontrs. On utilise souvent les trois questions suggres par Scrum pour structurer la runion. Cette runion est gnralement timeboxe pour une dure de 15 minutes. Tout sujet risquant de dborder est not et abord en dehors de la runion en plus petit comit. ON L'APPELLE GALEMENT... Plusieurs synonymes existent: "Stand-up" ou "runion debout" : appellation Extreme Programming, qui recommande que les participants restent debout pour encourager raccourcir la dure de la runion "Daily Scrum" ou "mle quotidienne": bien que ce soit historiquement incorrect (cf. ci-dessous) cette "mle" (en anglais rugbystique, "scrum") quotidienne est la pratique ponyme de l'approche Scrum Chapitre 52: Runion quotidienne 151 ERREURS COURANTES la runion quotidienne doit tre une "place de march" o les changes se font d'un membre de l'quipe un autre; l'erreur la plus courante consiste en faire un "compte-rendu", chaque quipier s'adressant une seule personne (son responsable, ou bien le "Scrum Master" dsign de l'quipe) la deuxime difficult la plus couramment rencontre: une runion qui s'ternise; des comptences en facilitation en viendront rapidement bout troisime difficult courante: l'quipe trouve peu de valeur dans la runion, au point qu'elle "oublie" de la tenir si le Scrum Master ou chef de projet n'en prend pas l'initiative; c'est souvent le symptme d'une adhsion tide aux principes de l'approche Agile dernier syndrome couramment rencontr: le "tout va bien", aucun membre de l'quipe ne profite de la runion quotidienne pour faire tat d'obstacles ou de difficults rencontre, alors mme que le fonctionnement de l'quipe est objectivement amliorable - une telle rticence admettre des difficults doit amener rflchir sur le style d'encadrement de l'entreprise. COMMENT RECONNAITRE SON UTILISATION? assister en observateur une runion de ce type est la meilleure faon de constater la mise en place de cette pratique QUELS BNFICES EN ATTENDRE? la runion quotidienne favorise la circulation d'informations importantes; elle apporte une occasion explicite permettant l'ensemble de l'quipe de se synchroniser le partage d'informations l'occasion d'une runion courte et nergique contribue galement la cohsion de l'quipe Rfrentiel des pratiques Agiles 152 ORIGINES Jim Coplien observe chez l'quipe Quattro Pro Windows de Borland, "hyperproductive", l'habitude de tenir une runion presque tous les jours, mais sans lui donner un nom distinct, dans un article de 1994 bien que la pratique "Daily Scrum" soit dcrite dans les articles concernant Scrum partir de 2000 elle n'apparat pas dans les tous premiers crits (1996) (le nom "SCRUM" lui-mme n'est pas initialement associ la "mle" strictement, mais fait allusion l'expression "moving the scrum downfield" utilise dans l'article de Takeuchi et Nonaka "The New New Product Development Game" et exprime l'ide d'auto-organisation) on retrouve le "Daily Stand Up" dans les premiers articles sur Extreme Programming (1998) les "trois questions" de Scrum sont adoptes par les quipes Extreme Programming ds le dbut des annes 2000 La pratique trouve sa forme dfinitive avec la gnralisation du tableau des tches, il devient alors important de tenir la runion devant le tableau (2004-2006) O SE RENSEIGNER POUR EN SAVOIR PLUS? (LIVRES, ARTICLES) It's not Just Standing Up, de Jason Yip (2004) PUBLICATIONS ACADMIQUES ET TRAVAUX DE RECHERCHE Peu de travaux de recherche concernent directement cette pratique. Chapitre 52: Runion quotidienne 153 Chapitre 53 Rle - fonctionnalit - bnfice Concept DE QUOI S'AGIT-IL? La matrice Rle-Fonctionnalit-Bnfice est un format recommand pour verbaliser ou crire une User Story: En tant que <rle> Je veux que <fonctionnalit> Afin de <bnfice> Par exemple: En tant que client de la banque Je veux retirer de l'argent un guichet automatique Afin de ne me soucier ni des horaires d'ouverture ni de l'affluence en agence Cette formulation permet d'quilibrer les proccupations: non pas seulement ce que le logiciel doit faire, mais galement pour qui et afin de satisfaire quel objectif de la personne en question. Il en existe de nombreuses variantes. Rfrentiel des pratiques Agiles 154 Chapitre 54 Salle ddie Pratique DE QUOI S'AGIT-IL? L'quipe (idalement au complet, c'est dire incluant le "client" ou Product Owner) dispose d'un local ddi plein temps pour le projet, cloisonn des autres activits de l'entreprise. Ce local est quip de faon rpondre aux besoins logistiques du projet: stations de travail (si ncessaires adaptes au binmage), tableaux effaables et chevalets, espaces aux murs pour l'affichage de Post-Its, etc. ERREURS COURANTES le critre de cloisonnement est important: un "open space" ou bureau paysager n'est pas une mise en oeuvre adquate de cette pratique; le bruit occasion par des personnes trangres au projet constitue une distraction nfaste la concentration requise pour un projet de dveloppement QUELS BNFICES EN ATTENDRE? une salle ddie favorise ce que Alistair Cockburn nomme la "communication osmotique": la diffusion d'information (jusqu' l'quilibre) entre ceux qui en disposent et ceux qui en ont Chapitre 54: Salle ddie 155 besoin; au lieu de dpendre de mcanismes explicites de communication (tlphone, email, runion) cette diffusion se fait de faon "ambiante", par exemple en entendant (sans les couter activement) les conversations des autres membres de l'quipe, ou en lisant des Post-It affichs au mur PUBLICATIONS ACADMIQUES ET TRAVAUX DE RECHERCHE Les conditions "environnementales" favorisant la performance des dveloppeurs ont fait l'objet d'un certain nombre d'tudes. Bien qu'il soit gnralement difficile d'tablir de faon fiable quoi que ce soit qui ait trait la productivit, en raison du caractre flou et ambigu de la notion mme de "productivit" pour un programmeur, il semble en ressortir que les deux "extrmes" que sont le bureau individuel ou le local ddi soient les plus favorables. Le bureau paysager, malgr son intrt conomique vident, et l'attrait (plus subtil) qu'il peut exercer sur des managers soucieux de "surveiller" leurs troupes, s'avre tre la pire des solutions, retenant le plus mauvais des deux mondes. How office space affects programming productivity examine quelques tudes empiriques assez anciennes et voque l'intrt de bureaux privatifs (1995) Rapid software development through team collocation, une tude plus rcente, semble confirmer qu'un local ddi favorise de meilleures performances (du moins mesures par des indices subjectifs de satisfaction, du client comme des dveloppeurs) (2002) Rfrentiel des pratiques Agiles 156 Chapitre 55 Scrum de Scrums Pratique DE QUOI S'AGIT-IL? Approche utilise lorsqu'un projet mobilise plus d'une dizaine de personnes, pour "monter en chelle". On divise le groupe en petites quipes (de 4 9), chacune utilisant Scrum de faon habituelle. A l'issue de chaque runion quotidienne, un membre de chaque quipe est dsign comme "ambassadeur" pour participer une meta-runion, formant ainsi une quipe "virtuelle" dont la mission est de rsoudre les difficults poses par la coordination inter- quipes: cration d'interfaces, d'accords de fonctionnement.. Ce "Scrum de Scrums" dispose de son propre backlog qui regroupe toutes les tches identifies qui contribuent une meilleure coordination entre les quipes oprationnelles. ON L'APPELLE GALEMENT... Traduction directe de l'anglais "Scrum of Scrums", on parle aussi de "meta Scrum". Chapitre 55: Scrum de Scrums 157 ORIGINES Dcrite pour la premire fois dans l'article Cross-continent development using scrum and XP de Bent Jensen (2003) Rfrentiel des pratiques Agiles 158 Chapitre 56 Story mapping Pratique DE QUOI S'AGIT-IL? Pratique mergente visant structurer la planification des livraisons, le "story mapping" consiste en une organisation en deux dimensions des user stories: l'axe horizontal matrialise la succession (chronologique) des usages de l'utilisateur, l'axe vertical matrialise la priorit des fonctionnalits: en haut celles qui sont indispensables l'usage, en bas celles qui sont annexes ou ne concernent qu'une fraction des flux d'informations que traite le produit. QUELS BNFICES EN ATTENDRE? L'intention de cette pratique est de modrer le risque de livrer un produit qui comporterait des fonctionnalits avec une forte "valeur mtier", mais que l'utilisateur ne pourrait pas exploiter parce qu'elles s'avrent dpendantes de fonctionnalits plus faible "valeur mtier", donc de plus basse priorit et qui n'ont pas encore t ralises. ORIGINES formule, sans la nommer, par Jeff Patton dans un article intitul "It's All in How You Slice" en 2005 Chapitre 56: Story mapping 159 nomme "Story Mapping" dans un article, trs illustr, du mme Jeff Patton: "The new user story backlog is a map", en 2008 Rfrentiel des pratiques Agiles 160 Chapitre 57 Tableau des tches Pratique DE QUOI S'AGIT-IL? On rpartit sur un tableau mural divis en trois colonnes, " faire", "en cours", "termin" des Post-It ou fiches bristol reprsentant les tches raliser au cours de l'itration. De nombreuses variantes existent; soit dans la disposition qui peut galement tre horizontale, ou plus sophistique; soit dans le nombre et l'intitul des colonnes, qui matrialisent en gnral des activits - par exemple une colonne "en test". En gnral au cours de la runion quotidienne, l'quipe met jour le tableau au fil de l'itration pour visualiser sa progression. Le tableau est "remis zro" en dbut d'itration avec de nouvelles tches. ON L'APPELLE GALEMENT... En anglais, "task board"; on parle aussi de "project wall". On entend plus rarement "tableau de Sprint" ou "tableau d'itration". ERREURS COURANTES une erreur classique consiste prfrer d'emble un support informatis ("tableau des tches virtuel"); c'est se priver des Chapitre 57: Tableau des tches 161 nombreux bnfices de la ralisation plus "artisanale", et seules de fortes contraintes (par exemple une quipe disperse gographiquement) doivent justifier cette solution de dernier recours ne pas confondre le tableau des tches "canonique" avec le tableau Kanban dont le principe est assez diffrent (notamment, il n'est pas "remis zro") QUELS BNFICES EN ATTENDRE? le tableau des tches est un "radiateur d'information" - il favorise le partage instantan d'informations importantes pour toute l'quipe le tableau des tches sert de point focal pour la runion quotidienne ORIGINES ds les origines de Scrum et d'Extreme Programming on manipule des fiches bristol ou des Post-It mais le format prcis du tableau des tches ne se gnralise qu'assez tardivement La galerie de photos collecte par Bill Wake montre que mme si de nombreuses quipes Agiles utilisent un affichage mural, le tableau des tches "standardis" le plus largement adopt sera celui de Mike Cohn, comportant cinq colonnes (fin 2004) En partie en raction aux tableaux plus sophistiqus produits par les quipes qui commencent s'intresser la transposition Agile des tableaux Kanban, on viendra un peu plus tard considrer comme "canonique" la version trois colonnes (fin 2007) O SE RENSEIGNER POUR EN SAVOIR PLUS? (LIVRES, ARTICLES) Task Boards, de Mike Cohn (2004-2010) Task Boards, de Tom Perry Rfrentiel des pratiques Agiles 162 Elements of Task Board Design, et plus gnralement le blog "Visual Management", de Xavier Quesada PUBLICATIONS ACADMIQUES ET TRAVAUX DE RECHERCHE Peu de travaux de recherche concernent directement cette pratique. Des investissements considrables sont consacrs par de nombreux diteurs ou quipes Open Source la ralisation d'quivalents virtuels du tableau de tches, alors mme que la communaut des praticiens aguerris reste majoritairement persuade de l'intrt, voire de la ncessit, du tableau de tches physique; mettre en vidence le bnfice rel de cette deuxime solution serait donc une piste de recherche prioritaire. Chapitre 57: Tableau des tches 163 Chapitre 58 Tableau kanban Pratique DE QUOI S'AGIT-IL? Pratique mergente, porte par une minorit trs active, l'approche dite "kanban" regroupe un ensemble de modifications au dispositif Agile le plus couramment utilis pour le pilotage du projet: les itrations, les estimations et la mesure de la vlocit sont abolies; la mesure du temps de cycle se substitue celle de la vlocit enfin, la modification la plus visible remplace le tableau des tches par un tableau dit "tableau kanban": on y retrouve les colonnes correspondant aux diffrents tats par lesquels peut transiter une "unit de valeur" (qui est souvent une user story, mais pas ncessairement) par contre il comporte, outre ces colonnes, des limites de stock: si une activit, par exemple le test, se voit attribuer une limite de stock gale 2, cela signifie qu'il est "interdit" de dmarrer l'activit de test concernant une troisime user story, si deux d'entre elles sont dj en test; si cette situation se prsente, il faut au contraire demander d'autres membres de l'quipe qui sont ventuellement disponibles ce moment de venir Rfrentiel des pratiques Agiles 164 prter main-forte, de faon ce que l'une des deux user stories puisse sortir de l'tat "en test" le plus rapidement possible; contrairement au tableau des tches, le tableau kanban n'est pas "rinitialis" en dbut de chaque itration, c'est un tableau perptuel. ON L'APPELLE GALEMENT... Le terme est japonais, et signifie simplement "tiquette" ou "carte". Il dsigne un systme utilis dans les usines Toyota; sans entrer dans les dtails, il est analogue ce qu'on peut observer dans certains supermarchs, o derrire un stock, par exemple de botes de crales, on place une carte portant la mention "veuillez rapprovisionner ce produit". Ce systme permet de tenir une comptabilit prcise des "stocks" ou "en-cours" (en anglais "Work In Process" qui donne l'acronyme WIP). Le systme de production Toyota cherche rduire la quantit de ces en- cours. ERREURS COURANTES Les tableaux kanban sont souvent plus sophistiqus qu'un simple tableau des tches. Ce n'est pas en soi une erreur, mais il convient d'viter la rintroduction, par le biais d'un tableau kanban structur en fonction d'une squence d'activits, d'un modle "en cascade" avec tout ce que cela peut impliquer: cration de "silos" ou de spcialistes au sein de l'quipe. On se mfiera en particulier de l'utilisation d'un tableau kanban sans l'assortir de "limites de stock" qui soient vritablement opposables aux clients et commanditaires de l'quipe. Ce sont ces limites de stock qui sont l'lment le plus structurant de l'approche dite "kanban". QUELS BNFICES EN ATTENDRE? Il existe des contextes dans lesquels la mesure du temps de cycle et l'utilisation de tableaux kanban (perptuel) a plus de sens que la mesure de la vlocit chaque itration: par exemple lorsque le respect d'une Chapitre 58: Tableau kanban 165 date de livraison prcise n'est pas une priorit, ou lorsque l'quipe assure simultanment l'volution ou la maintenance de produits multiples. De faon trs schmatique, on peut considrer que l'approche "kanban" se prte plus un mode de maintenance ou d'volution continue, alors que l'approche par itrations se prte plus un mode projet. ORIGINES le rapprochement entre la philosophie d'organisation du travail en vigueur chez Toyota (sous l'tiquette "Lean") remonte la publication du livre de Mary et Tom Poppendieck, Lean Software Development (2003) cependant ce rapprochement reste relativement abstrait dans le dbut des annes 2000; l'un des premiers adeptes de cette approche, David Anderson, exprimente certaines ides (suppression des estimations et des itrations notamment) chez Microsoft, ds 2004 d'aprs David Anderson, la premire mise en oeuvre complte, y compris l'utilisation d'un tableau kanban avec des limites de stock, a lieu alors qu'il travaille pour Corbis partir de septembre 2006 suite une prsentation lors de la confrence Agile aux Etats- Unis, un groupe de discussion se forme pour changer sur cette approche (mi-2007) une communaut plus visible, organisant des confrences ddies, sous le titre "The Limited WIP Society" finit par se former en 2009 Rfrentiel des pratiques Agiles 166 Chapitre 59 Temps de cycle Concept DE QUOI S'AGIT-IL? Le "temps de cycle" est un terme emprunt l'approche manufacturire connue sous le nom de Lean ou Toyota Production System, o il dsigne le dlai entre la rception de la commande d'un client, et la livraison au client du produit fini. Transpos au domaine du logiciel, le temps de cycle est le dlai coul entre le moment o apparat un besoin, et la satisfaction de ce besoin. Cette dfinition plus abstraite permet d'analyser plusieurs types de situation: par exemple on peut mesurer le "temps de cycle" entre la formalisation d'une exigence sous la forme d'une user story et le dbut de l'utilisation ("en production", en conditions relles) de la fonctionnalit correspondante. Les quipes ayant adopt une approche base de kanban privilgient cette mesure, de prfrence celle de la vlocit. Au lieu d'avoir pour effet d'augmenter la vlocit, les amliorations du fonctionnement de l'quipe ont (en principe) pour effet de diminuer le temps de cycle. ON L'APPELLE GALEMENT... Le terme anglais est "lead time". Chapitre 59: Temps de cycle 167 Chapitre 60 Test d'utilisabilit Pratique DE QUOI S'AGIT-IL? Le test d'utilisabilit est une technique empirique et exploratoire permettant de rpondre la question "comment un utilisateur apprhendra notre produit dans les conditions relles d'utilisation ?". On place un utilisateur final devant le produit, en lui fixant une tche typique de celles que le produit permet de raliser (par exemple "utilisez notre site de banque en ligne pour rgler par virement votre facture de tlphone"). Les dveloppeurs et/ou ergonomes observent l'utilisateur sans intervenir et enregistrent (soit informellement en prenant des notes, soit de faon plus complte par des moyens tels que la vido, la capture d'cran ou l'eye-tracking) les difficults ventuelles rencontres par l'utilisateur, afin d'amliorer la prise en main du produit dans des versions ultrieures. ORIGINES l'invention de cette technique est attribu aux ingnieurs du clbre Xerox PARC Palo Alto en 1981 l'assimilation progressive (et encore balbutiante) de cette pratique est reprsentative de l'ouverture rcente de la communaut Agile aux techniques issues des disciplines Rfrentiel des pratiques Agiles 168 "orientes utilisateurs" que sont l'ergonomie ou l'Interaction Design ( partir de 2008) Chapitre 60: Test d'utilisabilit 169 Chapitre 61 Test exploratoire Pratique DE QUOI S'AGIT-IL? Au sein d'une quipe Agile, la rpartition usuelle des rles entre les spcialistes du dveloppement et les spcialistes du test se trouve fortement modifie suite l'utilisation de tests unitaires et fonctionnels automatiss. Une grande partie des activits de vrification consistant drouler des scripts, scnarios ou plans de test est dsormais sous la responsabilit des dveloppeurs. Cependant, il s'avre que ces tests automatiss ne suffisent pas valuer les risques de dfauts de qualit dont peut souffrir le produit: les spcialistes du test continuent jouer un rle important dans les projets Agiles. L'approche exploratoire de l'activit de test s'avre trs complmentaire de l'approche Agile pour plusieurs raisons: elle insiste sur l'autonomie, la comptence et la crativit du testeur, tout comme l'approche Agile met en avant ces qualits du dveloppeur; elle prconise de mener de front toutes les activits lies au test: dcouverte d'informations sur le produit, conception de tests susceptibles de rvler des dfauts et excution de ces tests; elle insiste sur l'importance d'une pluralit de techniques, qui ne peut en aucun cas se rduire un "plan de test" formel, et Rfrentiel des pratiques Agiles 170 par consquent rejoint la philosophie Agile en faisant peu de cas des rfrentiels documentaires pour le test ON L'APPELLE GALEMENT... Le terme anglais est "exploratory testing". Il est utilis par une communaut de testeurs qui revendiquent leur appartenance intellectuelle une "cole de pense" qu'ils appellent "the Context- Driven School" et qu'ils distinguent des autres "coles" ayant des approches diffrentes de l'activit de test: Analytique, Standardise, Oriente Qualit, et Agile. QUELS BNFICES EN ATTENDRE? Le rle des testeurs est souvent marginal au sein des projets de dveloppement en France. Cependant, dans les quipes travaillant avec des testeurs professionnels, l'approche Agile suscite souvent des interrogations profondes sur la pertinence et l'organisation de leur activit. L'approche "exploratoire" offre de nombreuses pistes pour intgrer efficacement ces spcialistes dans une quipe Agile. ORIGINES La pratique du test exploratoire, bien que reste relativement marginale dans la communaut Agile, est vanglise ds 2001 par Brian Marick, l'un des participants au sminaire de Snowbird qui donne naissance au Manifeste Agile, et qui se dcrit lui-mme comme "le testeur de service" au sein de ce groupe. Il est indniable que l'essor du mouvement Agile a contribu renforcer l'intrt de nombreux dveloppeurs pour les activits de test, jusqu'alors peu valorises dans la profession. Cependant, il a galement eu l'effet paradoxal de marginaliser un peu plus le testeur, puisque c'est le dveloppeur qui s'appropriait certaines activits de test. Chapitre 61: Test exploratoire 171 Chapitre 62 Tests fonctionnels automatiss Pratique DE QUOI S'AGIT-IL? Un test fonctionnel, au sens Agile, est une description formelle du comportement d'un produit, gnralement exprime sous la forme d'un exemple ou d'un scnario. Des formalismes trs divers existent pour l'expression de ces exemples ou scnarios, mais on cherche le plus souvent ce qu'il soit possible d'en automatiser le droulement l'aide d'un outil (interne l'quipe de dveloppement, ou disponible "sur tagre"). Comme pour un test unitaire son rsultat est binaire, un "chec" (comportement diffrend de celui attendu) laissant prsumer la prsence d'un bug. De tels tests tiennent lieu, pour une quipe Agile, de cahier des charges principal: il arrive qu'ils compltent et prcisent un cahier des charges rdig selon une technique non spcifiquement Agile ("use cases", ou encore document narratif); et dans certains cas qu'ils constituent l'unique expression formelle des exigences. Rfrentiel des pratiques Agiles 172 ON L'APPELLE GALEMENT... On parle galement de "tests de recette", plus rarement de "tests client" (par opposition "tests dveloppeur"). La traduction littrale "tests d'acceptation" est aussi utilise (de l'anglais "acceptance test"). Le terme anglais "Storytest" (le plus souvent en un seul mot) est parfois utilis, dans l'expression "storytest driven development" par exemple. ERREURS COURANTES un travers courant consiste exprimer les tests fonctionnels dans un formalisme trop proche de l'implmentation, ce qui les rend inintelligibles par les clients, utilisateurs ou experts mtiers qui en sont l'audience privilgie; on rencontre souvent ce dfaut lorsque ce sont les dveloppeurs qui prennent l'initiative de mettre en place cette pratique, il est donc impratif de faire participer client, utilisateur ou expert mtier cette activit une autre consquence de ce type de drive est de rendre les tests fonctionnels "fragiles", c'est dire qu'ils chouent suite des modifications de comportement qui sont sans rapport avec la fonctionnalit teste (par exemple la modification de l'tiquette d'un champ de texte) ORIGINES la pratique est intgre dans Extreme Programming ds ses dbuts, mais sans tre lie un outil ou un formalisme particulier; sa description recouvre sous une mme tiquette tests unitaires et de recette (1996) Ward Cunningham, l'un des crateurs d'Extreme Programming, publie l'outil Fit pour formaliser les tests de recette (2002) l'adoption de Fit reste marginale pendant quelque temps, mais explose lorsque Bob Martin fusionne Fit avec une autre cration de Cunningham, le Wiki, donnant naissance FitNesse (2003) Chapitre 62: Tests fonctionnels automatiss 173 pendant quelque temps, le duo Fit/FitNesse clipse les autres outils et s'impose en modle pour la mise en oeuvre de tests fonctionnels Agiles plus rcemment de nouveaux outils lis l'approche BDD ont contribu rouvrir le dbat QUELS BNFICES EN ATTENDRE? L'utilisation de tests fonctionnels automatiss apporte plusieurs bnfices, complmentaires de ceux lis aux tests unitaires: ils encouragent une collaboration troite entre les dveloppeurs d'une part et les clients, utilisateurs ou experts mtier d'autre part, puisqu'ils imposent de prciser suffisamment les exigences pour tre en mesure de les exprimer dans un formalisme excutable ils fournissent par la mme occasion un "contrat" clair et prcis pour l'acceptation par le client du travail fourni par les dveloppeurs; si le produit passe les tests fonctionnels, il est considr adquat (mais les clients ou utilisateurs ont la possibilit d'affiner les tests ou d'en proposer de nouveaux si ncessaire) ils contribuent galement limiter le nombre de dfauts et notamment de rgressions (dfauts apparus sur des fonctionnalits prcdemment valides) QUELS COTS OU INVESTISSEMENTS FAUT- IL CONSENTIR? Les tests fonctionnels, contrairement aux tests unitaires, font l'objet d'une controverse au sein de la communaut Agile, certains experts tels que Jim Shore ou Brian Marick jugeant que les bnfices obtenus ne justifiaient pas les cots consentir: beaucoup d'quipes Agiles constatent que l'criture de tests fonctionnels automatis reprsente un effort important pour des raisons lies aux erreurs de mise en oeuvre voques ci-dessus, la maintenance de ces tests peut galement s'avrer contraignante et coteuse la premire gnration d'outils, inspire de Fit/Fitnesse, a souvent conduit des tests fonctionnels qui n'taient pas Rfrentiel des pratiques Agiles 174 accepts comme intelligibles par les clients, utilisateurs ou experts mtier Cependant, les volutions rcentes notamment celles des au BDD peuvent tre de nature amliorer ce rapport cot-bnfice. PUBLICATIONS ACADMIQUES ET TRAVAUX DE RECHERCHE Automated Acceptance Testing: A Literature Review and an Industrial Case Study, passe en revue les articles sur le sujet et rapporte une tude de cas globalement positive Chapitre 62: Tests fonctionnels automatiss 175 Chapitre 63 Tests unitaires automatiss Pratique DE QUOI S'AGIT-IL? Un test unitaire, au sens Agile, est un court programme, crit et maintenu par les dveloppeurs, servant vrifier de manire trs troite le bon fonctionnement d'une partie restreinte du programme principal. Son rsultat est binaire: il "passe" si le comportement du programme est celui attendu et "choue" dans le cas contraire. Une convention hrite de l'outil JUnit et de ses nombreux drivs veut qu'on reprsente par une "barre rouge" l'chec d'un ou plusieurs tests; une "barre verte" symbolise l'excution avec succs de la totalit des tests unitaires associs un produit. ON L'APPELLE GALEMENT... On parle galement de "tests dveloppeur" (par opposition "tests client") pour insister sur la fonction qui en est responsable, plutt que sur le niveau d'abstraction technique. Rfrentiel des pratiques Agiles 176 ERREURS COURANTES La terminologie entourant les diffrents types de test prte confusion. En effet, la mouvance Agile a repris son compte des termes tels que "tests unitaires" dj utiliss auparavant en leur donnant un sens diffrent (dans un environnement Agile ce terme ne saurait dsigner que des tests automatiss, par exemple). Il est galement important de diffrencier la simple utilisation de tests unitaires automatiss, raliss par des programmeurs, de la pratique plus contraignante qu'est le dveloppement par les tests. ORIGINES plusieurs articles du mme auteur, David J. Panzl, attestent de l'invention d'outils trs proches de JUnit ds 1976 l'mergence des outils du type "enregistrer et rejouer" a sans doute contribu marginaliser les tests unitaires plus proches du code, de la fin des annes 80 jusqu'au milieu des annes 90 la tendance s'inversera grce la popularit du dveloppement par les tests et de l'outil JUnit dans la fin des annes 90 la pratique est intgre dans Extreme Programming ds ses dbuts sous la forme du dveloppement par les tests (1996) QUELS BNFICES EN ATTENDRE? une quipe utilisant des tests unitaires automatiss rcoltera une partie des bnfices attribus au dveloppement par les tests: rduction du nombre de dfauts, principalement Chapitre 63: Tests unitaires automatiss 177 Chapitre 64 Trois questions Pratique DE QUOI S'AGIT-IL? Les runions quotidiennes sont structures autour des trois questions suivantes: Qu'as-tu termin depuis la prcdente runion? Que penses-tu pouvoir terminer d'ici la prochaine runion? Quels obstacles rencontres-tu en ce moment? ERREURS COURANTES il est important d'insister sur le mot "termin" dans ces questions; une erreur courante consiste rpondre: "hier j'ai travaill sur le schma de la base de donnes... et je continue l-dessus aujourd'hui... sinon tout va bien"; dans ce cas-l il vaut mieux dire "je n'ai rien termin de nouveau"; cf. la dfinition de 'termin' ORIGINES Ces trois questions sont l'origine une spcificit des runions Scrum, dsormais adopte par presque toutes les quipes Agiles Rfrentiel des pratiques Agiles 178 Chapitre 65 Tches choisies Pratique DE QUOI S'AGIT-IL? Au sein d'une quipe Agile, il est rare qu'un responsable attribue des tches de dveloppement aux diffrents membres de l'quipe. Le plus souvent l'affectation des tches est base sur le volontariat et la discussion. En rgle gnrale ce choix des tches s'effectue devant le tableau des tches au cours de la runion quotidienne. Il est souvent matrialis par une annotation sur le Post-It reprsentant la tche concerne. Certaines quipes utilisent des photos (format identits) ou de plus petits Post-It qui sont colles de faon amovible celui reprsentant la tche qu'ils ont choisi de raliser. ERREURS COURANTES Bien que rarement identifie comme une pratique part entire, l'attribution des tches sur la base du volontariat semble tre un lment important, sinon essentiel, constitutif d'une approche Agile. Certaines quipes "en transition" vers l'Agilit peuvent conserver quelque temps un rle de "chef de projet" dont l'une des prrogatives est traditionnellement la distribution des tches au membres de l'quipe. Ce modle est cependant largement considr comme incompatible sur le long terme avec les autres pratiques Agiles. Chapitre 65: Tches choisies 179 Chapitre 66 User stories Comptence DE QUOI S'AGIT-IL? L'intgralit du travail raliser est dcoupe en incrments fonctionnels et les activits de dveloppement s'organisent autour de ces incrments appels "User Stories". Adopter la pratique des User Stories implique de tenir pour gnralement vraies un certain nombre d'hypothses sur ces incrments: on peut les raliser dans un ordre arbitraire, et chacun indpendamment des autres peut avoir une valeur pour l'utilisateur. Pour rendre ces hypothses trs concrtes, on privilgie une reprsentation (on peut mme parler de rification) de ces User Stories sous une forme bien prcise: la fiche cartonne ou le Post-It, qui en renforcent le caractre atomique et manipulable par tous les intervenants du projet. ON L'APPELLE GALEMENT... Littralement "histoire utilisateur", le terme "scnario client" est galement utilis. Dans les deux cas il s'agit de mettre en avant l'aspect narratif ("voici ce qui se passe") et d'autre part le point de vue adopt, celui, non technique, de l'utilisateur ou du donneur d'ordres ("client"). Au singulier: "une user story". Rfrentiel des pratiques Agiles 180 ERREURS COURANTES une "erreur" classique consiste partir d'un cahier des charges rdig en amont et le dcouper en User Stories en s'appuyant sur sa structure textuelle; cela peut tre une bonne approche pour une quipe dbutante mais ne constitue pas une pratique recommande une User Story n'est pas un document; le terme dsigne l'intgralit des activits qui sont ncessaires pour transformer une version V du produit en une version V' qui a plus de valeur; en ce sens une User Story est un objectif le niveau de dtail correspondant une User Story n'est pas constant, mais volue au fil du temps, en fonction de l'horizon de planification: une User Story dont la ralisation est prvue dans plusieurs semaines ne sera dcrite que d'une brve phrase, alors qu'une User Story dont la ralisation est imminente doit tre cadre par des tests de recette, des exemples, etc. une User Story n'est pas un Use Case; bien que la comparaison entre les deux notions soit souvent utile, il n'est pas possible d'tablir un lien simple et direct une User Story ne correspond en rgle gnrale pas un quelconque dcoupage technique: un cran, une bote de dialogue, un bouton ne sont pas des User Stories ORIGINES Les User Stories sont issues d'Extreme Programming. Elles ne sont initialement pas dcrites comme une pratique part entire; elles n'apparaissent dans la premire dition du livre de Kent Beck, Extreme Programming Explained, que comme une des "pices" utilises dans le "jeu du planning". Au fil des annes, une pression croissante pousse la communaut Agile et sa composante Extreme Programming en particulier rpondre de faon plus prcise la question "comment sont traites les exigences", il mergera de cette pression une dfinition considrablement plus sophistique de ces User Story: la matrice rle-fonctionnalit est propose par Rachel Davies et Tim McKinnon en 2001 Chapitre 66: User stories 181 le modle des "3C", ou "Carton, Conversation, Confirmation" est propos par Ron Jeffries en 2001 ("Card, Conversation, Confirmation") la grille INVEST est dcrite par Bill Wake en 2003 ("INVEST in Good Stories and SMART tasks") la matrice given-when-then pour dcrire les tests de recette est dcrite par Dan North en 2006 ("Introducing BDD") COMMENT S'AMLIORER? A titre individuel, les personnes concernes par l'acquisition de comptences en matire de User Stories sont en premier lieu celles occupant le rle et les responsabilits d'analystes. Il est trs souhaitable, comme pour la plupart des comptences Agiles, que celles-ci soit largement partages dans l'quipe. A titre individuel: Dbutant je suis capable de partir d'une autre formalisation (cahier des charges, use cases, etc.) et la transposer en User Stories je connais au moins une matrice d'expression des User Stories je suis capable d'illustrer une User Story par un exemple (raconter ce que fait l'utilisateur et le rsultat) Intermdiaire je suis capable de "morceler" l'ensemble des objectifs fonctionnels d'un projet en User Stories, en m'assurant qu'il n'y a pas d'oubli je connais diffrentes matrices d'expression des User Stories et suis capable d'utiliser la plus approprie je suis capable de formaliser les critres de satisfaction d'une User Story sous une forme susceptible d'tre transforme en test de recette je connais ou puis identifier les diffrentes populations d'utilisateurs et m'y rfrer dans les User Stories je suis capable d'valuer une User Story selon la grilles INVEST ou un quivalent, et reformuler ou Rfrentiel des pratiques Agiles 182 dcouper une User Story sans produire un rsultat dgrad Avanc je suis capable d'interprter des exigences considres comme "non fonctionnelles" sous la forme d'une User Story: persistance, performance, portabilit... je suis capable de rattacher des User Stories des descriptions de plus haut niveau du projet: "charte projet", etc. - et de justifier pour chaque User Story sa pertinence et sa valeur A titre collectif: Dbutant l'quipe sait organiser son activit autour des User Stories l'quipe est capable d'obtenir "juste temps" le dtail ncessaire l'implmentation des User Stories, par exemple par la prsence physique du client ou donneur d'ordres Intermdiaire l'quipe formalise la totalit de son travail sous la forme de User Stories, tout membre de l'quipe peut rpondre la question "sur quelle User Story travailles-tu?" Avanc a tout moment l'quipe est capable de rpondre la question "quelle est la User Story la plus importante restant faire et pourquoi?" COMMENT RECONNAITRE SON UTILISATION? l'quipe utilise des outils de planification visuels (Release Plan, Story Map, Task Board) et on peut y voir des fiches cartonnes ou Post-It les descriptifs de User Stories ne contiennent pas ou peu de langage technique ("base de donnes", "cran X" ou "dialogue Y") mais font rfrence des objectifs d'utilisateurs Chapitre 66: User stories 183 QUELS BNFICES EN ATTENDRE? La pratique des User Stories conduit un dveloppement incrmental, et doit permettre d'en raliser les bnfices, notamment une rduction des risques lis l'effet tunnel, d'autant plus importante que les incrments sont de petite grandeur que les mises en production ont lieu tt et frquemment pour le donneur d'ordres, la possibilit de changer d'avis en cours de route sur les dtails d'implmentation ou la priorit donne une User Story non encore ralise pour les dveloppeurs, l'obtention de critres d'acceptation et de validation clairs et prcis, et la validation de leur travail au fil de l'eau la possibilit "d'auto-financer" le projet en ralisant trs tt les bnfices d'une mise en exploitation rendue possible par l'approche incrmentale en scindant clairement le "quoi" et le "comment" (les donneurs d'ordre doivent se cantonner dcrire le "quoi" savoir les objectifs, les dveloppeurs restant force de proposition sur le "comment"), permettre d'exploiter au mieux le talent et la crativit de chacun QUELS COTS OU INVESTISSEMENTS FAUT- IL CONSENTIR? Le dveloppement incrmental en gnral ncessite une stratgie de test plus labore. En effet, le risque d'effets de bord lors du dveloppement d'une fonctionnalit F2, entranant la rgression d'une fonctionnalit F1, exige que les fonctionnalits existantes soit re-testes. Dans le cas le plus pessimiste, le cot du test volue donc comme le carr du nombre de fonctionnalits: on doit tester successivement F1, F1+F2, F1+F2+F3, et ainsi de suite. Plus les incrments sont de petite grandeur, plus cet effet est sensible. Rfrentiel des pratiques Agiles 184 O SE RENSEIGNER POUR EN SAVOIR PLUS? (LIVRES, ARTICLES) User Stories Applied, de Mike Cohn Software By Numbers examine les aspects conomiques du dveloppement itratif PUBLICATIONS ACADMIQUES ET TRAVAUX DE RECHERCHE Thoriques Les travaux de Robert Biddle, Angela Martin, James Noble et leurs collaborateurs sont parmi les premiers se pencher spcifiquement sur le rle du Client dans les approches agiles et en analyser les mcanismes, ports par les User Stories Empiriques ... Chapitre 66: User stories 185 Chapitre 67 Vlocit Concept DE QUOI S'AGIT-IL? A la fin d'une itration, l'quipe additionne les estimations associes aux user stories qui ont t termines au cours de cette itration. Ce total est appel vlocit. Une fois connue, la vlocit peut tre utilise pour valider ou rviser la planification de l'ensemble du projet, en partant du principe que la vlocit lors de futures itrations sera approximativement gale la dernire vlocit constate. Exemple: une quipe entame une itration, prvoyant de terminer les stories suivantes: A, estime 2 points; B, estime 2 points; C, estime 3 points. A la fin de l'itration, les stories A et B sont termines 100% mais C n'est termine qu' 80%. Une quipe Agile ne reconnait que deux niveaux de compltion: 0% ou 100%. Par consquent C n'est pas comptabilise, et la vlocit de l'itration est de 4 points. Supposons que la totalit des stories du projet reprsente 40 points; on prvoit donc une dure totale du projet quivalente 10 itrations. L'itration suivante, l'quipe devrait ne prvoir qu'un lot de stories quivalent 4 points, afin d'viter de retomber dans le travers que constitue une story termine 80%. La vlocit fonctionne ainsi comme une soupape permettant de faire retomber la pression lorsque l'quipe rencontre des difficults tenir ses engagements. (Si la story C est Rfrentiel des pratiques Agiles 186 complte au dbut de l'itration suivante, les 3 points correspondants pourront tre comptabiliss dans la vlocit de cette dernire. La vlocit de l'quipe va donc "naturellement" remonter.) ERREURS COURANTES Cette dfinition a plusieurs consquences importantes: la vlocit est une constatation, une mesure postriori, et non un budget ou une prvision; parler de "fixer une vlocit" est un contresens on parle de la vlocit d'une quipe uniquement, en aucun cas de vlocit individuelle; cela n'aurait pas de sens, une quipe tant conue prcisment comme un ensemble plus performant que la somme de ses individus on ne peut pas directement comparer la vlocit de deux quipes diffrentes, puisque ces quipes peuvent avoir mis leurs estimations sur des bases diffrentes pour que la vlocit permette la prvision d'une date de fin du projet, il est impratif que l'ensemble des user stories que comprend le projet soient estimes de faon cohrente; il existe deux manires d'y parvenir: estimer la totalit des user stories trs tt dans le projet (avant ou pendant les premires itrations) utiliser une technique d'estimations relatives pour s'assurer que les estimations tardives sont mises sur la mme base que celles mises en dbut de projet ORIGINES le terme de "vlocit" provient d'Extreme Programming, o il apparat assez tardivement, remplaant le terme "load factor" dont la dfinition est juge trop complexe (milieu de l'anne 2000) la dfinition canonique apparat dans Planning Extreme Programming de Beck et Fowler (2001) le terme est ensuite adopt par la communaut Scrum partir de 2002 Chapitre 67: Vlocit 187 Chapitre 68 Bibliographie acadmique La centaine de rfrences ci-dessous donne un aperu des quelques pratiques Agiles qui ont le plus intress les chercheurs (et dessinent en creux le travail restant effectuer dans ce domaine). La slection que nous proposons s'intresse principalement aux tudes empiriques, laissant de ct la plupart des travaux purement conceptuels ou spculatifs qui n'ont pas fait l'objet d'une collecte de donnes. BDD (Behaviour-Driven Development) Towards an empirical evaluation of behaviour-driven development (Laplante, C.S., 2011) Behaviour-Driven Development of Foundational UML Components (Lazr, Ioan and Motogna, Simona and Pirv, Bazil, 2010) Charte projet Charters and Chartering: Immunizing Against Foreseeable Project Failure (III, 2001) Dveloppement par les tests Empirical Studies for the Application of Agile Methods to Embedded Systems (Wilking, Dirk, 2008) Rfrentiel des pratiques Agiles 188 The Effect of Test-Driven Development on Program Code (Muller, Matthias, 2006) Evaluation of Test Driven Development (Wasmus, Hans, 2006) A Leveled Examination of Test-Driven Development Acceptance (Janzen, David S. and Saiedian, Hossein, 2007) On the Sustained Use of a Test-Driven Development Practice at IBM (Sanchez, Julio Cesar and Williams, Laurie and Maximilien, E. Michael, 2007) Programmer's Expertise during Test-Driven Software Development. (Shaochun Xu and Zendi Cui and Dapeng Liu and Xuhui Chen, 2007) Realizing quality improvement through test driven development: results and experiences of four industrial teams (Nagappan, Nachiappan and Maximilien, E. Michael and Bhat, Thirumalesh and Williams, Laurie, 2008) Adding planned design to xp might help novices' productivity (or might not): two controlled experiments (Noel, Ren and Valdes, Gonzalo and Visconti, Marcello and Astudillo, Hernan, 2008) Does Test-Driven Development Improve the Program Code? Alarming Results from a Comparative Case Study (Siniaalto, Maria and Abrahamsson, Pekka, 2008) The Impact of Test Driven Development on the Evolution of a Reusable Framework of Components - An Industrial Case Study (Slyngstad, Odd Petter N. and Li, Jingyue and Conradi, Reidar and Ronneberg, Harald and Landre, Einar and Wesenberg, Harald, 2008) The Impact of Test-Driven Development on Software Development Productivity --- An Empirical Study (Madeyski, Lech and Szala, Lukasz, 2007) Effective test driven development for embedded software (Karlesky, M. and Bereza, W. and Erickson, C., 2006) On the Influence of Test-Driven Development on Software Design (Janzen, D.S. and Saiedian, H., 2006) Empirical investigation towards the effectiveness of Test First programming (Liang Huang and Mike Holcombe, 2009) An Experimental Evaluation of the Effectiveness and Efficiency of the Test Driven Development (Gupta, Atul and Jalote, Pankaj, 2007) A Prototype Empirical Evaluation of Test Driven Development (Geras, A. and Smith, M. and Miller, J., 2004) Chapitre 68: Bibliographie acadmique 189 A structured experiment of test-driven development (George, B. and Williams, L., 2004) Lessons learned from an XP Experiment with Students: Test-First needs more teachings (Flohr, T. and Schneider, T., 2006) Using software testing to move students from trial-and-error to reflection-in-action (Edwards, Stephen H., 2004) Test driven development of embedded systems using existing software test infrastructure (Dowty, M., 2004) A survey of evidence for test-driven development in academia (Desai, Chetan and Janzen, David and Savage, Kyle, 2008) The effect of experience on the test-driven development process (Muller, Matthias M. and Hofer, Andreas, 2007) Quality Impact of Introducing Component-Level Test Automation and Test-Driven Development (Damm, Lars-Ola and Lundberg, Lars, 2007) Results from introducing component-level test automation and test- driven development (Damm, Lars-Ola and Lundberg, Lars, 2006) Evaluating the efficacy of test-driven development: industrial case studies (Bhat, Thirumalesh and Nagappan, Nachiappan, 2006) Improving Business Agility Through Technical Solutions: A Case Study on Test-Driven Development in Mobile Software Development (Abrahamsson, Pekka and Hanhineva, Antti and Jaalinoja, Juho, 2005) Test Driven Development and Software Process Improvement in China (Lui, Kim Man and Chan, Keith C.C., 2004) An experimental evaluation of continuous testing during development (Saff, David and Ernst, Michael D., 2004) Using test-driven development in the classroom: providing students with automatic, concrete feedback on performance (Edwards, S., 2003) Improving student performance by evaluating how well students test their own programs (Edwards, Stephen H., 2003) Evaluating advantages of test driven development: a controlled experiment with professionals (Canfora, Gerardo and Cimitile, Aniello and Garcia, Felix and Piattini, Mario and Visaggio, Corrado Aaron, 2006) An initial investigation of test driven development in industry (George, Boby and Williams, Laurie, 2003) Implications of test-driven development: a pilot study (Kaufmann, Reid and Janzen, David, 2003) Rfrentiel des pratiques Agiles 190 Assessing test-driven development at IBM (Maximilien, E. Michael and Williams, Laurie, 2003) Towards empirical evaluation of test-driven development in a university environment (Pancur, M. and Ciglaric, M. and Trampus, M. and Vidmar, T., 2003) Web-CAT: A Web-based Center for Automated Testing (Shah, Anuj, 2003) Test-Driven Development as a Defect-Reduction Practice (Williams, Laurie and Maximilien, E. Michael and Vouk, Mladen, 2003) Analysis and Quantification of Test Driven Development Approach (George, B., 2002) Experiment about test-first programming (Muller, M.M. and Hagner, O., 2002) An Informal Formal Method for Systematic JUnit Test Case Generation (Stotts, P. David and Lindsey, Mark and Antley, Angus, 2002) The effect of unit tests on entry points, coupling and cohesion in an introductory Java programming course (Steinberg, Daniel H., 2001) Integrating Unit Testing into a Software Development Team's Process (R.A. Ynchausti, 2001) Test-Driven Development of Relational Databases (Ambler, Scott W., 2007) Does Test-Driven Development Really Improve Software Design Quality? (Janzen, D.S. and Saiedian, H., 2008) On the effectiveness of the test-first approach to programming (Hakan Erdogmus and Maurizio Morisio and Ieee Computer Society and Marco Torchiano and Ieee Computer Society, 2005) Automated Recognition of Test-Driven Development with {Z}orro (Johnson, Philip M. and Kou, Hongbing, 2007) The impact of test-driven development on design quality (Maria Siniaalto, 2006) Test-driven development: empirical body of evidence (Maria Siniaalto, 2006) Dveloppement par les tests client Empirical analyses of executable acceptance test driven development (Melnik, Grigori Igorovych, 2007) Chapitre 68: Bibliographie acadmique 191 Are fit tables really talking?: a series of experiments to understand whether fit tables are useful during evolution tasks (Ricca, Filippo and Di Penta, Massimiliano and Torchiano, Marco and Tonella, Paolo and Ceccato, Mariano and Visaggio, Corrado Aaron, 2008) FitClipse: a fit-based eclipse plug-in for executable acceptance test driven development (Deng, Chengyao and Wilson, Patrick and Maurer, Frank, 2007) Using acceptance tests as a support for clarifying requirements: A series of experiments (Ricca, Filippo and Torchiano, Marco and Di Penta, Massimiliano and Ceccato, Mariano and Tonella, Paolo, 2009) Objets fantaisie (Mock Objects) An empirical study of testing file-system-dependent software with mock objects (Marri, M.R. and Tao Xie and Tillmann, N. and de Halleux, J. and Schulte, W., 2009) Personas Personas - a Literature Review Personas is not applicable: local remedies interpreted in a wider context (Ronkko, Kari and Hellman, Mats and Kilander, Britta and Dittrich, Yvonne, 2004) Resolving Incommensurable Debates: A Preliminary Identification of Persona Kinds, Attributes, and Characteristics (Ingbert R. Floyd and M. Cameron Jones and Michael B. Twidale, 2008) Real or Imaginary: The effectiveness of using personas in product design (Long, Frank, 2009) An Empirical Study Demonstrating How Different Design Constraints, Project Organization and Contexts Limited the Utility of Personas (Ronkko, K., 2005) Planning poker Using planning poker for combining expert estimates in software projects (Molokken-Ostvold, Kjetil and Haugen, Nils Christian and Benestad, Hans Christian, 2008) Rfrentiel des pratiques Agiles 192 Combining Estimates with Planning Poker--An Empirical Study (Molokken-Ostvold, Kjetil and Haugen, Nils Christian, 2007) An Empirical Study of Using Planning Poker for User Story Estimation (Haugen, Nils C., 2006) Programmation en binmes Controlled experimentation on adaptations of pair programming (Domino, Madeline Ann and Collins, Rosann Webb and Hevner, Alan R., 2007) Preliminary Analysis of the Effects of Pair Programming and Test- Driven Development on the External Code Quality (Madeyski, Lech, 2005) Pair programming productivity: Novice-novice vs. expert-expert (Lui, Kim Man and Chan, Keith C. C., 2006) Personality and the nature of collaboration in pair programming (Walle, Thorbjorn and Hannay, Jo E., 2009) An empirical comparison between pair development and software inspection in Thailand (Phongpaibul, Monvorath and Boehm, Barry, 2006) The case for collaborative programming (Nosek, John T., 1998) A multiple case study on the impact of pair programming on product quality (Hulkko, Hanna and Abrahamsson, Pekka, 2005) Video analysis of pair programming (Hofer, Andreas, 2008) Effects of Personality on Pair Programming (Jo E. Hannay and Erik Arisholm and Harald Engvik and Dag I.K. Sjoberg, 2010) The benefits of pairing by ability (Braught, Grant and MacCormick, John and Wahls, Tim, 2010) An interpretation of the results of the analysis of pair programming during novices integration in a team (Fronza, Ilenia and Sillitti, Alberto and Succi, Giancarlo, 2009) The Economics of Software Development by Pair Programmers (Erdogmus, H. and Williams, L., 2003) The Costs and Benefits of Pair Programming (Cockburn, Alistair and Williams, Laurie, 2000) The effectiveness of pair programming: A meta-analysis (Hannay, Jo E. and Dybaa, Tore and Arisholm, Erik and Sjoberg, Dag I. K., 2009) Chapitre 68: Bibliographie acadmique 193 Strengthening the Case for Pair Programming (Laurie Williams and Robert R. Kessler and Ward Cunningham and Ron Jeffries, 2000) The collaborative software process(sm) (Williams, Laurie Ann, 2000) "Talking the talk": Is intermediate-level conversation the key to the pair programming success story? (Freudenberg, S. (nee Bryant) and Romero, P. and du Boulay, B., 2007) Are Two Heads Better than One? On the Effectiveness of Pair Programming (Dybaa, Tore and Arisholm, Erik and Sjoberg, Dag I. K. and Hannay, Jo E. and Shull, Forrest, 2007) The Social Dynamics of Pair Programming (Chong, Jan and Hurlbutt, Tom, 2007) Critical Personality Traits in Successful Pair Programming (Chao, Joseph and Atli, Gulgunes, 2006) A replicated experiment of pair-programming in a 2nd-year software development and design computer science course (Mendes, Emilia and Al-Fakhri, Lubna and Luxton-Reilly, Andrew, 2006) The effects of pair-programming on individual programming skill (Braught, Grant and Eby, L. Martin and Wahls, Tim, 2008) Pair programming: what's in it for me? (Begel, Andrew and Nagappan, Nachiappan, 2008) Promiscuous pairing and beginner's mind: embrace inexperience [agile programming] (Belshee, A., 2005) Evaluating Pair Programming with Respect to System Complexity and Programmer Expertise (Erik Arisholm and Hans Gallis and Tore Dyba and Dag I.K. Sjoberg, 2007) Pair programming improves student retention, confidence, and program quality (C McDowell and L Werner and H E Bullock and J Fernald, 2006) The effects of pair-programming on performance in an introductory programming course (C McDowell and L Werner and H Bullock and J Fernald, 2002) Experimental evaluation of pair programming (Jerzy Nawrocki and Adam Wojciechowski, 2001) Code Warriors and Code-a-Phobes: A study in attitude and pair programming (L Thomas and M Ratcliffe and A Robertson, 2003) Female Computer Science Students Who Pair Program Persist (Linda Werner and Charlie McDowell and Brian Hanks, 2004) Rfrentiel des pratiques Agiles 194 Refactoring Refactoring--Does It Improve Software Quality? (Stroggylos, Konstantinos and Spinellis, Diomidis, 2007) Refactoring trends across n versions of n java open source systems: an empirical study (Deepak Advani and Youssef Hassoun and Steve Counsell, 2005) Why don't people use refactoring tools (Emerson Murphy-Hill and Andrew P. Black, 2007) A comparison of software refactoring tools (J Simmonds and T Mens, 2002) Digging the Development Dust for Refactorings (C Schofield and B Tansey and Z Xing and E Stroulia, 2006) Are refactorings less errorprone than other changes (P Weissgerber and S Diehl, 2006) Roots of refactoring (J Philipps and B Rumpe, 2001) Program Refactoring, Program Synthesis, and Model-Driven Development (D Batory, 2007) Work experience versus refactoring to design patterns: a controlled experiment (T H Ng and S C Cheung and W K Chan and Y T Yu, 2006) A discussion of refactoring in research and practice (B Du Bois and P Van Gorp and A Amsel and N Van Eetvelde and H Stenten and S Demeyer and T Mens, 2004) Refactoring Practice: How it is and How it Should be Supported - An Eclipse Case Study (Zhenchang Xing and Stroulia, E., 2006) A survey of software refactoring (Tom Mens and Tom Tourwe, 2004) Refactoring: emerging trends and open problems (T Mens and A V Deursen, 2003) Rtrospective jalon Project retrospectives, and why they never happen (Glass, R.L., 2002) Runion quotidienne Daily scrums in a distributed environment (Ganis, Matt and Surdek, Steffan and Woodward, Elizabeth, 2009) Chapitre 68: Bibliographie acadmique 195 The effects of stand-up and sit-down meeting formats on meeting outcomes (Bluedorn, A C and Turban, D B and Love, M S, 1999) Supporting daily scrum meetings with change structure (Rubart, Jessica and Freykamp, Frank, 2009) 'Today' messages: lightweight group awareness via email (Brush, A. J. and Borning, Alan, 2003) Introduction to Stand-up Meetings in Agile Methods (Eisha Hasnain and Tracy Hall, 2009) Stand and Deliver: Why I Hate Stand-Up Meetings (Laplante, Phillip A, 2003) Tableau des tches Drifting Toward Invisibility: The Transition to the Electronic Task Board (Perry, Thomas, 2008) Design and technology for Collaborage: collaborative collages of information on physical walls (Moran, Thomas P. and Saund, Eric and Van Melle, William and Gujar, Anuj U. and Fishkin, Kenneth P. and Harrison, Beverly L., 1999) Tableau kanban Exploring the Sources of Waste in Kanban Software Development Projects (Ikonen, Marko and Kettunen, Petri and Oza, Nilay and Abrahamsson, Pekka, 2010) Test exploratoire Defect Detection Efficiency: Test Case Based vs. Exploratory Testing (Itkonen, Juha and Mantyla, Mika V. and Lassenius, Casper, 2007) Tests fonctionnels automatiss "Talking tests": a Preliminary Experimental Study on Fit User Acceptance Tests (Marco Torchiano and Filippo Ricca and Massimiliano Di Penta, 2007) Automated Acceptance Testing: A Literature Review and an Industrial Case Study (Haugset, B. and Hanssen, G.K., 2008) Rfrentiel des pratiques Agiles 196 Tests unitaires automatiss A survey of software testing practices in Alberta (Geras, A.M. and Smith, M.R. and Miller, J., 2004) A replicated survey of software testing practices in the Canadian province of Alberta: What has changed from 2004 to 2009? (Garousi, Vahid and Varma, Tan, 2010) Automatic Software Test Drivers (Panzl, D. J., 1978) Automatic revision of formal test procedures (Panzl, David J., 1978) On the effectiveness of unit test automation at Microsoft (Williams, Laurie and Kudrjavets, Gunnar and Nagappan, Nachiappan, 2009) User stories Supporting Program Comprehension in Agile with Links to User Stories (Sukanya Ratanotayanon and Susan Elliott Sim and Rosalva Gallardo-Valencia, 2009) Sizing user stories using paired comparisons (Miranda, Eduardo and Bourque, Pierre and Abran, Alain, 2009) Generating user stories in groups (Nguyen, Cuong D. and Gallagher, Erin and Read, Aaron and De Vreede, Gert-Jan, 2009) INVEST in Good Stories, and SMART Tasks (William Wake, 2003) Chapitre 68: Bibliographie acadmique 197 (c) 2011 Institut Agile Version 1.0 du 04/05/2011