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