Ingénierie agile : N’oubliez pas vos développeurs
1. Ingénierie agile,
outils et bonnes pratiques :
n'oubliez pas vos développeurs !
Xavier NOPRE – 08/11/2012
1
2. Qui suis-je ?
Xavier NOPRE :
Développeur logiciel Java & Web passionné depuis ~ 20 ans
Pratique et partage l’agilité depuis 2007
Indépendant. Missions :
Développements sur mesure et accompagnement de projet
En mode agile
Coaching en agilité, Scrum, et ingénierie agile
@xnopre xnopre.blogspot.com
2 Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE
3. Et vous ?
Agilité : novice ou expert ?
1. Je découvre, je n'y connais rien
2. Je connais les bases, je ne pratique pas encore
3. Je pratique un peu
4. Je pratique régulièrement (ex: un des rôles de Scrum)
5. Je maitrise, j'explique, je forme et accompagne
Profils :
Développeur
Manager
Formateur / coach
Autre ?
3 Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE
4. Au programme
Moi : (diapos)
Introduction 3
Rappels sur l'agilité 6
Mise en situation et suivi des étapes
Exploration des outillages et méthodes 17
Nous :
Echanges autour de questions/réponses
4 Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE
5. Pourquoi cette session ?
Issue de :
Vécu personnel en tant que développeur
Retour d'observations en tant que consultant
Réflexions personnelles et échanges divers
la technique est négligée dans les transitions agiles
Contexte évoqué :
Secteur du développement logiciel
Ecosystème Java
5 Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE
6. Mes objectifs du jour
Mettre en garde
Pointer les difficultés (actuelles ou à venir)
Lister une dizaine d'outils et pratiques
Répondre à des attentes comme :
"Je veux me lancer avec un maximum de chances"
"Je sens que l'agilité ne fonctionne pas mais pourquoi ?"
"C'est quoi TU, TDD, IoC, CI, … ?"
"Comment tout cela peut-il s'articuler ?"
"Par quoi je commence ?"
"Combien ça coûte ?"
7 Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE
7. Ingénierie agile : késako ?
"Ensemble de pratiques et d'outillages du génie logiciel
permettant de faire du développement agile" (XN)
Tout ce qui est lié à la technique et aux pratiques :
Tests unitaires
TDD
Intégration continue
Industrialisation
…
8 Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE
8. Situation
Contexte :
Nouveau projet et migration à l'agilité
Scrum est en place :
Choix des acteurs PO et SM
Formations et coaching
Equipe stable et informée
Supports : backlogs, scrum board, …
Cérémonies : sprint planning, revue, démo, rétro
Mais … ça ne marche pas !
9 Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE
9. Analyse
L'agilité : facile à comprendre, difficile à mettre en œuvre
Scrum : n'est pas une "méthode" mais un cadre à adapter
Très nombreuses raisons d'échec :
Méthode trop adaptée = éloignement des valeurs et principes
Manque d'informations (équipe et autour)
Facteur humain
Aspects techniques !
Gestion "agile" de projet : OK
Ingénierie agile ? …
10 Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE
10. Rappels > Cycle Scrum
Carnet Carnet
de produit d'itération
Vision
Itération
2 à 4 semaines
Produit partiel
1 jour Potentiellement
utilisable
11 Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE
11. Rappels > Cycle Scrum
• Méthodes séquentielle classique :
Specs Archi Développements Tests
BDD Serveur IHM
Temps
• Scrum :
Sprint 1 Sprint 2 Sprint 3 Sprint 4
Specs Specs Specs Specs
Archi Archi Archi Archi
t t t t ...
Dév Dév Dév Dév
Tests Tests Tests Tests
Temps
12 Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE
12. Rappels > Itératif et incrémental
http://www.infoq.com/news/2008/01/iterating-and-incrementing
13 Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE
13. Feuille de route
? *****
? *****
? *****
? *****
? *****
? *****
? *****
? *****
? *****
? *****
Effort
14 Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE
14. 1/10
"Equipe" = Travail collaboratif :
Equipe pluri-disciplinaire
Le code appartient à tous
Partage du code
Gestion centralisée
Suivi des versions
Partage des sources *****
Logiciel de gestion de version (Version Control System) :
Subversion (SVN), ClearCase, CVS, …
Git, Mercurial, …
15 Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE
15. 2/10
Code communs et partagé :
Ecrit par les uns, lus par les autres
Modifié par tous
Règles communes *****
Règles communes de codage :
Ecriture du code
Formatage des sources
Normes de nommages
Outillage Sonar
16 Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE
16. Feuille de route
Gestion de versions (SNV) *****
Règles communes *****
? *****
? *****
? *****
? *****
? *****
? *****
? *****
? *****
Effort
17 Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE
17. 3/10
Travail itératif :
Déploiement pour tests intégration et fonctionnels
Packaging et livraisons fréquentes
Industrialisation *****
Outil de build pour industrialiser et automatiser :
Ant + Ivy
Maven :
Gestion précise des dépendances et des versions
Cycle de production intrinsèque
Nombreux plugins
Intégration IDE et autre outils
18 Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE
18. 4/10
Industrialisation et dépendances :
"Artifacts" : livrables identifiés (groupId + artifactId + version)
"repositories" : dépôts pour récupérer et déposer des livrables
Artifacts et repositories *****
Gestionnaire de repositories :
Artifactory, Nexus, Archiva
Intérêts d'un dépôt interne :
Proxy des dépôts publics internet
Deploiement (Maven) de ses propres artifacts
"Mavenisation" de livrables "non Maven"
19 Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE
19. Feuille de route
Gestion de versions (SNV) *****
Règles communes *****
Industrialisation (Maven) *****
Repositories (Artifactory) *****
? *****
? *****
? *****
? *****
? *****
? *****
Effort
20 Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE
20. Précisions
Développement "itératif" et "incrémental" :
Développement "minimum" :
Satisfaire les histoires de l'itération courante
Prendre en compte la "vision" à long terme
Suivre l'architecture "grande échelle" (modules, composants)
Mais pas d'anticipations sur les besoins futurs
Développements suivants :
Satisfaire les histoires de la nouvelle itération
Modifier le code existant pour qu'il puisse recevoir les nouveautés
Implémenter les nouvelles fonctionnalités
Refactoring …
21 Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE
21. 5/10
Besoin de remanier son code (refactoring) :
Renommages
Extraction de méthodes, de classes
Suppression de variables locales, de codes inutiles, …
Prendre le moins de risque possibles …
IDE *****
Un "bon" outil d'édition (IDE) :
Eclipse, NetBeans, MS Visual Studio, IntelliJ IDEA, …
Doit convenir à l'ensemble de l'équipe et correspondre aux
besoins
Doit être bien configuré, pour tous les membres de l'équipe
22 Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE
22. Feuille de route
Gestion de versions (SNV) *****
Règles communes *****
Industrialisation (Maven) *****
Repositories (Artifactory) *****
IDE (Eclipse) *****
? *****
? *****
? *****
? *****
? *****
Effort
23 Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE
23. 6/10
Refactoring :
Ne pas casser l'existant , éviter les régressions
Nouvelles fonctionnalités :
Etre sûr de répondre au besoin
Productivité et qualité :
Tester rapidement des situations aux limites
Test unitaires *****
Tests unitaires :
Faire les "bons" tests
Penser ROI !
Voir les tests d'intégration et tests fonctionnels
24 Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE
24. 7/10
Tests unitaires :
"Impossible sur mon code"
Architecture et conception adaptée
Code testable *****
Code testable :
Principe "1 classe 1 rôle" architecture très découpée
Couplage lâche
Injection de dépendances (outils ou manuelle)
Interfaces & Mocks
25 Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE
25. 8/10
Tests unitaires : c'est dur !
Mon code n'est pas testable
Je ne sais pas comment tester
TDD *****
TDD = "Test Driven Development"
Principe = Ecrire les tests avant tout code de production
("Tests first")
Plus facile d'écrire les tests avant que après le code de prod
Permet de valider la compréhension du besoin
Guide vers un code forcément "testable"
26 Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE
26. Feuille de route
Gestion de versions (SNV) *****
Règles communes *****
Industrialisation (Maven) *****
Repositories (Artifactory) *****
IDE (Eclipse) *****
Tests unitaires *****
Code testable *****
TDD *****
? *****
? *****
Effort
27 Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE
27. 9/10
Les retours :
"Tout ça n'est pas facile"
"Par où commencer ?"
"J'ai un bon exemple mais …"
Pair-programming *****
Pair-programming :
Principe : 2 développeurs devant 1 poste de travail
Apports :
Entraide, cohésion d'équipe
Partage de connaissances, transferts de compétences
Gain de productivité, qualité, meilleures solutions
A bon escient, un peu chaque jour
28 Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE
28. 10/10
Constats et situations :
Chaque développeur oublie de rejouer tous les tests unitaires
avant son commit : investissement autant les jouer souvent
Mon Product Owner veut un logiciel disponible très souvent
Les intégrateurs me demandent d'automatiser le déploiement
en prod
Intégration continue * * * * *
Intégration continue :
Outils : Jenkins, Hudson, CruiseControl, Continuum, …
Usages :
Build (compile et tests) toutes les 15'
Build complet nocturne
Autres opérations sur déclenchements manuels
29 Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE
29. Feuille de route
Gestion de versions (SNV) *****
Règles communes *****
Industrialisation (Maven) *****
Repositories (Artifactory) *****
IDE (Eclipse) *****
Tests unitaires *****
Code testable *****
TDD *****
Pair-programming *****
Intégration continue *****
Effort
30 Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE
30. Conclusion
Agilité
= révolution culturelle de l'entreprise
= changements des rôles et de l'organisation
= changements des habitudes et des relations
Mais = aussi changements des pratiques et outillages techniques
N'oubliez pas vos développeurs !
31 Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE
31. En résumé (technique)
Thème Conseil
Pratiques :
Règles communes, pair-programming, Simple Ne pas hésiter !
coding-dojo, temps libre, …
Outillage :
IDE correct, configuré et maitrisé,
Bon ROI Investir
gestionnaire de sources, industrialisation,
intégration continue, …
Tests :
Indispensable mais nécessite temps,
Unitaires, TDD, code testable, code
patience, formation, accompagnement
propre, architecture évolutive, …
32 Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE
32. Questions ?!
33 Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE