Ingénierie agile : N’oubliez pas vos développeurs

32
Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs ! Xavier NOPRE – 08/11/2012 1

Transcript of Ingénierie agile : N’oubliez pas vos développeurs

Page 1: Ingénierie agile : N’oubliez pas vos développeurs

Ingénierie agile,

outils et bonnes pratiques :

n'oubliez pas vos développeurs !

Xavier NOPRE – 08/11/2012

1

Page 2: Ingénierie agile : N’oubliez pas vos développeurs

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

Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE 2

Qui suis-je ?

@xnopre xnopre.blogspot.com

Page 3: Ingénierie agile : N’oubliez pas vos développeurs

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 ?

Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE 3

Et vous ?

Page 4: Ingénierie agile : N’oubliez pas vos développeurs

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

Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE 4

Page 5: Ingénierie agile : N’oubliez pas vos développeurs

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

Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE 5

Pourquoi cette session ?

Page 6: Ingénierie agile : N’oubliez pas vos développeurs

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 ?"

Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE 7

Mes objectifs du jour

Page 7: Ingénierie agile : N’oubliez pas vos développeurs

"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

Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE 8

Ingénierie agile : késako ?

Page 8: Ingénierie agile : N’oubliez pas vos développeurs

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

Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE 9

Situation

Mais … ça ne marche pas !

Page 9: Ingénierie agile : N’oubliez pas vos développeurs

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 !

Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE 10

Analyse

Gestion "agile" de projet : OK

Ingénierie agile ? …

Page 10: Ingénierie agile : N’oubliez pas vos développeurs

Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE 11

Rappels > Cycle Scrum

Vision

Carnet

de produit

Carnet

d'itération

Itération 2 à 4 semaines

1 jour

Produit partiel

Potentiellement

utilisable

Page 11: Ingénierie agile : N’oubliez pas vos développeurs

Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE 12

Rappels > Cycle Scrum

Specs Archi Développements Tests

• Méthodes séquentielle classique :

• Scrum :

Sprint 1

Specs

Archi

Dévt

Tests

Sprint 2

Specs

Archi

Dévt

Tests

Sprint 3

Specs

Archi

Dévt

Tests

Sprint 4

Specs

Archi

Dévt

Tests

...

Temps

Temps

BDD Serveur IHM

Page 12: Ingénierie agile : N’oubliez pas vos développeurs

Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE 13

Rappels > Itératif et incrémental

http://www.infoq.com/news/2008/01/iterating-and-incrementing

Page 13: Ingénierie agile : N’oubliez pas vos développeurs

?

?

?

?

?

?

?

?

?

?

Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE 14

Feuille de route

* * * * *

* * * * *

* * * * *

* * * * *

* * * * *

* * * * *

* * * * *

* * * * *

* * * * *

* * * * * Effort

Page 14: Ingénierie agile : N’oubliez pas vos développeurs

"Equipe" = Travail collaboratif :

Equipe pluri-disciplinaire

Le code appartient à tous

Partage du code

Gestion centralisée

Suivi des versions

Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE 15

Partage des sources

Logiciel de gestion de version (Version Control System) :

Subversion (SVN), ClearCase, CVS, …

Git, Mercurial, …

* * * * *

1/10

Page 15: Ingénierie agile : N’oubliez pas vos développeurs

Code communs et partagé :

Ecrit par les uns, lus par les autres

Modifié par tous

Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE 16

Règles communes

Règles communes de codage :

Ecriture du code

Formatage des sources

Normes de nommages

Outillage Sonar

* * * * *

2/10

Page 16: Ingénierie agile : N’oubliez pas vos développeurs

Gestion de versions (SNV)

Règles communes

?

?

?

?

?

?

?

?

Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE 17

Feuille de route

* * * * *

* * * * *

* * * * *

* * * * *

* * * * *

* * * * *

* * * * *

* * * * *

* * * * *

* * * * * Effort

Page 17: Ingénierie agile : N’oubliez pas vos développeurs

Travail itératif :

Déploiement pour tests intégration et fonctionnels

Packaging et livraisons fréquentes

Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE 18

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

* * * * *

3/10

Page 18: Ingénierie agile : N’oubliez pas vos développeurs

