SlideShare une entreprise Scribd logo
1  sur  30
L’ Intégration Continue
Xavier.Warzee@Valtech.Fr
http://warzee.fr
Le 9 Octobre 2007
Intégration continue
>Agenda

Motivations

Principes

Processus d’intégration continue

Focus sur l’inspection du code

Conclusion
Intégration continue
>Agenda

Motivations

Principes

Processus d’intégration continue

Focus sur l’inspection du code

Conclusion
Motivations au niveau entreprise

Marketing
   • Demande de démonstrations non planifiées

Budgets
   • Démontrer rapidement l’avancement d’un projet
          Projets gérés par tranches, par lots conditionnels : focus sur le fonctionnel important !

Ressources, équipes
   • Coordination d’équipes distribuées : le reporting projet ne suffit pas !
          Il faut partager les mêmes éléments d’évaluation de l’état d’avancement d’un projet
   • Des changements dans l’organisation : fusion/acquisition, restructuration, …

Besoins : les besoins varient continuellement en fonction
   • Des produits de concurrents éventuels
   • Des changements légaux, règlementaires (contraintes d’importation, de
     confidentialité, etc.)

Besoin d’intégrer les évolutions d’un projet en continu
Motivations au niveau projet

Nécessité d’améliorer :
   • La qualité des livrables
          Réduire la complexité ( meilleure maintenabilité)
          Adéquation
   • La traçabilité
          des changements
          des déploiements
   • La productivité
          Se focaliser sur le métier, pas sur la technique

Principes « agiles »
   •   Fabriquer souvent
   •   Tester souvent (tests unitaires)
   •   Tester les performances souvent
   •   Intégrer souvent dans le SI
Intégration continue
>Agenda

Motivations

Principes

Processus d’intégration continue

Focus sur l’inspection du code

Conclusion
Formalisation par Martin Fowler & Kent Beck, 2000

« Continuous Integration is a software development 
practice where members of a team integrate their
work frequently, usually each person integrates at 
least daily - leading to multiple integrations per day. »

« Each integration is verified by an automated build 
(including test) to detect integration errors as 
quickly as possible. » 

Many teams find that this approach 
         leads to significantly reduced integration problems 
         and allows a team to develop cohesive software more rapidly.
Principes

Fabriquer (build) un projet à chaque changement
   • Intégrer les changements en continue !!!


« Build » ?
   •   Compiler
   •   Tester (tests unitaires, d’intégration , de performance)
   •   Inspecter (revue de code)
   •   Déployer
   •   Documenter
   •   Notifier (email, SMS, RSS, etc.)
Principes
                                                4


                                                               6
                               5

                                   Serveur d’intégration                Plateforme de déploiement



                                              Check In (changements)
                                         1
        1                      3
                                          2   Détection des changements (sur les logs)
                           2
                                              Update de l’espace de travail du serveur d’intégration
                                         3

                                         4    Exéctution du « build »
                                                    • compilation des sources,
                                                    • regénération des ressources,
                                                    • tests,
     Référentiel de
                                                    • inspections,
Gestion de configuration
                                                    • déploiements
(Clearcase, CVS, SVN, …)
                                              Notification des résultats (RSS, Email, Blog, Tray, …)
                                         5

                                              Déploiement de l’application
                                         6
Les différents types de « build »




