rapport exposé extreme programming xp

28
Programmation eXtrême eXtreme Programming Logiciel et Système informatique 24/05/2011 EL KHECHYNE Sarah LASRI Ayyoub ZIANE Bilal

Upload: sarah

Post on 04-Dec-2014

2.558 views

Category:

Documents


8 download

DESCRIPTION

Rapport de l'exposé eXtreme Programming

TRANSCRIPT

Page 1: Rapport exposé eXtreme Programming XP

Programmation eXtrême eXtreme Programming

Logiciel et Système informatique

24/05/2011

EL KHECHYNE Sarah

LASRI Ayyoub

ZIANE Bilal

Page 2: Rapport exposé eXtreme Programming XP

Sommaire

• INTRODUCTION ............................................................................................................................... 3

I. Les méthodologies de développement : ........................................................................................ 3

1) Modèle en cascade : ................................................................................................................... 3

2) Modèle en V : .............................................................................................................................. 4

3) Méthodes Agiles : ....................................................................................................................... 5

i. Présentation ............................................................................................................................ 5

ii. Un peu d’Histoire..................................................................................................................... 5

iii. Valeurs des Méthodes Agiles. ............................................................................................ 7

iv. Principes. ................................................................................................................................. 8

II. Extreme Programming (Programmation Extrême) : .................................................................... 10

1) Définition et Présentation: ...................................................................................................... 10

2) Historique : ................................................................................................................................ 12

3) Pourquoi XP ? : .......................................................................................................................... 13

4) Pour qui ? : ................................................................................................................................ 13

III. Equipe et rôles : ........................................................................................................................ 14

1) Organisation Hiérarchique : ..................................................................................................... 14

2) Répartition des rôles : .............................................................................................................. 16

IV. Les Caractéristiques de l’XP : .................................................................................................... 16

1) Activité cadre de XP : ................................................................................................................ 16

2) Pratiques : ................................................................................................................................. 18

3) Valeurs : .................................................................................................................................... 21

V. Autres Considérations : ................................................................................................................ 26

1) XP et UML : ................................................................................................................................ 26

2) Avantages et inconvénients : ................................................................................................... 26

• CONCLUSION ................................................................................................................................. 27

Page 3: Rapport exposé eXtreme Programming XP

• INTRODUCTION

Le développement de logiciels a été pendant longtemps entièrement libre de directives ou

de contraintes, et il n'y avait aucune méthode pour analyser les besoins, produire une

solution, ou même évaluer le succès. Mais depuis les débuts de l'informatique

commerciale dans les années '60,et en 1968, une conférence de l'OTAN a introduit le

terme « génie logiciel » et suggéré d'utiliser les méthodes rigoureuses et éprouvées du

génie civil au chaos du développement de logiciels. L'idée était louable, mais une

différence majeure existe: contrairement à la physique et aux mathématiques,

l'informatique ne repose sur aucune loi et ne peut être vérifiée scientifiquement. Par après

plusieurs méthodologies de développement de logiciel ont vu le jour. Le modèle en

cascade et ses dérivés ont connu un grand succès, mais leur lourdeur et rigidité sont de

sérieux handicaps. Extreme Programming propose de remplacer certaines notions acquises

par des idées révolutionnaires, et de rendre le développement de logiciel efficace et agile.

I. Les méthodologies de développement :

Il existe différents types de cycles de développement entrant dans la réalisation d'un logiciel.

Ces cycles prendront en compte toutes les étapes de la conception d'un logiciel.

1) Modèle en cascade :

Le modèle en cascade est hérité de l'industrie du BTP1. Ce modèle repose sur les hypothèses

suivantes :

• On ne peut pas construire la toiture avant les fondations.

• Les conséquences d'une modification en amont du cycle ont un impact majeur sur les

coûts en aval.

1 Le secteur économique du Bâtiment et des Travaux Publics

Page 4: Rapport exposé eXtreme Programming XP

Les phases traditionnelles de développement sont effectuées simplement les unes après les

autres, avec un retour sur les précédentes, voire au tout début du cycle. Le processus de

développement utilisant un cycle en cascade exécute des phases qui ont pour caractéristiques :

• De produire des livrables définis au préalable.

• De se terminer à une date précise.

• De ne se terminer que lorsque les livrables sont jugés satisfaisants lors d'une étape de

validation-vérification.2

2) Modèle en V :

Le modèle du cycle en V a été imaginé pour pallier le problème de réactivité du modèle en

cascade. Ce modèle est une amélioration du modèle en cascade qui permet en cas d'anomalie,

de limiter un retour aux étapes précédentes. Les phases de la partie montante doivent renvoyer

de l'information sur les phases en vis-à-vis lorsque des défauts sont détectés afin d'améliorer

le logiciel.

De plus le cycle en V met en évidence la nécessité d'anticiper et de préparer dans les étapes

descendantes les « attendus » des futures étapes montantes : ainsi les attendus des tests de

validation sont définis lors des spécifications, les attendus des tests unitaires sont définis lors

de la conception, etc.

2 Modèle en cascade http://fr.wikipedia.org/wiki/Cycle_de_d%C3%A9veloppement_%28logiciel%29

Page 5: Rapport exposé eXtreme Programming XP

Le cycle en V est devenu un standard de l'industrie du développement de logiciel et de la

gestion de projet depuis les années 1980.

3) Méthodes Agiles :

Ce mouvement est apparu au milieu des années '90 il avait pour but de rendre le processus

