Ddj Architecture & Design Beyond Functional Requirements On Agile Projects
At2008 Grenoble Hugonnet Sanlaville Public
1. Mise en place d'outils d'ingénierie logicielle pour industrialiser le développement Agile chez Orange Labs Emmanuel Hugonnet Architecture J2EE Silverpeas [email_address] +33-(0)476248658 Rémy Sanlaville Expert Senior en Ingénierie Logicielle Orange Labs [email_address]
3. Pourquoi des outils d’ingénierie logicielle à Orange Labs Services 2006 1982 Infrastructure 2001 1994 1988 Professionnalisation du développement pour offrir des services reconnus et de qualité
7. Build - Définition Le build peut aller de la compilation (incrémentale) à la génération d’un package en passant par la génération de fichiers de source, le lancement de tests (unitaires, d’intégration…), l’analyse du code source, la génération d’un site web et de rapports… D’une certaine manière, le build englobe l’ensemble des actions souhaitées prenant en entrée des fichiers sources pour produire un résultat souhaité. Généralement, nous attendons d’un outil de build qu’il puisse automatiser et optimiser ces actions. Pas de définition précise…
8.
9.
10. Build – Pourquoi Maven 2 ? Les fichiers sources du projet Les fichiers générés du projet Le fichier de description du projet (POM) code source java tests unitaires Conventions plutôt que configuration Standardisation du système de fichiers Facilite le passage d’un projet à un autre, la communication…
11. Build – Pourquoi Maven 2 ? Conventions plutôt que configuration Standardisation du système de fichiers Standardisation du cycle de vie Facilite le passage d’un projet à un autre, la communication…
12. Build – Pourquoi Maven 2 ? Conventions plutôt que configuration Standardisation du système de fichiers Standardisation du cycle de vie Standardisation du site web du projet ... Facilite le passage d’un projet à un autre, la communication…
13. Build – Pourquoi Maven 2 ? Maven suit une approche déclarative et se focalise sur une abstraction de haut niveau du projet appelé le Project Object Model (POM). Un conducteur n'a pas à connaître la mécanique de sa voiture pour conduire Modélisation du build Modélisation vs scripting décrivez ce que vous voulez faire (le quoi) pas le comment ! POM
14. Build – Pourquoi Maven 2 ? Problématique complexe et qui n’est pas toujours bien maîtrisée voir abordée => le changement de version d’une dépendance directe peut devenir une tâche complexe. Maven 2 apporte une aide précieuse même s’il ne résout pas tous les problèmes Graphe de dépendances du plugin scmchangelog-maven-plugin Gestion des dépendances
15. Build – Pourquoi Maven 2 ? … Repositories Release, Snasphot … Automatise la récupération des dépendances, facilite l’intégration continue (les dernières versions sont tout de suite disponibles)… Réutilisation Plugins Template de projet (archétypes) … Améliore la productivité, mise en place de recommandations d’entreprise…
28. L’Intégration Continue … une pratique de développement logiciel où les membres d’une équipe intègrent leur travail fréquemment, habituellement chacun au moins une fois par jour – ce qui entraine plusieurs intégrations par jour. Chaque intégration est validée par un ‘build’ automatique (ce qui inclut les tests) pour détecter les erreurs d’intégration aussi vite que possible ... http://www.martinfowler.com/articles/continuousIntegration.html Martin Fowler
29. Intégration Continue - Problématique Source: http://www.agitar.com/solutions/why_unit_testing.html Les 5% de bugs découverts après la release représentent 95% des coûts de correction Module1 Module2 Modulei Développement Intégration
30. Intégration Continue - Problématique Les 5% de bugs découverts après la release représentent 95% des coûts de correction Détecter au plus tôt les problèmes pour les corriger au plus tôt Module1 Module2 Modulei Développement Intégration Intégration Continue Module1 Module2 Modulei Intégration Intégration Développement Intégration Intégration Intégration Intégration
31.
32.
33. Intégration Continue - Concepts Appel d’actions Evènements de déclenchement Outils de build Outils de build (Ant, Maven 1, Maven 2…) Scripts shell, bash
35. Intégration Continue - Concepts Comment : Mail, Messagerie instantanée, Flux RSS, Widgets, … Qui : Liste de destinataires, plusieurs listes possibles; le(s) dernier(s) comiters Appel d’actions Evènements de déclenchement Quand : Systématiquement après chaque build, Conditionnel (échec, qualité de code…) Rapports Artéfacts Notifications
53. Perspectives Développeur Outils de build Intégration Continue Configurations optimisées pour les tâches d'intégration packaging, tests d'intégration, métriques, site web du projet… Configurations optimisées pour les tâches du développeur hot-deploy, tests unitaires, analyse statique de code… SCM Commit par issue Tracker
54. Perspectives Développeur Intégration Continue SCM Tracker Outils de build le SCM est utilisé comme simple support d'archivage. Le projet n'est pas dans un état stable et ceci est la dernière préoccupation des développeurs. les échecs sont immédiatement corrigés, commits fréquents. http://www.agile-swiss.org/wiki/index.php?title=Integration_continue Mise en place de sondes/capteurs Prévenir plutôt que guérir Est-ce que les développeurs commits régulièrement ?
56. Perspectives Mise en place d'un tableau de bord projet Maîtrise de son projet avancement, qualité… Développeur Intégration Continue SCM Tracker Outils de build