SlideShare uma empresa Scribd logo
1 de 58
Mise en place d'outils d'ingénierie logicielle pour industrialiser le développement Agile chez 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 et de qualité 
Outils d’ingénierie logicielle et agilité ?
Outils d’ingénierie logicielle et agilité ? ,[object Object],[object Object],[object Object]
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 - 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 ? … artefacts build Dépendances Outils de build options de compilation  compilateur… Plateforme d’exécution OS Variables d’environnement Fichiers sources code source ressources Facteurs humains Ressources externes xml schéma… wsdl Repositories maven Base de données…
Build – Pourquoi Maven 2 ? Les fichiers sources du projet Les fichiers générés du projet Le fichier de description du projet (POM) code source java tests unitaires Conventions plutôt que configuration Standardisation du système de fichiers Facilite le passage d’un projet à un autre, la communication…
Build – Pourquoi Maven 2 ? Conventions plutôt que configuration Standardisation du système de fichiers Standardisation du cycle de vie Facilite le passage d’un projet à un autre, la communication…
Build – Pourquoi Maven 2 ? Conventions plutôt que configuration Standardisation du système de fichiers Standardisation du cycle de vie Standardisation du site web du projet ... Facilite le passage d’un projet à un autre, la communication…
Build – Pourquoi Maven 2 ? Maven suit une approche déclarative et se focalise sur une abstraction de haut niveau du projet appelé le Project Object Model (POM). Un conducteur n'a pas à connaître la mécanique de sa voiture pour conduire Modélisation du build Modélisation vs scripting décrivez ce que vous voulez faire (le quoi) pas le comment ! POM
Build – Pourquoi Maven 2 ? Problématique complexe et qui n’est pas toujours bien maîtrisée voir abordée => le changement de version d’une dépendance directe peut devenir une tâche complexe. Maven 2 apporte une aide précieuse même s’il ne résout pas tous les problèmes  Graphe de dépendances du plugin  scmchangelog-maven-plugin   Gestion des dépendances
Build – Pourquoi Maven 2 ? … Repositories Release, Snasphot … Automatise la récupération des dépendances, facilite l’intégration continue (les dernières versions sont tout de suite disponibles)… Réutilisation Plugins Template de projet (archétypes) … Améliore la productivité, mise en place de recommandations d’entreprise…
Build – Plateforme Maven 2 à Orange Labs Central Central snapshot Codehaus … pom.xml <project> </project> <repository> <id>codehaus</id> <name>codehaus repository</name> <url>http://repository.codehaus.org/</url> </repository> <repositories> <repository> <id>apache.snapshot</id> <name>apache.snapshot repository</name> <url>http://people.apache.org/maven-snapshot-repository/</url> </repository> </repositories> […] […]
Build – Plateforme Maven 2 à Orange Labs Central Central snapshot Codehaus … <parent> <groupId>com.francetelecom</groupId> <artifactId>corporate</artifactId> <version>1.4</version> </parent> […] Proxy Maven 2 pom.xml <project> </project> Central setting.xml <settings> <mirrors> <mirror> <id>FranceTelecomMaven2Proxy</id> <mirrorOf>central</mirrorOf> <name>France Telecom Maven2 repositories</name> <url>https://maven2.rd.francetelecom.fr/proxy/</url> </mirror> </mirrors> […] </settings> Central snapshot Codehaus … inhouse inhouse snapshot
Build – Plateforme Maven 2 à Orange Labs
Build – Plateforme Maven 2 à Orange Labs
Build – Plateforme Maven 2 à Orange Labs
Build – Plateforme Maven 2 à Orange Labs
Build – Plateforme Maven 2 à Orange Labs
Build – Plateforme Maven 2 à Orange Labs
Build – Plateforme Maven 2 à Orange Labs
Build – Bilan ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Utilisation de la plate-forme Maven 2 sur plusieurs projets industriels et avec de nombreuses technologies (Java/ J2EE, JMS, Web Services, Castor, SSO, IMS, SIP, Osgi, Smart Environment…) Aspects positifs  :
Build – Bilan Difficultés rencontrés  :  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Utilisation de la plate-forme Maven 2 sur plusieurs projets importants et avec de nombreuses technologies (Java/ J2EE, JMS, Web Services, Castor, SSO, IMS, SIP, Osgi, Smart Environment…)
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 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
Intégration Continue - Problématique Les 5% de bugs découverts après la release représentent 95% des coûts de correction Détecter au plus tôt les problèmes pour les corriger au plus tôt Module1 Module2 Modulei Développement Intégration Intégration Continue Module1 Module2 Modulei Intégration Intégration Développement Intégration Intégration Intégration Intégration
Intégration Continue - Les enjeux ,[object Object],[object Object],[object Object],[object Object]
Intégration Continue - Concepts Evènements de déclenchement SCM ,[object Object],[object Object],[object Object],Intervention humaine sur le serveur d'intégration continue (IC) Périodiquement En cascade (le build d'un projet lance le build d'un ou plusieurs autres projets) API Distante (Web Service, Jabber...)
Intégration Continue - Concepts Appel d’actions Evènements de déclenchement Outils de build Outils de build  (Ant, Maven 1, Maven 2…) Scripts shell, bash
Intégration Continue - Concepts Appel d’actions Evènements de déclenchement Rapports Artéfacts Notifications Comment  : Mail, Messagerie instantanée, Flux RSS, Widgets, …
Intégration Continue - Concepts Comment  : Mail, Messagerie instantanée, Flux RSS, Widgets, … Qui  : Liste de destinataires, plusieurs listes possibles; le(s) dernier(s) comiters Appel d’actions Evènements de déclenchement Quand  : Systématiquement après chaque build, Conditionnel (échec, qualité de code…) Rapports Artéfacts Notifications
Intégration Continue - Concepts Appel d’actions * Evènements de déclenchement Rapports Artéfacts Notifications
Intégration Continue - Workflow Développeur checkout, update Intégration   Continue construit déploie teste analyse informe Rapports Artéfacts Notifications développe teste compile Outils de build checkout, commit, update, merge SCM
Intégration Continue - Problématique ,[object Object],2' 4' 1' 10' x' compilation tests unitaires packaging site web 8' tests d'intégration … 2' 4' 1' 10' x' compilation tests unitaires packaging site web 8' tests d'intégration … 2' 4' 1' 10' x' compilation tests unitaires packaging site web 8' tests d'intégration … x 40 x 20 x  1 x  0 x  0 x … x 25 x 25 x  1 x  1 x  2 x … x 45 x 10 x  1 x  0 x  0 x … 2' 4' 1' 10' x' compilation tests unitaires packaging site web 8' tests d'intégration … 2' 4' 1' 10' x' compilation tests unitaires packaging site web 8' tests d'intégration … 2' 4' 1' 10' x' compilation tests unitaires packaging site web 8' tests d'intégration … x 30 x 15 x  5 x  2 x  2 x … x 20 x 20 x  3 x  1 x  4 x … x 35 x 5 x  5 x  0 x  0 x … 2' 4' 1' 10' x' compilation tests unitaires packaging site web 8' tests d'intégration … x 20 x 20 x 15 x  2 x  15 x … Intégration   Continue
Intégration Continue à Orange Labs ,[object Object],[object Object],[object Object],[object Object],[object Object]
Intégration Continue à Orange Labs ,[object Object],[object Object],[object Object],Hudson
Intégration Continue à Orange Labs ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Bonnes pratiques
  Orange  Labs  - Recherche & Développement - titre de la présentation – date  Retour Projets
