Quelques slides sur l`eXtreme Programming

Transcription

Quelques slides sur l`eXtreme Programming
ISL/PS
Graduat en Informatique
Projet de développement
eXtreme Programming
eXtreme
Programming
Ces transparents sont basés sur une libre interprétation
de l'ouvrage suivant :
L'eXtreme Programming
avec deux études de cas
J.L. Bénard, L. Bossavit, R. Médina, D. Williams
paru aux éditions Eyrolles
18/11/03
Eric Schmitz
1
ISL/PS
Projet de développement
eXtreme Programming
Graduat en Informatique
XP?
Limites des démarches par phases.
Rupture par rapport au cycle en V.
Dans les approches classiques, on cherche à définir
de manière détaillée ce que l'on souhaite
construire.
Ceci fonctionne pour des ponts, des immeubles...
MAIS pas pour du « construire » des logiciels.
18/11/03
Eric Schmitz
2
ISL/PS
Projet de développement
eXtreme Programming
Graduat en Informatique
Causes d'échecs
On ne connaît pas, a priori, les détails des specs.
Cet exercice à lieu au début du projet, au moment
où les différents intervenants en savent le moins
sur le contexte de l'application.
Ceci entraîne une remise en cause fréquente des
specs => perte de temps.
UML n'est pas une solution, même s’il n'est pas à
rejeter.
18/11/03
Eric Schmitz
3
ISL/PS
Projet de développement
eXtreme Programming
Graduat en Informatique
Effet tunnel
Visibilité réduite du client pendant la phase
de construction.
En XP, le client peut intervenir
fréquemment pendant la construction de
l'application et a un pouvoir pour influer sur
le cours du projet.
18/11/03
Eric Schmitz
4
ISL/PS
Projet de développement
eXtreme Programming
Graduat en Informatique
Equipes compartimentées
Souvent, les développeurs sont isolés,
travaillant seuls sur leur machine et
communiquent en étoile.
Ceci entraine :
Une mauvaise distribution de l'info.
Une spécialisation abusive des développeurs.
Le code est soumis à une paralysie
progressive.
18/11/03
Eric Schmitz
5
ISL/PS
Projet de développement
eXtreme Programming
Graduat en Informatique
Paralysie progressive
La qualité interne (le code) est noyée sous/par les
efforts sur la qualité externe (docs, specs, tests).
La qualité du code dépend uniquement du
développeur.
Plus le code dégénère, plus les modifications
prennent du temps et risquent d'engendrer des
erreurs.
C'est au cours de l'implémentation que la validité des
spécifications et de la conception est mise à
l'épreuve.
18/11/03
Eric Schmitz
6
ISL/PS
Graduat en Informatique
Projet de développement
eXtreme Programming
Evolution du coût du changement
Approche traditionnelle
Il est logique de définir
complètement le logiciel avant
d'entamer sa construction.
Coût
T1
T2
T3
T4
MAIS : si on applique certains
principes de conception et de
programmation, il est possible
de garder l'application
suffisamment souple.
18/11/03
Eric Schmitz
Approche "XP"
Coût
T1
T2
T3
T4
T5
7
ISL/PS
Projet de développement
eXtreme Programming
Graduat en Informatique
Evolution du coût du changement
La stratégie gagnante ne consiste plus à
figer tout dès le début, mais tout au
contraire, à diffuser la prise de décision
tout au long du projet.
XP propose un ensemble de pratiques
concrètes pour obtenir plus de souplesses et
exploiter celles-ci pour servir au mieux le
client et l 'équipe de développement.
18/11/03
Eric Schmitz
8
ISL/PS
Projet de développement
eXtreme Programming
Graduat en Informatique
Les pratiques d'XP
18/11/03
Eric Schmitz
9
ISL/PS
Projet de développement
eXtreme Programming
Graduat en Informatique
Pratiques de programmation
Conception simple (tjs la solution la plus
simple).
Remaniement. (nettoyage de code)
Développement piloté par les tests
unitaires. (d'abord écrire les tests !)
Tests de recettes, précisés par le client.
18/11/03
Eric Schmitz
10
ISL/PS
Projet de développement
eXtreme Programming
Graduat en Informatique
Pratiques de collaboration
Programmation en binôme -> les binômes
changent fréquemment.
Responsabilité collective du code.
Règles de codage.
Métaphore.
Intégration continue (au moins 1x par jour).
18/11/03
Eric Schmitz
11
ISL/PS
Projet de développement
eXtreme Programming
Graduat en Informatique
Pratiques de gestion de projet
Livraisons fréquentes.
Planification itérative.
Client sur site.
Rythme durable.
18/11/03
Eric Schmitz
12
ISL/PS
Projet de développement
eXtreme Programming
Graduat en Informatique
Les quatres valeurs d'XP
18/11/03
Eric Schmitz
13
ISL/PS
Projet de développement
eXtreme Programming
Graduat en Informatique
La communication pour une
meilleure visibilité
Projet de développement ?
Effort collectif de création
Dont le succès dépend :
De la vision commune de ce qui doit être produit.
De la capacité à synchroniser les actions
individuelles.
Ces deux conditions dépendent de la qualité de
la communication.
18/11/03
Eric Schmitz
14
ISL/PS
Projet de développement
eXtreme Programming
Graduat en Informatique
La communication pour une
meilleure visibilité
XP met l'accent sur la communication
directe.
Communication orale
Pour sa simplicité.
Pour des interactions rapides entre les
interlocuteurs.
Plus personnelle.
18/11/03
Eric Schmitz
15
ISL/PS
Projet de développement
eXtreme Programming
Graduat en Informatique
La communication pour une
meilleure visibilité
La communication écrite :
toutes les informations ayant trait à
l'implémentation et à la conception se retrouvent
dans le code.
La clarté du code fait l'objet de nombreux efforts.
Les tests servent également à consigner
formellement les besoins des clients.
18/11/03
Eric Schmitz
16
ISL/PS
Projet de développement
eXtreme Programming
Graduat en Informatique
La simplicité comme garantie de
productivité
Mantras exprimant la simplicité :
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)
Une fois et une seule. (Once and only once)
Débarrasser le code de toute complexité
superflue.
18/11/03
Eric Schmitz
17
ISL/PS
Projet de développement
eXtreme Programming
Graduat en Informatique
La simplicité comme garantie de
productivité
L'effort de simplicité s'applique également
au client.
Il doit définir ses besoins avec une grande
précision pour éviter d'implémenter des choses
inutiles.
La simplicité est également recherchée
dans le choix des outils et dans la méthode
de travail elle-même.
18/11/03
Eric Schmitz
18
ISL/PS
Projet de développement
eXtreme Programming
Graduat en Informatique
Le feedback comme outil de
réduction de risque
XP : Processus de réduction de risque.
Risque contrôlé par la mise en place de
boucles de feedback.
Permets à tout moment de savoir dans quel
état se trouve le projet.
Et donc de pouvoir rectifier le tir au fur et
à mesure.
18/11/03
Eric Schmitz
19
ISL/PS
Projet de développement
eXtreme Programming
Graduat en Informatique
Le feedback comme outil de
réduction de risque
Un exemple en est le principe de livraisons
fréquentes.
La planification itérative permet de tirer
parti des informations recueillies, pour
améliorer la planification et faire converger
le produit vers une solution mieux adaptée
aux besoins.
18/11/03
Eric Schmitz
20
ISL/PS
Projet de développement
eXtreme Programming
Graduat en Informatique
Le feedback comme outil de
réduction de risque
Divers mécanismes de feeback interviennent dans
l'activité de programmation :
Tests unitaires.
Feeback du binôme.
Intégré à la conception.
Le feeback est un facteur de qualité, car les
intervenants améliorent sans cesse leur travail en
profitant de l'expérience qu'ils accumulent.
18/11/03
Eric Schmitz
21
ISL/PS
Projet de développement
eXtreme Programming
Graduat en Informatique
Le courage de prendre les bonnes
décisions.
Courage pour se lancer dans un projet sans
avoir tout spécifié.
Courage pour se borner à réaliser des
choses simples.
Courage pour appliquer les principes de
communication et de feedback.
Courage de mettre en place des méthodes
nouvelles.
18/11/03
Eric Schmitz
22
ISL/PS
Projet de développement
eXtreme Programming
Graduat en Informatique
Les principaux rôles d'XP
18/11/03
Eric Schmitz
23
ISL/PS
Projet de développement
eXtreme Programming
Graduat en Informatique
Liste des rôles
Le programmeur
Le client
Le coach
Le testeur
Le tracker
Le manager
18/11/03
Eric Schmitz
24
ISL/PS
Projet de développement
eXtreme Programming
Graduat en Informatique
Le programmeur
Va écrire, connaître, modifier, gérer
l'existence, la sauvegarde, les versions, la
transformation en exécutable du CODE.
Va TESTER le code pour en obtenir un
feedback.
Va faire preuve de COURAGE, toute
fonctionnalité qui n'a pas été suffisamment
testée doit être considérée comme
n'existant pas.
18/11/03
Eric Schmitz
25
ISL/PS
Projet de développement
eXtreme Programming
Graduat en Informatique
Le programmeur
Va poser des questions au client et écouter
ses réponses. C'est le client qui détient la
connaissance de ce que doit faire le
système.
Va aider le client à définir ses besoins.
XP fournit un cadre méthodologique pour
cela.
18/11/03
Eric Schmitz
26
ISL/PS
Projet de développement
eXtreme Programming
Graduat en Informatique
Le programmeur
Va concevoir :
Collectivement lors des séances de
planification.
En écrivant les tests unitaires du code.
En pratiquant le refactoring (remaniement).
Est responsabilisé :
Il est codeur, testeur, concepteur, analyste.
Il a la volonté d'apprendre.
18/11/03
Eric Schmitz
27
ISL/PS
Projet de développement
eXtreme Programming
Graduat en Informatique
Le programmeur
Est le seul à avoir la reponsabilité des délais
(ni le client, ni le manager, ni le coach ne
peuvent influencer le programmeur dans
ses estimations)
A donc un rôle varié.
18/11/03
Eric Schmitz
28
ISL/PS
Projet de développement
eXtreme Programming
Graduat en Informatique
Charte des droits du programmeur
Le développeur a le droit :
De savoir ce qui est demandé, avec des priorités
clairement déclarées.
De fournir un travail de qualité en toute
occasion.
De demander et recevoir de l'aide de la part de
ses pairs et du client.
D'émettre et de réviser ses propres estimations
de coûts.
18/11/03
Eric Schmitz
29
ISL/PS
Projet de développement
eXtreme Programming
Graduat en Informatique
Le programmeur
Charte des droits du programmeur
D'accepter des responsabilités, mais qui ne
peuvent lui être imposées.
De travailler à un rythme de travail durable.
18/11/03
Eric Schmitz
30
ISL/PS
Projet de développement
eXtreme Programming
Graduat en Informatique
Pratiques XP du programmeur
Programmation en binôme.
Tests unitaires.
Conception simple.
Remaniement.
Responsabilité collective du code.
Règles de codage.
Intégration continue.
Rythme durable.
18/11/03
Eric Schmitz
31
ISL/PS
Projet de développement
eXtreme Programming
Graduat en Informatique
Le client
Le client sur site.
Le client spécifie par des scénarios client...
En commençant par en faire la liste.
En donnant des priôrités aux scénarios.
Nécessité de feedback pour le client -> le
feedback assure une bonne communication
entre le programmeur et le client.
18/11/03
Eric Schmitz
32
ISL/PS
Projet de développement
eXtreme Programming
Graduat en Informatique
Le client
Le client spécifie par des tests de recette.
Pratique XP du client
Planification itérative.
Tests de recettes.
Intégration continue.
Rythme durable.
18/11/03
Eric Schmitz
33
ISL/PS
Projet de développement
eXtreme Programming
Graduat en Informatique
Charte des droits du client
Le client a le droit :
A un plan d'ensemble, montrant ce qui peut être
accompli, pour quand, à quel coût.
D'obtenir le plus de valeur possible de chaque
semaine de programmation.
De voir des progrès sur une application qui
marche, comme doivent le prouver les tests
répétables qu'il spécifie.
18/11/03
Eric Schmitz
34
ISL/PS
Projet de développement
eXtreme Programming
Graduat en Informatique
Charte des droits du client
De changer d'avis, de substituer des fonctionnalités
et de changer ses priorités sans en payer un prix
exorbitant.
D'être informé des modifications portées au
calendrier de réalisation, assez tôt pour avoir la
possibilité de réduire le périmètre fonctionnel et
retomber ainsi sur la date de livraison initiale.
D'annuler le projet à tout moment et de disposer
d'une application utile et utilisable en contrepartie
de son investissement.
18/11/03
Eric Schmitz
35
ISL/PS
Projet de développement
eXtreme Programming
Graduat en Informatique
Le coach
Garant du processus.
Organise et anime les séances de planification.
Aide le client à rédiger ses premiers scénarios.
Doit avoir le courage de dire les choses telles
qu'elles sont.
Objectifs du coach : que l'équipe fonctionne bien,
sans lui...
18/11/03
Eric Schmitz
36