SlideShare ist ein Scribd-Unternehmen logo
1 von 21
Downloaden Sie, um offline zu lesen
Outillage Agile



www.objetdirect.com
blog.objetdirect.com




                                 1
Sommaire

Introduction
  Présentation
  Principes agiles impactant l’outillage


Outils collaboratifs
  Gestion de sources
  Bug Tracker


Pour les développeurs
  Construction avec Maven
  Tests avec des Mock Objects
  Outils d’analyse de code
  Intégration continue


Conclusion


                                           2
Présentation


Cyril Lacôte
  Développeur Java - Objet Direct
  En mission agile chez les Laboratoires Boiron


Objet Direct
  Architecte Objet et Internet
  Prestations de conseils méthodologiques
  Partenaire Valtech : formations
    http://www.objetdirect.com
    http://blog.objetdirect.com




                                                  3
Principes agiles impactant l’outillage

Principes agiles généraux
  Accueillir le changement
  Utiliser un cycle itératif et incrémental
  Favoriser la communication


Pratiques UP
  Gérer les exigences
  Modéliser graphiquement
  Vérifier continuellement la qualité


Pratiques XP (mais appliquées aux autres méthodes)
  Développement piloté par les tests
  Intégration continue
  Refactoring
  Convention de codage
L’usine logicielle agile

Poste Banalisé          Poste d’architecte,             Poste de
  Navigateur           analyste, concepteur            développeur
 Bureautique           Gestion des exigences          Gestion du code
                         Modélisation UML             Tests unitaires


                     Plateforme collaborative
                         Gestion de projet
                       Gestion documentaire
                         Gestion de source
                         Gestion de ticket




Plateforme d’intégration                        Plateforme de test
   Intégration continue                         Tests d’acceptation
          Tests                                Tests de performance
        Métriques

                                                           5
Outils collaboratifs : gestion de sources


Gestion de sources
  Référentiel commun
  Alors que tout le monde travaille en
  concurrence
  Avec une gestion de l’historique
      Pour la traçabilité
      Et le retour arrière
  Et des commentaires de commit
  Et un étiquetage de versions
  Et des branches pour des
  développements en parallèle
  Qu’on peut fusionner
SVN
Gestion de sources : bonnes pratiques



Je me synchroniserai plusieurs fois par jour


Je commiterai une fonctionnalité entière


J’aurais vérifier qu’elle fonctionne


Je renseignerai un commentaire de commit explicite


J’y ferai même fait référence au n° de ticket/tâche/bug
Outils collaboratifs : Bug Tracker

Objectif :
  Tracer la vie de l’application


Comment :
  Recueillir anomalies, évolutions,
  tâches
  Qualifier (criticité, commentaire,
  capture d’écran, fichier attaché,
  lien entre tâches, doublons)
  Affecter à un responsable
  Suivre dans un workflow
  Notifier par mail
Outils collaboratifs : Bug Tracker

Mais aussi suivi de projet
  Gestion des versions
  Suivi des imputations
  Et du reste-à-faire
  Moteur de recherche
  Et intégration SVN!


JIRA
http://opensource.atlassian.com/projects/hibernate/browse/HHH-3949
  
  Payant…
  mais génial!


Sinon :
  BugZilla, Trac, …
Bug Tracker : bonnes pratiques



Génial, y’a une StackTrace !


Et les logs correspondants !


Et même un scénario pour reproduire le problème !


J’essaie d’estimer le reste à faire
L’outillage des développeurs : IDE



Les développeurs…
 … voudraient automatiser les tâches répétitives
 Parce qu’ils sont fainéants veulent être productifs
   Pour générer du code
   Pour faire du refactoring
   Pour documenter


    IDE

 Eclipse, NetBeans, IntelliJ : ils sont tous classes!
Pour les développeurs : construction




Les développeurs…
 …souhaiteraient automatiser la génération des livrables
   Pour installer rapidement un poste de développement
   Pour utiliser une nouvelle librairie super classe
   Pour déployer 27 fois par jour…
   …sur des environnements différents…
   …sans galérer


    Outil de construction




                                                         12
Construction : Maven



Maven formalise l’intégration du projet
  En décrivant le QUOI plutôt que le COMMENT (Ant, anyone?)
  Sur toutes ses étapes :
    De l’extraction des sources
    Jusqu’au déploiement sur les plateformes cibles
  En centralisant toutes les données du projet :
    Version, Repository des sources, Dépendances
    Rapports qualités, Acteurs
  Et en encourageant de bonnes pratiques :
    Normalisation de la structure
    Versionning
    Exécution des tests automatisés




                                                      13
Construction : Maven