Cf. SDTimes « Will the Build Bottleneck Put the Brakes on Agile? »
(http://www.sdtimes.com/article/special-20050815-01.html)
Intégration continue
>Agenda

Motivations

Principes

Processus d’intégration continue

Focus sur l’inspection du code

Conclusion
Processus d’intégration continue : enjeux

                                            Comment contrôler la
                                            qualité durant les étapes
                                            de « build » ?
                                             automatiser le
                                            processus complet en
                                            tenant compte des
                                            aspects distribués
                                                plateformes de
                                                 développement,
                                                plateformes d’intégration,
                                                plateformes d’acceptation,
                                                plateformes de pré-
                                                 production,
                                                etc.
Processus d’intégration
Processus d’intégration continue
>Côté développeur
Plateforme de développement
   • « Local build » : les développeurs construisent le logiciel sur leur
     poste de travail
         Compilation des sources, exécution des tests, inspection du code, etc.
         Si possible, utilisation des mêmes commandes de « build » que celles du serveur
          d’intégration continue (IC)

   • « commit at all time » : à tout moment, les développeurs peuvent
     mettre à jour le référentiel commun de gestion de configuration
     (travail en équipe)

 Référentiel de gestion de configuration
(«source repository »)
   • Ensemble des éléments d’un projet (documents, code, …) gérés en
     configuration
   • Les développeurs mettent à jour le référentiel avec le code, les tests,
     les documents
   • le code doit en principe être compilable
   • les tests doivent en principe être exécuté avec succès
Processus d’intégration continue
> Côté serveur d’intégration continue

« Automated builds integration plateform »
   • Construction automatique de l’application régulièrement, par exemple
     toute les 2 heures
   • Production de rapports (tests, qualité, activités, …) disponibles en
     ligne et/ou par exemple envoyés par messagerie


Livraison d’une « release » en interne régulièrement
   • Par exemple toute les 2 semaines
   • Objectif de cette « release » : faire des tests fonctionnels et/ou de
     performance (stress)


Livraison officielle
Processus d’intégration continue
> En résumé

Automatiser le processus de développement
   • Extraction périodique et automatique des sources du
     référentiel
   • Lancement des tests, calcul de couverture des tests
   • Calcul d’indicateurs (complexité, etc.)
   • Construction du logiciel
   • packaging, déploiement automatisé
Intégration continue
>Agenda

Motivations

Principes

Processus d’intégration continue

Focus sur l’inspection du code

Conclusion
Focus sur l’inspection du code
> Inspection par les tests

                                     Accessible à distance (équipe offshore)




        Plateforme de développement

                                                                                                                        Plateforme
                                                                                              Plateforme
                                                               Plateforme                                              d’acceptation
                                                                                                  de
                                                              d’intégration                                                client
        Station                Machine
                                                                                            pré-acceptation
       de travail            d’assemblage




                             - Tests d’intégration                                          - Tests fonctionnels
  - Tests unitaires                                         - Tests Fonctionnels (manuel)                              - Tests fonctionnels

                                                                                            exécutés par l’équipe de
  (mocks/bouchons)                                                                                                     exécutés par le client
                             - Tests fonctionnels par les   - Tests Techniques
                                                                                            d’intégration (manuel)     (manuel)
                             développeurs
  - Quelques tests                                          /Performance (manuel)

  d’intégration (Base de

  données)
               Automatisation possible des tests fonctionnels avec des

                              outils comme Selenium
Focus sur l’inspection du code
> Inspection par les tests

« Build » en journée
   • Un « build » de journée est lancé en moyenne toutes les 2 heures :
         le temps est donc compté pour lancer des tests !

   • Des tests simples ou « smoke tests »* peuvent être lancés permettant
     de détecter rapidement des disfonctionnements essentiels :
         Fichiers de configuration (XML, propriétés, etc.) inconsistants entre eux ne
          permettant pas de démarrer l’application par exemple
         Ressources tierces inaccessibles (base de données, drivers, etc.)


   • Ces tests doivent solliciter toutes les parties d’une application sans
     pour autant être exhaustifs

   • Typiquement, les tests unitaires sont lancés en journée. Un test
     unitaire ne doit prendre que quelques secondes pour s’exécuter.
         Tests avec ou sans bouchon (mocks)
         Tests sans bouchon : utiliser des frameworks de tests comme TestNG (suites de
          tests lancés en fonction d’autres tests exécutés avec succès !)

 * Article de Steve McConnell, IEEE Software, Vol. 13, No. 4, July 1996
Focus sur l’inspection du code
> Inspection par les tests

« Build » de nuit (nightly build)
   • Exécuter des tests plus exhaustifs !
         100% des tests doivent être exécutés avec succès pour le « build »
          se termine avec succès !!!


   • Ces tests permettent par la suite de réduire les risques à
     l’intégration

   • Comme il y a moins de changements entre 2 « builds », il
     est plus simple
         de diagnostiquer l’origine d’un problème de compilation
         ou de comprendre pourquoi certains tests sont en échec.
Focus sur l’inspection du code
> Métriques, revue de code

Quoi mesurer ?
    • Taux de couverture du code,
    • Métriques de complexité (McCabe, …),
    • Détection de bugs (Findbugs, PMD, …)


Comment mesurer ?
    • Maven, xUnit, Agitar, Sonar, Cobertura, …


Reste « Quand mesurer » ?
    • Mesurer quotidiennement (« build » de nuit)
    • Eviter de créer un effet tunnel !
Intégration continue
>Agenda

Motivations

Principes

Processus d’intégration continue

Focus sur l’inspection du code

La solution Cruisecontrol

Conclusion
La solution CruiseControl

CruiseControl est un outil
   • Permettant la construction automatisée du logiciel.

   • Indépendant de l’outil de construction
         Shell : utilisation possible de make, gmake, clearmake
         Ant
         Maven


   • Indépendant du gestionnaire de source
            Cvs
        
            Subversion
        
            Clearcase
        
            …
        
La solution CruiseControl

                                                                        • RSS
                                                                        • e-mail
       Référentiel
                                                                        • Jabber
                                    Cruisecontrol
                             1                                 3
        de source
                                                                        • x10
                                                                        • web
                                                2




                                                                    • Compiler
                                                                    • Tester
                                          ANT
                                                                    • Inspecter
                                                    Maven           • Déployer
                                                            Shell   • Documenter
                         Détecte les modifications
                     1

                         Lance et contrôle la construction
                     2

                         Publie les résultats
                     3
3 développeurs
    pendant
     6 mois
        =
   980 builds
  ( 8 / jours )
La solution CruiseControl
> l’écosysteme

Extension Firefox

Widgets
   • Widget Apple
   • Widget Yahoo


Windows SysTray
   • JCCTray, CCTray (.Net)
La solution CruiseControl

Détection de problème en amont.
     Détection au checkin.

Evite l’intégration traditionnellement faite en fin de
projet.

Outil de communication
      « Machine à feedback »
Intégration continue
>Agenda

Motivations

Principes

Processus d’intégration continue

Focus sur l’inspection du code

La solution Cruisecontrol

Conclusion
Conclusion

Contrôler la qualité pendant les développement
   • Tester souvent
   • Tester les performances souvent
   • Construire les applications souvent (« build »)


Cruisecontrol est une référence
   • Écosystème signe de reconnaissance et maturité
        Apple Widget, Yahoo Widget, CCTray, …
   • Il existe des solutions opensource plus simple (moins
     souple ?) :
        Bamboo, Continuum, Hudson, etc.
   • Des solutions commerciales existent :
        BuildForge (IBM), OpenMake (Catalyst Systems Corporation), ParaBuild
         (Viewtier Systems)
Conclusion

L’intégration continue
   • Moyen efficace d’éviter le « big-bang » d’une phase
     d’intégration

   • « releases » plus robustes et fonctionnellement
     pertinentes :-)

   • Capitalisation des bonnes pratiques de fabrication du
     logiciel

   • Processus répétable et automatisé de fabrication du
     logiciel

   • L’automatisation permet plus de réactivité

