48
Industrialisa+on des développements Java Chris+an Blavier Benoît Lafontaine Le 17/03/2010

Industrialisation des développements Java

Embed Size (px)

DESCRIPTION

Présentation co-animée avec Benoît Lafontaine au salon Solutions Linux le 17/03/2010

Citation preview

Page 1: Industrialisation des développements Java

Industrialisa+on  des    développements  Java

Chris+an  Blavier  Benoît  Lafontaine  

Le  17/03/2010  

Page 2: Industrialisation des développements Java

OCTO,  en  quelques  mots  

2  ©  OCTO  Technology  -­‐    2010  

  Conseil  en  Architecture  et  Management  des  SI  

  Un  cabinet  à  taille  humaine  :  130  consultants  fin  2009  

  12  ans  

  15,4  M€  de  CA  (2009)    

  Un  posi+onnement  Grands  Comptes  

  Deux  ouvertures  à  l’interna+onal  (Maroc,  Suisse)  

NOTRE  MISSION  

  Aider  nos  clients  à  maitriser  la  complexité  de  leur  SI  pour  en  +rer  le  maximum  de  valeur      

NOS  VALEURS  FONDATRICES  

  L’indépendance  vis-­‐à-­‐vis  des  intégrateurs  et  des  éditeurs    

  L’expérience  réelle  et  pragmaCque  des  SI  stratégiques  et  des  grands  projets  

NOTRE  CULTURE  

  La  mul+-­‐valence  :  mé+er,  technique  et  communica+on  

  L’échange  :  25  %  du  temps  réservé  à  la  capitalisa+on  des  connaissances  et  des  expériences  

Page 3: Industrialisation des développements Java

L’industrialisa+on  c’est  quoi  ?  

3  ©  OCTO  2010    

Tests  automaCsés  

IntégraCon  conCnue  

Mesure  de  la  qualité  

Il  ne  s’agit  pas  uniquement  des  ou+ls  de  

développement  !  

Page 4: Industrialisation des développements Java

Ne  pas  se  tromper  d’époque  

Une  approche  où  les  hommes  sont  au  centre  de  la  démarche  

4  ©  OCTO  Technology  -­‐    2010  

Page 5: Industrialisation des développements Java

Pourquoi  faire  de  l’intégra+on  con+nue  ?  

Plus  un  défaut  est  détecté  tard…    

                 …plus  il  coûte  cher  à  corriger.  

©  OCTO  Technology  -­‐    2010   5  

Page 6: Industrialisation des développements Java

6  

Vous  ne  voulez  plus  travailler  sans  filet  de  sécurité  ?  Faites  de  l’intégraCon  conCnue  

Page 7: Industrialisation des développements Java

L’intégra+on  con+nue  en  images  

7  ©  OCTO  Technology  -­‐    2010  

Build

Vérifier  la  qualité    du    code  

Compiler  

Récupérer    les  dépendances  

Déployer  

Documenter  

Exécuter  les  tests  

Packager  

Plateforme  de  tests  

RéférenCel  binaires  

DocumentaCon  &  Indicateurs  

NoCficaCons  

Serveur  d’intégraCon  conCnue  

Build  GesConnaire    de  sources  

Build  Local  

Page 8: Industrialisation des développements Java

GesConnaire    de  sources  

Build

Vérifier  la  qualité    du    code  

Compiler  

Récupérer    les  dépendances  

Déployer  

Documenter  

Exécuter  les  tests  

Packager  

L’intégra+on  con+nue  en  images  

8  ©  OCTO  Technology  -­‐    2010  

RéférenCel  binaires  

Plateforme  de  tests  

DocumentaCon  &  Indicateurs  

Serveur  d’intégraCon  conCnue  

Build  

Build  Local  

CVS  

Hudson  SVN  GIT   Nexus  

NoCficaCons  

Page 9: Industrialisation des développements Java

Les  défis  de  l’intégra+on  con+nue  

9  ©  OCTO  2010    

Défi  #1  :  la  performance  

Défi  #2  :  éviter  l’instabilité  du  build  

Page 10: Industrialisation des développements Java

Problèmes de performance

Build  

Build  

Build  

Build  ... ...