Retour d'expériences – Améliorer la qualité ,[object Object],[object Object]
Retour d'expériences – Améliorer la qualité
Retour d'expériences – Améliorer la qualité
Retour d'expériences - Documentation à jour
Retour d'expériences - Documentation à jour
Retour d'expériences - Documentation à jour
Bilan et Perspectives
Bilan - Agilité On passe de la compilation continue  à l’exécution continue  vers la production continue Manifesto for Agile Software Development ,[object Object],Individuals and interactions  over processes and tools   ,[object Object],Working software  over comprehensive documentation ,[object Object],Customer collaboration  over contract negotiation ,[object Object],Responding to change  over following a plan ,[object Object],Craftmanship  over Execution
Bilan – Oranges Labs ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Aspects positifs
Bilan – Oranges Labs ,[object Object],[object Object],[object Object],[object Object],Difficultés rencontrés
Perspectives Développeur Outils de build Intégration   Continue Configurations  optimisées pour les tâches d'intégration packaging, tests d'intégration, métriques, site web du projet… Configurations optimisées pour les tâches du développeur  hot-deploy, tests unitaires, analyse statique de code… SCM Commit par issue Tracker
Perspectives Développeur Intégration Continue SCM Tracker Outils de build le SCM est utilisé comme simple support d'archivage. Le projet n'est pas dans un état stable et ceci est la dernière préoccupation des développeurs.  les échecs sont immédiatement corrigés, commits fréquents.  http://www.agile-swiss.org/wiki/index.php?title=Integration_continue Mise en place de sondes/capteurs  Prévenir plutôt que guérir Est-ce que les développeurs commits régulièrement ?
Perspectives Développeur Intégration Continue SCM Tracker Outils de build Mise en place de sondes/capteurs  Prévenir plutôt que guérir
Perspectives Mise en place d'un tableau de bord projet Maîtrise de son projet  avancement, qualité… Développeur Intégration Continue SCM Tracker Outils de build
Oui c’est possible !!!
Questions?