de développement plus efficace, en utilisant des concepts très simples et reconnus. Il n'est

directement relié à aucune méthodologie, mais propose une série de recommandations,

valeurs, et principes qui sont appliquées dans d'autres méthodes.

i. Présentation

Les méthodes agiles sont des méthodes de gestion de projets informatiques et de développement qui se positionnent en réaction à des méthodes traditionnelles jugées trop lourdes. XP fait partie de cette catégorie dont la première idée a été de réagir face à la bureaucratie où toute démarche exige une grande quantité de temps. C’est aussi la plus populaire des méthodes agiles mais on peut aussi citer : ASD (Adaptative Software Development), SCRUM, Crystal, FDD (Feature Driven Development) et DSDM (Dynamic System Development Method) qui peuvent chacune être adaptée à une situation particulière, fonction de la taille de l’équipe.

ii. Un peu d’Histoire.

Page 6: Rapport exposé eXtreme Programming XP

En 1986, Barry W. Boehm présentait un nouveau modèle de développement itératif et

incrémental.

En 1986 également, Hirotaka Takeuchi et Ikujiro Nonaka publient « the new new product

developpement game » dans la Harvard business review. Leur article présente un modèle de

développement basé sur l'aptitude au changement, l'auto organisation, l'imbrication des phases

de développement, et l'itération (on y fait d'ailleurs mention du mot scrum par analogie au

rugby).

En 1991, James Martin (RAD3), s’appuyant sur cette vision d’une évolution continue, proposa

une méthode de développement rapide d’application. Sa structure, base des approches

actuelles, déterminait le phasage essentiel et mettait en œuvre un principe adaptatif fondé sur

la validation permanente des utilisateurs.

À partir de 1994, Jean-Pierre Vickoff en France, notamment avec le Processus RAD publié

par le Gartner Group, et Jennifer Stapleton en Grande-Bretagne, avec DSDM, introduisirent

des compléments tels que :

• la spécialisation des rôles,

• l’instrumentation des communications,

• l’organisation des divers types de réunions,

• le groupe de facilitation et de rapport,

• les « raccourcis méthodologiques » de modélisation,

• l’architecture de réalisation (imbrication des itérations),

• la formalisation de processus légers de mise en œuvre.

Dans la seconde moitié des années 1990, une vague d’une dizaine de méthodes (dont Extreme

programming et Scrum sont les principales représentantes) poussa à l’extrême certaines

pratiques de qualité de la construction applicative ainsi que les techniques adaptatives

d’estimation, de planification et de pilotage de projet.

3 La méthode de développement rapide d'applications

Page 7: Rapport exposé eXtreme Programming XP

En 2001, aux États-Unis, dix-sept figures éminentes du développement logiciel se sont

réunies pour débattre du thème unificateur de leurs méthodes respectives, dites méthodes

agiles. Les plus connus d'entre eux étaient Ward Cunningham, l'inventeur du Wiki via

WikiWikiWeb, Kent Beck, père de l'extreme programming et cofondateur de JUnit, Ken

Schwaber et Jeff Sutherland, fondateurs de Scrum, Jim Highsmith, prônant l'ASD, Alistair

Cockburn pour la méthode Crystal clear, Martin Fowler, et Dave Thomas ainsi que Arie van

Bennekum pour DSDM (Dynamic System Development Method). Ces 17 experts venant tous

d'horizons différents réussirent à extraire de leurs concepts respectifs des critères pour définir

une nouvelle façon de développer des logiciels :4

De cette réunion devait émerger le Manifeste Agile, considéré comme la définition canonique

du développement Agile et de ses principes sous-jacents.5

iii. Valeurs des Méthodes Agiles.

Les quatre valeurs fondamentales (entre parenthèses, les citations du manifeste)6:

• L'équipe (« Personnes et interaction plutôt que processus et outils ») : Dans l'optique

agile, l'équipe est bien plus importante que les outils (structurants ou de contrôle) ou

les procédures de fonctionnement. Il est préférable d'avoir une équipe soudée et qui

communique, composée de développeurs (éventuellement à niveaux variables), plutôt

qu'une équipe composée d'experts fonctionnant chacun de manière isolée. La

communication est une notion fondamentale.

• L'application (« Logiciel fonctionnel plutôt que documentation complète ») : Il est

vital que l'application fonctionne. Le reste, et notamment la documentation technique,

est une aide précieuse mais non un but en soi. Une documentation précise est utile

comme moyen de communication. La documentation représente une charge de travail

4 Méthode Agile

http://fr.wikipedia.org/wiki/M%C3%A9thode_agile#M.C3.A9thodes_Agiles_reconnues_par_date_de_publicati

on_officielle 5 « Le Manifeste Agile a été rendu public en 2001, et plusieurs implémentations de la méthode, comme XP,

SCRUM, et Crystal, existent. », Kieran Conboy et Brian Fitzgerald, Extreme Programming And Méthodes Agiles -

XP/Agile Universe 2004 : 4e Conférence sur Extreme Programming et les Méthodes Agiles, Calgary, Canada, du

15 au 18 août 2004, Actes, chapitre Vers un cadre conceptuel pour les Méthodes Agiles, Springer Verlag, New

York, août 2004, (ISBN 354022839X). 6 Manifeste pour le développement Agile de logiciels [archive]

Page 8: Rapport exposé eXtreme Programming XP

