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 Reproductibilité  dans le  temps  et dans  l’espace  (sans modification du source…) 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 Reproductibilité  dans le  temps  et dans  l’espace  (sans modification du source…) 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 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
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 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
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
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?

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]
  • 2.
  • 3.
    Pourquoi des outilsd’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)
  • 5.
  • 6.
    Build - DéfinitionLe 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.
    Build - ProblématiqueReproductibilité dans le temps et dans l’espace (sans modification du source…) 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
  • 8.
    Build - ProblématiqueReproductibilité dans le temps et dans l’espace (sans modification du source…) 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
  • 9.
  • 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
  • 13.
  • 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
  • 15.
  • 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
  • 23.
  • 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
  • 25.
  • 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
  • 29.
  • 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.
    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
  • 32.
  • 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…)
  • 41.
  • 42.
    Bilan – OrangeLabs 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
  • 43.
    Bilan – OrangeLabs 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
  • 44.
    Perspectives Forge LogicielleDéveloppeur Tracker SCM Intégration Continue Outils de build Développeur Suivi de Projet Coclico Tableau de bord Gestion de Projet
  • 45.
    Perspectives Prendre encompte 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…
  • 46.