Industrialisation et dépendances :

"Artifacts" : livrables identifiés (groupId + artifactId + version)

"repositories" : dépôts pour récupérer et déposer des livrables

Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE 19

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"

* * * * *

4/10

Page 19: Ingénierie agile : N’oubliez pas vos développeurs

Gestion de versions (SNV)

Règles communes

Industrialisation (Maven)

Repositories (Artifactory)

?

?

?

?

?

?

Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE 20

Feuille de route

* * * * *

* * * * *

* * * * *

* * * * *

* * * * *

* * * * *

* * * * *

* * * * *

* * * * *

* * * * * Effort

Page 20: Ingénierie agile : N’oubliez pas vos développeurs

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

Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE 21

Précisions

Refactoring …

Page 21: Ingénierie agile : N’oubliez pas vos développeurs

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 …

Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE 22

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

* * * * *

5/10

Page 22: Ingénierie agile : N’oubliez pas vos développeurs

Gestion de versions (SNV)

Règles communes

Industrialisation (Maven)

Repositories (Artifactory)

IDE (Eclipse)

?

?

?

?

?

Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE 23

Feuille de route

* * * * *

* * * * *

* * * * *

* * * * *

* * * * *

* * * * *

* * * * *

* * * * *

* * * * *

* * * * * Effort

Page 23: Ingénierie agile : N’oubliez pas vos développeurs

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

Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE 24

Test unitaires

Tests unitaires :

Faire les "bons" tests

Penser ROI !

Voir les tests d'intégration et tests fonctionnels

* * * * *

6/10

Page 24: Ingénierie agile : N’oubliez pas vos développeurs

Tests unitaires :

"Impossible sur mon code"

Architecture et conception adaptée

Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE 25

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

* * * * *

7/10

Page 25: Ingénierie agile : N’oubliez pas vos développeurs

Tests unitaires : c'est dur !

Mon code n'est pas testable

Je ne sais pas comment tester

Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE 26

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"

* * * * *

8/10

Page 26: Ingénierie agile : N’oubliez pas vos développeurs

Gestion de versions (SNV)

Règles communes

Industrialisation (Maven)

Repositories (Artifactory)

IDE (Eclipse)

Tests unitaires

Code testable

TDD

?

?

Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE 27

Feuille de route

* * * * *

* * * * *

* * * * *

* * * * *

* * * * *

* * * * *

* * * * *

* * * * *

* * * * *

* * * * * Effort

Page 27: Ingénierie agile : N’oubliez pas vos développeurs

Les retours :

"Tout ça n'est pas facile"

"Par où commencer ?"

"J'ai un bon exemple mais …"

Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE 28

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

* * * * *

9/10

Page 28: Ingénierie agile : N’oubliez pas vos développeurs

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

Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE 29

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

* * * * *

10/10

Page 29: Ingénierie agile : N’oubliez pas vos développeurs

Gestion de versions (SNV)

Règles communes

Industrialisation (Maven)

Repositories (Artifactory)

IDE (Eclipse)

Tests unitaires

Code testable

TDD

Pair-programming

Intégration continue

Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE 30

Feuille de route

* * * * *

* * * * *

* * * * *

* * * * *

* * * * *

* * * * *

* * * * *

* * * * *

* * * * *

* * * * * Effort

Page 30: Ingénierie agile : N’oubliez pas vos développeurs

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

Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE 31

Conclusion

N'oubliez pas vos développeurs !

Page 31: Ingénierie agile : N’oubliez pas vos développeurs

Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE 32

En résumé (technique)

Thème Conseil

Pratiques :

Règles communes, pair-programming,

coding-dojo, temps libre, …

Simple Ne pas hésiter !

Outillage :

IDE correct, configuré et maitrisé,

gestionnaire de sources, industrialisation,

intégration continue, …

Bon ROI Investir

Tests :

Unitaires, TDD, code testable, code

propre, architecture évolutive, …

Indispensable mais nécessite temps,

patience, formation, accompagnement

Page 32: Ingénierie agile : N’oubliez pas vos développeurs

Ingénierie agile, outils et bonnes pratiques : n'oubliez pas vos développeurs - Xavier NOPRE 33

Questions ?!