Contenu connexe

Tendances

Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
boulonvert
 
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel  - Introduction Et Bonnes PratiquesIndustrialisation Du Logiciel  - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
Emmanuel Hugonnet
 
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
ENSET, Université Hassan II Casablanca
 

Tendances (20)

Jenkins presentation
Jenkins presentationJenkins presentation
Jenkins presentation
 
Maven et industrialisation du logiciel
Maven et industrialisation du logicielMaven et industrialisation du logiciel
Maven et industrialisation du logiciel
 
Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)
 
Présentation DEVOPS.pptx
Présentation DEVOPS.pptxPrésentation DEVOPS.pptx
Présentation DEVOPS.pptx
 
Support de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfiSupport de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfi
 
Intégration de SonarQube dans GitLab ci
Intégration de SonarQube dans GitLab ciIntégration de SonarQube dans GitLab ci
Intégration de SonarQube dans GitLab ci
 
Automatisation des tests
Automatisation des testsAutomatisation des tests
Automatisation des tests
 
eServices-Chp5: Microservices et API Management
eServices-Chp5: Microservices et API ManagementeServices-Chp5: Microservices et API Management
eServices-Chp5: Microservices et API Management
 
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfiJava entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
 
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel  - Introduction Et Bonnes PratiquesIndustrialisation Du Logiciel  - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring boot
 
An Introduction To Jenkins
An Introduction To JenkinsAn Introduction To Jenkins
An Introduction To Jenkins
 
Chp5 - Sécurité des Services
Chp5 - Sécurité des ServicesChp5 - Sécurité des Services
Chp5 - Sécurité des Services
 
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
 
Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration
 
Spring Boot Tutorial | Microservices Spring Boot | Microservices Architecture...
Spring Boot Tutorial | Microservices Spring Boot | Microservices Architecture...Spring Boot Tutorial | Microservices Spring Boot | Microservices Architecture...
Spring Boot Tutorial | Microservices Spring Boot | Microservices Architecture...
 
Devops - vision et pratiques
Devops - vision et pratiquesDevops - vision et pratiques
Devops - vision et pratiques
 
Introduction à ASP.NET
Introduction à ASP.NETIntroduction à ASP.NET
Introduction à ASP.NET
 
La plateforme JEE
La plateforme JEELa plateforme JEE
La plateforme JEE
 

En vedette

Intégration continue & Qualité logicielle
Intégration continue & Qualité logicielleIntégration continue & Qualité logicielle
Intégration continue & Qualité logicielle
David Buros
 
Intégration Continue (Agile Nantes)
Intégration Continue (Agile Nantes)Intégration Continue (Agile Nantes)
Intégration Continue (Agile Nantes)
Fabian Piau
 
Wilfried woivré intégration continue
Wilfried woivré   intégration continueWilfried woivré   intégration continue
Wilfried woivré intégration continue
Aymeric Weinbach
 
Azure camp 26 septembre tips and tools
Azure camp 26 septembre tips and toolsAzure camp 26 septembre tips and tools
Azure camp 26 septembre tips and tools
Aymeric Weinbach
 
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
Hugo Hamon
 

En vedette (20)

Concept de l’Intégration Continue
Concept de l’Intégration ContinueConcept de l’Intégration Continue
Concept de l’Intégration Continue
 
Intégration continue & Qualité logicielle
Intégration continue & Qualité logicielleIntégration continue & Qualité logicielle
Intégration continue & Qualité logicielle
 