importante, mais peut pourtant être néfaste si elle n'est pas à jour. Il est préférable de

commenter abondamment le code lui-même, et surtout de transférer les compétences

au sein de l'équipe (on en revient à l'importance de la communication).

• La collaboration (« Collaboration avec le client plutôt que négociation de contrat ») :

Le client doit être impliqué dans le développement. On ne peut se contenter de

négocier un contrat au début du projet, puis de négliger les demandes du client. Le

client doit collaborer avec l'équipe et fournir un feed-back continu sur l'adaptation du

logiciel à ses attentes.

• L'acceptation du changement (« Réagir au changement plutôt que suivre un plan ») :

La planification initiale et la structure du logiciel doivent être flexibles afin de

permettre l'évolution de la demande du client tout au long du projet. Les premières

releases du logiciel vont souvent provoquer des demandes d'évolution.

iv. Principes.

Ces quatre valeurs se déclinent en douze principes généraux communs à toutes les méthodes

agiles7 :

• « Notre première priorité est de satisfaire le client en livrant tôt et régulièrement des

logiciels utiles »

• « Le changement est bienvenu, même tardivement dans le développement. Les

processus agiles exploitent le changement comme avantage compétitif pour le client »

• « Livrer fréquemment une application fonctionnelle, toutes les deux semaines à deux

mois, avec une tendance pour la période la plus courte »

• « Les gens de l'art et les développeurs doivent collaborer quotidiennement au projet »

• « Bâtissez le projet autour de personnes motivées. Donnez leur l'environnement et le

soutien dont elles ont besoin, et croyez en leur capacité à faire le travail »

• « La méthode la plus efficace pour transmettre l'information est une conversation en

face à face »

• « Un logiciel fonctionnel est la meilleure unité de mesure de la progression du projet »

7 Traduction des principes sous-jacents au manifeste [archive]

Page 9: Rapport exposé eXtreme Programming XP

• « Les processus agiles promeuvent un rythme de développement durable.

Commanditaires, développeurs et utilisateurs devraient pouvoir maintenir le rythme

indéfiniment »

• « Une attention continue à l'excellence technique et à la qualité de la conception

améliore l'agilité »

• « La simplicité - l'art de maximiser la quantité de travail à ne pas faire - est essentielle

»

• « Les meilleures architectures, spécifications et conceptions sont issues d'équipes qui

s'auto-organisent »

• « À intervalles réguliers, l'équipe réfléchit aux moyens de devenir plus efficace, puis

accorde et ajuste son comportement dans ce sens ».

v. Les Méthodes Agiles reconnues.

Page 10: Rapport exposé eXtreme Programming XP

Il existe de nombreuses méthodes agiles telles que8 :

• Rapid Application Development (RAD, 1991)

• Dynamic systems development method (DSDM, 1995, consortium anglais

commercialisant le RAD)

• Scrum (1996)

• Feature Driven Development (FDD) (1999)

• Extreme programming (XP, 1999)

• Adaptive software development (ASD, 2000)

• Test Driven Development (TDD, 2002)

• Crystal clear (2004)

II. Extreme Programming (Programmation Extrême) :

1) Définition et Présentation:

La programmation eXtrème dite XP (eXtreme Programming) est une méthodologie efficace de développement rapide de logiciels qui exige que les membres d’une équipe de développeurs soient physiquement proches les uns des autres.

XP est une méthode de développement dédiée à des petites équipes confrontées à un environnement changeant ou des besoins mal connus. Cette méthode est née sur le terrain, à partir des observations et recherches de développeurs expérimentés soucieux de se concentrer sur les nécessités élémentaires du développement :

• Développer vite :

S’assurer que les changements restent toujours faciles pour conserver une vitesse de développement soutenue tout au long du projet.

• Développer juste :

Se focaliser sur les besoins réels du client.

8

http://fr.wikipedia.org/wiki/M%C3%A9thode_agile#M.C3.A9thodes_Agiles_reconnues_par_date_de_publicati

on_officielle

Page 11: Rapport exposé eXtreme Programming XP

XP définit une discipline de développement qui permet de diminuer le coût du changement dans le logiciel, à tel point qu'il devient plus avantageux de prendre la décision le plus tard possible, en attendant les résultats concrets issus du développement lui-même. Les spécifications peuvent alors être élaborées progressivement tout au long du développement en enchaînant des itérations rapides de spécification / développement / livraison. Le client peut ainsi guider le développement tout au long du projet. La méthodologie a été établie pour livrer le logiciel dans les délais impartis. Les développeurs sont préparés aux changements des besoins du client, même dans la fin du cycle de développement. Managers, clients et développeurs font partie de la même équipe dont le but est de fournir un logiciel de qualité. XP rend possible simplement et efficacement le développement en groupe de travail. XP est basé sur des principes essentiels :

Une forte réactivité au changement des besoins du client au plus tôt dans le cycle de vie du logiciel

Un travail d'équipe (développeurs / chefs de projets / clients)

La qualité du code : elle garantit un gain d'argent pour le client

La qualité des tests effectués au plus tôt

Une intégration permanente

XP : (une méthodologie allégée) Une méthodologie logicielle est un ensemble de règles et de pratiques mises en œuvre pour la création de programmes. Ces règles sont trop difficiles à suivre, les procédures complexes et mal comprises et la quantité de documentation à produire hors de contrôle. Pour essayer de rester dans le planning, il est nécessaire de simplifier les règles, garder celles qui contribuent à la qualité et laisser de côté celles qui ralentissent le projet. L'XP est une méthodologie allégée car elle est constituée de peu de règles et de mises en pratique. Le travail en équipe, la réactivité, la concision et l'efficacité s'en trouvent renforcés.