Des avantages, plein :
  Homogénéise l’intégration
  Gestion des dépendances
    Téléchargement automatique des librairies
    Depuis un référentiel public, ou privé pour plus de contrôle (Archiva)
  Extensible par des plugins de construction
    Gérés par Maven, donc disponibles automatiquement
  Gestion automatisée des versions
    Incrément, Tag, Branche de maintenance
  Intégration continue facilitée


Mais…
  Intégration IDE (très) perfectible


      Démo Maven



                                                                         14
Tests



Les développeurs…
  … rêveraient d’avoir toute confiance dans leur commit
    Répondre au besoin, y compris sur ses cas limites
    Sans introduire de régression


     Tests unitaires et d’intégration


Inutile d’en rappeler les bénéfices, non ?


Passons à l’exemple :
     Démo : utilisation de mock objects via EasyMock pour tester
       unitairement un service métier.


                                                         15
EA 7.5 Unregistered Trial Version                        EA 7.5 Unregistered Trial Version                                     EA 7.5 Unreg
                                                           Tests
EA 7.5 Unregistered Trial Version                        EA 7.5 Unregistered Trial Version                                     EA 7.5 Unreg
              class service
EA 7.5 Unregistered Trial Version                        EA 7.5 Unregistered Trial Version                                     EA 7.5 Unreg
                               « i n te rfa ce »
                              UserService
EA 7.5 Unregisteredl lTrialgVersion
            + a ccu e i i r(S tri n ) : Use r
                                                         EA 7.5 Unregistered Trial Version                                     EA 7.5 Unreg

EA 7.5 Unregistered Trial Version                        EA 7.5 Unregistered Trial Version                                     EA 7.5 Unreg

EA 7.5 Unregistered Trial Version                        EA 7.5 Unregistered Trial Version                                     EA 7.5 Unreg
                                                                                     « i n te rfa ce »
                        UserServiceImpl                                            DAO::UserDAO
                                                   -u se rDA O
EA 7.5 Unregisteredi l lTrialgVersion
             + a ccu e i r(S tri n ) : Use r
                                                         EA 7.5 Unregistered Trial Version
                                                                 + cre a te (Use r) : vo i d                                   EA 7.5 Unreg
                                                                  +       fi n d B yId (l o n g ) : vo i d
                                                                  +       fi n d B yNa m e (S tri n g ) : Use r[]
EA 7.5 Unregistered Trial Version                        EA 7.5 Unregistered Trial Version                                     EA 7.5 Unreg

EA 7.5 Unregistered Trial Version                        EA 7.5 Unregistered Trial Version                                     EA 7.5 Unreg
                                                                                  DAO::UserDAOImpl

                     A tester!
