usine logicielle à orange labs

46
De l’atelier à l’usine logicielle Enjeux et Retour d’expérience d’Orange Labs Emmanuel Hugonnet Architecture J2EE Silverpeas emmanuel.hugonnet@silverpea s.com +33-(0)476248658 Rémy Sanlaville Expert Senior en Ingénierie Logicielle Orange Labs remy.sanlaville@orange-ftgroup .com

Upload: emmanuel-hugonnet

Post on 22-Apr-2015

8.197 views

Category:

Technology


5 download

DESCRIPTION

Présentation sur l'avancée de l'usine logicielle chez Orange Labs

TRANSCRIPT

Page 1: Usine logicielle à Orange Labs

De l’atelier à l’usine logicielleEnjeux et Retour d’expérience d’Orange Labs

Emmanuel HugonnetArchitecture [email protected]+33-(0)476248658

Rémy SanlavilleExpert Senior en Ingénierie Logicielle  Orange [email protected]

Page 2: Usine logicielle à Orange Labs

Orange Labs - XP Days France26 Mai 2009 2

Introduction

Page 3: Usine logicielle à Orange Labs

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

Page 4: Usine logicielle à Orange Labs

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)

Page 5: Usine logicielle à Orange Labs

Orange Labs - XP Days France26 Mai 2009 5

Build

Page 6: Usine logicielle à Orange Labs

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

Page 7: Usine logicielle à Orange Labs

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

Page 8: Usine logicielle à Orange Labs

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

Page 9: Usine logicielle à Orange Labs

Orange Labs - XP Days France26 Mai 2009 9

Intégration Continue

Page 10: Usine logicielle à Orange Labs

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

Page 11: Usine logicielle à Orange Labs

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

Page 12: Usine logicielle à Orange Labs

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

Page 13: Usine logicielle à Orange Labs

Orange Labs - XP Days France26 Mai 2009 13

Reproductibilité

Page 14: Usine logicielle à Orange Labs

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é

Page 15: Usine logicielle à Orange Labs

Orange Labs - XP Days France26 Mai 2009 15

Productivité

Page 16: Usine logicielle à Orange Labs

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

Page 17: Usine logicielle à Orange Labs

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

Page 18: Usine logicielle à Orange Labs

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

Page 19: Usine logicielle à Orange Labs

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

Page 20: Usine logicielle à Orange Labs

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

Page 21: Usine logicielle à Orange Labs

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

Page 22: Usine logicielle à Orange Labs

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

Page 23: Usine logicielle à Orange Labs

Orange Labs - XP Days France26 Mai 2009 23

Traçabilité

Page 24: Usine logicielle à Orange Labs

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

Page 25: Usine logicielle à Orange Labs

Orange Labs - XP Days France26 Mai 2009 25

Qualité

Page 26: Usine logicielle à Orange Labs

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

Page 27: Usine logicielle à Orange Labs

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

Page 28: Usine logicielle à Orange Labs

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

Page 29: Usine logicielle à Orange Labs

Orange Labs - XP Days France26 Mai 2009 29

Méthodologie

Page 30: Usine logicielle à Orange Labs

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

Page 31: Usine logicielle à Orange Labs

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

Page 32: Usine logicielle à Orange Labs

Orange Labs - XP Days France26 Mai 2009 32

Travaux en cours

Page 33: Usine logicielle à Orange Labs

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

Page 34: Usine logicielle à Orange Labs

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

Page 35: Usine logicielle à Orange Labs

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

Page 36: Usine logicielle à Orange Labs

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

Page 37: Usine logicielle à Orange Labs

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

Page 38: Usine logicielle à Orange Labs

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

Page 39: Usine logicielle à Orange Labs

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

Page 40: Usine logicielle à Orange Labs

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

Page 41: Usine logicielle à Orange Labs

Orange Labs - XP Days France26 Mai 2009 41

Bilan et Perspectives

Page 42: Usine logicielle à Orange Labs

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

Page 43: Usine logicielle à Orange Labs

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

Page 44: Usine logicielle à Orange Labs

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

Page 45: Usine logicielle à Orange Labs

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…

Page 46: Usine logicielle à Orange Labs

Orange Labs - XP Days France26 Mai 2009 46

Questions?