Intégration Continue (Agile Nantes)
Intégration Continue (Agile Nantes)Intégration Continue (Agile Nantes)
Intégration Continue (Agile Nantes)
 
Integration continue et déploiement automatisé
Integration continue et déploiement automatiséIntegration continue et déploiement automatisé
Integration continue et déploiement automatisé
 
Livraison et intégration continue avec TFS 2013 et InRelease
Livraison et intégration continue avec TFS 2013 et InReleaseLivraison et intégration continue avec TFS 2013 et InRelease
Livraison et intégration continue avec TFS 2013 et InRelease
 
L'integration continue pour tous
L'integration continue pour tousL'integration continue pour tous
L'integration continue pour tous
 
Wilfried woivré intégration continue
Wilfried woivré   intégration continueWilfried woivré   intégration continue
Wilfried woivré intégration continue
 
Azure camp 26 septembre tips and tools
Azure camp 26 septembre tips and toolsAzure camp 26 septembre tips and tools
Azure camp 26 septembre tips and tools
 
Déploiement dans Azure depuis Visual Studio Team Services
Déploiement dans Azure depuis Visual Studio Team ServicesDéploiement dans Azure depuis Visual Studio Team Services
Déploiement dans Azure depuis Visual Studio Team Services
 
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
 
JCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec JenkinsJCertif 2012 : Integration continue avec Jenkins
JCertif 2012 : Integration continue avec Jenkins
 
Continuous Delivery Distilled
Continuous Delivery DistilledContinuous Delivery Distilled
Continuous Delivery Distilled
 
REX sur l'outilage Continuous Delivery
REX sur l'outilage Continuous DeliveryREX sur l'outilage Continuous Delivery
REX sur l'outilage Continuous Delivery
 
Il était une fois le Continuous Delivery chez Meetic
Il était une fois le Continuous Delivery chez MeeticIl était une fois le Continuous Delivery chez Meetic
Il était une fois le Continuous Delivery chez Meetic
 
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
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
Devoxx 2016 - L'odyssée du continuous delivery
Devoxx 2016 - L'odyssée du continuous deliveryDevoxx 2016 - L'odyssée du continuous delivery
Devoxx 2016 - L'odyssée du continuous delivery
 
DevOps
DevOpsDevOps
DevOps
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
DevOps 101
DevOps 101DevOps 101
DevOps 101
 

Similaire à Principes de L'intégration Continue

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
Djamel Zouaoui
 
Friday Web 16 01 2009
Friday Web 16 01 2009Friday Web 16 01 2009
Friday Web 16 01 2009
Arnaud_Pukan
 
SharePoint 2010 & Team Foundation Server
SharePoint 2010 & Team Foundation ServerSharePoint 2010 & Team Foundation Server
SharePoint 2010 & Team Foundation Server
Philippe Sentenac
 
Proposition Commerciale Foundations Fr
Proposition Commerciale Foundations FrProposition Commerciale Foundations Fr
Proposition Commerciale Foundations Fr
CRONOS Technologies
 
JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924
Gregory Boissinot
 
