At2008 Grenoble Hugonnet Sanlaville Public
-
Upload
emmanuel-hugonnet -
Category
Documents
-
view
1.150 -
download
0
description
Transcript of At2008 Grenoble Hugonnet Sanlaville Public
Mise en place d'outils d'ingénierie logicielle pour industrialiser le développement Agile chez Orange Labs
Emmanuel HugonnetArchitecture [email protected]+33-(0)476248658
Rémy SanlavilleExpert Senior en Ingénierie Logicielle Orange [email protected]
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 2
Introduction
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 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é
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 4
Outils d’ingénierie logicielle et agilité ?
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 5
Outils d’ingénierie logicielle et agilité ?
L’humain est au premier plan mais il a besoin d’outils pour réaliser au mieux ses tâches.
Les outils ne sont qu’un moyen et pas un but
Les outils pour une démarche d’amélioration continue
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 6
Build
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 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…
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 8
Build - Problématique
Reproductibilité dans le temps et dans l’espace (sans modification du source…)
Les builds aux temps t0, t1, ti… doivent être identiquesPar exemple, il faut pouvoir à tout
moment reproduire le build d’une version taggée
Les builds sur les postes p0, p1, pj, pic… doivent être identiques Par exemple, il faut pouvoir reproduire le build sur
l’ensemble des postes de l’équipe, du serveur d’intégration continue…
Il faut aussi définir ce que veut dire identique…
dans le tempst1 tit0
p0
dans l’espace
p1
pj
pic
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 9
Build - Problématique
Cela paraît simple mais dans les faits c’est une problématique compliquée et nous ne disposons toujours pas de solution qui permette d’assurer cela…
Qu’est-ce qui influence le build ?
Reproductibilité dans le temps et dans l’espace (sans modification du source…)
artefactsbuild
Dépendances
Outils de buildoptions de compilation compilateur…
Plateforme d’exécution
OS
Variables d’environne
ment
Fichiers sources
code sourceressources
Facteurs humains
Ressources externes
xml schéma…wsdl
Repositories mavenBase de données…
…
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 10
Build – Pourquoi Maven 2 ?
Conventions plutôt que configurationStandardisation du système de fichiers
Facilite le passage d’un projet à un autre, la communication…
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
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 11
Build – Pourquoi Maven 2 ?
Conventions plutôt que configurationStandardisation du système de fichiersStandardisation du cycle de vie
Facilite le passage d’un projet à un autre, la communication…
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 12
Build – Pourquoi Maven 2 ?
Conventions plutôt que configurationStandardisation du système de fichiersStandardisation du cycle de vieStandardisation du site web du projet...
Facilite le passage d’un projet à un autre, la communication…
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 13
Build – Pourquoi Maven 2 ?
Modélisation du buildModélisation vs scripting décrivez ce que vous voulez faire (le
quoi) pas le comment !
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
POM
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 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
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 15
Build – Pourquoi Maven 2 ?
RepositoriesRelease, Snasphot…
Automatise la récupération des dépendances, facilite l’intégration continue (les dernières versions sont tout de suite disponibles)…
RéutilisationPluginsTemplate de projet (archétypes)…
Améliore la productivité, mise en place de recommandations d’entreprise…
…
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 16
Central
Build – Plateforme Maven 2 à Orange Labs
Central snapshot
Codehaus
…
pom.xml
<project>
</project>
<repository>
<id>codehaus</id>
<name>codehaus repository</name>
<url>http://repository.codehaus.org/</url>
</repository>
<repositories>
<repository>
<id>apache.snapshot</id>
<name>apache.snapshot repository</name>
<url>http://people.apache.org/maven-snapshot-repository/</url>
</repository>
</repositories>
[…]
[…]
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 17
Proxy Maven 2
Central
Build – Plateforme Maven 2 à Orange Labs
Central snapshot
Codehaus
…
pom.xml
<project>
</project>
Central
setting.xml
<settings>
<mirrors>
<mirror>
<id>FranceTelecomMaven2Proxy</id>
<mirrorOf>central</mirrorOf>
<name>France Telecom Maven2 repositories</name>
<url>https://maven2.rd.francetelecom.fr/proxy/</url>
</mirror>
</mirrors>
[…]
</settings>
Central snapshot
Codehaus
…
inhouse
inhousesnapshot
<parent>
<groupId>com.francetelecom</groupId>
<artifactId>corporate</artifactId>
<version>1.4</version>
</parent>
[…]
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 18
Build – Plateforme Maven 2 à Orange Labs
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 19
Build – Plateforme Maven 2 à Orange Labs
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 20
Build – Plateforme Maven 2 à Orange Labs
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 21
Build – Plateforme Maven 2 à Orange Labs
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 22
Build – Plateforme Maven 2 à Orange Labs
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 23
Build – Plateforme Maven 2 à Orange Labs
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 24
Build – Plateforme Maven 2 à Orange Labs
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 25
Build – Bilan
Maven 2 • On a toujours réussi à mettre en place le processus build même pour des contextes très complexes• Adoption de plus en plus forte de Maven 2 au sein de France Télécom. Les utilisateurs de Maven 2 ne souhaitent pas revenir en arrière• Site web du projet à jour (généré par le serveur d'intégration continue)• Bonnes pratiques plus facile à divulguer (pom, archetypes…)
Plate-forme Maven 2 du Groupe France Télécom• Industrialisation réussie : proxy Maven 2, site web, forum actif, support en place…• Utilisation quotidienne par de nombreux projets• Pas de soucis particuliers (montée en charge, disponibilité… ) juste des demandes d'évolution• Devenu une recommandation au niveau Groupe
Utilisation de la plate-forme Maven 2 sur plusieurs projets industriels et avec de nombreuses technologies (Java/ J2EE, JMS, Web Services, Castor, SSO, IMS, SIP, Osgi, Smart Environment…)Aspects positifs :
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 26
Build – Bilan
Difficultés rencontrés :
Maven 2 • Documentation pas toujours suffisante• Tests d'intégration pas bien pris en compte avec Maven 2.0.x• Gestion des projets multi-modules (release, site web)• Intégration avec Eclipse (difficulté de synchronisation, problème de reproductibilité…)• Philosophie et manière de travailler pas toujours bien comprises/acceptées (problème plutôt humain que technique)
Plate-forme Maven 2 de France Télécom• Industrialisation de Maven 2 : on est parti de zéro sans référence dans le domaine (architecture physique, sauvegarde, proxy Maven 2, contrôle d'accès pour le déploiement, site web codex, support…)• Conflits d'intérêt : vision projet (vision locale) vs cohérence de la plate-forme (vision globale)• Problématique liée à l'évolution de la plate-forme (assurer la compatibilité ascendante)• Ouverture de la plate-forme pour les sociétés externes (Propriété Intellectuelle)
Utilisation de la plate-forme Maven 2 sur plusieurs projets importants et avec de nombreuses technologies (Java/ J2EE, JMS, Web Services, Castor, SSO, IMS, SIP, Osgi, Smart Environment…)
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 27
Intégration Continue
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 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
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 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
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 30
Intégration Continue - Problématique
Détecter au plus tôt les problèmes pour les corriger au plus tôt
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
Intégration Continue
Module1
Module2
Modulei
Intégration Intégration
Développement
Intégration IntégrationIntégrationIntégration
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 31
Intégration Continue - Les enjeux
Corriger les bugs au plus tôt S’assurer que l’intégration de code ‘nouveau’ ne casse pas le composant logiciel.
Améliorer la qualité du code et la cohérence de l’équipe Toute l’équipe avance en parallèle et chacun suit les apports des autres.
Voir en ‘temps réel’ l’état du projet En produisant des rapports et en les diffusant à chaque ‘commit’ toute l’équipe peut suivre l’état d’avancement du projet.
Avoir un logiciel prêt à être déployé Obtenir des ‘builds’ répétables et reproductibles dans le temps et l’espace.
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 32
Intégration Continue - Concepts
Evènements de déclenchement
SCM
Modifications au niveau du gestionnaire de configuration (SCM)
le SCM est scruté périodiquement par le serveur d'IC ("polling" )
le serveur d'IC attend un évènement envoyé par le SC
Intervention humaine sur le serveur d'intégration continue (IC)
Périodiquement
En cascade (le build d'un projet lance le build d'un ou plusieurs autres projets)
API Distante (Web Service, Jabber...)
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 33
Intégration Continue - Concepts
Appel d’actionsEvènements de déclenchement
Outils de build
Outils de build (Ant, Maven 1, Maven 2…)
Scripts shell, bash
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 34
Intégration Continue - Concepts
Evènements de déclenchement
Rapports
Artéfacts
Notifications
Appel d’actions
Comment : Mail, Messagerie instantanée, Flux RSS, Widgets, …
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 35
Intégration Continue - Concepts
Evènements de déclenchement
Comment : Mail, Messagerie instantanée, Flux RSS, Widgets, …
Quand : Systématiquement après chaque build, Conditionnel (échec, qualité de code…)
Qui : Liste de destinataires, plusieurs listes possibles; le(s) dernier(s) comiters
Appel d’actions
Rapports
Artéfacts
Notifications
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 36
Intégration Continue - Concepts*
Evènements de déclenchement Appel d’actions
Rapports
Artéfacts
Notifications
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 37
Intégration Continue - Workflow
Développeur
checkout, update
Intégration Continue
construitdéploietesteanalyse
informe
Rapports
Artéfacts
Notifications
développetestecompile
Outils de build
checkout, commit, update, merge
SCM
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 38
Intégration Continue - Problématique
Problématique : améliorer la productivité des développeurs
2'
4'
1'
10'
x'
compilation
tests unitaires
packaging
site web
8'tests d'intégration
…
2'
4'
1'
10'
x'
compilation
tests unitaires
packaging
site web
8'tests d'intégration
…
2'
4'
1'
10'
x'
compilation
tests unitaires
packaging
site web
8'tests d'intégration
…
x 40
x 20
x 1
x 0
x 0
x …
x 25
x 25
x 1
x 1
x 2
x …
x 45
x 10
x 1
x 0
x 0
x …
2'
4'
1'
10'
x'
compilation
tests unitaires
packaging
site web
8'tests d'intégration
…
2'
4'
1'
10'
x'
compilation
tests unitaires
packaging
site web
8'tests d'intégration
…
2'
4'
1'
10'
x'
compilation
tests unitaires
packaging
site web
8'tests d'intégration
…
x 30
x 15
x 5
x 2
x 2
x …
x 20
x 20
x 3
x 1
x 4
x …
x 35
x 5
x 5
x 0
x 0
x …
2'
4'
1'
10'
x'
compilation
tests unitaires
packaging
site web
8'tests d'intégration
…
x 20
x 20
x 15
x 2
x 15
x …
Intégration Continue
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 39
Intégration Continue à Orange Labs
Objectifs
– Choix d'un serveur d'intégration continue à recommander
– Mise en place de bonnes pratiques ainsi qu'un support
– Mise en pratique sur les projets
– Faciliter la mise en place d'un serveur d'intégration continue dès le lancement du projet
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 40
Intégration Continue à Orange Labs
Choix d'un serveur d'intégration continue
– Réalisation d'une grille d'évaluation
– Audits de 10 projets pour remplir la grille et pour identifier les différentes pratiques
Hudson
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 41
Intégration Continue à Orange Labs
Assurer la traçabilité
– Lancer le build à chaque modification du SCM pour savoir quel est le commit qui a posé problème
– Commiter très fréquemment (une modification = un commit) pour identifier quelle modification, quel(s) fichier(s) sont à l'origine du problème
– Disposer de builds rapides (max 15 minutes)– Disposer d'un serveur puissant : gains partagés par l’ensemble de l’équipe
Assurer la reproductibilité
– La référence est la machine d’intégration : plus de « ça marche chez moi » !!!
– Mise en place d'un " Nightly Build" qui repart de zéro (checkout complet du SCM, suppression du repository local de maven 2…)
Avoir le souci du produit fini
– Valoriser les rapports et intégrer la qualité dans la notion de "terminé"– Artéfacts prêts à être déployés et validés sur l(es)'environnement(s) cible(s) – Disposer d'une version de démonstration la plus à jour possible
Bonnes pratiques
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 42 Orange Labs - Recherche & Développement - titre de la présentation – date
Retour Projets
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 43
Retour d'expériences – Améliorer la qualité
• Détecter les problèmes au plus tôt pour les corriger au plus tôt
• Améliorer la qualité
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 44
Retour d'expériences – Améliorer la qualité
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 45
Retour d'expériences – Améliorer la qualité
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 46
Retour d'expériences - Documentation à jour
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 47
Retour d'expériences - Documentation à jour
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 48
Retour d'expériences - Documentation à jour
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 49
Bilan et Perspectives
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 50
Bilan - Agilité
On passe de la compilation continue à l’exécution continue vers la production continue
Manifesto for Agile Software Development
Automatisation des tâches répétitivesIndividuals and interactions over processes and tools
Le logiciel est bien validé et testé en exécutionWorking software over comprehensive documentation
Transparence et visibilité : des rapports visibles par tous Customer collaboration over contract negotiation
Intégration continue des changements en réduisant les risques Responding to change over following a plan
La qualité est traitée comme un élément à part entièreCraftmanship over Execution
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 51
Bilan – Oranges Labs
Industrialisation d’outils d’ingénierie logicielle (build, intégration continue, gestion de configuration…) réussie
Recommandation au niveau du groupe France Télécom (Orange Labs, ROSI, Orange Business Services…)
Mise en place de bonnes pratiques qui sont suivies et qui ont une influence bénéfique sur les projets
Les projets sont demandeurs pour utiliser ce qui a été mis en place et souhaitent aller plus loin
Initialisation d'une chaîne globale d’outils d’ingénierie logicielle
1 outil + 1 outil > 2 outils
L’ingénierie logicielle rentre dans la culture d’entreprise
Aspects positifs
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 52
Bilan – Oranges Labs
Beaucoup de travaux à mener en parallèle et à coordonner (Build, Intégration Continue, Analyse statique de code, Gestion de configuration, Virtualisation, Tests, Gestion des exigences….)
Certains sujets comme les rapports/métriques sont difficiles à conceptualiser et demandent beaucoup de temps et d’expériences
Industrialiser un outil demande un travail important et beaucoup de compétences
Prise en compte de l’ensemble des contraintes du groupe France Télécom
Difficultés rencontrés
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 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
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 54
Perspectives
Développeur
Intégration Continue
SCM TrackerOutils 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 ?
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 55
Perspectives
Développeur
Intégration Continue
SCM TrackerOutils de build
Mise en place de sondes/capteurs Prévenir plutôt que guérir
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 56
Développeur
Intégration Continue
SCM TrackerOutils de build
Perspectives
Mise en place d'un tableau de bord projet Maîtrise de son projet avancement,
qualité…
Oui c’est possible !!!
Orange Labs - Agile Tour Grenoble 200809 Octobre 2008 58
Questions?