Академический Документы
Профессиональный Документы
Культура Документы
considrations
Introduction leXtreme
Programming et au
dveloppement agile
Gauthier Picard
gauthier.picard@emse.fr
Octobre 2009
Sommaire
1 Introduction
2 quipe et rles XP
3 Pratiques XP
4 Processus XP
5 Autres considrations
Sommaire
1 Introduction
2 quipe et rles XP
3 Pratiques XP
4 Processus XP
5 Autres considrations
La prhistoire : Influences
Culture SmallTalk
198x : Kent Beck et Ward Cunningham travaillent chez Tektronix
Elements clef de cette culture :
Dveloppement en binme Intgration continue
Refactoring Dveloppement itratif
Changements rapides Tests permanents
Interaction permanente avec le
client
Episodes
1986-1996 : Kent Beck et Ward Cunningham dveloppent un ensemble de
bonnes pratiques
Support dans le language Episodes de Ward Cunningham
Refactoring
1989-1992 : William F. Opdyke, Refactoring Object-Oriented Frameworks.
PhD Thesis
1995-1996 : Kent Beck, Smalltalk Best Practices Patterns
1999 : Martin Fowler, Refactoring : Improving the Design of Existing Code
Test-Driven Development
Driv des pratiques de refactoring
Premier article publi par Kent Beck propos de SmallUnit
1997 : Cration de JUnit par Kent Beck et Erich Gamma
Design Patterns
Ide reprise de larchitecture, plus particulirement de Christopher Alexander
Kent Beck et Ward Cunningham ont appliqu le concept de patrons au
logiciel depuis 1987
1995 : Publication de Design Patterns, par
Erich Gamma
Richard Helm
Ralph Johnson
John Vlissides
Les dbuts
Le Manifeste Agile
http://www.agilemanifesto.org/
Nous cherchons de meilleures manires pour dvelopper des logiciels en aidant les
autres et en dveloppant nous mmes. travers ce travail nous en sommes venus
valoriser :
Personnes et interaction plutt que processus et outils
Logiciel fonctionnel plutt que documentation complte
Collaboration avec le client plutt que ngociation de
contrat Ragir au changement plutt que suivre un plan
En fait, bien que les lments de droite soient importants, nous pensons que les
lments de gauche le sont encore plus.
Processus squentiels
La plupart drivs du cycle en V
Variantes... intgrant parfois des sous-cycles itratifs
1
Cahier des charges
2
Document de spcifications
3
Document de conception gnrale
4
Document de conception dtaille
5
Plans de tests
6
...
7
Et lapplication ?
Processus squentiels
La plupart drivs du cycle en V
Variantes... intgrant parfois des sous-cycles itratifs
Effet Tunnel
Le processus correspond il aux besoins du projet ?
Introduction leXtreme Programming et au 10 /
dveloppement agile 76
Introduction quipe et rles XP Pratiques XP Processus XP Autres
considrations
Faits
Sources principales de problmes dans les spcifications :
Erreurs
Oublis
Changements
Consquences
Remises en question des spcifications
Risques pour la conception lis au changement
Valeurs XP
Communication
Dveloppement = Effort collectif de cration
Avoir une vision commune et pouvoir se synchroniser
Qualit de la communication
Communication directe et le contact humain
Faiblesse pour la traabilit et la structuration
Augmentation de la ractivit
Simplicit
La chose la plus simple qui puisse marcher
Simple Simpliste
Eviter la complexit inutile dans le code
Toute duplication doit tre limine
Introduction leXtreme Programming et au 12 /
dveloppement agile 76
Introduction quipe et rles XP Pratiques XP Processus XP Autres
considrations
Valeurs XP (cont.)
Facteur de qualit
Acquisition dexprience
Amlioration constante du travail
Courage
Se lancer dans un projet non entirement spcifi
Accepter de remanier une portion de code devenue complexe
Appliquer les valeurs de feedback et de communication
Accepter de montrer ses propres limites
Maintenir une transparence complte
Principes XP
Sommaire
1 Introduction
2 quipe et rles XP
3 Pratiques XP
4 Processus XP
5 Autres considrations
Programmeur
Programmeur (cont.)
Conception pour un codage durable
Elle est trs importante !
Elle a un but diffrent :
Pas montrer ce que lon a cod
Pas fournir des documents remplis de schmas
Garantir le long terme
Eviter ainsi :
Fragilit (modification rgression)
Rigidit (petite modification nombreuses modifications)
Immobilit (factoriser tout casser)
Interventions sur
la conception
Collectivement lors des
sances de planification
Lors de lcriture des tests
unitaires
Introduction leXtreme Programming et au 17 /
dveloppement agile 76
Introduction quipe et rles XP Pratiques XP Processus XP Autres
considrations
Programmeur (cont.)
Responsabilisation
Retour du programmeur comme rle central
A la fois : codeur, testeur, concepteur et analyste
Apprentissage Qualits humaines ncessaires
XP : Ecole de lexcellence
Responsabiliss pour donner le meilleur deux mme
ex. : estimation des charges et dlais
Pratiques XP
Programmation en binme Responsabilit collective du code
Client
Client (cont.)
Scnarios clients
Description informelle dune fonctionnalit ou dune interaction avec
lutilisateur
Le plus simple possible
Dmarrage du A chaque
projet
Des scnarios initiaux
itration...
Grce au feedback introduit (logiciel
sont dgags et fonctionnel) :
prsents Il peut revoir le contenu des
itrations
Ils sont classs par Modifier ses scnarios
priorit et rpartis en
itrations Il est garant des fonctionnalits du
logiciel
Client (cont.)
Tests de recette
But : prciser les contours des scnarios
Donnes concrtes levant les ambiguts
Preuve que le systme fait ce quil demandait
A chaque fin ditration tous les tests de recette doivent passer avec succs
Pratiques XP
Planification itrative
Rdaction des scnarios clients
Sances de planification
Tests de recette
Intgration continue
Rythme durable
Introduction leXtreme Programming et au 21 /
dveloppement agile 76
Introduction quipe et rles XP Pratiques XP Processus XP Autres
considrations
Testeur
Tracker
Missions
Suivre les tches en cours ditration
Interroger les programmeurs
Savoir o ils en sont
Ne pas les mettre sur des charbons ardents
Attention ne pas driver en discussion technique
Tracker (cont.)
Qui est-il ?
Pas un suprieur hirarchique
Quelquun a qui on peut se confier
De prfrence pas un programmeur, mais quelquun dextrieur
Pour viter les discussions techniques
A dfaut, ce rle peut tourner entre les programmeurs chaque itration
Pratiques XP
Planfication itrative
Manager
Responsabili Pratiques
ts XP
Il soccupe matriellement de lquipe Scnarios client
Coach
Garant du processus
Il runit tout les autres rles
Vrifie que chaque rle est respect
Ses buts ultimes :
Equipe autonome
Chaque programmeur est en amlioration continue
Ses qualits
Expert de la mthode XP
Expert technique
Programmeur chevronn
Architecte
Pdagogue et sensible
Sang-froid
Pratiques XP
Toutes !
Introduction leXtreme Programming et au 26 /
dveloppement agile 76
Introduction quipe et rles XP Pratiques XP Processus XP Autres
considrations
Plusieurs personnes
pour un rle
Programmeur, le plus grand
nombre
Tracker, une seule personne...
un moment donn
Coach, une
Introduction personne
leXtreme unique
Programming et au 27 /
dveloppement agile 76
Introduction quipe et rles XP Pratiques XP Processus XP Autres
considrations
Programmeur ! ! !
Client
Testeur !
Tracker ! ! !
Manager !
Coach ! !
bonne combinaison
mauvais combinaison
! combinaison envisageable mais
risque
Prcautions
Comportements contre-indiqus
Sattribuer les mrites ou rejeter la faute sur les autres
Un codeur (mme trs comptent)
faisant des choses que personne ne comprend
refusant de travailler avec quelquun de moins comptent
Eviter la spcialisation
Tendance naturelle la constitution de sous-groupes
Avec XP, pas de consquences tant que le groupe est petit
Envisager des mcanismes de rotation pour les binmes
Cas1particulier du consultant
Le consultant est appel pour un problme prcis
2 Il travaille toujours accompagn par un programmeur
3 Lquipe souhaitera probablement refaire le travail
Sommaire
1 Introduction
2 quipe et rles XP
3 Pratiques XP
4 Processus XP
5 Autres considrations
Pratiques XP
Whole
Team
Collective Coding
Ownership Standards
Test-Driven
Development
Metaphor
Small
Releases
Pratiques XP
Automatisation
Tests dun logiciel sont gnralement automatisables
Automatisation moins de temps consacr aux tests
Temps ncessaire lautomatisation plus long, mais...
Moins de dfauts dans le code
Moins de rgressions
Dans le cas XP :
Tests de recettes spcifis par le client
Test Unitaires
Ecrits avant le code tester
Plusieurs rles :
Rythmer la programmation (progression dalpiniste )
Guider la conception
Documenter le code produit (cf. notion de contrat )
2
Excuter le test... qui doit chouer
3
Modifier le code
4
Excuter le test pour vrifier que
le code fonctionne correctement
Conception simple
Eviter la spculation
Conception = Investissement (en temps et/ou complexit)
Identifier toutes les classes ou modules dont sera constitu le systme, hritage...
Implmenter un systme gnrique pour facilement implmenter chaque
fonctionnalit spcifique
Simplicit Facilit
Le plus simple nest pas forcment le plus facile
Par exemple, dupliquer le code dune mthode pour avoir une version
lgrement modifie est facile...
Mthode ayant des anomalies Rechercher toutes les variantes pour les
corriger
Rgles de simplicit XP
Tous les tests doivent tre excuts avec succs
Chaque ide doit tre exprime clairement et isolment
Tout doit tre crit une fois et une seule
Le nombre de classes, de mthodes et de lignes de code doit tre minimal
Remaniement
Dfinition
Procd consistant modier un logiciel de telle faon que, sans altrer
son comportement vu de lextrieur, on en ait amlior la structure interne
Transformations de code
Martin Fowler en a rpertori plusieurs dizaines
Dcrites avec grande prcision
Prsentation proche des Design Patterns
Beaucoup peuvent tre appliqus mcaniquement
Certains IDE commencent mme en automatiser certains (i.e. Eclipse)
Exemples de rsultats
Elimination du code dupliqu
Sparation des ides
Elimination de code mort
Introduction leXtreme Programming et au 38 /
dveloppement agile 76
Introduction quipe et rles XP Pratiques XP Processus XP Autres
considrations
Remaniement (cont.)
Mtaphores
Dans un projet classique
On cherche communiquer
Sur ce que lon attend du projet
Sur ce que lon a ralis
Programmation en binme
Fonctionnement du binme
Toujours deux dveloppeurs devant une machine
Pilote : Ecriture du code, manipulation des outils...
Co-Pilote : Relecture continue du code, propositions...
Dialogue permanent pour raliser la tche en cours
Prcautions
Rester clair :
Collaboration active et continue
Pas un qui code lautre qui sur veille
Espace de travail
Eviter le cloisonnement pour favoriser les changes
Concept de War Room
Introduction leXtreme Programming et au 43 /
dveloppement agile 76
Introduction quipe et rles XP Pratiques XP Processus XP Autres
considrations
Modle XP
Chaque binme peut inter venir sur nimporte quelle partie
Mais chacun est responsable de lensemble
Par ex. un binme peut revoir une partie peu claire du code
Fonctionne bien uniquement dans un cadre XP
Tests unitaires
Intgration continue
Remaniement
Rgles de codage
La fin des
spcialistes ?
Non !
Ils doivent devenir
polyvalent
Mais agissent comme
Introduction leXtreme Programming et au
dveloppement agile
45 /
76
consultant interne
Introduction quipe et rles XP Pratiques XP Processus XP Autres
considrations
Rgles de codage
Pourquoi ?
Homognisation ncessaire (responsabilit collective)
Prise en main plus rapide du code crit par dautres
A dfinir avant le dmarrage du projet
Aspects couverts
Prsentation du code (indentation, espaces...)
Organisation des commentaires
Rgles de nommage (classes, mthodes, constantes...)
Systme de noms (vocabulaire commun, mtaphore...)
Idiomes de codage (parcours de liste, singletons...)
Introduction leXtreme Programming et au
dveloppement agile
46 /
76
Introduction quipe et rles XP Pratiques XP Processus XP Autres
considrations
Intgration continue
Avantages
Spcifications fonctionnelles gnralement floues, ici :
Client disponible pour apporter ses comptences mtier
Maitrise douvrage conserve par le client
Dfinition des tests de recette par le client
Rythme durable
Livraisons frquentes
Rythment le projet
Livraisons rgulires comme point de synchronisation
Le client fixe ces dates, par exemple :
Pour un projet de six ou sept mois
On pourra espacer les livraisons denviron un mois et demi
La premire livraison arrivant au bout de deux mois
Un feedback pour le
client
Mieux cerner ses besoins
Etre rassur sur
lavancement rel du projet
Un feedback pour
lquipe
Sentiment rgulier de
travail fini
Confrontation du produit
un environnement rel
Planification itrative
Rythme
Environ 2 ou 3 itrations entre deux livraisons
Pour un projet de six ou sept mois
Itrations de deux semaines environ
Exploration,
Ces1deux identifier
cycles sont le travail
dcoups enettrois
estimer son cot
phases
2 Engagement, slectionner le travail pour le cycle en cours
3 Pilotage, contrler la ralisation de ce qui est demand
des fiches A5
Plus simples
manipuler
Estimer les
scnarios client
Attribution dun nombre
de points (jours
thoriques)
Tenir compte du codage
des
Introduction tests et
leXtreme
dveloppement agile
de la validation
Programming et au 53 /
76
En cas dinconnue
Introduction quipe et rles XP Pratiques XP Processus XP Autres
considrations
Moyen, Faible
Et ensuite ?
Livrer sans dlai Reporter les scnarios manquants
Clbrer lvnement et prendre du recul
Repas hors du lieu de travail par exemple
Bonne occasion pour se dtendre
Exploration
Analyser les scnarios pour les scinder en tches
Activit de conception (mme superficielle)
Questions au client et discussion en sa prsence
Tche : ralisable par un binme en une ou deux journes
Engagement
Choisir et estimer des tches
Equilibrage des choix dans lquipe
Fusion/Scission de tches (si ncessaire)
Avancement/Report de scnarios (si ncessaire)
Production du plan ditration
Introduction leXtreme Programming et au 56 /
dveloppement agile 76
Introduction quipe et rles XP Pratiques XP Processus XP Autres
considrations
Pilotage
Ralisation des tches (mise jour du plan ditration)
Tourne du Tracker (au moins deux fois par semaine)
Dceler tout drapage au plus tt
Prendre des mesures correctives (allger une charge...)
Stand-up meetings
Chaque matin un point sur la situation ou les difficults
Pas une runion technique ni un suivi des tches
Permet dorganiser la journe (binmes...)
Et ensuite ?
Petite livraison informelle au client de lquipe
Mise jour des cots des scnarios raliss
Clbrer lvnement...
Un pot pour repartir sur de bonnes bases
Introduction leXtreme Programming et au 57 /
dveloppement agile 76
Introduction quipe et rles XP Pratiques XP Processus XP Autres
considrations
Sommaire
1 Introduction
2 quipe et rles XP
3 Pratiques XP
4 Processus XP
5 Autres considrations
Cycle de vie XP
User
Test S
ce narios
Stori Re
q ui
es re New User Story,
me
nt Project Velocity Bugs
s
Architectural Releas Release Latest Acceptance Customer Sma
System Iterati
Spik Metaphor e Plan ll
Releas
on Version Tests
e Planning e
Next Approval
Iteration
Uncertain Confident
Estimates
Estimates
Spik
e
Maintenance Phase
http://www.extremeprogramming.org/
Cycle de vie XP
User
Test S
ce narios
Stori Re
q ui
es re New User Story,
me
nt Project Velocity Bugs
s
Architectural Releas Release Latest Sma
Iterati Acceptance Customer
System
Spik Metaphor e Plan Version ll
Releas
on Tests
e Planning e
Next Iteration Approval
Uncertain Confident
Estimates
Estimates
Spik
e
Maintenance Phase
http://www.extremeprogramming.org/
Itration
New User
Story,
Project
Velocity
Releas
e Learn and
Plan Us
S to e r Communicate
rie
s New
Unfinished Tasks
Projet Functionnality
Next Velocity Iterati Lates
Developme
Iterati on Iteration t
nt
on Planni Plan Versio
led Bug Fixes
F ai Tes
ts ng n
ce
ta n
cep
Ac Day by Day
Bug
s
Itration
New User
Story,
Project
Velocity
Releas
e Learn and
Plan Us
S to e r Communicate
rie
s New
Unfinished Tasks
Projet Functionnality
Next Velocity Iterati Lates
Developme
Iterati on Iteration t
nt
on Planni Plan Versio
led Bug Fixes
F ai Tes
ts ng n
ce
ta n
cep
Ac Day by Day
Bug
s
Dveloppement
Pair Programming
Iterati Too Much a re Refactor Merciless
on To Do Sh Move People Around
Plan CRC Cards New
Ta Functional
s ks
nit ity
%U
10 0 d
P a ss e
s
Stand Next Task or Collective Test
Up Failed Acceptance Test Code
Meetin Ownership
Ac
il ed tsg
s ce
p ta
Fa Te Te
st P n
n ce c
as s e
ta
c ep ed
Day Ac
Bug
by
Fixes
Day
Dveloppement
Pair Programming
Iterati Too Much a re Refactor Merciless
on To Do Sh Move People Around
Plan CRC Cards New
Ta Functional
s ks
nit ity
%U
10 0 d
P a ss e
s
Stand Next Task or Collective Test
Up Failed Acceptance Test Code
Meetin Ownership
Ac
il ed tsg
s ce
p ta
Fa Te Te
st P n
n ce c
as s e
ta
c ep ed
Day Ac
Bug
by
Fixes
Day
Simple Complex
Code Code
Refacto Acceptan
r ce Test
Mercile Passed
ss
Feedback
Release Plan
Months
Iteration Plan
Weeks
Accepta
nce
Test
Stand
Days
Up
Meeting
One Day
Pair
Negotiation
Hours
Unit
Test
Minutes
Pair
Programming
Seconds
Code
Introduction leXtreme Programming et au 63 /
dveloppement agile 76
Introduction quipe et rles XP Pratiques XP Processus XP Autres
considrations
Sommaire
1 Introduction
2 quipe et rles XP
3 Pratiques XP
4 Processus XP
5 Autres considrations
XP et la modlisation
XP et la documentation
Documentation utilisateur
Manuel utilisateur, Procdure dinstallation...
Ils doivent tre crits, mais planifis comme les tches techniques
XP et la documentation (cont.)
Documentation technique
Document de conception, Diagrammes...
Tests fonctionnels Spcification
Tests unitaires Conception dtaille
Remaniement Modification aise de la conception
Le code est de la documentation (gnration automatique ?)
Autour du programmeur
Code source comme principale production du projet
Programmeur comme acteur essentiel
Contrairement certaines autres mthodes
Il nest pas un simple excutant
Il dispose de pratiques pour tre plus
efficace
Il accde une certaine reconnaissance
Introduction leXtreme Programming et au 67 /
dveloppement agile 76
Introduction quipe et rles XP Pratiques XP Processus XP Autres
considrations
Le problme du contrat...
Aujourdhui en France...
Mise en uvre dXP encore peu prsente en entreprise
Parfois pour des dveloppements internes
Contrats forfaitaires
Un fournisseur sengage un rsultat donn, dans un dlai donn pour un
prix fix
Limites du modle
Primtre fonctionnel rarement clair
Rapports conflictuels
Tout le monde perd
Fige un maximum de paramtres (cahier des charges...)
Difficile de pratiquer XP dans ces conditions
Sauf pour deux entreprises ayant une relation partenariale
Impose lutilisation davenants au contrat
Introduction leXtreme Programming et au 70 /
dveloppement agile 76
Introduction quipe et rles XP Pratiques XP Processus XP Autres
considrations
Limites du modle
Repousse simplement la question de la matrise duvre
Quelle est lexprience du client dans ce domaine ?
Motivation des collaborateurs mis disposition peut tre un problme
Une utopie ?
Mthode profondment humaniste (cf. manifeste agile)
Tout le monde est-il honnte ?
Matriser XP...
... cest savoir quand ne pas utiliser XP
... cest savoir adapter XP aux besoins courants
Introduction leXtreme Programming et au 73 /
dveloppement agile 76
Introduction quipe et rles XP Pratiques XP Processus XP Autres
considrations
http://www.devx.com/architect/Article/32836
XP Scr Le FD AU Cry DS
um an D P sta DM
Condition l
Small Team -
Highly Volatile Requirements - -
Distributed Teams
High Ceremony Culture - - -
High Criticality Systems - - - -
Multiple Customers / Stakeholders - - -
The table illustrates which conditions favor (), discourage (), or are neutral
(-)
http://www.devx.com/architect/Article/32836
LeXtreme Programming
J.L. Bnard, L. Bossavit, R. Mdina, D. Williams
Editions Eyrolles
Extreme Programming Explained
Kent Beck, Cynthia Andres
XProgramming.com
http://xprogramming.com/
Design Up
http://www.design-up.com/
Introduction leXtreme Programming et au 76 /
dveloppement agile 76