SlideShare ist ein Scribd-Unternehmen logo
1 von 46
De l’atelier à l’usine logicielle Enjeux et Retour d’expérience d’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]
Introduction
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 
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)
Build
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
Build - Problématique ,[object Object],Il faut aussi définir ce que veut dire identique… Les builds aux temps t0, t1, ti… doivent être  identiques Par 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… dans le  temps t1 ti t0 p0 dans  l’espace   p1 pj pic
Build - Problématique ,[object Object],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 ? … Dépendances Outils de build options de compilation  compilateur… Plateforme d’exécution OS Variables d’environnement Ressources externes xml schéma… wsdl Repositories maven Base de données… Fichiers sources code source ressources artefacts build Facteurs humains
Intégration Continue
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
Intégration Continue - Problématique Module1 Module2 Modulei Développement Intégration 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
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égration Inté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
Reproductibilité
Usine Logicielle : Reproductibilité gestion des dépendances Nightly 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 » !!! build automatisé SCM Développeur Développeur Intégration Continue Outils de build
Productivité
Usine Logicielle : Productivité Comment concilier complétude (source et build) et temps d'exécution ? productivité détection au plus tôt cycle de vie du build compilation tests unitaires packaging tests d'intégration … site web temps d'exécution code source classes modules projet …
Usine Logicielle : Productivité complétude vs temps d'exécution 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… Vision "globale" complétude temps 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écution complétude
Usine Logicielle : Productivité complétude vs temps d'exécution Outils de build Intégration Continue 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 …
Usine Logicielle : Productivité complétude vs temps d'exécution Développeur Outils de build Intégration Continue 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 … 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
Usine Logicielle : Productivité complétude vs temps d'exécution Développeur Outils de build productivité complétude 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 … 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 … 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égration Continue Développeur
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 un build partiel à chaque commit un build complet au moins une fois par jour productivité complétude Intégration Continue SCM Outils de build Développeur Développeur
Usine Logicielle : Productivité Outils de build 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 de la compilation à la synchronisation continue détection au plus tôt Développeur Développeur Intégration Continue SCM
Traçabilité
Usine Logicielle : Traçabilité SCM Outils de build Savoir ce qui a été fait et pourquoi Développeur Intégration Continue Tracker Commit par issue scmchangelog - maven -plugin bugs
Qualité
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 analyse statique couverture de code duplication de code … Tableau  de bord SCM Outils de build Développeur Intégration Continue
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 analyse statique couverture de code duplication de code … Développeur Intégration Continue Tableau  de bord Partage de la configuration des outils (version, fichiers de règles…)
Usine Logicielle : Qualité SCM Outils de build Voir en ‘temps réel’ l’état du projet  analyse statique couverture de code duplication de code … Développeur Intégration Continue Tableau  de bord Où trouver l'information ? SONARPLUGINS-2 MPIR-149
Méthodologie
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 pratiques Accompagner les projets : prise en compte du contexte et de la maturité des équipes , à  bon escient Culture d'entreprise sur les outils d'ingénierie logicielle
Usine Logicielle : Bonnes Pratiques ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Travaux en cours
Usine Logicielle : Productivité Faciliter l'instanciation et la configuration des environnements 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  Développeur Tracker  SCM  Intégration Continue Développeur Tableau  de bord intégration QA  …
Usine Logicielle : Forge Logicielle Forge Logicielle Développeur Tracker SCM Intégration Continue Outils de build Développeur Coclico   Tableau  de bord
Usine Logicielle : Forge Logicielle Décrire le quoi (ce que l'on souhaite faire) plutôt que le comment niveau réalisation pom scripting niveau modélisation
Usine Logicielle : Forge Logicielle Préparer la livraison pour la version souhaitée Décrire le quoi (ce que l'on souhaite faire) plutôt que le comment Exemple : que signifie faire une release au niveau d'une usine logicielle ? niveau réalisation niveau modélisation gestion des tickets ouverts pour la version à releaser Tracker gestion des versions dans les pom pour maven 2
Usine Logicielle : Forge Logicielle Fabriquer le livrable pour la version souhaitée Préparer la livraison pour la version souhaitée Décrire le quoi (ce que l'on souhaite faire) plutôt que le comment Exemple : que signifie faire une release au niveau d'une usine logicielle ? niveau réalisation niveau modélisation tags sur la gestion de conf SCM  changelog de la version mise à disposition de la livraison
Usine Logicielle : Forge Logicielle Initialisation de la maintenance pour la version qui vient d'être créée Préparer la livraison pour la version souhaitée Fabriquer le livrable pour la version souhaitée Décrire le quoi (ce que l'on souhaite faire) plutôt que le comment Exemple : que signifie faire une release au niveau d'une usine logicielle ? niveau réalisation niveau modé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
Usine Logicielle : Forge Logicielle Initialisation de l'espace de travail pour la nouvelle version souhaitée Préparer la livraison pour la version souhaitée Fabriquer le livrable pour la version souhaitée Initialisation de la maintenance pour la version qui vient d'être créée Décrire le quoi (ce que l'on souhaite faire) plutôt que le comment Exemple : que signifie faire une release au niveau d'une usine logicielle ? niveau réalisation niveau modélisation ajout de la nouvelle version au niveau du tracker Tracker gestion des versions dans les pom pour maven 2
Usine Logicielle : Forge Logicielle Décrire le quoi (ce que l'on souhaite faire) plutôt que le comment Exemple : que signifie faire une release au niveau d'une usine logicielle ? Préparer la livraison pour la version souhaitée niveau réalisation niveau modélisation Fabriquer le livrable pour la version souhaitée Initialisation de la maintenance pour la version qui vient d'être créée Initialisation 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…)
Bilan et Perspectives
Bilan – Orange Labs ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Aspects positifs
Bilan – Orange Labs ,[object Object],[object Object],[object Object],[object Object],Difficultés rencontrées
Perspectives Forge Logicielle Développeur Tracker SCM Intégration Continue Outils de build Développeur Suivi de Projet Coclico   Tableau  de bord Gestion de Projet
Perspectives Prendre en compte le cycle de vie complet Développement MOA Soigner   sa   schizophrénie   projet  MOA / MOE voyage  autour  des  exigences   fonctionnelles   exécutables   Hébergement Virtualisation…
Questions?

Weitere ähnliche Inhalte

Was ist angesagt?

Mise en œuvre de TFS 2010 dans un environnement technologique hétérogène
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogèneMise en œuvre de TFS 2010 dans un environnement technologique hétérogène
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogèneMicrosoft Technet France
 
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogène
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogèneMise en œuvre de TFS 2010 dans un environnement technologique hétérogène
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogèneGrégory Ott
 
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et MobileNouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et MobileIppon
 
Concept de l’Intégration Continue
Concept de l’Intégration ContinueConcept de l’Intégration Continue
Concept de l’Intégration ContinueFrédéric Sagez
 
AgileTour Toulouse 2012 : TFS
AgileTour Toulouse 2012 : TFSAgileTour Toulouse 2012 : TFS
AgileTour Toulouse 2012 : TFSAgile Toulouse
 
Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Ippon
 
Intégration continue
Intégration continueIntégration continue
Intégration continueKlee Group
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logicielsSylvain Leroy
 
Deux ans de développement Agile, erreurs et succès
Deux ans de développement Agile, erreurs et succèsDeux ans de développement Agile, erreurs et succès
Deux ans de développement Agile, erreurs et succèsAgile Tour 2009 Québec
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Ippon
 
Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011Jean-Marc Fontaine
 
Maintenir du code historique - RMLL 2011
Maintenir du code historique - RMLL 2011Maintenir du code historique - RMLL 2011
Maintenir du code historique - RMLL 2011Jean-Marc Fontaine
 
USI Casablanca 2010 - Industrialisation et intégration continue
USI Casablanca 2010 - Industrialisation et intégration continueUSI Casablanca 2010 - Industrialisation et intégration continue
USI Casablanca 2010 - Industrialisation et intégration continueDjamel Zouaoui
 
At2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicAt2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicEmmanuel Hugonnet
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement MicrosoftChristophe HERAL
 
Rappels Modularisation application C/C++
Rappels Modularisation application C/C++Rappels Modularisation application C/C++
Rappels Modularisation application C/C++Sylvain Leroy
 
Intégration continue transco
Intégration continue transcoIntégration continue transco
Intégration continue transcolaurent_opnworks
 
Principes de L'intégration Continue
Principes de L'intégration ContinuePrincipes de L'intégration Continue
Principes de L'intégration ContinueXavier Warzee
 

Was ist angesagt? (20)

Mise en œuvre de TFS 2010 dans un environnement technologique hétérogène
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogèneMise en œuvre de TFS 2010 dans un environnement technologique hétérogène
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogène
 
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogène
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogèneMise en œuvre de TFS 2010 dans un environnement technologique hétérogène
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogène
 
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et MobileNouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
 
Concept de l’Intégration Continue
Concept de l’Intégration ContinueConcept de l’Intégration Continue
Concept de l’Intégration Continue
 
AgileTour Toulouse 2012 : TFS
AgileTour Toulouse 2012 : TFSAgileTour Toulouse 2012 : TFS
AgileTour Toulouse 2012 : TFS
 
Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014
 
Intégration continue
Intégration continueIntégration continue
Intégration continue
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logiciels
 
Deux ans de développement Agile, erreurs et succès
Deux ans de développement Agile, erreurs et succèsDeux ans de développement Agile, erreurs et succès
Deux ans de développement Agile, erreurs et succès
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0
 
Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011
 
Maintenir du code historique - RMLL 2011
Maintenir du code historique - RMLL 2011Maintenir du code historique - RMLL 2011
Maintenir du code historique - RMLL 2011
 
USI Casablanca 2010 - Industrialisation et intégration continue
USI Casablanca 2010 - Industrialisation et intégration continueUSI Casablanca 2010 - Industrialisation et intégration continue
USI Casablanca 2010 - Industrialisation et intégration continue
 
At2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicAt2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville Public
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
 
Rappels Modularisation application C/C++
Rappels Modularisation application C/C++Rappels Modularisation application C/C++
Rappels Modularisation application C/C++
 
Intégration continue transco
Intégration continue transcoIntégration continue transco
Intégration continue transco
 
Dev opsday case study
Dev opsday   case studyDev opsday   case study
Dev opsday case study
 
Principes de L'intégration Continue
Principes de L'intégration ContinuePrincipes de L'intégration Continue
Principes de L'intégration Continue
 
Method XP
Method XP Method XP
Method XP
 

Andere mochten auch

Atelier ENP - 28 nov 2012
Atelier ENP - 28 nov 2012Atelier ENP - 28 nov 2012
Atelier ENP - 28 nov 2012CCI Yonne
 
PFE : Géolocalisation par Wifi
PFE : Géolocalisation par WifiPFE : Géolocalisation par Wifi
PFE : Géolocalisation par Wifichammem
 
Proyecto investigación 2013
Proyecto investigación 2013Proyecto investigación 2013
Proyecto investigación 2013kelin9
 
Géolocalisation Google Maps pour Sage CRM
Géolocalisation Google Maps pour Sage CRMGéolocalisation Google Maps pour Sage CRM
Géolocalisation Google Maps pour Sage CRMSage france
 
Les 7 règles d’or de la géolocalisation par Dominique GUICHARD
Les 7 règles d’or de la géolocalisation par Dominique GUICHARDLes 7 règles d’or de la géolocalisation par Dominique GUICHARD
Les 7 règles d’or de la géolocalisation par Dominique GUICHARDLACT
 
Mobilité, géolocalisation et réseaux sociaux dans le tourisme
Mobilité, géolocalisation et réseaux sociaux dans le tourismeMobilité, géolocalisation et réseaux sociaux dans le tourisme
Mobilité, géolocalisation et réseaux sociaux dans le tourismePhilippe Fabry
 
Conference geolocalisaiton-indoor-sans-contact-presentation-complete - 09122014
Conference geolocalisaiton-indoor-sans-contact-presentation-complete - 09122014Conference geolocalisaiton-indoor-sans-contact-presentation-complete - 09122014
Conference geolocalisaiton-indoor-sans-contact-presentation-complete - 09122014CITC-EuraRFID
 
Mon Projet Fin d'étude: Conception et développement d'une application de géol...
Mon Projet Fin d'étude: Conception et développement d'une application de géol...Mon Projet Fin d'étude: Conception et développement d'une application de géol...
Mon Projet Fin d'étude: Conception et développement d'une application de géol...rim elaire
 

Andere mochten auch (9)

Atelier ENP - 28 nov 2012
Atelier ENP - 28 nov 2012Atelier ENP - 28 nov 2012
Atelier ENP - 28 nov 2012
 
PFE : Géolocalisation par Wifi
PFE : Géolocalisation par WifiPFE : Géolocalisation par Wifi
PFE : Géolocalisation par Wifi
 
Proyecto investigación 2013
Proyecto investigación 2013Proyecto investigación 2013
Proyecto investigación 2013
 
Géolocalisation Google Maps pour Sage CRM
Géolocalisation Google Maps pour Sage CRMGéolocalisation Google Maps pour Sage CRM
Géolocalisation Google Maps pour Sage CRM
 
Coder F#nctionnel
Coder F#nctionnelCoder F#nctionnel
Coder F#nctionnel
 
Les 7 règles d’or de la géolocalisation par Dominique GUICHARD
Les 7 règles d’or de la géolocalisation par Dominique GUICHARDLes 7 règles d’or de la géolocalisation par Dominique GUICHARD
Les 7 règles d’or de la géolocalisation par Dominique GUICHARD
 
Mobilité, géolocalisation et réseaux sociaux dans le tourisme
Mobilité, géolocalisation et réseaux sociaux dans le tourismeMobilité, géolocalisation et réseaux sociaux dans le tourisme
Mobilité, géolocalisation et réseaux sociaux dans le tourisme
 
Conference geolocalisaiton-indoor-sans-contact-presentation-complete - 09122014
Conference geolocalisaiton-indoor-sans-contact-presentation-complete - 09122014Conference geolocalisaiton-indoor-sans-contact-presentation-complete - 09122014
Conference geolocalisaiton-indoor-sans-contact-presentation-complete - 09122014
 
Mon Projet Fin d'étude: Conception et développement d'une application de géol...
Mon Projet Fin d'étude: Conception et développement d'une application de géol...Mon Projet Fin d'étude: Conception et développement d'une application de géol...
Mon Projet Fin d'étude: Conception et développement d'une application de géol...
 

Ähnlich wie Usine logicielle à Orange Labs

20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache MavenArnaud Héritier
 
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...PimpMySharePoint
 
Integration continue et déploiement automatisé
Integration continue et déploiement automatiséIntegration continue et déploiement automatisé
Integration continue et déploiement automatiséJérémie Campari
 
Processus d’intégration continue et outils
Processus d’intégration continue et outilsProcessus d’intégration continue et outils
Processus d’intégration continue et outilsAgile Tour 2009 Québec
 
Industrialisez vos projets Php
Industrialisez vos projets Php Industrialisez vos projets Php
Industrialisez vos projets Php ALTER WAY
 
Les méthodes agiles dans TFS
Les méthodes agiles dans TFSLes méthodes agiles dans TFS
Les méthodes agiles dans TFSDenis Voituron
 
Industrialisation PHP - Canal+
Industrialisation PHP - Canal+Industrialisation PHP - Canal+
Industrialisation PHP - Canal+ekino
 
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...PimpMySharePoint
 
Présentation sur Maven 2 et petit retour d'expérience
Présentation sur Maven 2 et petit retour d'expériencePrésentation sur Maven 2 et petit retour d'expérience
Présentation sur Maven 2 et petit retour d'expérienceKhanh Maudoux
 
Présentation Maven
Présentation MavenPrésentation Maven
Présentation MavenSOAT
 
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...PimpMySharePoint
 
Utiliser l'EDI pour développer en multiplateforme
Utiliser l'EDI pour développer en multiplateformeUtiliser l'EDI pour développer en multiplateforme
Utiliser l'EDI pour développer en multiplateformepprem
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptMichael Akbaraly
 
Intégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsIntégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsHugo Hamon
 
Industrialisation bar camp2010
Industrialisation bar camp2010Industrialisation bar camp2010
Industrialisation bar camp2010Lushkah911
 
Happy dev ... & ops
Happy dev ... & opsHappy dev ... & ops
Happy dev ... & opsQuentin Adam
 
Omnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continue
Omnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continueOmnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continue
Omnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continueXavier Callens
 
Introduction à TeamCity
Introduction à TeamCityIntroduction à TeamCity
Introduction à TeamCityUlrich VACHON
 
Techdays 2011 : Développez en Java avec la plateforme Team Foundation Server ...
Techdays 2011 : Développez en Java avec la plateforme Team Foundation Server ...Techdays 2011 : Développez en Java avec la plateforme Team Foundation Server ...
Techdays 2011 : Développez en Java avec la plateforme Team Foundation Server ...vlabatut
 

Ähnlich wie Usine logicielle à Orange Labs (20)

20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
Normandy JUG integration Continue
Normandy JUG integration ContinueNormandy JUG integration Continue
Normandy JUG integration Continue
 
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
 
Integration continue et déploiement automatisé
Integration continue et déploiement automatiséIntegration continue et déploiement automatisé
Integration continue et déploiement automatisé
 
Processus d’intégration continue et outils
Processus d’intégration continue et outilsProcessus d’intégration continue et outils
Processus d’intégration continue et outils
 
Industrialisez vos projets Php
Industrialisez vos projets Php Industrialisez vos projets Php
Industrialisez vos projets Php
 
Les méthodes agiles dans TFS
Les méthodes agiles dans TFSLes méthodes agiles dans TFS
Les méthodes agiles dans TFS
 
Industrialisation PHP - Canal+
Industrialisation PHP - Canal+Industrialisation PHP - Canal+
Industrialisation PHP - Canal+
 
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
 
Présentation sur Maven 2 et petit retour d'expérience
Présentation sur Maven 2 et petit retour d'expériencePrésentation sur Maven 2 et petit retour d'expérience
Présentation sur Maven 2 et petit retour d'expérience
 
Présentation Maven
Présentation MavenPrésentation Maven
Présentation Maven
 
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
 
Utiliser l'EDI pour développer en multiplateforme
Utiliser l'EDI pour développer en multiplateformeUtiliser l'EDI pour développer en multiplateforme
Utiliser l'EDI pour développer en multiplateforme
 
Paris Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascriptParis Web 2015 - Atelier desendettement javascript
Paris Web 2015 - Atelier desendettement javascript
 
Intégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsIntégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec Jenkins
 
Industrialisation bar camp2010
Industrialisation bar camp2010Industrialisation bar camp2010
Industrialisation bar camp2010
 
Happy dev ... & ops
Happy dev ... & opsHappy dev ... & ops
Happy dev ... & ops
 
Omnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continue
Omnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continueOmnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continue
Omnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continue
 
Introduction à TeamCity
Introduction à TeamCityIntroduction à TeamCity
Introduction à TeamCity
 
Techdays 2011 : Développez en Java avec la plateforme Team Foundation Server ...
Techdays 2011 : Développez en Java avec la plateforme Team Foundation Server ...Techdays 2011 : Développez en Java avec la plateforme Team Foundation Server ...
Techdays 2011 : Développez en Java avec la plateforme Team Foundation Server ...
 

Mehr von Emmanuel Hugonnet

You're a pretty fly for a WildFly
You're a pretty fly for a WildFlyYou're a pretty fly for a WildFly
You're a pretty fly for a WildFlyEmmanuel Hugonnet
 
At2009 Soigner Sa Schizophrenie 1.2
At2009 Soigner Sa Schizophrenie 1.2At2009 Soigner Sa Schizophrenie 1.2
At2009 Soigner Sa Schizophrenie 1.2Emmanuel Hugonnet
 
Agile Tour 2009 Coding Dojo Kata ATDD
Agile Tour 2009 Coding Dojo Kata ATDDAgile Tour 2009 Coding Dojo Kata ATDD
Agile Tour 2009 Coding Dojo Kata ATDDEmmanuel Hugonnet
 
Innovations Techniques Au Service Du Test De Recette Automatisé
Innovations Techniques Au Service Du Test De Recette AutomatiséInnovations Techniques Au Service Du Test De Recette Automatisé
Innovations Techniques Au Service Du Test De Recette AutomatiséEmmanuel Hugonnet
 
Coding Dojo in the Alps - Retour d'expérience
Coding Dojo in the Alps - Retour d'expérienceCoding Dojo in the Alps - Retour d'expérience
Coding Dojo in the Alps - Retour d'expérienceEmmanuel Hugonnet
 
Java Content Repository avec Jackrabbit
Java Content Repository avec JackrabbitJava Content Repository avec Jackrabbit
Java Content Repository avec JackrabbitEmmanuel Hugonnet
 
Le modèle d’acquisition de compétences de Dreyfus
Le modèle d’acquisition de compétences de DreyfusLe modèle d’acquisition de compétences de Dreyfus
Le modèle d’acquisition de compétences de DreyfusEmmanuel Hugonnet
 
Ddj Architecture & Design The Distributed Agile Team
Ddj   Architecture &  Design   The Distributed Agile TeamDdj   Architecture &  Design   The Distributed Agile Team
Ddj Architecture & Design The Distributed Agile TeamEmmanuel Hugonnet
 
Industrialisation Du Logiciel Introduction Et Bonnes Pratiques V1.4
Industrialisation Du Logiciel   Introduction Et Bonnes Pratiques   V1.4Industrialisation Du Logiciel   Introduction Et Bonnes Pratiques   V1.4
Industrialisation Du Logiciel Introduction Et Bonnes Pratiques V1.4Emmanuel Hugonnet
 
At2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicAt2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicEmmanuel Hugonnet
 
Ddj Architecture & Design Beyond Functional Requirements On Agile Projects
Ddj   Architecture & Design   Beyond Functional Requirements On Agile ProjectsDdj   Architecture & Design   Beyond Functional Requirements On Agile Projects
Ddj Architecture & Design Beyond Functional Requirements On Agile ProjectsEmmanuel Hugonnet
 

Mehr von Emmanuel Hugonnet (15)

You're a pretty fly for a WildFly
You're a pretty fly for a WildFlyYou're a pretty fly for a WildFly
You're a pretty fly for a WildFly
 
J2EE m’a tuer
J2EE m’a tuerJ2EE m’a tuer
J2EE m’a tuer
 
At2009 Soigner Sa Schizophrenie 1.2
At2009 Soigner Sa Schizophrenie 1.2At2009 Soigner Sa Schizophrenie 1.2
At2009 Soigner Sa Schizophrenie 1.2
 
At2009 Coding Dojo ATDD
At2009 Coding Dojo ATDDAt2009 Coding Dojo ATDD
At2009 Coding Dojo ATDD
 
Agile Tour 2009 Coding Dojo Kata ATDD
Agile Tour 2009 Coding Dojo Kata ATDDAgile Tour 2009 Coding Dojo Kata ATDD
Agile Tour 2009 Coding Dojo Kata ATDD
 
Innovations Techniques Au Service Du Test De Recette Automatisé
Innovations Techniques Au Service Du Test De Recette AutomatiséInnovations Techniques Au Service Du Test De Recette Automatisé
Innovations Techniques Au Service Du Test De Recette Automatisé
 
Coding Dojo in the Alps - Retour d'expérience
Coding Dojo in the Alps - Retour d'expérienceCoding Dojo in the Alps - Retour d'expérience
Coding Dojo in the Alps - Retour d'expérience
 
Soigner Sa Schizophrénie
Soigner Sa SchizophrénieSoigner Sa Schizophrénie
Soigner Sa Schizophrénie
 
Java Content Repository avec Jackrabbit
Java Content Repository avec JackrabbitJava Content Repository avec Jackrabbit
Java Content Repository avec Jackrabbit
 
Le modèle d’acquisition de compétences de Dreyfus
Le modèle d’acquisition de compétences de DreyfusLe modèle d’acquisition de compétences de Dreyfus
Le modèle d’acquisition de compétences de Dreyfus
 
Ddj Architecture & Design The Distributed Agile Team
Ddj   Architecture &  Design   The Distributed Agile TeamDdj   Architecture &  Design   The Distributed Agile Team
Ddj Architecture & Design The Distributed Agile Team
 
Coding Dojo
Coding DojoCoding Dojo
Coding Dojo
 
Industrialisation Du Logiciel Introduction Et Bonnes Pratiques V1.4
Industrialisation Du Logiciel   Introduction Et Bonnes Pratiques   V1.4Industrialisation Du Logiciel   Introduction Et Bonnes Pratiques   V1.4
Industrialisation Du Logiciel Introduction Et Bonnes Pratiques V1.4
 
At2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicAt2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville Public
 
Ddj Architecture & Design Beyond Functional Requirements On Agile Projects
Ddj   Architecture & Design   Beyond Functional Requirements On Agile ProjectsDdj   Architecture & Design   Beyond Functional Requirements On Agile Projects
Ddj Architecture & Design Beyond Functional Requirements On Agile Projects
 

Usine logicielle à Orange Labs

  • 1. De l’atelier à l’usine logicielle Enjeux et Retour d’expérience d’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, de qualité et répondant aux besoins de nos clients 
  • 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)
  • 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
  • 7.
  • 8.
  • 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
  • 11. Intégration Continue - Problématique Module1 Module2 Modulei Développement Intégration 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
  • 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égration Inté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
  • 14. Usine Logicielle : Reproductibilité gestion des dépendances Nightly 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 » !!! build automatisé SCM Développeur Développeur Intégration Continue Outils de build
  • 16. Usine Logicielle : Productivité Comment concilier complétude (source et build) et temps d'exécution ? productivité détection au plus tôt cycle de vie du build compilation tests unitaires packaging tests d'intégration … site web temps d'exécution code source classes modules projet …
  • 17. Usine Logicielle : Productivité complétude vs temps d'exécution 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… Vision "globale" complétude temps 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écution complétude
  • 18. Usine Logicielle : Productivité complétude vs temps d'exécution Outils de build Intégration Continue 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 …
  • 19. Usine Logicielle : Productivité complétude vs temps d'exécution Développeur Outils de build Intégration Continue 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 … 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
  • 20. Usine Logicielle : Productivité complétude vs temps d'exécution Développeur Outils de build productivité complétude 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 … 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 … 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égration Continue Développeur
  • 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 un build partiel à chaque commit un build complet au moins une fois par jour productivité complétude Intégration Continue SCM Outils de build Développeur Développeur
  • 22. Usine Logicielle : Productivité Outils de build 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 de la compilation à la synchronisation continue détection au plus tôt Développeur Développeur Intégration Continue SCM
  • 24. Usine Logicielle : Traçabilité SCM Outils de build Savoir ce qui a été fait et pourquoi Développeur Intégration Continue Tracker Commit par issue scmchangelog - maven -plugin bugs
  • 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 analyse statique couverture de code duplication de code … Tableau de bord SCM Outils de build Développeur Intégration Continue
  • 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 analyse statique couverture de code duplication de code … Développeur Intégration Continue Tableau de bord Partage de la configuration des outils (version, fichiers de règles…)
  • 28. Usine Logicielle : Qualité SCM Outils de build Voir en ‘temps réel’ l’état du projet analyse statique couverture de code duplication de code … Développeur Intégration Continue Tableau de bord Où trouver l'information ? SONARPLUGINS-2 MPIR-149
  • 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 pratiques Accompagner les projets : prise en compte du contexte et de la maturité des équipes , à bon escient Culture d'entreprise sur les outils d'ingénierie logicielle
  • 31.
  • 33. Usine Logicielle : Productivité Faciliter l'instanciation et la configuration des environnements 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 Développeur Tracker SCM Intégration Continue Développeur Tableau de bord intégration QA …
  • 34. Usine Logicielle : Forge Logicielle Forge Logicielle Développeur Tracker SCM Intégration Continue Outils de build Développeur Coclico Tableau de bord
  • 35. Usine Logicielle : Forge Logicielle Décrire le quoi (ce que l'on souhaite faire) plutôt que le comment niveau réalisation pom scripting niveau modélisation
  • 36. Usine Logicielle : Forge Logicielle Préparer la livraison pour la version souhaitée Décrire le quoi (ce que l'on souhaite faire) plutôt que le comment Exemple : que signifie faire une release au niveau d'une usine logicielle ? niveau réalisation niveau modélisation gestion des tickets ouverts pour la version à releaser Tracker gestion des versions dans les pom pour maven 2
  • 37. Usine Logicielle : Forge Logicielle Fabriquer le livrable pour la version souhaitée Préparer la livraison pour la version souhaitée Décrire le quoi (ce que l'on souhaite faire) plutôt que le comment Exemple : que signifie faire une release au niveau d'une usine logicielle ? niveau réalisation niveau modélisation tags sur la gestion de conf SCM changelog de la version mise à disposition de la livraison
  • 38. Usine Logicielle : Forge Logicielle Initialisation de la maintenance pour la version qui vient d'être créée Préparer la livraison pour la version souhaitée Fabriquer le livrable pour la version souhaitée Décrire le quoi (ce que l'on souhaite faire) plutôt que le comment Exemple : que signifie faire une release au niveau d'une usine logicielle ? niveau réalisation niveau modé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
  • 39. Usine Logicielle : Forge Logicielle Initialisation de l'espace de travail pour la nouvelle version souhaitée Préparer la livraison pour la version souhaitée Fabriquer le livrable pour la version souhaitée Initialisation de la maintenance pour la version qui vient d'être créée Décrire le quoi (ce que l'on souhaite faire) plutôt que le comment Exemple : que signifie faire une release au niveau d'une usine logicielle ? niveau réalisation niveau modélisation ajout de la nouvelle version au niveau du tracker Tracker gestion des versions dans les pom pour maven 2
  • 40. Usine Logicielle : Forge Logicielle Décrire le quoi (ce que l'on souhaite faire) plutôt que le comment Exemple : que signifie faire une release au niveau d'une usine logicielle ? Préparer la livraison pour la version souhaitée niveau réalisation niveau modélisation Fabriquer le livrable pour la version souhaitée Initialisation de la maintenance pour la version qui vient d'être créée Initialisation 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…)
  • 42.
  • 43.
  • 44. Perspectives Forge Logicielle Développeur Tracker SCM Intégration Continue Outils de build Développeur Suivi de Projet Coclico Tableau de bord Gestion de Projet
  • 45. Perspectives Prendre en compte le cycle de vie complet Développement MOA Soigner sa schizophrénie projet MOA / MOE voyage autour des exigences fonctionnelles exécutables Hébergement Virtualisation…