usine logicielle à orange labs
Post on 22-Apr-2015
8.194 Views
Preview:
DESCRIPTION
TRANSCRIPT
De l’atelier à l’usine logicielleEnjeux et Retour d’expérience d’Orange Labs
Emmanuel HugonnetArchitecture J2EESilverpeasemmanuel.hugonnet@silverpeas.com+33-(0)476248658
Rémy SanlavilleExpert Senior en Ingénierie Logicielle Orange Labsremy.sanlaville@orange-ftgroup.com
Orange Labs - XP Days France26 Mai 2009 2
Introduction
Orange Labs - XP Days France26 Mai 2009 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, de
qualité et répondant aux besoins de nos clients
Orange Labs - XP Days France26 Mai 2009 4
De l’atelier à l’usine logicielle
Professionnalisation du développement : une nouvelle révolution industrielle ?
Reproductible
Formation - Communication
…
Qualité
Réduire les coûts
Réduire le temps de production (Time To Market)
Orange Labs - XP Days France26 Mai 2009 5
Build
Orange Labs - XP Days France26 Mai 2009 6
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…
build
artefacts
source
Orange Labs - XP Days France26 Mai 2009 7
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 - XP Days France26 Mai 2009 8
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…)
Dépendances
Outils de buildoptions de compilation compilateur…
Plateforme d’exécution
OS
Variables d’environne
ment
Ressources externes
xml schéma…wsdl
Repositories mavenBase de données…
…
Fichiers sources
code sourceressources
artefacts
build
Facteurs humains
Orange Labs - XP Days France26 Mai 2009 9
Intégration Continue
Orange Labs - XP Days France26 Mai 2009 10
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 - XP Days France26 Mai 2009 11
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 - XP Days France26 Mai 2009 12
Intégration Continue - Problématique
Détecter au plus tôt les problèmes pour les corriger au plus tôt
Intégration Continue
Module1
Module2
Modulei
Intégration Intégration
Développement
Intégration IntégrationIntégration Intégration
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 - XP Days France26 Mai 2009 13
Reproductibilité
Orange Labs - XP Days France26 Mai 2009 14
SCM
Développeur
Usine Logicielle : Reproductibilité
DéveloppeurIntégrationContinue
gestion des dépendance
sNightly Build
Avoir un logiciel (toujours) prêt à être déployé Obtenir des builds reproductibles dans le temps et l’espace
La référence est la machine d’intégration : plus de « ça marche chez moi » !!!
Outils de buildbuild
automatisé
Orange Labs - XP Days France26 Mai 2009 15
Productivité
Orange Labs - XP Days France26 Mai 2009 16
Usine Logicielle : Productivité
cycl
e d
e v
ie d
u b
uild
compilation
tests unitaires
packaging
tests d'intégration
…
site web
temps d'exécution
Comment concilier complétude (source et build) et temps d'exécution ?
code source
classes modules projet …
productivité
détection au plus tôt
Orange Labs - XP Days France26 Mai 2009 17
Usine Logicielle : Productivité
complétude vs temps d'exécution
Développeur
Outils de build
IntégrationContinue
Configurations optimisées pour les tâches d'intégration
packaging, tests d'intégration, métriques, site web du projet…
Vision "globale"
complétudetemps d'exécution
Configurations optimisées pour les tâches du développeur
hot-deploy, tests unitaires, analyse statique de code…
Vision "locale"
temps d'exécutioncomplétude
Orange Labs - XP Days France26 Mai 2009 18
Usine Logicielle : Productivité
complétude vs temps d'exécution
Outils de build
Développeur
Développeur
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 …
2'
4'
1'
10'
x'
compilation
tests unitaires
packaging
site web
8'tests d'intégration
…
x 20
x 20
x 3
x 1
x 4
x …
IntégrationContinue
Orange Labs - XP Days France26 Mai 2009 19
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 …
Usine Logicielle : Productivité
complétude vs temps d'exécution
Développeur
Outils de build
2'
4'
1'
10'
x'
compilation
tests unitaires
packaging
site web
8'tests d'intégration
…
x 20
x 20
x 3
x 1
x 4
x …
IntégrationContinue
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 …
Développeur
Orange Labs - XP Days France26 Mai 2009 20
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 …
Usine Logicielle : Productivité
complétude vs temps d'exécution
Développeur
Outils de build2'
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 …
2'
4'
1'
10'
x'
compilation
tests unitaires
packaging
site web
8'tests d'intégration
…
x 25
x 25
x 1
x 1
x 2
x …
IntégrationContinue
Développeur
productivité
complétude
Orange Labs - XP Days France26 Mai 2009 21
Usine Logicielle : Productivité
Détecter et corriger les bugs au plus tôt S’assurer que l’intégration de code ‘nouveau’ ne casse pas le composant logiciel
IntégrationContinue
SCM
Outils de build
Développeur
Développeurun build partiel à chaque commit
un build complet au moins une fois par jour
productivité
complétude
Orange Labs - XP Days France26 Mai 2009 22
Usine Logicielle : Productivité
Outils de build
Développeur
Développeur
IntégrationContinue
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
SCM
de la compilation à la synchronisation continue
détection au plus tôt
Orange Labs - XP Days France26 Mai 2009 23
Traçabilité
Orange Labs - XP Days France26 Mai 2009 24
Usine Logicielle : Traçabilité
SCM
Outils de build
DéveloppeurIntégrationContinue
Savoir ce qui a été fait et pourquoi
Tracker
Commit par issue
scmchangelog-maven-plugin
bugs
Orange Labs - XP Days France26 Mai 2009 25
Qualité
Orange Labs - XP Days France26 Mai 2009 26
Usine Logicielle : Qualité
Voir en ‘temps réel’ l’état du projet En produisant des rapports régulièrement toute l’équipe peut suivre l’état d’avancement du projet
Tableau de bord
analyse statiquecouverture de codeduplication de code…
SCM
Outils de build
DéveloppeurIntégrationContinue
Orange Labs - XP Days France26 Mai 2009 27
Usine Logicielle : Qualité
Voir en ‘temps réel’ l’état du projet En produisant des rapports régulièrement toute l’équipe peut suivre l’état d’avancement du projet
SCM
Outils de build
DéveloppeurIntégrationContinue
Tableau de bord
analyse statiquecouverture de codeduplication de code…
Partage de la configuration des outils (version, fichiers de règles…)
Orange Labs - XP Days France26 Mai 2009 28
Usine Logicielle : Qualité
SCM
Outils de build
DéveloppeurIntégrationContinue
Voir en ‘temps réel’ l’état du projet
Tableau de bord
analyse statiquecouverture de codeduplication de code…
Où trouver l'information ?
SONARPLUGINS-2
MPIR-149
Orange Labs - XP Days France26 Mai 2009 29
Méthodologie
Orange Labs - XP Days France26 Mai 2009 30
Usine Logicielle : Méthodologie
Il ne suffit pas de disposer d'outils très performants pour savoir les utiliser
Communiquer sur la méthodologie et les bonnes pratiquesAccompagner les projets : prise en compte du contexte et de la maturité des équipes
Culture d'entreprise sur les outils d'ingénierie logicielle
, à bon escient
Orange Labs - XP Days France26 Mai 2009 31
Usine Logicielle : Bonnes Pratiques
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 et de qualité
– Intégration continue = Stop the Line du logiciel– 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
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
Orange Labs - XP Days France26 Mai 2009 32
Travaux en cours
Orange Labs - XP Days France26 Mai 2009 33
Développeur
Usine Logicielle : Productivité
Faciliter l'instanciation et la configuration des environnements
Tracker
SCM
IntégrationContinue
Développeur
Tableau de bord
intégration
QA
…
Industrialiser l'instanciation d'un nouveau projet
Gérer les utilisateurs et leurs droits d'accès
Gérer la cohérence de propriétés/contraintes sur l'ensemble de la chaîne
Orange Labs - XP Days France26 Mai 2009 34
Forge Logicielle
Développeur
Tracker
Usine Logicielle : Forge Logicielle
SCM
IntégrationContinue
Outils de build
DéveloppeurTableau de bord
Coclico
Orange Labs - XP Days France26 Mai 2009 35
Usine Logicielle : Forge Logicielle
Décrire le quoi (ce que l'on souhaite faire) plutôt que le comment
niveauréalisation
pom
scripting
niveaumodélisation
Orange Labs - XP Days France26 Mai 2009 36
Préparer la livraison pour la version souhaitée
Usine Logicielle : Forge Logicielle
Décrire le quoi (ce que l'on souhaite faire) plutôt que le commentExemple : que signifie faire une release au niveau d'une usine logicielle ?
gestion des tickets ouverts pour la version à releaser
Tracker
gestion des versions dans les pom pour maven 2
niveauréalisation
niveaumodélisation
Orange Labs - XP Days France26 Mai 2009 37
Fabriquer le livrable pour la version souhaitée
Préparer la livraison pour la version souhaitée
Usine Logicielle : Forge Logicielle
Décrire le quoi (ce que l'on souhaite faire) plutôt que le commentExemple : que signifie faire une release au niveau d'une usine logicielle ?
niveauréalisation
niveaumodélisation
tags sur la gestion de conf
SCM
changelog de la version
mise à disposition de la livraison
Orange Labs - XP Days France26 Mai 2009 38
Initialisation de la maintenance pour la version qui vient d'être créée
Préparer la livraison pour la version souhaitéeFabriquer le livrable pour la version souhaitée
Usine Logicielle : Forge Logicielle
Décrire le quoi (ce que l'on souhaite faire) plutôt que le commentExemple : que signifie faire une release au niveau d'une usine logicielle ?
niveauréalisation
niveaumodélisation
fixer la version au niveau du tracker
Tracker
[optionel] créer une branche de maintenance
SCM
[optionel] créer une liste de diffusion pour la branche de maintenance
Orange Labs - XP Days France26 Mai 2009 39
Initialisation de l'espace de travail pour la nouvelle version souhaitée
Préparer la livraison pour la version souhaitéeFabriquer le livrable pour la version souhaitéeInitialisation de la maintenance pour la version qui vient d'être créée
Usine Logicielle : Forge Logicielle
Décrire le quoi (ce que l'on souhaite faire) plutôt que le commentExemple : que signifie faire une release au niveau d'une usine logicielle ?
niveauréalisation
niveaumodélisation
ajout de la nouvelle version au niveau du tracker
Tracker
gestion des versions dans les pom pour maven 2
Orange Labs - XP Days France26 Mai 2009 40
Usine Logicielle : Forge Logicielle
Décrire le quoi (ce que l'on souhaite faire) plutôt que le commentExemple : que signifie faire une release au niveau d'une usine logicielle ?
Préparer la livraison pour la version souhaitée
niveauréalisation
niveaumodélisation
Fabriquer le livrable pour la version souhaitéeInitialisation de la maintenance pour la version qui vient d'être crééeInitialisation de l'espace de travail pour la nouvelle version souhaitée
Notification
Annonce de la disponibilité de la nouvelle version (mail, nouveautés sur la forge logicielle…)
Orange Labs - XP Days France26 Mai 2009 41
Bilan et Perspectives
Orange Labs - XP Days France26 Mai 2009 42
Bilan – Orange 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, DDSI, 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 se renforce dans la culture d’entreprise
Aspects positifs
Orange Labs - XP Days France26 Mai 2009 43
Bilan – Orange 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 de la taille d'un groupe comme France Télécom
Difficultés rencontrées
Orange Labs - XP Days France26 Mai 2009 44
Forge Logicielle
Développeur
Tracker
Perspectives
SCM
IntégrationContinue
Outils de build
Développeur
Suivi de Projet
Tableau de bord
Gestion de Projet
Coclico
Orange Labs - XP Days France26 Mai 2009 45
Perspectives
DéveloppementMOASoigner sa schizophrénie projet MOA / MOEvoyage autour des exigences fonctionnelles exécutables
Prendre en compte le cycle de vie complet
Hébergement
Virtualisation…
Orange Labs - XP Days France26 Mai 2009 46
Questions?
top related