[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
Christophe HERAL
 

Similaire à Principes de L'intégration Continue (20)

Hudson Aquarium Paris
Hudson Aquarium ParisHudson Aquarium Paris
Hudson Aquarium Paris
 
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
 
Friday Web 16 01 2009
Friday Web 16 01 2009Friday Web 16 01 2009
Friday Web 16 01 2009
 
L’intégration continue chez AXA France
L’intégration continue chez AXA FranceL’intégration continue chez AXA France
L’intégration continue chez AXA France
 
Usine logicielle à Orange Labs
Usine logicielle à Orange LabsUsine logicielle à Orange Labs
Usine logicielle à Orange Labs
 
System Center 2012 | SCO : Retours d’expériences projets et déploiements Syst...
System Center 2012 | SCO : Retours d’expériences projets et déploiements Syst...System Center 2012 | SCO : Retours d’expériences projets et déploiements Syst...
System Center 2012 | SCO : Retours d’expériences projets et déploiements Syst...
 
Methodologie projet
Methodologie projet Methodologie projet
Methodologie projet
 
Dev opsday case study
Dev opsday   case studyDev opsday   case study
Dev opsday case study
 
TechDays 2012 - Windows Azure - ALM
TechDays 2012 - Windows Azure - ALMTechDays 2012 - Windows Azure - ALM
TechDays 2012 - Windows Azure - ALM
 
QSOS 2.0 Solutions Linux 2009
QSOS 2.0 Solutions Linux 2009QSOS 2.0 Solutions Linux 2009
QSOS 2.0 Solutions Linux 2009
 
Mise en oeuvre de lab management avec team foundation server 2010 et microsof...
Mise en oeuvre de lab management avec team foundation server 2010 et microsof...Mise en oeuvre de lab management avec team foundation server 2010 et microsof...
Mise en oeuvre de lab management avec team foundation server 2010 et microsof...
 
Documentation - Database Tuning (Oracle)
Documentation - Database Tuning (Oracle)Documentation - Database Tuning (Oracle)
Documentation - Database Tuning (Oracle)
 
Industrialisation des développements CRM 2011
Industrialisation des développements CRM 2011Industrialisation des développements CRM 2011
Industrialisation des développements CRM 2011
 
SharePoint 2010 & Team Foundation Server
SharePoint 2010 & Team Foundation ServerSharePoint 2010 & Team Foundation Server
SharePoint 2010 & Team Foundation Server
 
Proposition Commerciale Foundations Fr
Proposition Commerciale Foundations FrProposition Commerciale Foundations Fr
Proposition Commerciale Foundations Fr
 
JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924
 
[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
 
Assurance Qualité logicielle
Assurance Qualité logicielleAssurance Qualité logicielle
Assurance Qualité logicielle
 
Avis d'expert : Les Tests Logiciels
Avis d'expert : Les Tests LogicielsAvis d'expert : Les Tests Logiciels
Avis d'expert : Les Tests Logiciels
 
Documentation - SQL SuperVision (Sybase)
Documentation - SQL SuperVision (Sybase)Documentation - SQL SuperVision (Sybase)
Documentation - SQL SuperVision (Sybase)
 

Plus de Xavier Warzee

Retour expérience Agilité & Données fonction finances risques - Agile Tour ...
Retour expérience Agilité & Données fonction finances risques - Agile Tour ...Retour expérience Agilité & Données fonction finances risques - Agile Tour ...
Retour expérience Agilité & Données fonction finances risques - Agile Tour ...
Xavier Warzee
 
Atelier "SOS du Titanic, perdu dans l'Atlantique" - leadership des talents
Atelier "SOS du Titanic, perdu dans l'Atlantique" - leadership des talentsAtelier "SOS du Titanic, perdu dans l'Atlantique" - leadership des talents
Atelier "SOS du Titanic, perdu dans l'Atlantique" - leadership des talents
Xavier Warzee
 
Faciliter une transformation agile avec les Innovation Games dans une banque ...
Faciliter une transformation agile avec les Innovation Games dans une banque ...Faciliter une transformation agile avec les Innovation Games dans une banque ...
Faciliter une transformation agile avec les Innovation Games dans une banque ...
Xavier Warzee
 
Innovation games + agile in retail banking
Innovation games + agile in retail bankingInnovation games + agile in retail banking
Innovation games + agile in retail banking
Xavier Warzee
 
Scrum day 2013 sponsoring package
Scrum day 2013 sponsoring packageScrum day 2013 sponsoring package
Scrum day 2013 sponsoring package
Xavier Warzee
 
Annonces du french scrum user group v1.2
Annonces du french scrum user group   v1.2Annonces du french scrum user group   v1.2
Annonces du french scrum user group v1.2
Xavier Warzee
 
Annonces du french scrum user group - rencontre du 24 juin 2011
Annonces du french scrum user group - rencontre du 24 juin 2011Annonces du french scrum user group - rencontre du 24 juin 2011
Annonces du french scrum user group - rencontre du 24 juin 2011
Xavier Warzee
 
Journées NEPTUNE - Keynote Modélisation chez Microsoft
Journées NEPTUNE - Keynote Modélisation chez MicrosoftJournées NEPTUNE - Keynote Modélisation chez Microsoft
Journées NEPTUNE - Keynote Modélisation chez Microsoft
Xavier Warzee
 
Enquête 2011 - Vous, votre organisation et Agile
Enquête 2011 - Vous, votre organisation et Agile Enquête 2011 - Vous, votre organisation et Agile
Enquête 2011 - Vous, votre organisation et Agile
Xavier Warzee
 
Scrum Day France 2011 : ouverture avec Xavier Warzee
Scrum Day France 2011 : ouverture avec Xavier WarzeeScrum Day France 2011 : ouverture avec Xavier Warzee
Scrum Day France 2011 : ouverture avec Xavier Warzee
Xavier Warzee
 
Embedding a Scrum culture avec Harvey Wheaton, Scrum Alliance
Embedding a Scrum culture avec Harvey Wheaton, Scrum AllianceEmbedding a Scrum culture avec Harvey Wheaton, Scrum Alliance
Embedding a Scrum culture avec Harvey Wheaton, Scrum Alliance
Xavier Warzee
 
Path to agility, Ken Schwaber
Path to agility, Ken SchwaberPath to agility, Ken Schwaber
Path to agility, Ken Schwaber
Xavier Warzee
 
Bilan 2010-2011 du FSUG
Bilan 2010-2011 du FSUGBilan 2010-2011 du FSUG
Bilan 2010-2011 du FSUG
Xavier Warzee
 
Quand mon produit est un système d information
Quand mon produit est un système d informationQuand mon produit est un système d information
Quand mon produit est un système d information
Xavier Warzee
 
Un format dynamique de rétrospective, Jean-Charles Meyrignac
Un format dynamique de rétrospective, Jean-Charles Meyrignac Un format dynamique de rétrospective, Jean-Charles Meyrignac
Un format dynamique de rétrospective, Jean-Charles Meyrignac
Xavier Warzee
 

Plus de Xavier Warzee (20)

SOS TITANIC - Be a highly performant team to save your life!
SOS TITANIC - Be a highly performant team to save your life!SOS TITANIC - Be a highly performant team to save your life!
SOS TITANIC - Be a highly performant team to save your life!
 
Le Management à l'ère des organisations Agiles
Le Management à l'ère des organisations AgilesLe Management à l'ère des organisations Agiles
Le Management à l'ère des organisations Agiles
 
Be very efficient and innovative thanks to disorder!
Be very efficient and innovative thanks to disorder!Be very efficient and innovative thanks to disorder!
Be very efficient and innovative thanks to disorder!
 
L'Agilité - breakfast IDC devops, 18 septembre 2014
L'Agilité  - breakfast IDC devops, 18 septembre 2014L'Agilité  - breakfast IDC devops, 18 septembre 2014
L'Agilité - breakfast IDC devops, 18 septembre 2014
 
Advanced infrastructure for pan european collaborative engineering - E-colleg
Advanced infrastructure for pan european collaborative engineering - E-collegAdvanced infrastructure for pan european collaborative engineering - E-colleg
Advanced infrastructure for pan european collaborative engineering - E-colleg
 
Retour expérience Agilité & Données fonction finances risques - Agile Tour ...
Retour expérience Agilité & Données fonction finances risques - Agile Tour ...Retour expérience Agilité & Données fonction finances risques - Agile Tour ...
Retour expérience Agilité & Données fonction finances risques - Agile Tour ...
 
Atelier "SOS du Titanic, perdu dans l'Atlantique" - leadership des talents
Atelier "SOS du Titanic, perdu dans l'Atlantique" - leadership des talentsAtelier "SOS du Titanic, perdu dans l'Atlantique" - leadership des talents
Atelier "SOS du Titanic, perdu dans l'Atlantique" - leadership des talents
 
Faciliter une transformation agile avec les Innovation Games dans une banque ...
Faciliter une transformation agile avec les Innovation Games dans une banque ...Faciliter une transformation agile avec les Innovation Games dans une banque ...
Faciliter une transformation agile avec les Innovation Games dans une banque ...
 
Innovation games + agile in retail banking
Innovation games + agile in retail bankingInnovation games + agile in retail banking
Innovation games + agile in retail banking
 
Scrum day 2013 sponsoring package
Scrum day 2013 sponsoring packageScrum day 2013 sponsoring package
Scrum day 2013 sponsoring package
 
Annonces du french scrum user group v1.2
Annonces du french scrum user group   v1.2Annonces du french scrum user group   v1.2
Annonces du french scrum user group v1.2
 
Annonces du french scrum user group - rencontre du 24 juin 2011
Annonces du french scrum user group - rencontre du 24 juin 2011Annonces du french scrum user group - rencontre du 24 juin 2011
Annonces du french scrum user group - rencontre du 24 juin 2011
 
Journées NEPTUNE - Keynote Modélisation chez Microsoft
Journées NEPTUNE - Keynote Modélisation chez MicrosoftJournées NEPTUNE - Keynote Modélisation chez Microsoft
Journées NEPTUNE - Keynote Modélisation chez Microsoft
 
Enquête 2011 - Vous, votre organisation et Agile
Enquête 2011 - Vous, votre organisation et Agile Enquête 2011 - Vous, votre organisation et Agile
Enquête 2011 - Vous, votre organisation et Agile
 
Scrum Day France 2011 : ouverture avec Xavier Warzee
Scrum Day France 2011 : ouverture avec Xavier WarzeeScrum Day France 2011 : ouverture avec Xavier Warzee
Scrum Day France 2011 : ouverture avec Xavier Warzee
 
Embedding a Scrum culture avec Harvey Wheaton, Scrum Alliance
Embedding a Scrum culture avec Harvey Wheaton, Scrum AllianceEmbedding a Scrum culture avec Harvey Wheaton, Scrum Alliance
Embedding a Scrum culture avec Harvey Wheaton, Scrum Alliance
 
Path to agility, Ken Schwaber
Path to agility, Ken SchwaberPath to agility, Ken Schwaber
Path to agility, Ken Schwaber
 
Bilan 2010-2011 du FSUG
Bilan 2010-2011 du FSUGBilan 2010-2011 du FSUG
Bilan 2010-2011 du FSUG
 
Quand mon produit est un système d information
Quand mon produit est un système d informationQuand mon produit est un système d information
Quand mon produit est un système d information
 
Un format dynamique de rétrospective, Jean-Charles Meyrignac
Un format dynamique de rétrospective, Jean-Charles Meyrignac Un format dynamique de rétrospective, Jean-Charles Meyrignac
Un format dynamique de rétrospective, Jean-Charles Meyrignac
 

Principes de L'intégration Continue

  • 2. Intégration continue >Agenda Motivations Principes Processus d’intégration continue Focus sur l’inspection du code Conclusion
  • 3. Intégration continue >Agenda Motivations Principes Processus d’intégration continue Focus sur l’inspection du code Conclusion
  • 4. Motivations au niveau entreprise Marketing • Demande de démonstrations non planifiées Budgets • Démontrer rapidement l’avancement d’un projet  Projets gérés par tranches, par lots conditionnels : focus sur le fonctionnel important ! Ressources, équipes • Coordination d’équipes distribuées : le reporting projet ne suffit pas !  Il faut partager les mêmes éléments d’évaluation de l’état d’avancement d’un projet • Des changements dans l’organisation : fusion/acquisition, restructuration, … Besoins : les besoins varient continuellement en fonction • Des produits de concurrents éventuels • Des changements légaux, règlementaires (contraintes d’importation, de confidentialité, etc.) Besoin d’intégrer les évolutions d’un projet en continu
  • 5. Motivations au niveau projet Nécessité d’améliorer : • La qualité des livrables  Réduire la complexité ( meilleure maintenabilité)  Adéquation • La traçabilité  des changements  des déploiements • La productivité  Se focaliser sur le métier, pas sur la technique Principes « agiles » • Fabriquer souvent • Tester souvent (tests unitaires) • Tester les performances souvent • Intégrer souvent dans le SI
  • 6. Intégration continue >Agenda Motivations Principes Processus d’intégration continue Focus sur l’inspection du code Conclusion
  • 7. Formalisation par Martin Fowler & Kent Beck, 2000 « Continuous Integration is a software development  practice where members of a team integrate their work frequently, usually each person integrates at  least daily - leading to multiple integrations per day. » « Each integration is verified by an automated build  (including test) to detect integration errors as  quickly as possible. »  Many teams find that this approach   leads to significantly reduced integration problems   and allows a team to develop cohesive software more rapidly.
  • 8. Principes Fabriquer (build) un projet à chaque changement • Intégrer les changements en continue !!! « Build » ? • Compiler • Tester (tests unitaires, d’intégration , de performance) • Inspecter (revue de code) • Déployer • Documenter • Notifier (email, SMS, RSS, etc.)
  • 9. Principes 4 6 5 Serveur d’intégration Plateforme de déploiement Check In (changements) 1 1 3 2 Détection des changements (sur les logs) 2 Update de l’espace de travail du serveur d’intégration 3 4 Exéctution du « build » • compilation des sources, • regénération des ressources, • tests, Référentiel de • inspections, Gestion de configuration • déploiements (Clearcase, CVS, SVN, …) Notification des résultats (RSS, Email, Blog, Tray, …) 5 Déploiement de l’application 6
  • 10. Les différents types de « build » Cf. SDTimes « Will the Build Bottleneck Put the Brakes on Agile? » (http://www.sdtimes.com/article/special-20050815-01.html)
  • 11. Intégration continue >Agenda Motivations Principes Processus d’intégration continue Focus sur l’inspection du code Conclusion
  • 12. Processus d’intégration continue : enjeux Comment contrôler la qualité durant les étapes de « build » ?  automatiser le processus complet en tenant compte des aspects distribués  plateformes de développement,  plateformes d’intégration,  plateformes d’acceptation,  plateformes de pré- production,  etc.
  • 14. Processus d’intégration continue >Côté développeur Plateforme de développement • « Local build » : les développeurs construisent le logiciel sur leur poste de travail  Compilation des sources, exécution des tests, inspection du code, etc.  Si possible, utilisation des mêmes commandes de « build » que celles du serveur d’intégration continue (IC) • « commit at all time » : à tout moment, les développeurs peuvent mettre à jour le référentiel commun de gestion de configuration (travail en équipe) Référentiel de gestion de configuration («source repository ») • Ensemble des éléments d’un projet (documents, code, …) gérés en configuration • Les développeurs mettent à jour le référentiel avec le code, les tests, les documents • le code doit en principe être compilable • les tests doivent en principe être exécuté avec succès
  • 15. Processus d’intégration continue > Côté serveur d’intégration continue « Automated builds integration plateform » • Construction automatique de l’application régulièrement, par exemple toute les 2 heures • Production de rapports (tests, qualité, activités, …) disponibles en ligne et/ou par exemple envoyés par messagerie Livraison d’une « release » en interne régulièrement • Par exemple toute les 2 semaines • Objectif de cette « release » : faire des tests fonctionnels et/ou de performance (stress) Livraison officielle
  • 16. Processus d’intégration continue > En résumé Automatiser le processus de développement • Extraction périodique et automatique des sources du référentiel • Lancement des tests, calcul de couverture des tests • Calcul d’indicateurs (complexité, etc.) • Construction du logiciel • packaging, déploiement automatisé
  • 17. Intégration continue >Agenda Motivations Principes Processus d’intégration continue Focus sur l’inspection du code Conclusion
  • 18. Focus sur l’inspection du code > Inspection par les tests Accessible à distance (équipe offshore) Plateforme de développement Plateforme Plateforme Plateforme d’acceptation de d’intégration client Station Machine pré-acceptation de travail d’assemblage - Tests d’intégration - Tests fonctionnels - Tests unitaires - Tests Fonctionnels (manuel) - Tests fonctionnels exécutés par l’équipe de (mocks/bouchons) exécutés par le client - Tests fonctionnels par les - Tests Techniques d’intégration (manuel) (manuel) développeurs - Quelques tests /Performance (manuel) d’intégration (Base de données) Automatisation possible des tests fonctionnels avec des outils comme Selenium
  • 19. Focus sur l’inspection du code > Inspection par les tests « Build » en journée • Un « build » de journée est lancé en moyenne toutes les 2 heures :  le temps est donc compté pour lancer des tests ! • Des tests simples ou « smoke tests »* peuvent être lancés permettant de détecter rapidement des disfonctionnements essentiels :  Fichiers de configuration (XML, propriétés, etc.) inconsistants entre eux ne permettant pas de démarrer l’application par exemple  Ressources tierces inaccessibles (base de données, drivers, etc.) • Ces tests doivent solliciter toutes les parties d’une application sans pour autant être exhaustifs • Typiquement, les tests unitaires sont lancés en journée. Un test unitaire ne doit prendre que quelques secondes pour s’exécuter.  Tests avec ou sans bouchon (mocks)  Tests sans bouchon : utiliser des frameworks de tests comme TestNG (suites de tests lancés en fonction d’autres tests exécutés avec succès !) * Article de Steve McConnell, IEEE Software, Vol. 13, No. 4, July 1996
  • 20. Focus sur l’inspection du code > Inspection par les tests « Build » de nuit (nightly build) • Exécuter des tests plus exhaustifs !  100% des tests doivent être exécutés avec succès pour le « build » se termine avec succès !!! • Ces tests permettent par la suite de réduire les risques à l’intégration • Comme il y a moins de changements entre 2 « builds », il est plus simple  de diagnostiquer l’origine d’un problème de compilation  ou de comprendre pourquoi certains tests sont en échec.
  • 21. Focus sur l’inspection du code > Métriques, revue de code Quoi mesurer ? • Taux de couverture du code, • Métriques de complexité (McCabe, …), • Détection de bugs (Findbugs, PMD, …) Comment mesurer ? • Maven, xUnit, Agitar, Sonar, Cobertura, … Reste « Quand mesurer » ? • Mesurer quotidiennement (« build » de nuit) • Eviter de créer un effet tunnel !
  • 22. Intégration continue >Agenda Motivations Principes Processus d’intégration continue Focus sur l’inspection du code La solution Cruisecontrol Conclusion
  • 23. La solution CruiseControl CruiseControl est un outil • Permettant la construction automatisée du logiciel. • Indépendant de l’outil de construction  Shell : utilisation possible de make, gmake, clearmake  Ant  Maven • Indépendant du gestionnaire de source Cvs  Subversion  Clearcase  … 
  • 24. La solution CruiseControl • RSS • e-mail Référentiel • Jabber Cruisecontrol 1 3 de source • x10 • web 2 • Compiler • Tester ANT • Inspecter Maven • Déployer Shell • Documenter Détecte les modifications 1 Lance et contrôle la construction 2 Publie les résultats 3
  • 25. 3 développeurs pendant 6 mois = 980 builds ( 8 / jours )
  • 26. La solution CruiseControl > l’écosysteme Extension Firefox Widgets • Widget Apple • Widget Yahoo Windows SysTray • JCCTray, CCTray (.Net)
  • 27. La solution CruiseControl Détection de problème en amont. Détection au checkin. Evite l’intégration traditionnellement faite en fin de projet. Outil de communication « Machine à feedback »
  • 28. Intégration continue >Agenda Motivations Principes Processus d’intégration continue Focus sur l’inspection du code La solution Cruisecontrol Conclusion
  • 29. Conclusion Contrôler la qualité pendant les développement • Tester souvent • Tester les performances souvent • Construire les applications souvent (« build ») Cruisecontrol est une référence • Écosystème signe de reconnaissance et maturité  Apple Widget, Yahoo Widget, CCTray, … • Il existe des solutions opensource plus simple (moins souple ?) :  Bamboo, Continuum, Hudson, etc. • Des solutions commerciales existent :  BuildForge (IBM), OpenMake (Catalyst Systems Corporation), ParaBuild (Viewtier Systems)
  • 30. Conclusion L’intégration continue • Moyen efficace d’éviter le « big-bang » d’une phase d’intégration • « releases » plus robustes et fonctionnellement pertinentes :-) • Capitalisation des bonnes pratiques de fabrication du logiciel • Processus répétable et automatisé de fabrication du logiciel • L’automatisation permet plus de réactivité