Page 12: Rapport exposé eXtreme Programming XP

XP est une méthode basée sur des principes simples, que tout le monde pratique déjà sans le savoir. Mais alors, où est la « révolution » ?

Rendre moins lourdes les démarches

Le but d’XP est de trouver des solutions plus ou moins simples, basées sur des principes éprouvés, pour tenter de diminuer les risques pour respecter les délais et la qualité du produit commandé. Cela, en trouvant un compromis équilibré entre "pas de démarche" et "trop de démarche", tout en respectant le minimum de discipline nécessaire pour attendre un retour sur investissement en temps et en effort immédiat et intéressant. Ainsi, on souhaite réduire radicalement la production de documents en se focalisant sur un code bien commenté plutôt que sur des documentations techniques très formelles. XP évite donc avec cela les lourdeurs des méthodes classiques et est donc un habile compromis entre une méthode traditionnelle et le développement « cow boy », sans règles précises. Par conséquent le travail des informaticiens est totalement tourné vers la technique où ils se sentiront vraisemblablement plus à l’aise.

Changer les principes

En outre, XP, en tant que méthode agile, se veut adaptative plutôt que prédictive. C’est à dire qu’à l’inverse des méthodes lourdes qui tentent de dresser un plan au début du projet, XP indique qu’il vaut mieux agir sur le court terme. Cela, tout simplement parce qu’il n’existe pas de projet figé où le prédicat de base ou le contexte ne changent pas du tout. Dans ce cas, le coût du changement a une croissance logarithmique en fonction du temps. Le simple fait de ne pas être réticente aux changements permet dans un premier temps de mieux s’y adapter mais permet aussi une meilleure relation avec le client et la livraison d’un produit conforme totalement aux exigences de ce dernier. Enfin, le dernier but d’XP est de se vouloir orienter sur les personnes plutôt que sur les processus. Alors, le développement tentera d’être une activité agréable plutôt qu’un cauchemar bureaucratique.

2) Historique :

La naissance d’une nouvelle méthode arrive rarement sans raisons. Elle fait plutôt suite à une période difficile...

D’après une étude américaine menée en 1994 sur 8000 projets, 16 % n’ont pas respecté les délais et le budget initial et, pire, 32 % n’ont jamais abouti.

Page 13: Rapport exposé eXtreme Programming XP

Ainsi, dans le monde de l’ingénierie logicielle, trois plaies pourtant bien connues enveniment le développement d’applications. La première concerne le planning difficilement maîtrisé ou impliquant de nombreuses heures sup. Le deuxième est issue des besoins souvent mal identifiés ou mal compris en raison d’un cahier des charges mal étudié ou incomplet. Tout cela implique des changements au cours du développement, d’autant plus si le client décide de modifier le produit, après une première maquette par exemple. Enfin, le dernier problème concerne la livraison finale du produit qui est parfois buguée.

XP est né lors d’une récente vague de création de nouvelles méthodes parallèlement à l’explosion de l’informatique dans les entreprises et de l’émergence du freeware. Lors de cette vague, sont essentiellement apparues des méthodes qualifiées d’agile dont XP fait partie.

La méthode est née réellement en 1997 après la parution du premier livre de Kent Beck : « eXtreme

Programming Explained », acteur très actif dans domaine de “Design Patterns”, domaine qui a

beaucoup inspiré XP..

3) Pourquoi XP ? :

La méthode est très attentive à l’activité en dernière analyse essentielle dans un projet de logiciel : la programmation. Le codage produit la documentation principale : les fichiers sources. Pourquoi « extrême » programming ?

Kent Beck, qui structure et présente XP, explique que les pratiques sur lesquelles est bâtie XP sont autant de boutons de contrôle… qu’il pousse au maximum. De ce point de vue, XP est la réunion cohérente de pratiques efficaces, telles que le test omniprésent, l’esprit d’équipe, le rôle prépondérant du client dans l’équipe, etc.

Le bon sens est poussé à son extrême !

4) Pour qui ? :

Petites à moyennes équipes écrivant des logiciels dont les besoins sont vagues ou changent rapidement

Page 14: Rapport exposé eXtreme Programming XP

III. Equipe et rôles :

1) Organisation Hiérarchique :

A. Programmeur & Développeur :

• Responsabilisation � Retour du programmeur comme rôle central � A la fois : codeur, testeur, concepteur et analyste � Apprentissage � Qualités humaines nécessaires � XP : Ecole de l’excellence � Responsabilisés pour donner le meilleur d’eux même

ex. : estimation des charges et délais • Pratiques XP

� Programmation en binôme � Tests unitaires � Conception simple � Remaniement

� Responsabilité collective du code � Règles de codage � Intégration continue � Rythme durable

B. Client :

• Responsabilisation � Description informelle d’une fonctionnalité ou d’une interaction avec l’utilisateur � Le plus simple possible

« Projet »

ClientChef de projet

Analyste Développeur Testeur

Page 15: Rapport exposé eXtreme Programming XP

� Des scénarios initiaux sont dégagés et Présentés, classés par priorité et répartis en itérations

• Pratiques XP � Planification itérative � Rédaction des scénarios clients � Séances de planification � Tests de recette � Intégration continue � Rythme durable