Mais conteúdo relacionado

Mais procurados

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 continueJohan Moreau
 
Principes de L'intégration Continue
Principes de L'intégration ContinuePrincipes de L'intégration Continue
Principes de L'intégration ContinueXavier Warzee
 
AgileTour Toulouse 2012 : TFS
AgileTour Toulouse 2012 : TFSAgileTour Toulouse 2012 : TFS
AgileTour Toulouse 2012 : TFSAgile Toulouse
 
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
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logicielsSylvain Leroy
 
Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5Microsoft
 
Presentation Rex Methodes Agiles
Presentation Rex Methodes AgilesPresentation Rex Methodes Agiles
Presentation Rex Methodes AgilesIppon
 
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
 
Objet direct 2013-05-11 Microsoft ALM 2013 Software Factory
Objet direct 2013-05-11 Microsoft ALM 2013 Software FactoryObjet direct 2013-05-11 Microsoft ALM 2013 Software Factory
Objet direct 2013-05-11 Microsoft ALM 2013 Software FactoryFactoVia
 
10 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 810 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 8Microsoft
 
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
 
Mise en place d&rsquo;une usine logicielle pour technologies Microsoft et non...
Mise en place d&rsquo;une usine logicielle pour technologies Microsoft et non...Mise en place d&rsquo;une usine logicielle pour technologies Microsoft et non...
Mise en place d&rsquo;une usine logicielle pour technologies Microsoft et non...Microsoft
 
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Ippon
 
Formation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratifFormation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratifkemenaran
 

Mais procurados (20)

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
 
Principes de L'intégration Continue
Principes de L'intégration ContinuePrincipes de L'intégration Continue
Principes de L'intégration Continue
 
Esiea - 5A - Archi 1/3
Esiea - 5A - Archi 1/3Esiea - 5A - Archi 1/3
Esiea - 5A - Archi 1/3
 
AgileTour Toulouse 2012 : TFS
AgileTour Toulouse 2012 : TFSAgileTour Toulouse 2012 : TFS
AgileTour Toulouse 2012 : TFS
 
Cours de Génie Logiciel / ESIEA 2013-2014
Cours de Génie Logiciel / ESIEA 2013-2014 Cours de Génie Logiciel / ESIEA 2013-2014
Cours de Génie Logiciel / ESIEA 2013-2014
 
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
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logiciels
 
Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5
 
Presentation Rex Methodes Agiles
Presentation Rex Methodes AgilesPresentation Rex Methodes Agiles
Presentation Rex Methodes Agiles
 
Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011
 
Objet direct 2013-05-11 Microsoft ALM 2013 Software Factory
Objet direct 2013-05-11 Microsoft ALM 2013 Software FactoryObjet direct 2013-05-11 Microsoft ALM 2013 Software Factory
Objet direct 2013-05-11 Microsoft ALM 2013 Software Factory
 