Serveur  d’intégraCon  conCnue  

Build  

Build  

Build  Local  

GesConnaire    de  sources  

:-­‐ (  :-­‐ (  

:-­‐ (  

Page 11: Industrialisation des développements Java

Build profilé

GesConnaire    de  sources  

Serveur  d’intégraCon  conCnue  

Build  rapide  :  tests  unitaires  

...

Build  documentaCon  

Build  tests  intégraCon  

Build  qualimétrie  

... Build  packaging  

Build  complet  

Toutes  les...  

10  min  

A  la    demande  

nuits  

4  h  

nuits  

A  la    demande  

Build  Local  

Page 12: Industrialisation des développements Java

Build distribué

Serveur  d’intégraCon  ConCnue  

Build  rapide  :  tests  unitaires  

Build  documentaCon  

Build  tests  intégraCon  

Build  qualimétrie  

Build  complet  

Build  packaging  

Build  Local  

GesConnaire    de  sources  

10  

240  

 

 

 

 

©  OCTO  Technology  -­‐    2010  

Page 13: Industrialisation des développements Java

Build distribué

Serveur  d’intégraCon  ConCnue  

Build  rapide  :  tests  unitaires  

Build  documentaCon  

Build  tests  intégraCon  

Build  qualimétrie  

Build  complet  

Build  packaging  

Build  Local  

GesConnaire    de  sources  

10  

240  

 

 

 

 

Agent    

Agent  

(maître)  

©  OCTO  Technology  -­‐    2010  

Page 14: Industrialisation des développements Java

Applications multi-tout : le défi ?

©  OCTO  Technology  -­‐    2010   14  

Tester sur des environnements différents

Pro

Page 15: Industrialisation des développements Java

Build distribué & plateformes

Serveur  d’intégraCon  ConCnue  (maître)  

Build  tests  interface  

Build  complet  

Build  Local  

GesConnaire    de  sources  

Agent    

Agent  

Agent    

Build  tests  interface  IE  6  

Build  tests  interface  Chrome  

Build  tests  interface  IE  7  

Build  tests  interface  FF  

©  OCTO  Technology  -­‐    2010  

Page 16: Industrialisation des développements Java

Les  défis  de  l’intégra+on  con+nue  

16  ©  OCTO  2010    

Défi  #1  :  la  performance  

Défi  #2  :  éviter  l’instabilité  du  build  

Page 17: Industrialisation des développements Java

Instaurer  une  culture  du  build  

17  ©  OCTO  Technology  -­‐    2010  

Page 18: Industrialisation des développements Java

Instabilité du build : le problème

Serveur  d’intégraCon  ConCnue  

Build  

Récupérer    les  dépendances  

Compiler  

Exécuter  les  tests  

GesConnaire    de  sources  

Développeurs  

©  OCTO  Technology  -­‐    2010  18  

Page 19: Industrialisation des développements Java

Instabilité du build : le défi ?

©  OCTO  Technology  -­‐    2010   19  

•  Conserver un référentiel de sources « propre »

•  Empêcher un développeur de bloquer les autres

•  Favoriser l’utilisation décomplexée du référentiel de sources

GesConnaire    de  sources  

Page 20: Industrialisation des développements Java

Une solution : le build incassable

Serveur  d’intégraCon  ConCnue  

GesConnaire    de  sources  protégé  

Développeurs  Build  

Récupérer    les  dépendances  

Compiler  

Exécuter  les  tests  

20  

Page 21: Industrialisation des développements Java

Outils d’intégration continue

©  OCTO  Technology  -­‐    2010   21  

•  Serveur  d’IntégraCon  –  Hudson  –  TeamCity    €  

–  Bamboo  €  

–  Pulse  €  –  CruiseControl  –  Apache  Con+nuum  

–  QuickBuild  €  –  Team  Funda+on  Server  €  

–  LuntBuild  

Page 22: Industrialisation des développements Java

22  ©  OCTO  Technology  -­‐    2010  

Savoir  si  son  code  compile,  c’est  bien  …  mais  savoir  s’il  foncConne  c’est  mieux  !  

Page 23: Industrialisation des développements Java

Test  Driven  Development  

23  ©  OCTO  Technology  -­‐    2010  

Ecrire  test  en  échec  

Faire  passer  le  test  

Remanier  le  code  

Page 24: Industrialisation des développements Java

«  Outside-­‐in  »  development  

24  ©  OCTO  Technology  -­‐    2010  

Ecrire  test  en  échec  

Faire  passer  le  test  

Remanier  le  code  

Tests  unitaires  :  cycle  TDD  répété  plusieurs  fois  pour  chaque  foncConnalité  

Ecrire  test  de  receoe  en  échec  

Faire  passer  le  tests  de  receoe  

Nouveau  cycle  répété  à  chaque  nouvelle  foncConnalité  

Page 25: Industrialisation des développements Java

Pourquoi  des  tests  de  receoe  automa+sés  ?  

Conserver  la  connaissance  

• Capitaliser  à  un  endroit  unique  sur  ce  que  fait  effecCvement  le  logiciel  

• Rendre  «  exécutables  »  les  spécificaCons  

Communiquer  sans  ambiguïté  

• Spécifier  de  façon  univoque  par  les  tests  

• Minimiser  les  problèmes  de  coordinaCon  en  receoe  

Préserver  la  qualité  

• Construire  un  harnais  de  tests  

• Détecter  les  régressions  au  plus  tôt  

Gagner  du  temps  • Eviter  les  erreurs  manuelles  

• Rejouer  fréquemment  l’intégralité  des  tests  

25  ©  OCTO  2010    

Tests  de  recehe  automaCsés  

Page 26: Industrialisation des développements Java

Plusieurs  approches  de  TDR  

26  ©  OCTO  2010    

Tests  d’IHM  

SpécificaCons  exécutables  

Behavior  Driven  Development  

Page 27: Industrialisation des développements Java

Tests  d’IHM  

27  ©  OCTO  2010    

Selenium  

WaCr  

Certains  ou+ls  disposent  d’un  mode  d’émula+on  du  navigateur,  plus  rapide  

Page 28: Industrialisation des développements Java

Le  pour,  le  contre  …  

28  ©  OCTO  Technology  -­‐    2010  

Inconvénients

Enregistrés / écrits par des développeurs

Temps d’exécution

Quasi exhaustifs ;-)

Avantages

Quasi-exhaustifs

Rassurants pour le métier

Page 29: Industrialisation des développements Java

Plusieurs  approches  de  TDR  

29  ©  OCTO  2010    

Tests  d’IHM  

SpécificaCons  exécutables  

Behavior  Driven  Development  

Page 30: Industrialisation des développements Java

Dites  le  avec  un  tableau  !  

30  ©  OCTO  Technology  -­‐    2010  

Utilisateur! !Mot de passe! !Message�

jdoe ! ! ! !elephant! ! ! ! Echec ! �

dgray! ! ! toto ! ! ! !Echec ! �

dcooper! ! d1ane4ever! ! ! Succès !! !�

. . . ! ! ! ! !. . . ! ! ! ! !. . . !�

Règle de gestion : création de compte�Lors de la création de compte, un utilisateur doit obligatoirement choisir un mot de passe contenant des lettres et des chiffres �

Page 31: Industrialisation des développements Java

Par  exemple  :  GreenPepper  

31  ©  OCTO  Technology  -­‐    2010  

Page 32: Industrialisation des développements Java

Par  exemple  :  GreenPepper  

32  ©  OCTO  Technology  -­‐    2010  

Page 33: Industrialisation des développements Java

Spécifica+ons  exécutables  

33  ©  OCTO  2010    

Système  testé  

Pages  de  tests  wiki  

Code  de  liaison  

(fixtures)  

Page 34: Industrialisation des développements Java

Le  pour,  le  contre  …  

34  ©  OCTO  Technology  -­‐    2010  

Inconvénients

Par défaut ne permet pas de tester une IHM

Pourrait être encore plus expressif

Avantages

Expressivité : les tests peuvent être formulés par des utilisateurs

On peut fusionner tests et documentation

Page 35: Industrialisation des développements Java

Plusieurs  approches  de  TDR  

35  ©  OCTO  2010    

Tests  d’IHM  

SpécificaCons  exécutables  

Behavior  Driven  Development  

Page 36: Industrialisation des développements Java

Et  si  on  racontait  une  histoire  ?  

36  ©  OCTO  2010    

Etant donnée … [ un contexte ] �

Quand … [ un événement ] �

Alors… [ un état attendu ] �

BDD  (Behavior  Driven  Development),  une  manière  de  formaliser  ses  histoires  :  

Page 37: Industrialisation des développements Java

BDD  avec  Cucumber  

37  ©  OCTO  Technology  -­‐    2010  

Page 38: Industrialisation des développements Java

BDD,  a  new  genera+on  

38  ©  OCTO  Technology  -­‐    2010  

Evolution syntaxique de TDD Orienté développeur Tout est dans le code

Tests d’acceptance Prise en compte du reste de l'équipe Extraction des scénarios

Page 39: Industrialisation des développements Java

Le  pour,  le  contre  …  

39  ©  OCTO  2010    

Inconvénients

Pas d’outils collaboratifs

L’intégration de cucumber avec le monde Java est peu documentée

Avantages

Extrêmement expressif

S’intègre très naturellement avec un outil de test d’IHM

L’avenir du test d’acceptance automatisé

Page 40: Industrialisation des développements Java

40  ©  OCTO  Technology  -­‐    2010  

On  n’améliore  que  ce  que  l’on  mesure  

http://www.flickr.com/photos/55145236@N00/146617178/

Page 41: Industrialisation des développements Java

Quels  indicateurs  ?  

•  Indicateur  de  «  le  code  compile  »  :  le  Build  –  Eviter  le  «  ça  compile  sur  mon  poste  »  –  Ou+ls  :  Hudson  +  Maven  

•  Indicateurs  de  bonne  santé  :  tests  automa+sés  –  Ou+ls  :  XUnit,  Surefire,  JCoverage  /  Cobertura  …  

•  Indicateurs  de  la  qualité  du  code  :  analyse  sta+que  –  Ou+ls  :  PMD,  CheckStyle,  Findbugs  –  Aggrégateur  :  Sonar  

41  ©  OCTO  Technology  -­‐    2010  

Page 42: Industrialisation des développements Java

42  ©  OCTO  Technology  -­‐    2010  

Jusqu’ici  tout  va  bien  

Page 43: Industrialisation des développements Java

Mesurer  les  tendances  

43  ©  OCTO  Technology  -­‐    2010  

Page 44: Industrialisation des développements Java

Mesurer  les  tendances  

44  ©  OCTO  Technology  -­‐    2010  

Page 45: Industrialisation des développements Java

Les  indicateurs  subjec+fs  

45  ©  OCTO  Technology  -­‐    2010  

http

://w

ww

.info

q.co

m/n

ews/

2007

/08/

agile

-kan

ban-

boar

ds

Page 46: Industrialisation des développements Java

Mesurer  la  produc+vité  ?  

 Débit  de  foncConnalités    

46  ©  OCTO  Technology  -­‐    2010  

Le  nombre  de  fonc+onnalités,  pondérées  par  la  valeur  mé+er,  ajoutées  au  logiciel  pendant  un  laps  de  temps  

donné  et  répondant  aux  exigences  qualités  

Page 47: Industrialisation des développements Java

Récapitulons  

•  Repousser  les  limites  de  l’intégra+on  con+nue  –  Profiler  et  distribuer  les  builds  –  Meore  en  place  une  poli+que  de  build  incassable  

•  Automa+sez  vos  tests  de  receoe  –  En  suivant  des  cycles  de  développement  «  outside-­‐in  »  

–  En  impliquant  votre  MOA,  grâce  à  des  ou+ls  conviviaux  

•  Mesurer  pour  s’améliorer  –  Privilégier  un  ensemble  d’indicateurs,  objec+fs  et  subjec+fs  

–  Mesurer  la  produc+vité  

47  ©  OCTO  Technology  -­‐    2010  

Page 48: Industrialisation des développements Java

Université  du  SI  2010  Le  rendez-­‐vous  des  geeks  et  des  boss  

48  ©  OCTO  Technology  -­‐    2010