C. Testeur :

• Responsabilisation � Définit et automatise les tests de recette

Conseille le client sur la testabilité d’une Fonctionnalité. Utilisation d’outils différents pour scripter.

� Garant du sentiment de réussite sur le projet Test fonctionnel réussi→ Progression. Communiquer pour motiver (graphique de progression...).

• Pratiques XP � Suivi des tests (planification itérative) � Tests de recette � Intégration continue � Rythme durable

D. Tracker :

• Responsabilisation � Pas un supérieur hiérarchique � Quelqu’un a qui on peut se confier � De préférence pas un programmeur, mais quelqu’un d’extérieur � Pour éviter les discussions techniques � A défaut, ce rôle peut tourner entre les programmeurs à chaque itération

• Pratiques XP � Planification itérative

E. Manager :

• Responsabilisation � Il s’occupe matériellement de l’équipe � Il demande des comptes (sur les engagements pris) � Interface avec l’extérieur (dans le cadre d’un sous-projet)

Page 16: Rapport exposé eXtreme Programming XP

• Pratiques XP � Scénarios client � Planification itérative � Rythme durable

F. Coach, le chef de projet :

• Responsabilisation � Il réunit tout les autres rôles � Vérifie que chaque rôle est respecté � Ses buts ultimes :

o Equipe autonome o Chaque programmeur est en amélioration continue

� Ses qualités o Expert de la méthode XP o Expert technique o Programmeur chevronné o Architecte o Pédagogue et sensible o Sang-froid

• Pratiques XP � Toutes !

2) Répartition des rôles :

Plusieurs rôles pour une personne

� Attention aux combinaisons possibles

� Toutefois, pas de règle absolue

� S’assurer qu’une cumulation ne pousse pas à sacrifier une composante

importante d’un rôle

Plusieurs personnes pour un rôle

� Programmeur, le plus grand nombre

� Tracker, une seule personne... à un moment donné

� Coach, une personne unique

� Manager, une personne unique

� Client+Testeur, d’une personne à une équipe

IV. Les Caractéristiques de l’XP :

1) Activité cadre de XP :

i. Planification et gestion :

Page 17: Rapport exposé eXtreme Programming XP

� Écrire des scénarios utilisateur «user stories» avec le client

� Segmenter le projet en itérations (exemple: livraisons aux X semaines)

� Débuter chaque jour par une réunion d’équipe debout !

� Déplacer les personnes (inter changer les paires)

� Le code appartient à toute l’équipe ( egoless prog., Weinberg, 1971)

� Ne pas faire de temps supplémentaire «ideal week»

ii. Conception :

� KIS = «keep it simple»: utiliser des cartes CRC (ou léger UML )

� Représenter une histoire utilisateur à la fois

� Adopter un codage uniforme: noms, standards…

� Ne jamais ajouter de fonctionalité trop tôt

� Encourager la reconstruction avant une nouvelle itération

iii. Les activités et processus.

� Le client (expert disponible) priorise les histoires

� La vitesse du projet est mesurée (et adapte les itérations)

� Le test unitaire est produit avant le code (+1 par bogue)

� Le code pour livraison est programmé par binômes (paire)

� L’intégration est fréquente et se fait séquentiellement

� Les tests d’acceptation sont exécutés souvent et publiés

Page 18: Rapport exposé eXtreme Programming XP

b. Les pratiques de l’XP

Dans cette partie nous aller présenter les treizes pratiques «canoniques» dont XP

définit, et que nous classons en trois grandes catégories: celles relatives à la programmation,

celles relatives au fonctionnement interne de l’équipe et celles qui sont liées à la planification

et aux relations avec le client.

2) Pratiques :

Dans cette partie nous aller présenter les treizes pratiques «canoniques» dont XP

définit, et que nous classons en trois grandes catégories: celles relatives à la programmation,

celles relatives au fonctionnement interne de l’équipe et celles qui sont liées à la planification

Organisation

Planning Game

Client sur site

Rythme Soutenable

Communication / Feedback

Métaphore

Livraisons rapides

Stand Up

Organisation Technique

Convention de nommage

Appropriation Collective du

Code

Binômage

Développement

Conception Simple

Refactoring

Intégration Continue

Testing

Tests Unitaires

Tests de recette

Organisation

Planning Game

Client sur site

Rythme Soutenable

Communication / Feedback

Métaphore

Livraisons rapides

Stand Up

Organisation Technique

Convention de nommage

Appropriation Collective du

Code

Binômage

Développement

Conception Simple

Refactoring

Intégration Continue

Testing

Tests Unitaires

Tests de recette

Page 19: Rapport exposé eXtreme Programming XP

et aux relations avec le client.

1. Les pratiques de programmation

Au cœur des pratiques XP, les pratiques de programmation que nous présentons ci-après

permettent d’améliorer continuellement la conception et le code de l’application pour qu’elle

reste toujours aussi claire et simple que possible :

• Conception simple (simple design) : les développeurs implémentent toujours la

solution la plus simple qui puisse fonctionner. En particulier, ils n’inventent pas de

mécanismes génériques si le besoin immédiat ne l’exige pas.

• Remaniement (refactoring) : les développeurs n’hésitent pas à revenir sur le code

écrit pour le rendre plus «propre», le débarrasser d’éventuelles parties inutilisées, et le

préparer à l’ajout de la fonctionnalité suivante. D’une manière plus générale, cette

