201001 outillage agile
Post on 21-Jun-2015
438 Views
Preview:
DESCRIPTION
TRANSCRIPT
Outillage Agile
www.objetdirect.com
blog.objetdirect.com
1
2
Sommaire
IntroductionPrésentationPrincipes agiles impactant l’outillage
Outils collaboratifsGestion de sourcesBug Tracker
Pour les développeursConstruction avec MavenTests avec des Mock ObjectsOutils d’analyse de codeIntégration continue
Conclusion
3
Présentation
Cyril LacôteDéveloppeur Java - Objet Direct
En mission agile chez les Laboratoires Boiron
Objet DirectArchitecte Objet et Internet
Prestations de conseils méthodologiques
Partenaire Valtech : formationshttp://www.objetdirect.comhttp://blog.objetdirect.com
Principes agiles impactant l’outillage
Principes agiles générauxAccueillir le changementUtiliser un cycle itératif et incrémentalFavoriser la communication
Pratiques UPGérer les exigencesModéliser graphiquementVérifier continuellement la qualité
Pratiques XP (mais appliquées aux autres méthodes)Développement piloté par les testsIntégration continueRefactoringConvention de codage
Plateforme collaborativeGestion de projet
Gestion documentaireGestion de sourceGestion de ticket
L’usine logicielle agile
5
Poste d’architecte, analyste, concepteurGestion des exigences
Modélisation UML
Poste de développeur
Gestion du codeTests unitaires
Plateforme d’intégrationIntégration continue
TestsMétriques
Poste BanaliséNavigateurBureautique
Plateforme de testTests d’acceptation
Tests de performance
Outils collaboratifs : gestion de sources
Gestion de sourcesRéférentiel commun
Alors que tout le monde travaille en concurrence
Avec une gestion de l’historiquePour 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âchesQualifier (criticité, commentaire, capture d’écran, fichier attaché, lien entre tâches, doublons)Affecter à un responsableSuivre dans un workflowNotifier par mail
Outils collaboratifs : Bug Tracker
Mais aussi suivi de projetGestion des versionsSuivi des imputationsEt du reste-à-faireMoteur de rechercheEt 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 productifsPour générer du codePour faire du refactoringPour 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éveloppementPour utiliser une nouvelle librairie super classePour 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 projetEn décrivant le QUOI plutôt que le COMMENT (Ant, anyone?)
Sur toutes ses étapes :De l’extraction des sourcesJusqu’au déploiement sur les plateformes cibles
En centralisant toutes les données du projet :Version, Repository des sources, DépendancesRapports qualités, Acteurs
Et en encourageant de bonnes pratiques :Normalisation de la structureVersionningExécution des tests automatisés
13
Construction : Maven
Des avantages, plein :Homogénéise l’intégrationGestion des dépendances
Téléchargement automatique des librairiesDepuis un référentiel public, ou privé pour plus de contrôle (Archiva)
Extensible par des plugins de constructionGérés par Maven, donc disponibles automatiquement
Gestion automatisée des versionsIncré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 limitesSans 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
class service
EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version
EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version
EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version
EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version
EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version
EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version
EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version
EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version
EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version
EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version
EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version
EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version
EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version
EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version
EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version
EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version
EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version
EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version
EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version
EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version
EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version
EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version
EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version
EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version
EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version
EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version
EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version
EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version
EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version
EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version
EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version
EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version EA 7.5 Unregistered Trial Version
UserServiceImpl
+ a ccu e i l l i r(S tri ng ) : Use r
« in te rface »UserService
+ a ccu e i l l i r(S tri ng ) : Use r
« in te rface»DAO::UserDAO
+ cre a te (Use r) : vo id+ fi n dB yId (long ) : vo id+ fi n dB yNam e(S tri ng ) : Use r[]
DAO::UserDAOImpl
+ cre a te (Use r) : vo id+ fin dB yId (lon g ) : vo id+ fin dB yNa m e(S trin g ) : L ist<Use r> []
-use rDA O
Tests
16
A tester!
Développer un logiciel de qualité 17
Outils de mesure de la qualité du code
Les développeursContrô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 courantsFindBugs : recherche de bugs courants PMD : recherche de bugs, de code mort
Développer un logiciel de qualité 18
Outils de mesure de la qualité du code
Pour un code…Simple et maintenable
JDepend : indicateurs sur le niveau de couplagePMD CPD : recherche de code dupliquéJavaNCSS : complexité cyclomatique et documentation
Testé Surefire Report : rapports d'exécution de tests unitairesCobertura : rapports de couverture de tests
Tous ces plugins d’analyse existent pour Maven
Démo
Et peuvent s’intégrer directement dans les IDE
Intégration continue
Les développeurs…… devraient détecter au plus tôt les régressions
Etre notifié quand elles arriventPour les corriger quand elles sont fraichesEt avant qu’elles ne s’empilentPour être toujours prêt à livrer l’application
Intégration continue
19
Intégration continue
Gestion de tâches programmées
IntégrationAvec 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'alertesPour 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
top related