10 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 810 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 8
 
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
 
Cours spring
Cours springCours spring
Cours spring
 
Génie Logiciel : les tests
Génie Logiciel : les testsGénie Logiciel : les tests
Génie Logiciel : les tests
 
Mise en place d&rsquo;une usine logicielle pour technologies Microsoft et non...
Mise en place d&rsquo;une usine logicielle pour technologies Microsoft et non...Mise en place d&rsquo;une usine logicielle pour technologies Microsoft et non...
Mise en place d&rsquo;une usine logicielle pour technologies Microsoft et non...
 
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
 
cycle de vie
cycle de vie cycle de vie
cycle de vie
 
Formation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratifFormation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratif
 

Semelhante a At2008 Grenoble Hugonnet Sanlaville Public

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
 
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
 
Rex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - EnsimRex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - EnsimLaurent Broudoux
 
Intégration continue transco
Intégration continue transcoIntégration continue transco
Intégration continue transcolaurent_opnworks
 
20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache MavenArnaud Héritier
 
20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders Battle20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders BattleArnaud Héritier
 
NightClazz Build Tools & Continuous Delivery
NightClazz Build Tools & Continuous DeliveryNightClazz Build Tools & Continuous Delivery
NightClazz Build Tools & Continuous DeliveryZenika
 
Les méthodes agiles dans TFS
Les méthodes agiles dans TFSLes méthodes agiles dans TFS
Les méthodes agiles dans TFSDenis Voituron
 
Architecture logicielle #1 : introduction
Architecture logicielle #1 : introductionArchitecture logicielle #1 : introduction
Architecture logicielle #1 : introductionJean Michel
 
TFS 2010 And Agility
TFS 2010 And AgilityTFS 2010 And Agility
TFS 2010 And AgilityDominic Danis
 
conception et réalisation plateforme collaboratif basant sur la methode agile...
conception et réalisation plateforme collaboratif basant sur la methode agile...conception et réalisation plateforme collaboratif basant sur la methode agile...
conception et réalisation plateforme collaboratif basant sur la methode agile...Sid Ahmed Benkraoua
 
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
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipelineNicolas wallerand
 