pratique propose une démarche de conception continue qui fait émerger la structure

de l’application au fur et à mesure du développement.

• Développement piloté par les tests unitaires (test-first programming, unit tests,

developer tests) : les développeurs écrivent des tests automatiques pour le code qu’ils

produisent, et ce au moment même d’écrire le code en question. Cela leur permet

d’une part de mieux cerner le problème avant d’écrire le code, et d’autre part de

constituer progressivement une batterie de tests qui les autorise ensuite à apporter

rapidement des changements dans l’application, tout en conservant une certaine

sérénité.

• Tests de recette (acceptance tests, customer tests) : le client précise très explicitement

ses besoins et les objectifs des programmeurs – en participant à la rédaction de tests

de recette. Comme les tests unitaires, les tests de recette doivent être automatiques

afin de pouvoir vérifier tous les jours la non-régression du produit.

2. Les pratiques de collaboration

Dans une équipe XP, tous les développeurs travaillent ensemble (voir chapitre 5) et

interviennent sur la totalité de l’application. Cela garantit la qualité de cette dernière à travers

les relectures croisées que cela engendre, mais cela rend également le travail plus motivant et

Page 20: Rapport exposé eXtreme Programming XP

offre une plus grande souplesse dans l’affectation des tâches. Les pratiques qui régissent cette

organisation sont les suivantes :

• Programmation en binôme (pair programming) : lorsqu’ils écrivent le code de

l’application, les développeurs travaillent systématiquement à deux sur la

même machine – il s’agit là d’une forme «extrême» de relecture de code, dans

laquelle les deux développeurs collaborent activement pour résoudre les

problèmes qu’ils rencontrent. Les binômes changent fréquemment, ainsi

chacun est amené à travailler tôt ou tard avec tous les autres membres de

l’équipe.

• Responsabilité collective du code (collective code ownership) : tous les

développeurs de l’équipe peuvent être amenés à travailler sur toutes les parties

de l’application. De plus, ils ont le devoir d’améliorer le code sur lequel ils

interviennent, même s’ils n’en sont pas les auteurs initiaux.

• Règles de codage (coding standards) : les développeurs se plient à des règles

de codage définies par l’équipe elle-même, de manière à garantir

l’homogénéité de leur code avec le reste de l’application, et ainsi à faciliter

l’intervention d’autres développeurs.

• Métaphore (metaphor) : les développeurs n’hésitent pas à recourir aux

métaphores pour décrire la structure interne du logiciel ou ses enjeux

fonctionnels, de façon à faciliter la communication et à assurer une certaine

homogénéité de style dans l’ensemble de la conception, l’idéal étant de décrire

le système dans son ensemble par une métaphore unique.

• Intégration continue (continuous integration) : les développeurs synchronisent

leurs développements aussi souvent que possible – au moins une fois par jour.

Cela réduit la fréquence et la gravité des problèmes d’intégration, et permet de

disposer à tout moment d’une version du logiciel qui intègre tous les

développements en cours.

3. Les pratiques de gestion de projet

Les pratiques de programmation et de collaboration (voir chapitre 6) permettent de

créer un contexte dans lequel une démarche de spécification et de conception purement

itérative devient viable. Les pratiques suivantes montrent comment XP exploite cet avantage

Page 21: Rapport exposé eXtreme Programming XP

afin de s’assurer que l’équipe et son client restent en phase tout au long du projet, de façon à

converger au plus tôt vers un produit adapté aux besoins du client :

• Livraisons fréquentes (frequent releases) : l’équipe livre des versions du

logiciel à un rythme régulier, aussi élevé que possible – la fréquence

précise étant fixée par le client. Cela permet à l’équipe comme au client de

s’assurer que le produit correspond bien aux attentes de ce dernier et que le

projet est sur la bonne voie.

• Planification itérative (planning game) : la planification du projet est

réalisée conjointement par le client et l’équipe de développement, au cours

de séances dédiées, organisées régulièrement tout au long du projet.

• Client sur site (on-site customer, whole team) : le client est littéralement

intégré à l’équipe de développement pour arbitrer les priorités, et définir

précisément ses besoins,notamment en répondant en direct aux questions

des programmeurs et en bénéficiant du feedback immédiat d’une

application aux livraisons fréquentes.

• Rythme durable (sustainable pace) : l’équipe adopte des horaires qui lui

permettent de conserver tout au long du projet l’énergie nécessaire pour

produire un travail de qualité et mettre en œuvre efficacement les autres

pratiques.

3) Valeurs :

Page 22: Rapport exposé eXtreme Programming XP

NB : La valeur ‘Respect’ existe dès la deuxiéme version d’XP on se contente d’étudier quatre

autres valeurs.

Après si elles sont indispensables aujourd’hui pour mettre l’Extreme Programming en

œuvre, les pratiques que nous venons de présenter ne suffisent pas pour autant à le définir. Il

ne s’agit en définitive que de techniques, destinées à faire émerger un environnement de

travail marqué par les quatre qualités érigées en valeurs par XP et qui en font l’essence : la

communication, la simplicité, le feedback et le courage.

1) La communication pour une meilleure visibilité

Du point de vue d’XP, un projet de développement est avant tout un effort collectif de

création, dont le succès dépend d’une part de la capacité de ses différents intervenants à

s’accorder sur une vision commune de ce qui doit être produit, et d’autre part de leur capacité

