21
Outillage Agile www.objetdirect.com blog.objetdirect.com 1

201001 Outillage agile

  • Upload
    lyonjug

  • View
    438

  • Download
    1

Embed Size (px)

DESCRIPTION

Cyril Lacôte

Citation preview

Page 1: 201001 Outillage agile

Outillage Agile

www.objetdirect.com

blog.objetdirect.com

1

Page 2: 201001 Outillage agile

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

Page 3: 201001 Outillage agile

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

Page 4: 201001 Outillage agile

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

Page 5: 201001 Outillage agile

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

Page 6: 201001 Outillage agile

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

Page 7: 201001 Outillage agile

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

Page 8: 201001 Outillage agile

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

Page 9: 201001 Outillage agile

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, …

Page 10: 201001 Outillage agile

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

Page 11: 201001 Outillage agile

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!

Page 12: 201001 Outillage agile

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

Page 13: 201001 Outillage agile

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

Page 14: 201001 Outillage agile

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

Page 15: 201001 Outillage agile

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

Page 16: 201001 Outillage agile

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!

Page 17: 201001 Outillage agile

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

Page 18: 201001 Outillage agile

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

Page 19: 201001 Outillage agile

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

Page 20: 201001 Outillage agile

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

Page 21: 201001 Outillage agile

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