[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
 
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !vincent aniort
 
Entity Framework 7 : nouvelle version majeure d’Entity Framework
Entity Framework 7 : nouvelle version majeure d’Entity FrameworkEntity Framework 7 : nouvelle version majeure d’Entity Framework
Entity Framework 7 : nouvelle version majeure d’Entity FrameworkMicrosoft
 
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
 

Semelhante a At2008 Grenoble Hugonnet Sanlaville Public (20)

20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
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...
 
Rex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - EnsimRex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - Ensim
 
Intégration continue transco
Intégration continue transcoIntégration continue transco
Intégration continue transco
 
20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven
 
20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders Battle20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders Battle
 
NightClazz Build Tools & Continuous Delivery
NightClazz Build Tools & Continuous DeliveryNightClazz Build Tools & Continuous Delivery
NightClazz Build Tools & Continuous Delivery
 
Les méthodes agiles dans TFS
Les méthodes agiles dans TFSLes méthodes agiles dans TFS
Les méthodes agiles dans TFS
 
Architecture logicielle #1 : introduction
Architecture logicielle #1 : introductionArchitecture logicielle #1 : introduction
Architecture logicielle #1 : introduction
 
TFS 2010 And Agility
TFS 2010 And AgilityTFS 2010 And Agility
TFS 2010 And Agility
 
conception et réalisation plateforme collaboratif basant sur la methode agile...
conception et réalisation plateforme collaboratif basant sur la methode agile...conception et réalisation plateforme collaboratif basant sur la methode agile...
conception et réalisation plateforme collaboratif basant sur la methode agile...
 
Mohamed.marouan
Mohamed.marouanMohamed.marouan
Mohamed.marouan
 
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...
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipeline
 
[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
 
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
Node, Grunt et leurs copains qui font de l’accessibilité tout seuls !
 
Entity Framework 7 : nouvelle version majeure d’Entity Framework
Entity Framework 7 : nouvelle version majeure d’Entity FrameworkEntity Framework 7 : nouvelle version majeure d’Entity Framework
Entity Framework 7 : nouvelle version majeure d’Entity Framework
 
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 ...
 

Mais de 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
 

Mais de 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
 

At2008 Grenoble Hugonnet Sanlaville Public

  • 1. Mise en place d'outils d'ingénierie logicielle pour industrialiser le développement Agile chez 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 et de qualité 
  • 5.
  • 7. Build - Définition Le build peut aller de la compilation (incrémentale) à la génération d’un package en passant par la génération de fichiers de source, le lancement de tests (unitaires, d’intégration…), l’analyse du code source, la génération d’un site web et de rapports… D’une certaine manière, le build englobe l’ensemble des actions souhaitées prenant en entrée des fichiers sources pour produire un résultat souhaité. Généralement, nous attendons d’un outil de build qu’il puisse automatiser et optimiser ces actions. Pas de définition précise…
  • 8.
  • 9.
  • 10. Build – Pourquoi Maven 2 ? Les fichiers sources du projet Les fichiers générés du projet Le fichier de description du projet (POM) code source java tests unitaires Conventions plutôt que configuration Standardisation du système de fichiers Facilite le passage d’un projet à un autre, la communication…
  • 11. Build – Pourquoi Maven 2 ? Conventions plutôt que configuration Standardisation du système de fichiers Standardisation du cycle de vie Facilite le passage d’un projet à un autre, la communication…
  • 12. Build – Pourquoi Maven 2 ? Conventions plutôt que configuration Standardisation du système de fichiers Standardisation du cycle de vie Standardisation du site web du projet ... Facilite le passage d’un projet à un autre, la communication…
  • 13. Build – Pourquoi Maven 2 ? Maven suit une approche déclarative et se focalise sur une abstraction de haut niveau du projet appelé le Project Object Model (POM). Un conducteur n'a pas à connaître la mécanique de sa voiture pour conduire Modélisation du build Modélisation vs scripting décrivez ce que vous voulez faire (le quoi) pas le comment ! POM
  • 14. Build – Pourquoi Maven 2 ? Problématique complexe et qui n’est pas toujours bien maîtrisée voir abordée => le changement de version d’une dépendance directe peut devenir une tâche complexe. Maven 2 apporte une aide précieuse même s’il ne résout pas tous les problèmes Graphe de dépendances du plugin scmchangelog-maven-plugin Gestion des dépendances
  • 15. Build – Pourquoi Maven 2 ? … Repositories Release, Snasphot … Automatise la récupération des dépendances, facilite l’intégration continue (les dernières versions sont tout de suite disponibles)… Réutilisation Plugins Template de projet (archétypes) … Améliore la productivité, mise en place de recommandations d’entreprise…
  • 16. Build – Plateforme Maven 2 à Orange Labs Central Central snapshot Codehaus … pom.xml <project> </project> <repository> <id>codehaus</id> <name>codehaus repository</name> <url>http://repository.codehaus.org/</url> </repository> <repositories> <repository> <id>apache.snapshot</id> <name>apache.snapshot repository</name> <url>http://people.apache.org/maven-snapshot-repository/</url> </repository> </repositories> […] […]
  • 17. Build – Plateforme Maven 2 à Orange Labs Central Central snapshot Codehaus … <parent> <groupId>com.francetelecom</groupId> <artifactId>corporate</artifactId> <version>1.4</version> </parent> […] Proxy Maven 2 pom.xml <project> </project> Central setting.xml <settings> <mirrors> <mirror> <id>FranceTelecomMaven2Proxy</id> <mirrorOf>central</mirrorOf> <name>France Telecom Maven2 repositories</name> <url>https://maven2.rd.francetelecom.fr/proxy/</url> </mirror> </mirrors> […] </settings> Central snapshot Codehaus … inhouse inhouse snapshot
  • 18. Build – Plateforme Maven 2 à Orange Labs
  • 19. Build – Plateforme Maven 2 à Orange Labs
  • 20. Build – Plateforme Maven 2 à Orange Labs
  • 21. Build – Plateforme Maven 2 à Orange Labs
  • 22. Build – Plateforme Maven 2 à Orange Labs
  • 23. Build – Plateforme Maven 2 à Orange Labs
  • 24. Build – Plateforme Maven 2 à Orange Labs
  • 25.
  • 26.
  • 28. L’Intégration Continue … une pratique de développement logiciel où les membres d’une équipe intègrent leur travail fréquemment, habituellement chacun au moins une fois par jour – ce qui entraine plusieurs intégrations par jour. Chaque intégration est validée par un ‘build’ automatique (ce qui inclut les tests) pour détecter les erreurs d’intégration aussi vite que possible ... http://www.martinfowler.com/articles/continuousIntegration.html Martin Fowler
  • 29. Intégration Continue - Problématique Source: http://www.agitar.com/solutions/why_unit_testing.html Les 5% de bugs découverts après la release représentent 95% des coûts de correction Module1 Module2 Modulei Développement Intégration
  • 30. Intégration Continue - Problématique Les 5% de bugs découverts après la release représentent 95% des coûts de correction Détecter au plus tôt les problèmes pour les corriger au plus tôt Module1 Module2 Modulei Développement Intégration Intégration Continue Module1 Module2 Modulei Intégration Intégration Développement Intégration Intégration Intégration Intégration
  • 31.
  • 32.
  • 33. Intégration Continue - Concepts Appel d’actions Evènements de déclenchement Outils de build Outils de build (Ant, Maven 1, Maven 2…) Scripts shell, bash
  • 34. Intégration Continue - Concepts Appel d’actions Evènements de déclenchement Rapports Artéfacts Notifications Comment : Mail, Messagerie instantanée, Flux RSS, Widgets, …
  • 35. Intégration Continue - Concepts Comment : Mail, Messagerie instantanée, Flux RSS, Widgets, … Qui : Liste de destinataires, plusieurs listes possibles; le(s) dernier(s) comiters Appel d’actions Evènements de déclenchement Quand : Systématiquement après chaque build, Conditionnel (échec, qualité de code…) Rapports Artéfacts Notifications
  • 36. Intégration Continue - Concepts Appel d’actions * Evènements de déclenchement Rapports Artéfacts Notifications
  • 37. Intégration Continue - Workflow Développeur checkout, update Intégration Continue construit déploie teste analyse informe Rapports Artéfacts Notifications développe teste compile Outils de build checkout, commit, update, merge SCM
  • 38.
  • 39.
  • 40.
  • 41.
  • 42. Orange Labs - Recherche & Développement - titre de la présentation – date Retour Projets
  • 43.
  • 44. Retour d'expériences – Améliorer la qualité
  • 45. Retour d'expériences – Améliorer la qualité
  • 46. Retour d'expériences - Documentation à jour
  • 47. Retour d'expériences - Documentation à jour
  • 48. Retour d'expériences - Documentation à jour
  • 50.
  • 51.
  • 52.
  • 53. Perspectives Développeur Outils de build Intégration Continue Configurations optimisées pour les tâches d'intégration packaging, tests d'intégration, métriques, site web du projet… Configurations optimisées pour les tâches du développeur hot-deploy, tests unitaires, analyse statique de code… SCM Commit par issue Tracker
  • 54. Perspectives Développeur Intégration Continue SCM Tracker Outils de build le SCM est utilisé comme simple support d'archivage. Le projet n'est pas dans un état stable et ceci est la dernière préoccupation des développeurs. les échecs sont immédiatement corrigés, commits fréquents. http://www.agile-swiss.org/wiki/index.php?title=Integration_continue Mise en place de sondes/capteurs Prévenir plutôt que guérir Est-ce que les développeurs commits régulièrement ?
  • 55. Perspectives Développeur Intégration Continue SCM Tracker Outils de build Mise en place de sondes/capteurs Prévenir plutôt que guérir
  • 56. Perspectives Mise en place d'un tableau de bord projet Maîtrise de son projet avancement, qualité… Développeur Intégration Continue SCM Tracker Outils de build