à synchroniser leurs actions individuelles pour atteindre l’objectif commun. Or, ces deux

conditions dépendent en majeure partie de la qualité de la communication qui lie ces

intervenants entre eux. Mais sur le fond, il n’y a finalement pas grand-chose de spécifique à

XP sur ce point.

Ce qui démarque l’approche XP dans ce domaine, c’est l’accent mis sur la communication

directe, sur le contact humain. Certes, la communication orale présente des faiblesses en

termes de structuration de l’information et de traçabilité, mais elle tire sa force de sa

Communication

Feedback

Simplicité

Courage

Respect

Page 23: Rapport exposé eXtreme Programming XP

simplicité et des interactions rapides entre les interlocuteurs qui permettent de converger

rapidement sur les informations essentielles. En outre, le contact direct permet de véhiculer

des informations beaucoup plus personnelles cela donne ainsi l’occasion d’identifier et de

résoudre des blocages qui relèvent de positions individuelles, qui sans cela pourraient

compromettre les chances de succès du projet.

Au quotidien, la communication directe permet donc d’obtenir une «bande passante»

nettement supérieure à l’écrit, et XP exploite largement cet avantage dans la plupart de ses

pratiques. Ainsi, qu’il s’agisse de l’identification des besoins, de la planification, de la

répartition des tâches ou encore de la programmation proprement dite, la plupart des pratiques

d’XP sont conçues pour amener les intervenants du projet à communiquer directement et

résoudre les problèmes ensemble.

Cependant, si l’accent est placé sur la communication directe, la communication écrite

n’est pas laissée de côté pour autant. Mais elle apparaît sous une forme différente : toutes les

informations ayant trait à l’implémentation et la conception se retrouvent dans le code lui

même – dont la clarté fait l’objet de nombreux efforts – et dans la batterie de tests qui

l’accompagne, et celles relatives aux besoins du client sont consignées d’une manière on ne

peut plus formelle, sous la forme de tests de recette automatiques. Si le client souhaite obtenir

des documents supplémentaires, il lui suffit de définir et de planifier les tâches

correspondantes comme pour tout autre besoin.

2) La simplicité comme garantie de productivité

Remarque

Cette approche constitue l’une des forces majeures d’XP, mais c’est aussi d’un certain point de

vue sa principale faiblesse. D’une part, ce besoin de communication est le principal facteur

limitatif au regard de la taille de l’équipe et, d’autre part, cela rend XP très sensible au type de

relations humaines qui ont cours dans le projet : appliquer XP dans un projet marqué par des

antagonismes internes forts, c’est courir à la catastrophe – mais on peut légitimement se

demander comment un tel projet peut bien réussir, indépendamment du processus adopté.

Page 24: Rapport exposé eXtreme Programming XP

Une personne qui arrive sur un projet XP ne doit pas s’étonner de s’entendre répéter les

quelques «mantras» suivants : «La chose la plus simple qui puisse marcher» (The simplest

thing that could possibly work), «Tu n’en auras pas besoin» ( You ain’t gonna need it – et

son acronyme YAGNI), ou encore «Une fois et une seule» (Once and only once). Tous trois

sont l’expression d’une même valeur : la simplicité.

Cette simplicité touche d’abord à la réalisation même du logiciel, dans laquelle un soin

particulier est apporté au code pour le débarrasser de toute complexité superfiue. En

particulier,les mécanismes de généricité – le «péché mignon» des développeurs – ne sont

encouragés que lorsqu’ils servent un besoin concret et immédiat, et en aucun cas un besoin

futur plus ou moins imaginaire. Les développeurs sont donc invités à implémenter la chose la

plus simple qui puisse marcher et, en ce qui concerne ces fameux mécanismes génériques, ou

encore ces outils «magiques» qui en font plus que ce qu’on leur demande, ils n’auront pas

besoin! En revanche, simple ne veut pas dire simpliste : les solutions adoptées doivent être

aussi simples que possible, mais toutes les duplications doivent être éliminées de sorte que

chaque information, chaque mécanisme ne soit exprimé qu’une fois et une seule – ce principe

est garant de la facilité de modification du code sur le long terme.

Cet effort de simplicité s’applique également au client, à qui l’équipe demandera de

définir ses besoins et ses priorités avec une grande précision pour éviter d’implémenter des

choses inutiles et pour pouvoir se focaliser sur les besoins réellement importants. La

simplicité est également recherchée dans le choix des outils (de programmation ou de gestion

de projet) et dans la méthode de travail elle-même.

En définitive, XP est fondé sur un pari : «faire simple un jour, avec la possibilité de

revenir en arrière le lendemain si un besoin différent apparaît. L'éventuel coût supplémentaire

induit sera, d’une part réduit parce que l’application est restée assez simple pour évoluer

facilement, et d’autre part sera bien peu de choses au regard des économies réalisées à ne pas

faire ce qui n'aurait servi à rien. » C’est au succès de ce pari qu’une équipe XP doit sa vitesse

de développement et son ouverture au changement.

3) Le feedback comme outil de réduction du risque

Malgré ce que peuvent laisser supposer son nom et ses apparences immédiates, l’Extreme

Programming est avant tout un processus de réduction du risque dans le projet. Le risque est

Page 25: Rapport exposé eXtreme Programming XP

en effet soigneusement contrôlé à tous les niveaux, par la mise en place de boucles de

feedback qui permettent à l’équipe de développement, comme à son client, de savoir à tout

