l'intégration continue & agilité…
TRANSCRIPT
L’Intégration Continue & Agilité…
" …des outils efficaces. "
17/03/2010 Agile Nantes
Agile NANTES-
Mars 2010
Introduction
Fabian PIAU – [email protected]énieur développement chez NETAPSYSDiplômé MIAGE Nantes 2009
Sébastien ROUL – [email protected] NETAPSYS Atlantique15 ans de développementCo-fondateur : www.nantes-jug.org
17/03/2010 Agile Nantes 2|26
Qui sommes nous ?
Sommaire
Problématique
Agilité et Intégration ContinueLes conceptsFonctionnement généralLes outils utilisés chez Netapsys
Retour d’expérienceVision DéveloppeurVision Chef de projet
Conclusion
17/03/2010 Agile Nantes 3|26
17/03/2010 Agile Nantes 4|26
De qualitéAvec le moins de bogues possibles (encore moins des régressions…)Complètement testé (idéalement…)En assurant une maintenance facile à long terme
Dans un temps restreintLe plus rapidementMise en commun du développement Plusieurs personnes Besoin d’intégrerRéutiliser des composants existants Développement modulaire
Avec un suivi rigoureuxTransparence pour le clientRétroaction
Livrer un logiciel
Problématique
17/03/2010 Agile Nantes 5|26
Des principesAccepter le changement et l’accueillir favorablementApprendre à apprendreViser l’excellence techniqueRemettre en cause les pratiques régulièrement
Des valeursLa communication et la transparenceLe courage et la responsabilitéLa solidarité et l’esprit d’équipeL’humilitéLa rétroactionLa simplicité
Un outil : L’Agilité
Outils
17/03/2010 Agile Nantes 6|26
Une méthode agile ☺Principe: plus l’intégration est fréquente, moins elle est longue
Sans IC
Avec IC
Un autre outil : l’intégration Continue (IC)
Outils
17/03/2010 Agile Nantes 7|26
Fonctionnementgénéral
Tout changement du code d’un logiciel est immédiatement pris en compte par une construction automatique d’intégration
Intégration Continue
17/03/2010 Agile Nantes 8|26
Chargement de la dernière version du projet depuis le gestionnaire de version
Compilation
Exécution des tests unitaires
Inspection du code (en vue de générer les métriques de qualité)Génération de la documentation, des rapports, des notes de release (par exemple la Javadoc, rapport Checkstyle)
Construction de la release
Déploiement de l’application sur l'environnement d’intégration
Exécution des tests d'intégration
Construire des builds tous les jours…
Intégration Continue
17/03/2010 Agile Nantes 9|26
Build local / privéJ’exécute un build sur ma machine
CompilationTests unitaires
Build d’intégrationLe serveur d’intégration exécute un build
Idem build local
Build de nuitLe serveur exécute un build complet
+ Tests d’intégration+ Documentation, rapports, métriques+ Release / Déploiement
…Mais des builds différents!
Intégration Continue
17/03/2010 Agile Nantes 10|26
Un gestionnaire de versions SVN
Gestionnaire de dépendances, buildingMaven
Tests unitairesjUnit, Mockito, Eclemma
Un serveur d’intégration continueHudson
Repository managerArtifactory
Outils de qualimétrieSonar
Les outils utilisés
Exemples d’outils
17/03/2010 Agile Nantes 11|26
Hudson, la « météo » de l’intégration continueUn onglet = un projetDifférents types de build par projet
Hudson
Les outils utilisés
17/03/2010 Agile Nantes 12|26
Hudson
Le plugin Chuck…
17/03/2010 Agile Nantes 13|26
Configuration d’un buildScrutage du SVN
Hudson
Les outils utilisés
17/03/2010 Agile Nantes 14|26
Configuration d’un buildLa commande Maven à lancer, les notifications par email, etc.
Hudson
Les outils utilisés
17/03/2010 Agile Nantes 15|26
Build de nuitUtilisé pour la génération du Maven site
Maven
Les outils utilisés
17/03/2010 Agile Nantes 16|26
Sonar – Suivi qualité
Sonar
Les outils utilisés
17/03/2010 Agile Nantes 17|26
Sonar
17/03/2010 Agile Nantes 18|26
Sonar
Réduction du temps de correction des boguesOn intègre nos modifications régulièrementEn cas de build en échec, la portion de code à débugger est faible
Amélioration du travail collaboratifLa fin du « Ca marche sur mon poste pourtant ! »Confiance entre le développeur et le logiciel
Le code et le design de l’application répondent aux exigences des standards, le résultat du build est un produit complètement fonctionnel et testable
L’IC encourage des bonnes habitudes de test
17/03/2010 Agile Nantes 19|26
Vision Développeur
IC au quotidien
L’exécution régulière des tests et des outils d’inspection permettent de recueillir les informations pour l’évaluation de la complexité, la détection des codes potentiellement « malicieux »,…
Taux de couvertureTaux de duplicationRespect des conformités de Checkstyle
Sonar génère une compilation de tous ces rapports en prenant en compte la notion d’historique
17/03/2010 Agile Nantes 20|26
Vision Développeur
Checkstyle, PMD Respect des règles de codage et des bonnes pratiquesCPD, Simian Contrôle l’absence de copier/collerJDepend Analyse de dépendance et respect des règles
d’architectureJNCSS Contrôle de la complexité cyclomatique et de la
documentation technique
IC au quotidien
L’intégration continue permet d’obtenir automatiquement des indicateurs d’avancement et d’état qualitatif d’un projet en cours de développement
L’objectif de la construction d’intégration est de produire un logiciel exécutable qui peut être déployé et testé fonctionnellement. Une démonstration avec le client est toujours possible
Les outils d’assurance qualité participent au contrôle des risques :► Risque de faible qualité logiciel► Risque de découverte tardive des défauts
17/03/2010 Agile Nantes 21|26
Vision Chef de projet
IC au quotidien
Sonar, un outil central
► Permet d’avoir une meilleure visibilité du projet. Il participe à la rétroaction
► Synthétise les indicateurs d’assurance qualité produits par la construction Maven et fournit une vision chronologique de l’évolution du logiciel
► Sonar est le tableau de bord de l’état technique et qualitatif de l’ensemble des projets de l’entreprise
17/03/2010 Agile Nantes 22|26
Vision Chef de projet
IC au quotidien
Exemple de graphiques
17/03/2010 Agile Nantes 23|26
17/03/2010 Agile Nantes 24|26
Pilotage / Suivi► L’intégration continue est devenue un outil fondamental pour le pilotage
de nos projets : elle nous apporte plus de visibilité
Qualité / Productivité► L’intégration continue est un formidable levier d’amélioration de notre
niveau d’expertise technique : elle est l’un des moteurs de nos gains en termes de qualité et de productivité
Transparence / Rétroaction► L’intégration continue est un élément différenciant par rapport à nos
concurrents : elle est révélatrice de notre positionnement stratégique
Vision Chef de projet
IC au quotidien
Au sein de Netapsys
Agile Nantes
Intégration continue mis en place depuis deux ans sur l’ensemble des projets.
Tous les nouveaux projets sont systématiquement « mavenisés » et mis sous Hudson.
Une fois mise en place, l’intégration continue n’est pas quelque chose de « figée »
Evolution sur l’intégration continue en 2010 : Actuellement: tests unitaires avec JUnit sur les projetsMise en place de tests intégration et scénarios métier avec Sélénium
17/03/2010 25|26
La suite
Le mot de la fin
Agile Nantes
Pour aller plus loin
http://martinfowler.com/articles/continuousIntegration.htmlhttps://hudson.dev.java.net/http://sonar.codehaus.org/http://maven.apache.org/
Vous pouvez consulter un dossier sur l’IC sur mon blog technique :http://carmaworld.free.fr/blog/?p=49
Vos questions
17/03/2010 26|26