source: trunk/doc/overview.fr.txt @ 2

Revision 2, 16.4 KB checked in by dom, 5 years ago (diff)

Importing revision 150 of XP Dojo from BerliOS

Line 
1Présentation générale d'XP Dojo
2===============================
3
4XP Dojo est un logiciel offrant un espace virtuel dans lequel tous les participants d'un projet XP se rendent pour travailler et collaborer. Il réunit le code, les tests, les scénarios et toute autre information concernant le projet, en permettant aux participants d'y travailler selon la méthode XP.
5
6Peu d'outils sont conçus spécifiquement pour XP
7-----------------------------------------------
8
9La pratique de l'eXtreme Programming amÚne des façons nouvelles de programmer, de collaborer et de communiquer.
10
11Par exemple, dans un projet XP, le code n'est ni commenté ni accompagné d'une documentation expliquant son organisation. Pourtant, chaque programmeur intervient dans toutes les parties du code, et du code qu'il développe peut avoir été modifié par d'autres la prochaine fois qu'il le regarde. Dans ces conditions, des outils de visualisation et navigation du code trÚs efficaces sont indispensables.
12
13D'ailleurs, le programmeur XP ne navigue pas que dans le code : il navigue en parallÚle dans les tests unitaires de ce code. Il passe systématiquement et fréquemment de l'un à l'autre ou les regarde cÎte à cÎte.
14
15Surtout, l'eXtreme Programming se reconnaît à deux caractéristiques: les tests unitaires sont écrits avant le code, et deux programmeurs travaillent en tandem. A elles seules ces deux pratiques bouleversent les flux et demanderaient une ergonomie particuliÚre.
16
17Enfin, de par sa sensibilisation aux valeurs XP, un développeur XP aspire à des outils plus simples. Pourquoi, en dehors de Smalltalk, sommes-nous encore à travailler avec des fichiers ?
18
19Or les outils de développement existants répondent assez peu à ces besoins, tout en compliquant les choses avec de nombreuses fonctionnalités qui, dans le contexte de l'eXtreme Programming, sont superflues ou inadaptées.
20
21Il y certes des avancées. De plus en plus d'IDE (environnements de développement intégrés), à l'instar d'IntelliJ ou Eclipse, fournissent des remaniements (refactorings) automatisés et intÚgrent le lancement de tests JUnit. Ils intÚgrent également divers outils de gestion de configuration. CruiseControl automatise l'intégration continue. Des outils de tests de recette permettant de définir les résultats attendus avant d'avoir développé le logiciel apparaissent, et FIT notamment permet même d'impliquer un non-développeur dans leur définition.
22
23Mais le tableau est loin d'être idyllique. D'abord, la plupart des avancées citées sont réservées au développement en Java. Dans Eclipse, la plupart des remaniements ne fonctionnent pas ou pas toujours comme l'attendent des développeurs XP habitués à cette pratique - aprÚs quelque semaines de frustration nous avons fini par ne plus en utiliser qu'un seul, le renommage. L'intégration de JUnit n'a pas été étudiée pour le TDD: l'assistant de création de TestCase propose de sélectionner la classe à tester parmi les classes déjà existantes, et même de générer des squelettes de tests en utilisant ses méthodes existantes !
24
25En pratique, il existe assez d'outils pour qu'une équipe connaissont bien XP puisse, au prix d'un certain effort, mettre au point un environnement à peu prÚs adapté à la méthode. Par contre, ces outils ne facilitent pas l'adoption des pratiques XP, et tendent plutÎt à encourager des dérives méthodologiques. Comme souvent, l'intégration entre des outils hétéroclites impose des limitations et engendre des dysfonctionnements.
26
27Cf. article de James Shore sur CruiseControl.
28
29L'objectif principal du projet XP Dojo est donc de fournir un outil simple et autonome spécifiquement adapté aux pratiques XP, notamment :
30
31- la programmation pilotée par les tests unitaires et de recette;
32
33- l'intégration continue;
34
35- le remaniement (refactoring);
36
37- le développement en tandem (pair programming).
38
39Nous ne pensons pas que le rÎle d'un outil est d'imposer une méthodologie, contraindre l'utilisateur ou prendre des décisions à sa place. XP Dojo vise plutÎt à simplifier et fluidifier le travail en mode XP, automatiser les tâches répétitives et encourager l'expérimentation.
40
41Pour les aspects consacrés aux développeurs, XP Dojo se limite à la programmation en Erlang et en C. Nous préférons pour le moment consacrer nos efforts aux nouvelles fonctionnalités qu'au support d'autres langages. Le choix d'Erlang est justifié dans un autre article. Quant au C, il est le complément parfait à Erlang, reste un des langages les plus répandus, et manque cruellement d'outils alors qu'il en aurait le plus besoin pour le rendre plus amÚne à la programmation XP.
42
43Explorer librement et se perfectionner à XP
44-------------------------------------------
45
46Le développement d'un outil dédié à XP s'est naturellement présenté à nous comme l'opportunité de mettre en pratique et à l'essai toutes nos convictions techniques et méthodologiques. Par exemple, nous étions attirés par le langage Erlang. Nous souhaitions pousser toujours plus loin l'automatisation totale des tests, travailler avec une métaphore, s'exercer à l'écriture de tests unitaires "documentaires", faire émerger un mini-langage rendant les tests de recette totalement lisibles, combiner les tests de recette avec un systÚme intéractif de formation et d'aide en ligne, augmenter encore la fréquence des intégrations jusqu'à atteindre l'intégration instantanée chaque fois que tous les tests unitaires passent....
47
48Toutes ces idées, suggérées par notre pratique d'XP dans un contexte professionnel, demandaient un peu trop de recherche et de développement pour être envisageable sur ces projets.
49
50Ce désir de travailler sans contraintes nous à conduit à démarrer un projet de logiciel libre.
51
52Adapter XP à un projet open source bénévole
53-----------------------------------------------
54
55Le choix d'appliquer au maximum la méthode XP à ce projet de logiciel libre était pour nous une évidence. D'ailleurs, XP ne manque pas d'atouts dans ce contexte:
56
57- les livraisons fréquentes et rythmées sont appréciées par les communautés d'utilisateurs, tout en donnant aux développeurs le sentiment d'avancer malgré le temps limité qu'ils peuvent y consacrer.
58
59- le soin apporté à la qualité, et la fiabilité des nouvelles versions grâce à la non-régression automatisée, est un domaine où XP excelle et pourrait améliorer la mauvaise réputation du logiciel libre.
60
61Par contre, un développement bénévole d'un logiciel libre nécessite aussi des adaptations à la méthode XP et engendre de nouveaux besoins:
62
63- le fait de travailler sur son temps libre implique de le faire souvent chez soi;
64
65- la programmation en tandem nécessite donc des outils permettant la collaboration à distance en réseau (que nous baptisons cyberdojo);
66
67- malgré tout, la programmation en tandem n'est plus possible tout le temps, à moins de s'interdire de travailler lorsqu'aucun autre équipier ne se trouve libre au même moment;
68
69- le temps bénévole fluctue beaucoup au gré des disponibilités et motivations des membres de l'équipe: la notion de vélocité devient inapplicable;
70
71- le rÎle de client se répartit entre les développeurs du projet et toute la communauté utilisatrice: les choses sont moins claires que dans un projet XP classique;
72
73- la propriété collective du code est mise à mal par la distance et les participations fluctuantes (la question des contributions externes se pose aussi).
74
75Bien entendu, nous souhaitions "utiliser l'outil pour développer l'outil". Du coup, XP Dojo supportera le développement open source et intÚgrera les réponses que nous aurons adoptées, aprÚs expérimentation, aux questions ci-dessus.
76
77Notre réflexion à ce sujet nous incite actuellement à amplifier et "extrémiser" les pratiques XP:
78
79- apprendre à découper les scénarios de façon à ce qu'ils soient entiÚrement réalisables en une "séance" (typiquement deux heures de développement);
80
81- passer à l'intégration instantanée, diffusant et intégrant automatiquement chaque changement chaque fois qu'on revient à l'état où les tests unitaires passent;
82
83- la simplicité absolue, l'expressivité et la métaphore s'imposent encore plus pour compenser l'éclatement de l'équipe;
84
85- les tests de recette doivent être lisibles et rédigeables, non pas par une seule personne, mais par toute la communauté, sans nécessiter de formation particuliÚre: en effet la contribution de tests de recettes nous semble la seule façon de gérer efficacement des demandes potentiellement nombreuses;
86
87- l'outil doit permettre à chaque utilisateur d'exprimer ses préférences et priorités parmi les scénarios proposés; un systÚme de vote, à définir, permettrait d'identifier les besoins prioritaires.
88
89Nous pensons donc que ces évolutions constitueront des axes d'amélioration pouvant bénéficier tous les projets XP, mêmes classiques.
90
91BinÎmage à distance
92-------------------
93
94Le meilleur exemple de la maniÚre que ces extensions "open source" peuvent intéresser les projets XP en entreprise est le cyberdojo.
95
96Tout d'abord, malgré toute l'insistance que les pratiquants d'XP mettent à préconiser le rassemblement physique de tous les acteurs d'un projet, de nombreuses entreprises multisites, ou situées ailleurs que leurs clients, n'y peuvent rien mais souhaiteraient néanmoins pratiquer XP.
97
98L'outillage de travail en tandem à distance, tout en aidant les (nombreuses) équipes distribuées essayant de pratiquer XP, peut servir aux équipes partageant le même bureau, permettant notamment:
99
100- de ne pas réorganiser tout le mobilier;
101
102- de rapidement et temporairement se connecter à la séance d'un autre binÎme pour les aider ou observer ce qu'ils font;
103
104- de travailler confortablement à trois ou plus (formation, problÚmes épineux);
105
106- de binÎmer tout en conservant le confort de ses réglages personnels (e.g. claviers azerty, qwerty ou dvorak).
107
108XP Dojo fournira, de façon totalement intégrée au reste de l'outil, les fonctionnalités suivantes dédiées à la collaboration à distance:
109
110- gestion de la présence des participants et de la création de séances de travail à deux ou plus;
111
112- transmission de la voix des membres de la séance; possibilité d'entendre, en plus atténué, les échanges d'une ou des autres séances en cours;
113
114- travail en parallÚle, mais indépendant, sur le même code, avec visualisation de ce que fait l'autre (inspiré de SubEthaEdit);
115
116- mode spécial dédié au jeu du ping pong (l'un ajoute un test, l'autre le fait passer).
117
118Retour d'expérience de binÎmage à distance avec les outils actuels
119------------------------------------------------------------------
120
121La conviction qu'il fallait développer un outil dédié est issue d'un an de binÎmage à distance avec les outils disponibles de messagerie instantanée, téléphonie internet et partage de bureaux. Nos contraintes, apparemment sévÚres, sont pourtant représentatives d'un logiciel libre ayant une communauté importante:
122
123- interopérabilité entre Linux/BSD, Mac OS X et Windows
124- interopérabilité entre des claviers différents
125- performances correctes via internet
126
127Nous avons evalué ou expérimenté de nombreuses combinaisons d'outils disponibles: VNC, session distante X11, de nombreux outils de messagerie instantanée, SubEthaEdit, un plugin Eclipse (Sangam)... Nous utilisons actuellement:
128
129- yahoo!messenger pour savoir qui est disponible et former les binÃŽmes
130- SJPhone pour la voix
131- ssh + /bin/screen + emacs pour partager un bureau
132
133Cette solution demande quand même une dizaine de minutes de mise en place (environ une heure la premiÚre fois), ne fonctionne que dans un sens (un utilisateur Windows doit se connecter pour travailler chez un utilisateur Mac ou Linux), modifie légÚrement l'ergonomie à laquelle nous sommes habitués et n'ajoute aucune ergonomie dédiée au travail en tandem. Elle reste, pour nos besoins, supérieure aux autres possibilités, qui ont toutes révélées l'un ou l'autre des problÚmes suivants:
134
135- des problÚmes d'interopérabilité entre OS et/ou claviers
136- une difficulté d'installation et de configuration dépassant nos compétences et notre patience
137- des défauts de fonctionnement les rendant inutilisables
138- une lenteur insupportable
139
140Avant de binÎmer à distance, nous avions pendant deux ans collaborés et binÎmés ensemble sur un projet XP classique. Outre la frustration d'avoir perdu beaucoup de temps à lutter avec les outils, nous avons trouvé le binÎmage à distance tout aussi utile et bénéfique que le binÎmage normal, mais un peu plus délicat à faire:
141
142- comme on ne voit pas le partenaire, il faut en permanence se parler, expliquer ce qu'on est en train de faire, même ce qu'on est en train de regarder;
143
144- il y a une plus forte tendance à décrocher, à faire quelque chose en parallÚle pendant que l'autre continue;
145
146Mais il y a aussi des avantages car, étant déjà sensibilisés et expérimentés en binÎmage, nous étions peut-être plus attentif à l'autre que lorsque nous binÎmions cÎte à cÎte.
147
148Nous pensons que le fait de se connaître, et de connaître le binÎmage, au préalable, a facilité les choses. Bien que nous n'ayons jamais essayé, nous imaginons qu'il serait encore plus difficile de binÎmer à distance avec quelqu'un avec qui nous n'avons pas travaillé au préalable.
149
150Les difficultés et frustrations sont néanmoins suffisantes pour que:
151
1521) nous avons relaxé notre exigeance initiale de ne jamais coder seul:
153
1542) nous avons décidé de nous réunir physiquement une fois par mois (ce qui nous recommenderions de toutes façons).
155
156La nécessité de disposer d'un outil intégré, simple à mettre en oeuvre, et apportant une ergonomie adaptée à cet exercice nous paraît indéniable pour que ce mode de collaboration devienne viable.
157
158Etat des lieux
159--------------
160
161XP Dojo permet actuellement de développer en TDD en Erlang d'une maniÚre trÚs dynamique.
162
163En terme d'organisation du code, de compilation et d'exécution, Erlang ressemble sensiblement à Java:
164
165- chaque module doit se trouver dans un fichier du même nom;
166
167- chaque module est compilé (mais peut être compilé indépendemment des modules dont il dépend);
168
169- la compilation génÚre du bytecode pour une machine virtuelle
170
171- un systÚme équivalent à make permet de définir un ensemble de fichiers source à compiler s'ils ont été modifiés.
172
173XP Dojo simplifie et automatise toutes ces opérations: il suffit d'indiquer la racine du projet pour que tous les fichiers source soit trouvés, compilés et chargés dans la machine virtuelle, et ce continuellement, chaque fois qu'un fichier est modifié ou ajouté.
174
175En outre, XP Dojo filtre parmi les modules trouvés ceux qui contiennent des tests unitaires, ou de recette. Le cas échéant, ceux-ci sont également exécutés et le bilan des résultats affiché.
176
177Une ergonomie pilotée par les tests
178-----------------------------------
179
180XP Dojo fera complÚtement abstraction des fichiers source, stockant directement l'arbre syntaxique abstrait:
181
182- l'affichage présente une vue logique des modules et fonctions, comme Smalltalk;
183
184- le code est affiché dans un style uniforme;
185
186- les manipulations (refactoring, indexation) sont facilitées.
187
188L'interface graphique d'XP Dojo affichera cÎte à cÎte le code et les tests unitaires correspondants. Chaque fois qu'on affiche un module, tous les tests qui l'exercent seront affichés à cÎté.
189
190Le code étant compilé et les tests relancés en continu (à chaque modification de code), la synthÚse est affichée dans un tableau de bord, et les tests en échec seront indiqués directement dans le code par des couleurs. Le code non testé (car non couvert ou mutable sans mettre un test en échec) sera égalemet mis en exergue.
191
192L'écriture d'un test pour un fonction inexistante génÚrera instantanément un bouchon de code correspondant.
193
194Intégration instantanée pilotée par les tests et le refactoring
195---------------------------------------------------------------
196
197Les opérations de gestion des versions seront gérées automatiquement en fonction de l'état des tests:
198
199- l'ajout ou modification des tests crée automatiquement une session de travail
200- dÚs que les tests unitaires repassent à 100% (sans régressions dans les tests de recette), le code est reposé et la session refermée.
201
202Toutes les modifications de code sont exprimées en tant que refactorings (opérations sémantiques). Ainsi, lorsqu'une session est en cours alors qu'une autre se termine, ses modifications (sémantiques) de codes sont automatiquement appliquée sur la session en cours, dÚs qu'elle est stable (100%).
203
204EXEMPLE?
Note: See TracBrowser for help on using the repository browser.