moment dans quel état se trouve réellement le projet, et de pouvoir rectifier le tir au fur et à

mesure pour mener le projet à son terme avec succès.

L’exemple le plus saillant de ce principe concerne la pratique des livraisons fréquentes,

qui donne à tous les intervenants du projet un feedback régulier sur l’état d’avancement du

projet et l’état réel du produit. Mais le feedback ne se borne pas à l’observation : la pratique

de la planification itérative permet de tirer parti des informations recueillies pour, à la fois,

améliorer la planification elle-même et faire converger le produit vers une solution mieux

adaptée aux besoins réels du client.

L’activité de programmation fait également l’objet de divers mécanismes de feedback,

tout d’abord à travers les tests unitaires mis en place, qui donnent aux développeurs des

indications immédiates sur le fonctionnement du code qu’ils écrivent. Le feedback est

également intégré à l’activité de conception, qui est menée tout au long de la réalisation pour

s’appuyer sur l’état réel de l’application plutôt que sur l’idée que l’on pourrait en avoir a

priori. Enfin,les développeurs s’appuient en permanence sur le feedback de leur binôme pour

s’assurer de la validité et de la qualité du code qu’ils produisent.

Ce feedback permanent est un facteur de qualité, puisque les intervenants du projet

améliorent sans cesse leur travail à partir de l’expérience qu’ils accumulent. Mais c’est

également un facteur de vitesse : une équipe XP peut programmer vite, tout en restant sereine

parce qu’elle sait qu’elle dispose de nombreux mécanismes pour s’assurer que le projet reste

sur la bonne voie.

4) Le courage de prendre les bonnes décisions

L’expérience fait apparaître que la mise en œuvre des pratiques XP requiert une certaine

dose de cran. En effet, il faut du courage pour se lancer dans un projet sans avoir au préalable

tout spécifié et conçu dans le détail, même si l’on sait que le processus suivi comporte de

nombreux mécanismes de feedback.

Il faut également du courage pour se borner à réaliser des choses simples, se focaliser

uniquement sur les besoins du moment en se disant qu’on pourra adapter l’application à de

Page 26: Rapport exposé eXtreme Programming XP

nouveaux besoins, le moment venu. Il en faut aussi pour accepter de jeter une partie du code

qui est devenue inutile, ou récrire une partie de code jugée trop complexe.

Enfin, il faut du courage pour appliquer les principes de communication et de feedback, en

particulier lorsqu’il s’agit de maintenir une transparence complète, même lorsque les

nouvelles ne sont pas bonnes, ou encore lorsqu’il s’agit de travailler ouvertement avec son

binôme en acceptant de lui montrer nos propres limites ou lacunes.

Plus généralement, nous avons pu constater qu’il faut du courage pour mettre en place des

méthodes nouvelles sur des projets dont les enjeux sont toujours stratégiques.

V. Autres Considérations :

1) XP et UML :

UML est un langage graphique de modélisation des besoins des utilisateurs, des concepts

métier, des concepts techniques dans le cadre d’un développement informatique. UML est

généralement associé à une méthodologie globale de gestion de projets fondée, si possible, sur

les grandes activités : spécification, analyse, conception et développement, éventuellement

itérative comme par exemple l’eXtreme Programming, selon les besoins et la maturité des

équipes. UML peut aussi aider à organiser le travail des équipes.

2) Avantages et inconvénients :

a) Avantages :

Points forts Points faibles

- Simplicité de la mis en œuvre - Adapté aux changements

- Favorise la communication entre développeurs et développeur/client

- XP n'est pas adapté pour les équipes de développement de plus de dix

personnes - Un client doit être disponible à temps complet pour répondre aux questions

des développeurs

Page 27: Rapport exposé eXtreme Programming XP

• Le client étant présent dans l’équipe, l’importance des documents liés au projet est

réduite.

• Grande satisfaction du client et efficacité plus importante.

• Le code source est la principale production du projet.

• Le programmeur est un acteur essentiel, il accède à une certaine reconnaissance et il

n’est pas seulement un simple exécutant.

• Présence d’un coach potentiel afin de former une équipe capable de travailler.

• Hiérarchie consentante.

• Culture d’entreprise adaptée, pas de mérite basé sur les heures supplémentaires et pas

d’attachement aux méthodes linéaires et aux tonnes de documents comme reflet de la

qualité.

b) Inconvénients :

• Méthodologie déroutante.

• Trop d’anarchie.

• Pas assez de documentation.

• Concerne les petits et moyens projets seulement.

• Elle nécessite une forte implication du client.

• CONCLUSION

L’eXtreme Programming, ou XP, est basé sur des principes très simples, mais souvent

ignorés par l'industrie. Une des idées révolutionnaires est que le coût du changement n'est pas

variable mais plutôt constant; XP accepte donc le changement comme une réalité et l'intègre

dans le processus de développement. Aussi, la programmation en paire, où deux

programmeurs travaillent ensemble sur le même ordinateur, permet d'augmenter la qualité à

des niveaux encore jamais vus. Une autre idée consiste à mettre l'emphase sur la

communication constante entre l'équipe de développement et le client, par le biais de boucles

rapides développement-test-feedback. Certaines de ces idées ne sont pas nouvelles, mais elles

sont assemblées dans XP pour former une méthodologie efficace et qui présente des résultats

concrets, plutôt que des résultats sur papier.

Page 28: Rapport exposé eXtreme Programming XP