EA 7.5 Unregistered Trial Version                        EA 7.5 Unregistered)vo vo i d Version
                                                                 + cre a te (Use r) : Trialid                                  EA 7.5 Unreg
                                                                 + fi n d B yId (l o n g :
                                                                      +    fi n d B yNa m e (S tri n g ) : L i st< Use r> []

EA 7.5 Unregistered Trial Version                        EA 7.5 Unregistered Trial Version                                     EA 7.5 Unreg

EA 7.5 Unregistered Trial Version                        EA 7.5 Unregistered Trial Version                                     EA 7.5 Unreg
                                                                                                                     16
EA 7.5 Unregistered Trial Version                        EA 7.5 Unregistered Trial Version                                     EA 7.5 Unreg
Outils de mesure de la qualité du code

Les développeurs
  Contrôleraient leur code en permanence
    Pour qu’il soit maintenable, évolutif, documenté…
    Grâce à des outils d’analyse


          Plugins


Pour un code…
  Standard
    Checkstyle : vérification des conventions de codage


  Sans bugs courants
    FindBugs : recherche de bugs courants
    PMD : recherche de bugs, de code mort


                       Développer un logiciel de qualité   17
Outils de mesure de la qualité du code

Pour un code…
  Simple et maintenable
    JDepend : indicateurs sur le niveau de couplage
    PMD CPD : recherche de code dupliqué
    JavaNCSS : complexité cyclomatique et documentation


  Testé
    Surefire Report : rapports d'exécution de tests unitaires
    Cobertura : rapports de couverture de tests


Tous ces plugins d’analyse existent pour Maven
          Démo


Et peuvent s’intégrer directement dans les IDE


                        Développer un logiciel de qualité       18
Intégration continue



Les développeurs…
 … devraient détecter au plus tôt les régressions
   Etre notifié quand elles arrivent
   Pour les corriger quand elles sont fraiches
   Et avant qu’elles ne s’empilent
   Pour être toujours prêt à livrer l’application


    Intégration continue




                                                    19
Intégration continue

Gestion de tâches programmées
Intégration
  Avec l'outil de gestion des sources
  Avec l'outil de construction
  Avec l'annuaire projet
  Avec des outils d’analyse de la qualité
  Donc trivial avec un projet Maven !
Remontée d'alertes
  Pour détecter les problèmes au plus tôt
  Et les corriger au plus vite
  Avant qu’ils ne s’empilent


Consultation des rapports


                                                  20
Conclusion



L’agilité ne sous-estime pas l’importance de l’outillage


  Il ne faut pas sur interpréter le principe agile : « Parier sur les
  hommes plutôt que le processus ou l’outillage »
    « Plutôt » ne signifie pas que l’outillage est accessoire


  Les développeurs compétents exigent un outillage
  performant
    « Les bons ouvriers ont de bons outils »




                                                                21

Weitere ähnliche Inhalte

Andere mochten auch

Créez des métriques à la carte avec Custom Metrics
Créez des métriques à la carte avec Custom MetricsCréez des métriques à la carte avec Custom Metrics
Créez des métriques à la carte avec Custom MetricsAT Internet
 
Catalogue Express
Catalogue Express Catalogue Express
Catalogue Express Ikoula
 
Pascua sor Ester Muñoz
Pascua sor Ester MuñozPascua sor Ester Muñoz
Pascua sor Ester MuñozChinca FMA
 
1° gm diapo version web
1° gm diapo version web1° gm diapo version web
1° gm diapo version webCéline Langlet
 
E-logick.com - Emploi Ingénieurs 2.0
E-logick.com - Emploi Ingénieurs 2.0E-logick.com - Emploi Ingénieurs 2.0
E-logick.com - Emploi Ingénieurs 2.0elogick
 
Presentación: Ligia Bolívar, Derechos Humanos
Presentación: Ligia Bolívar, Derechos HumanosPresentación: Ligia Bolívar, Derechos Humanos
Presentación: Ligia Bolívar, Derechos HumanosEspacio Público
 
Rèdais & IED_Moron
Rèdais & IED_MoronRèdais & IED_Moron
Rèdais & IED_MoronRèdais
 
Brochure B-Presenteo
Brochure B-PresenteoBrochure B-Presenteo
Brochure B-PresenteoB-Presenteo
 
3 étapes pour débuter une collaboration avec un assistant virtuel
3 étapes pour débuter une collaboration avec un assistant virtuel3 étapes pour débuter une collaboration avec un assistant virtuel
3 étapes pour débuter une collaboration avec un assistant virtuelSmartelia
 
Psicologia laboral clases 2012 3 a 9 de mayo la vida laboral en perspectiva(1)
Psicologia laboral clases 2012 3 a 9 de mayo la vida laboral en perspectiva(1)Psicologia laboral clases 2012 3 a 9 de mayo la vida laboral en perspectiva(1)
Psicologia laboral clases 2012 3 a 9 de mayo la vida laboral en perspectiva(1)Laboralyorganizacional
 
L&rsquo;île de Bréhat
L&rsquo;île de BréhatL&rsquo;île de Bréhat
L&rsquo;île de BréhatSaqqarah 31
 
Présentation finale 20112012
Présentation finale 20112012Présentation finale 20112012
Présentation finale 20112012Juliane Boistel
 
Effective emails
Effective emailsEffective emails
Effective emailsochursina
 
programme culturel Saint-Louis Oct 2014
programme culturel Saint-Louis Oct 2014programme culturel Saint-Louis Oct 2014
programme culturel Saint-Louis Oct 2014Bâle Région Mag
 
Crowdsourcing and crowdfeeding (french version)
Crowdsourcing and crowdfeeding (french version)Crowdsourcing and crowdfeeding (french version)
Crowdsourcing and crowdfeeding (french version)Anahi Iacucci
 
Atelier eCommerce 1to1 Monaco Mars 2015 (FACT-Finder)
Atelier eCommerce 1to1 Monaco Mars 2015 (FACT-Finder)Atelier eCommerce 1to1 Monaco Mars 2015 (FACT-Finder)
Atelier eCommerce 1to1 Monaco Mars 2015 (FACT-Finder)Christophe Favresse
 
Reseaux sociaux
Reseaux sociauxReseaux sociaux
Reseaux sociauxsondess
 

Andere mochten auch (20)

Créez des métriques à la carte avec Custom Metrics
Créez des métriques à la carte avec Custom MetricsCréez des métriques à la carte avec Custom Metrics
Créez des métriques à la carte avec Custom Metrics
 
FR - Paramétrage : la gestion des règlements
FR - Paramétrage : la gestion des règlementsFR - Paramétrage : la gestion des règlements
FR - Paramétrage : la gestion des règlements
 
Logement abordable S'attaquer aux problèmes
Logement abordableS'attaquer aux problèmesLogement abordableS'attaquer aux problèmes
Logement abordable S'attaquer aux problèmes
 
Catalogue Express
Catalogue Express Catalogue Express
Catalogue Express
 
Pascua sor Ester Muñoz
Pascua sor Ester MuñozPascua sor Ester Muñoz
Pascua sor Ester Muñoz
 
1° gm diapo version web
1° gm diapo version web1° gm diapo version web
1° gm diapo version web
 
E-logick.com - Emploi Ingénieurs 2.0
E-logick.com - Emploi Ingénieurs 2.0E-logick.com - Emploi Ingénieurs 2.0
E-logick.com - Emploi Ingénieurs 2.0
 
Presentación: Ligia Bolívar, Derechos Humanos
Presentación: Ligia Bolívar, Derechos HumanosPresentación: Ligia Bolívar, Derechos Humanos
Presentación: Ligia Bolívar, Derechos Humanos
 
Rèdais & IED_Moron
Rèdais & IED_MoronRèdais & IED_Moron
Rèdais & IED_Moron
 
Brochure B-Presenteo
Brochure B-PresenteoBrochure B-Presenteo
Brochure B-Presenteo
 
3 étapes pour débuter une collaboration avec un assistant virtuel
3 étapes pour débuter une collaboration avec un assistant virtuel3 étapes pour débuter une collaboration avec un assistant virtuel
3 étapes pour débuter une collaboration avec un assistant virtuel
 
Psicologia laboral clases 2012 3 a 9 de mayo la vida laboral en perspectiva(1)
Psicologia laboral clases 2012 3 a 9 de mayo la vida laboral en perspectiva(1)Psicologia laboral clases 2012 3 a 9 de mayo la vida laboral en perspectiva(1)
Psicologia laboral clases 2012 3 a 9 de mayo la vida laboral en perspectiva(1)
 
PascuaB5domingo
PascuaB5domingoPascuaB5domingo
PascuaB5domingo
 
L&rsquo;île de Bréhat
L&rsquo;île de BréhatL&rsquo;île de Bréhat
L&rsquo;île de Bréhat
 
Présentation finale 20112012
Présentation finale 20112012Présentation finale 20112012
Présentation finale 20112012
 
Effective emails
Effective emailsEffective emails
Effective emails
 
programme culturel Saint-Louis Oct 2014
programme culturel Saint-Louis Oct 2014programme culturel Saint-Louis Oct 2014
programme culturel Saint-Louis Oct 2014
 
Crowdsourcing and crowdfeeding (french version)
Crowdsourcing and crowdfeeding (french version)Crowdsourcing and crowdfeeding (french version)
Crowdsourcing and crowdfeeding (french version)
 
Atelier eCommerce 1to1 Monaco Mars 2015 (FACT-Finder)
Atelier eCommerce 1to1 Monaco Mars 2015 (FACT-Finder)Atelier eCommerce 1to1 Monaco Mars 2015 (FACT-Finder)
Atelier eCommerce 1to1 Monaco Mars 2015 (FACT-Finder)
 
Reseaux sociaux
Reseaux sociauxReseaux sociaux
Reseaux sociaux
 

Ähnlich wie 201001 Outillage agile

Les nouveautés de Visual Studio 11
Les nouveautés de Visual Studio 11Les nouveautés de Visual Studio 11
Les nouveautés de Visual Studio 11Microsoft
 
Play : Premiers pas par l'exemple le 120613
Play : Premiers pas par l'exemple le 120613Play : Premiers pas par l'exemple le 120613
Play : Premiers pas par l'exemple le 120613SOAT
 
20151013 - Réduire les coûts des tests de performance ?
20151013 - Réduire les coûts des tests de performance ?20151013 - Réduire les coûts des tests de performance ?
20151013 - Réduire les coûts des tests de performance ?LeClubQualiteLogicielle
 
ALT.Net Juin 2012 - Specflow
ALT.Net Juin 2012 - SpecflowALT.Net Juin 2012 - Specflow
ALT.Net Juin 2012 - SpecflowMathias Kluba
 
Paris Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyParis Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyFrançois Petitit
 
Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29Elapse Technologies
 
Les tests fonctionnels avec Visual Studio 2010
Les tests fonctionnels avec Visual Studio 2010Les tests fonctionnels avec Visual Studio 2010
Les tests fonctionnels avec Visual Studio 2010Microsoft
 
Industrialisez vos projets Php
Industrialisez vos projets Php Industrialisez vos projets Php
Industrialisez vos projets Php ALTER WAY
 
Proposition forge agile 1.0
Proposition forge agile 1.0Proposition forge agile 1.0
Proposition forge agile 1.0Laurent MEURISSE
 
Play Framework
Play FrameworkPlay Framework
Play FrameworkArmaklan
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache MavenArnaud Héritier
 
Développement de plug in sous eclipse
Développement de plug in sous eclipseDéveloppement de plug in sous eclipse
Développement de plug in sous eclipseISIG
 
Presentation tests d'acceptations automatisés sug v1.1
Presentation tests d'acceptations automatisés sug v1.1Presentation tests d'acceptations automatisés sug v1.1
Presentation tests d'acceptations automatisés sug v1.1Jean-Emmanuel Houdu
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptMichael Akbaraly
 
Test driven development v0.2 20121221
Test driven development v0.2 20121221Test driven development v0.2 20121221
Test driven development v0.2 20121221Frédéric Delorme
 
Concept de l’Intégration Continue
Concept de l’Intégration ContinueConcept de l’Intégration Continue
Concept de l’Intégration ContinueFrédéric Sagez
 
Devops for mobile iOS/Android
Devops for mobile iOS/AndroidDevops for mobile iOS/Android
Devops for mobile iOS/AndroidCedric Gatay
 

Ähnlich wie 201001 Outillage agile (20)

Les nouveautés de Visual Studio 11
Les nouveautés de Visual Studio 11Les nouveautés de Visual Studio 11
Les nouveautés de Visual Studio 11
 
Play : Premiers pas par l'exemple le 120613
Play : Premiers pas par l'exemple le 120613Play : Premiers pas par l'exemple le 120613
Play : Premiers pas par l'exemple le 120613
 
20151013 - Réduire les coûts des tests de performance ?
20151013 - Réduire les coûts des tests de performance ?20151013 - Réduire les coûts des tests de performance ?
20151013 - Réduire les coûts des tests de performance ?
 
ALT.Net Juin 2012 - Specflow
ALT.Net Juin 2012 - SpecflowALT.Net Juin 2012 - Specflow
ALT.Net Juin 2012 - Specflow
 
Paris Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyParis Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacy
 
Normandy JUG integration Continue
Normandy JUG integration ContinueNormandy JUG integration Continue
Normandy JUG integration Continue
 
Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29
 
Les tests fonctionnels avec Visual Studio 2010
Les tests fonctionnels avec Visual Studio 2010Les tests fonctionnels avec Visual Studio 2010
Les tests fonctionnels avec Visual Studio 2010
 
Industrialisez vos projets Php
Industrialisez vos projets Php Industrialisez vos projets Php
Industrialisez vos projets Php
 
Proposition forge agile 1.0
Proposition forge agile 1.0Proposition forge agile 1.0
Proposition forge agile 1.0
 
Play Framework
Play FrameworkPlay Framework
Play Framework
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
Développement de plug in sous eclipse
Développement de plug in sous eclipseDéveloppement de plug in sous eclipse
Développement de plug in sous eclipse
 
Presentation tests d'acceptations automatisés sug v1.1
Presentation tests d'acceptations automatisés sug v1.1Presentation tests d'acceptations automatisés sug v1.1
Presentation tests d'acceptations automatisés sug v1.1
 
Dynamic Languages
Dynamic LanguagesDynamic Languages
Dynamic Languages
 
Valider par des tests - Blend
Valider par des tests - BlendValider par des tests - Blend
Valider par des tests - Blend
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascript
 
Test driven development v0.2 20121221
Test driven development v0.2 20121221Test driven development v0.2 20121221
Test driven development v0.2 20121221
 
Concept de l’Intégration Continue
Concept de l’Intégration ContinueConcept de l’Intégration Continue
Concept de l’Intégration Continue
 
Devops for mobile iOS/Android
Devops for mobile iOS/AndroidDevops for mobile iOS/Android
Devops for mobile iOS/Android
 

Mehr von lyonjug

DIY: Analyse statique en Java
DIY: Analyse statique en JavaDIY: Analyse statique en Java
DIY: Analyse statique en Javalyonjug
 
Lightning talk LyonJUG février 2016 - Ansible
Lightning talk LyonJUG février 2016 - AnsibleLightning talk LyonJUG février 2016 - Ansible
Lightning talk LyonJUG février 2016 - Ansiblelyonjug
 
Introduction LyonJUG décembre 2015
Introduction LyonJUG décembre 2015Introduction LyonJUG décembre 2015
Introduction LyonJUG décembre 2015lyonjug
 
Introduction LyonJUG Janvier 2016
Introduction LyonJUG Janvier 2016Introduction LyonJUG Janvier 2016
Introduction LyonJUG Janvier 2016lyonjug
 
Presentation jug novembre2015
Presentation jug novembre2015Presentation jug novembre2015
Presentation jug novembre2015lyonjug
 
201502 - Integration Testing
201502 - Integration Testing201502 - Integration Testing
201502 - Integration Testinglyonjug
 
201311 - Middleware
201311 - Middleware201311 - Middleware
201311 - Middlewarelyonjug
 
201303 - Golo
201303 - Golo201303 - Golo
201303 - Gololyonjug
 
201303 - Java8
201303 - Java8201303 - Java8
201303 - Java8lyonjug
 
201305 - Lambda by R. Forax
201305 - Lambda by R. Forax201305 - Lambda by R. Forax
201305 - Lambda by R. Foraxlyonjug
 
201301 - Focus Neo4j
201301 - Focus Neo4j201301 - Focus Neo4j
201301 - Focus Neo4jlyonjug
 
201301 - Panorama NoSQL
201301 - Panorama NoSQL201301 - Panorama NoSQL
201301 - Panorama NoSQLlyonjug
 
201209 Lombok & Guava
201209 Lombok & Guava201209 Lombok & Guava
201209 Lombok & Guavalyonjug
 
201209 LT Clojure
201209 LT Clojure201209 LT Clojure
201209 LT Clojurelyonjug
 
Spring Batch Workshop (advanced)
Spring Batch Workshop (advanced)Spring Batch Workshop (advanced)
Spring Batch Workshop (advanced)lyonjug
 
Spring Batch Workshop
Spring Batch WorkshopSpring Batch Workshop
Spring Batch Workshoplyonjug
 
Engagement des sociétés d'Ingénierie dans la contribution open source : un ce...
Engagement des sociétés d'Ingénierie dans la contribution open source : un ce...Engagement des sociétés d'Ingénierie dans la contribution open source : un ce...
Engagement des sociétés d'Ingénierie dans la contribution open source : un ce...lyonjug
 
GlassFish, Application versioning et rolling upgrade en haute disponibilité
GlassFish, Application versioning et rolling upgrade en haute disponibilitéGlassFish, Application versioning et rolling upgrade en haute disponibilité
GlassFish, Application versioning et rolling upgrade en haute disponibilitélyonjug
 
Développement dans le cloud - Sacha Labourey
Développement dans le cloud - Sacha LaboureyDéveloppement dans le cloud - Sacha Labourey
Développement dans le cloud - Sacha Laboureylyonjug
 
Présentation Granite ds lyon 2011 par William Draï
Présentation Granite ds lyon 2011 par William DraïPrésentation Granite ds lyon 2011 par William Draï
Présentation Granite ds lyon 2011 par William Draïlyonjug
 

Mehr von lyonjug (20)

DIY: Analyse statique en Java
DIY: Analyse statique en JavaDIY: Analyse statique en Java
DIY: Analyse statique en Java
 
Lightning talk LyonJUG février 2016 - Ansible
Lightning talk LyonJUG février 2016 - AnsibleLightning talk LyonJUG février 2016 - Ansible
Lightning talk LyonJUG février 2016 - Ansible
 
Introduction LyonJUG décembre 2015
Introduction LyonJUG décembre 2015Introduction LyonJUG décembre 2015
Introduction LyonJUG décembre 2015
 
Introduction LyonJUG Janvier 2016
Introduction LyonJUG Janvier 2016Introduction LyonJUG Janvier 2016
Introduction LyonJUG Janvier 2016
 
Presentation jug novembre2015
Presentation jug novembre2015Presentation jug novembre2015
Presentation jug novembre2015
 
201502 - Integration Testing
201502 - Integration Testing201502 - Integration Testing
201502 - Integration Testing
 
201311 - Middleware
201311 - Middleware201311 - Middleware
201311 - Middleware
 
201303 - Golo
201303 - Golo201303 - Golo
201303 - Golo
 
201303 - Java8
201303 - Java8201303 - Java8
201303 - Java8
 
201305 - Lambda by R. Forax
201305 - Lambda by R. Forax201305 - Lambda by R. Forax
201305 - Lambda by R. Forax
 
201301 - Focus Neo4j
201301 - Focus Neo4j201301 - Focus Neo4j
201301 - Focus Neo4j
 
201301 - Panorama NoSQL
201301 - Panorama NoSQL201301 - Panorama NoSQL
201301 - Panorama NoSQL
 
201209 Lombok & Guava
201209 Lombok & Guava201209 Lombok & Guava
201209 Lombok & Guava
 
201209 LT Clojure
201209 LT Clojure201209 LT Clojure
201209 LT Clojure
 
Spring Batch Workshop (advanced)
Spring Batch Workshop (advanced)Spring Batch Workshop (advanced)
Spring Batch Workshop (advanced)
 
Spring Batch Workshop
Spring Batch WorkshopSpring Batch Workshop
Spring Batch Workshop
 
Engagement des sociétés d'Ingénierie dans la contribution open source : un ce...
Engagement des sociétés d'Ingénierie dans la contribution open source : un ce...Engagement des sociétés d'Ingénierie dans la contribution open source : un ce...
Engagement des sociétés d'Ingénierie dans la contribution open source : un ce...
 
GlassFish, Application versioning et rolling upgrade en haute disponibilité
GlassFish, Application versioning et rolling upgrade en haute disponibilitéGlassFish, Application versioning et rolling upgrade en haute disponibilité
GlassFish, Application versioning et rolling upgrade en haute disponibilité
 
Développement dans le cloud - Sacha Labourey
Développement dans le cloud - Sacha LaboureyDéveloppement dans le cloud - Sacha Labourey
Développement dans le cloud - Sacha Labourey
 
Présentation Granite ds lyon 2011 par William Draï
Présentation Granite ds lyon 2011 par William DraïPrésentation Granite ds lyon 2011 par William Draï
Présentation Granite ds lyon 2011 par William Draï
 

201001 Outillage agile

  • 2. Sommaire Introduction Présentation Principes agiles impactant l’outillage Outils collaboratifs Gestion de sources Bug Tracker Pour les développeurs Construction avec Maven Tests avec des Mock Objects Outils d’analyse de code Intégration continue Conclusion 2
  • 3. Présentation Cyril Lacôte Développeur Java - Objet Direct En mission agile chez les Laboratoires Boiron Objet Direct Architecte Objet et Internet Prestations de conseils méthodologiques Partenaire Valtech : formations http://www.objetdirect.com http://blog.objetdirect.com 3
  • 4. Principes agiles impactant l’outillage Principes agiles généraux Accueillir le changement Utiliser un cycle itératif et incrémental Favoriser la communication Pratiques UP Gérer les exigences Modéliser graphiquement Vérifier continuellement la qualité Pratiques XP (mais appliquées aux autres méthodes) Développement piloté par les tests Intégration continue Refactoring Convention de codage
  • 5. L’usine logicielle agile Poste Banalisé Poste d’architecte, Poste de Navigateur analyste, concepteur développeur Bureautique Gestion des exigences Gestion du code Modélisation UML Tests unitaires Plateforme collaborative Gestion de projet Gestion documentaire Gestion de source Gestion de ticket Plateforme d’intégration Plateforme de test Intégration continue Tests d’acceptation Tests Tests de performance Métriques 5
  • 6. Outils collaboratifs : gestion de sources Gestion de sources Référentiel commun Alors que tout le monde travaille en concurrence Avec une gestion de l’historique Pour la traçabilité Et le retour arrière Et des commentaires de commit Et un étiquetage de versions Et des branches pour des développements en parallèle Qu’on peut fusionner SVN
  • 7. Gestion de sources : bonnes pratiques Je me synchroniserai plusieurs fois par jour Je commiterai une fonctionnalité entière J’aurais vérifier qu’elle fonctionne Je renseignerai un commentaire de commit explicite J’y ferai même fait référence au n° de ticket/tâche/bug
  • 8. Outils collaboratifs : Bug Tracker Objectif : Tracer la vie de l’application Comment : Recueillir anomalies, évolutions, tâches Qualifier (criticité, commentaire, capture d’écran, fichier attaché, lien entre tâches, doublons) Affecter à un responsable Suivre dans un workflow Notifier par mail
  • 9. Outils collaboratifs : Bug Tracker Mais aussi suivi de projet Gestion des versions Suivi des imputations Et du reste-à-faire Moteur de recherche Et intégration SVN! JIRA http://opensource.atlassian.com/projects/hibernate/browse/HHH-3949    Payant… mais génial! Sinon : BugZilla, Trac, …
  • 10. Bug Tracker : bonnes pratiques Génial, y’a une StackTrace ! Et les logs correspondants ! Et même un scénario pour reproduire le problème ! J’essaie d’estimer le reste à faire
  • 11. L’outillage des développeurs : IDE Les développeurs… … voudraient automatiser les tâches répétitives Parce qu’ils sont fainéants veulent être productifs Pour générer du code Pour faire du refactoring Pour documenter  IDE Eclipse, NetBeans, IntelliJ : ils sont tous classes!
  • 12. Pour les développeurs : construction Les développeurs… …souhaiteraient automatiser la génération des livrables Pour installer rapidement un poste de développement Pour utiliser une nouvelle librairie super classe Pour déployer 27 fois par jour… …sur des environnements différents… …sans galérer  Outil de construction 12
  • 13. Construction : Maven Maven formalise l’intégration du projet En décrivant le QUOI plutôt que le COMMENT (Ant, anyone?) Sur toutes ses étapes : De l’extraction des sources Jusqu’au déploiement sur les plateformes cibles En centralisant toutes les données du projet : Version, Repository des sources, Dépendances Rapports qualités, Acteurs Et en encourageant de bonnes pratiques : Normalisation de la structure Versionning Exécution des tests automatisés 13
  • 14. Construction : Maven Des avantages, plein : Homogénéise l’intégration Gestion des dépendances Téléchargement automatique des librairies Depuis un référentiel public, ou privé pour plus de contrôle (Archiva) Extensible par des plugins de construction Gérés par Maven, donc disponibles automatiquement Gestion automatisée des versions Incrément, Tag, Branche de maintenance Intégration continue facilitée Mais… Intégration IDE (très) perfectible  Démo Maven 14
  • 15. Tests Les développeurs… … rêveraient d’avoir toute confiance dans leur commit Répondre au besoin, y compris sur ses cas limites Sans introduire de régression  Tests unitaires et d’intégration Inutile d’en rappeler les bénéfices, non ? Passons à l’exemple :  Démo : utilisation de mock objects via EasyMock pour tester unitairement un service métier. 15
  • 16. EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unreg Tests EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unreg class service EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unreg « i n te rfa ce » UserService EA 7.5 Unregisteredl lTrialgVersion + a ccu e i i r(S tri n ) : Use r EA 7.5 Unregistered Trial Version EA 7.5 Unreg EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unreg EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unreg « i n te rfa ce » UserServiceImpl DAO::UserDAO -u se rDA O EA 7.5 Unregisteredi l lTrialgVersion + a ccu e i r(S tri n ) : Use r EA 7.5 Unregistered Trial Version + cre a te (Use r) : vo i d EA 7.5 Unreg + fi n d B yId (l o n g ) : vo i d + fi n d B yNa m e (S tri n g ) : Use r[] EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unreg EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unreg DAO::UserDAOImpl A tester! EA 7.5 Unregistered Trial Version EA 7.5 Unregistered)vo vo i d Version + cre a te (Use r) : Trialid EA 7.5 Unreg + fi n d B yId (l o n g : + fi n d B yNa m e (S tri n g ) : L i st< Use r> [] EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unreg EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unreg 16 EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unreg
  • 17. Outils de mesure de la qualité du code Les développeurs Contrôleraient leur code en permanence Pour qu’il soit maintenable, évolutif, documenté… Grâce à des outils d’analyse Plugins Pour un code… Standard Checkstyle : vérification des conventions de codage Sans bugs courants FindBugs : recherche de bugs courants PMD : recherche de bugs, de code mort Développer un logiciel de qualité 17
  • 18. Outils de mesure de la qualité du code Pour un code… Simple et maintenable JDepend : indicateurs sur le niveau de couplage PMD CPD : recherche de code dupliqué JavaNCSS : complexité cyclomatique et documentation Testé Surefire Report : rapports d'exécution de tests unitaires Cobertura : rapports de couverture de tests Tous ces plugins d’analyse existent pour Maven Démo Et peuvent s’intégrer directement dans les IDE Développer un logiciel de qualité 18
  • 19. Intégration continue Les développeurs… … devraient détecter au plus tôt les régressions Etre notifié quand elles arrivent Pour les corriger quand elles sont fraiches Et avant qu’elles ne s’empilent Pour être toujours prêt à livrer l’application  Intégration continue 19
  • 20. Intégration continue Gestion de tâches programmées Intégration Avec l'outil de gestion des sources Avec l'outil de construction Avec l'annuaire projet Avec des outils d’analyse de la qualité Donc trivial avec un projet Maven ! Remontée d'alertes Pour détecter les problèmes au plus tôt Et les corriger au plus vite Avant qu’ils ne s’empilent Consultation des rapports 20
  • 21. Conclusion L’agilité ne sous-estime pas l’importance de l’outillage Il ne faut pas sur interpréter le principe agile : « Parier sur les hommes plutôt que le processus ou l’outillage » « Plutôt » ne signifie pas que l’outillage est accessoire Les développeurs compétents exigent un outillage performant « Les bons ouvriers ont de bons outils » 21