SlideShare ist ein Scribd-Unternehmen logo
1 von 70
Downloaden Sie, um offline zu lesen
Génie Logiciel,
             ALM et outillage
E S E O - Angers
Mardi 19 février 2013
Laurent Guérin
    laurent.guerin@sogeti.com
    @ltguerin
1-   Génie logiciel – Introduction

2-   ALM (Application Lifecycle Management)

3-   SCM (Source Code Management)

4-   Maven

5-   Intégration continue et qualité logicielle

6-   Génération de code




                                     Génie Logiciel ( Laurent Guérin - Février 2013 ) | 2
Notion de Génie Logiciel
• « Génie Logiciel » = « Software Engineering »
                                                                                       ?
• « Génie Industriel »
     appliqué au domaine du logiciel
   –   méthodes de travail
   –   bonnes pratiques
   –   outils
   –   etc..
• Approche industrielle du développement de logiciels
   –   procédures
   –   recherche de fiabilité, productivité, qualité
   –   respect des délais et des coûts
   –   performances
   –   etc..

                                                 Génie Logiciel ( Laurent Guérin - Février 2013 ) | 3
Notion de Génie Logiciel

• Définition du « Génie Logiciel » :


     « l'ensemble des activités de conception
     et de mise en œuvre des produits et des
        procédures tendant à rationaliser la
        production du logiciel et son suivi »


                            Journal officiel du 19 février 1984




                                        Génie Logiciel ( Laurent Guérin - Février 2013 ) | 4
Notions de MOA - MOE
• La MOA confie une réalisation à la MOE




           MOA                                                 MOE
    Maitrise d’Ouvrage                                 Maitrise d’Oeuvre
     ( Maître d’Ouvrage )                               ( Maître d’Oeuvre )


   Exprime un besoin et définit                    Réalise le projet
   . objectifs
   . budget
   . calendrier (délais)



                                        Génie Logiciel ( Laurent Guérin - Février 2013 ) | 5
Différentes méthodes
                                    « Waterfall »

             Spécification      Conception       Implémentation          Test



                                   Effet tunnel
Cahier des
charges                                                                          Livraison
                             mode prédictif, rigide

                                  « Méthodes Agiles »


    S   C      I    T                S       C    I   T                      S      C       I     T




                     mode adaptatif, itératif, incrémental
                                                                  Génie Logiciel ( Laurent Guérin - Février 2013 ) | 6
Cycle de vie du logiciel

               • Formaliser le                                                           Gestion de …
Préoccu-                                                      • Livrer une
               système avec une      • Maîtrise des
                                                              application de             Avancement
pations        vision utilisateur    développements
                                                              qualité tant d’un          Reste à faire
               • S’assurer que       • Points de
                                                              point de vue               Planification
MOA / MOE      tous les besoins      visibilité pour
                                                              fonctionnel que
               sont pris en          éviter l’effet tunnel
                                                              technique                  Assurance qualité
               compte                                                                    …


   Spécifications et conception     Développement            Validation interne             Recette




                                                                                                        ça ne
         Ateliers de travail et
                                                                                                       s’arrête
                                      Intégration                   Recette
         modélisation                 continue                      fonctionnelle                       pas là

                                                                                                   Maintenance
                                                                                                   (curative et
         Gestion des                  Normalisation de la                                           évolutive)
                                                                     Recette technique
         exigences                    production                                                     MCO, …
                                      technique

                                                                Génie Logiciel ( Laurent Guérin - Février 2013 ) | 7
Industrialisation
• On s’inspire des principes
  de l’industrie…

                         Industrialisation
            Qualité

• Notion de « Software Factory »


                                                    Taylorisme ?
                                                    Fordisme ?
                                                    Toyotisme ?


• Mais un logiciel est une œuvre originale,
  on ne « fabrique » pas 2 fois le même logiciel
                                     Génie Logiciel ( Laurent Guérin - Février 2013 ) | 8
Qualité logicielle

• Les contrôles qualité sont
  indispensables pendant toute
  la durée de vie d’un logiciel



• Sinon …
   – Le logiciel subit des évolutions plus ou moins
     bien maîtrisées…
   – Il vieillit, sa qualité se dégrade progressivement
   – Plus le temps passe, plus il est coûteux de
     le remettre à niveaux
   – On accumule une « dette technique »



                                             Génie Logiciel ( Laurent Guérin - Février 2013 ) | 9
Notion de « Dette Technique »
• Métaphore : référence à la « dette financière »
• Le coût nécessaire pour remettre le logiciel à un niveau de
  qualité acceptable
• cf http://techdebt.org/




                                     Génie Logiciel ( Laurent Guérin - Février 2013 ) | 10
1-   Génie logiciel – Introduction

2-   ALM (Application Lifecycle Management)

3-   SCM (Source Code Management)

4-   Maven

5-   Intégration continue et qualité logicielle

6-   Génération de code




                                     Génie Logiciel ( Laurent Guérin - Février 2013 ) | 11
ALM
• ALM = « Application Lifecycle Management »

  processus global de gestion du cycle de vie de l'application

• Une application a un cycle de vie
     Naissance, vie et mort …

• Elle fait partie du patrimoine de
  l’organisation/entreprise (elle a une valeur)

• Il faut la gérer et l’entretenir…




                                      Génie Logiciel ( Laurent Guérin - Février 2013 ) | 12
Cycle de vie d’une application
• Le cycle de vie des applications (lifecycle) couvre toute la
  période durant laquelle une organisation engage des
  moyens (€, ressources) sur son patrimoine applicatif




                                      Génie Logiciel ( Laurent Guérin - Février 2013 ) | 13
ALM = Multi-fonctions

Idéalement…



                              Des               Des
Productivité                                                             Guides
                            équipes          processus                   Gestion des risques et des
Collaboration
Partage des connaissances                                                exigences
Gestion de projet                                                        Méthodes Agiles



                                      Des
                                  technologies


                            Interopérables      Outillage
                            Sécurité            Performances
                            Administration      …


                                                  Génie Logiciel ( Laurent Guérin - Février 2013 ) | 14
Principaux domaines de l’ALM




                Génie Logiciel ( Laurent Guérin - Février 2013 ) | 15
Des outils et des serveurs


                                Development
                                    Tool

Arch. & Design                                                                        Test
     Tool                                                                             Tool
                   Design
                 Documents
                                      Source           Test Cases
                                       Code
                                     Versions
                 Requirements                            Project
                                                        Statistics

                                    Serveurs                                     Project
Requirements                                                                   Management
    Tool                                                                          Tool




                                                Génie Logiciel ( Laurent Guérin - Février 2013 ) | 16
ALM
• Gestion des exigences




                            Génie Logiciel ( Laurent Guérin - Février 2013 ) | 17
ALM
• Collaboration / Travail en équipe / Support méthode




                                    Génie Logiciel ( Laurent Guérin - Février 2013 ) | 18
ALM
• Modélisation




                   Génie Logiciel ( Laurent Guérin - Février 2013 ) | 19
ALM
• Gestion des tâches




                         Génie Logiciel ( Laurent Guérin - Février 2013 ) | 20
ALM
• Pilotage / Tableaux de bord




                                  Génie Logiciel ( Laurent Guérin - Février 2013 ) | 21
ALM
• Tests fonctionnels




                         Génie Logiciel ( Laurent Guérin - Février 2013 ) | 22
ALM
• Automatisation des builds




                                Génie Logiciel ( Laurent Guérin - Février 2013 ) | 23
ALM
• Qualimétrie

            Analyse
            de code




                                            Tests unitaires
                                            et couverture
                                            de tests


                        Génie Logiciel ( Laurent Guérin - Février 2013 ) | 24
Les principales solutions d’ALM
             « Baromètre 2012 du Développement Logiciel »
             Etude Borland – MicroFocus novembre 2012

Parmi les différents éditeurs de solutions ALM,
quels sont ceux dont vous connaissez/utilisez les offres ?




                                                 Génie Logiciel ( Laurent Guérin - Février 2013 ) | 25
Points importants de l’ALM
            « Baromètre 2012 du Développement Logiciel »
            Etude Borland – MicroFocus novembre 2012

Classez du plus important au moins important de (1 à 7) les thèmes qui
selon vous caractérisent le mieux la démarche ALM
                                         1er (618 points)                      (700 points possibles)




                                                                    2ème (605 points)




                                                                              3ème (560 points)




                                                  Génie Logiciel ( Laurent Guérin - Février 2013 ) | 26
1-   Génie logiciel – Introduction

2-   ALM (Application Lifecycle Management)

3-   SCM (Source Code Management)

4-   Maven

5-   Intégration continue et qualité logicielle

6-   Génération de code




                                     Génie Logiciel ( Laurent Guérin - Février 2013 ) | 27
Notion de SCM

    SCM ?
 Source Control             Revision control
  Management
                             Version control
        Source Code
        Management           Source control


Software Configuration
    Management

                                           Supply
                                     Chain Management              Rien à voir !

                                  Génie Logiciel ( Laurent Guérin - Février 2013 ) | 28
SCM
• Quelques outils :

       Source Control                   Software Configuration
        Management                          Management

      CVS
      Visual Source Safe                       PVCS
      Subversion ***                           Perforce
      BitKeeper                                ClearCase
      Git ***
      Mercurial                    Plus complet :
                                   Gestion des demandes d’évolution,
 Gestion des sources uniquement    Liaison demande – modifications réalisées
 (fichiers en tous genres)



                                      Génie Logiciel ( Laurent Guérin - Février 2013 ) | 29
Subversion

            Client Interface                                                        Repository Interface
                                                                                                                     FSFS

      GUI client                                                                Apache
       apps
                                                                              mod_dav
                                    Repository
  TortoiseSVN                        access                                  mod_dav_svn


                                      DAV
   Subversive
                        Client                        Internet
                                                 (Any TCP/IP Network)
                        Library
                                      SVN                                      svnserve
WebClient for SVN


                                                                                                     Subversion
                                      Local                                                          Repository
  Command line
   client apps


                     Working Copy
                     Management
                        Library
                                                                                                                    Berkley DB




    Client                                                                                      Serveur
                                                                        Génie Logiciel ( Laurent Guérin - Février 2013 ) | 30
Subversion
• Différents protocoles :

• file://
    – Direct repository access to local or network drive.


• http://
    – Access via WebDAV protocol to Subversion-aware Apache server.
• https://
    – Same as http://, but with SSL encryption.


• svn://
    – Unauthenticated TCP/IP access via custom protocol to an svnserve server.
• svn+ssh://
    – Authenticated, encrypted TCP/IP access via custom protocol to an svn server.




                                                       Génie Logiciel ( Laurent Guérin - Février 2013 ) | 31
Subversion
• Chaque commit produit un nouveau numéro de révision
• Un commit sur Subversion est comparable à une transaction
  sur une base de données

   0          1           2                 3                       4


   0          1               2                 3                    4


                  1                1                 1                      4
                      1                1                  1                      1

                      1                1                  1                      1

                      1                1                  1                      4

                                   2                 3                      3
                                       2                  2                      2

                                                          3                      3

                                                          3                      3
                                           Génie Logiciel ( Laurent Guérin - Février 2013 ) | 32
Subversion – Checkout & Commit

                   Référentiel




Copie de travail
« working copy »

                            « Commit »
                            Validation des
                            modifications

                                      Génie Logiciel ( Laurent Guérin - Février 2013 ) | 33
Subversion - Conflits

                        Harry doit mettre à jour sa copie
                        de travail pour y intégrer les
                        modifications déjà commitées




Échec du commit
“working copy out
of date”




                                    Génie Logiciel ( Laurent Guérin - Février 2013 ) | 34
Subversion / Système d’exploitation

                      En ligne de commande




                 Dans l’explorateur de fichiers




                   Génie Logiciel ( Laurent Guérin - Février 2013 ) | 35
Subversion / IDE
Exemple :
Eclipse + Subclipse

Navigation dans
le repository




                           Visibilité sur
                           les différentes
                           révisions


                                        Commandes
                                         subversion




                                  Génie Logiciel ( Laurent Guérin - Février 2013 ) | 36
Subversion / IDE
Accès à tout l’historique     comparaison de deux révisions




               Révision courante                          Révision 30
               ( workspace )                              ( repository )




                                      Génie Logiciel ( Laurent Guérin - Février 2013 ) | 37
Subversion / Internet
Navigateur         Exemple : Google code

                                           Serveur




                                                       Subversion
                                                       Repository




                         Génie Logiciel ( Laurent Guérin - Février 2013 ) | 38
Subversion - Arborescence
• Organisation standard de l’arborescence




                                          « trunk »


                                           « tags »


                                       « branches »




                                   Génie Logiciel ( Laurent Guérin - Février 2013 ) | 39
Subversion - Arborescence
• Les « tags » pour fixer les « releases »

       Root

              Project 1

                   trunk
                                                     Le « tag » est une copie
                                                     des sources à un instant T



                   tags                                 Ex : release 2.1.4
                           Release x.x.x




                                           Génie Logiciel ( Laurent Guérin - Février 2013 ) | 40
Subversion - Arborescence
• Les « branches » pour travailler en parallèle



                          Main line

        Feature 1
        (new UI)
                                                             Feature 2
                                                          (multilingualism)




                    Il va falloir faire un « merge »
                    Après le « merge » les branches n’ont
                    plus de raison d’être


                                               Génie Logiciel ( Laurent Guérin - Février 2013 ) | 41
GIT
• Créé pour le développement du noyau Linux
   – Distribué
   – Référentiel local
• Successeur de Subversion ?
• NB : suppose une organisation
  d’équipe différente
• Progression importante depuis 2010
  ( notamment grâce à GitHub : https://github.com/ )




                                      Génie Logiciel ( Laurent Guérin - Février 2013 ) | 42
1-   Génie logiciel – Introduction

2-   ALM (Application Lifecycle Management)

3-   SCM (Source Code Management)

4-   Maven

5-   Intégration continue et qualité logicielle

6-   Génération de code




                                     Génie Logiciel ( Laurent Guérin - Février 2013 ) | 43
Maven
• Maven =           = outil Open Source (Apache)
                      d’automatisation des builds
• Dans la lignée de « make » pour Unix,
     ou « ant » pour Java (en plus puissant)
• Avantages :
   – Normalisation des répertoires d’un projet
   – Normalisation de l’identification des « artifacts »
                                         (group id, artifact id, version )
   – Normalisation du cycle de construction d’un projet ( phases )
   – Gestion des dépendances ( récupère des artefacts nécessaires sur
     des référentiels via internet )
   – Tout est déclaré dans un fichier : « pom.xml »
   – Extensible ( système de « plugins » )
   – Héritage ( « pom parent » )


                                            Génie Logiciel ( Laurent Guérin - Février 2013 ) | 44
Maven
• Maven repose sur des conventions
  principe de « Convention over Configuration » ( CoC )
• Répertoires src/main/java
                  src/main/resources                              Application
                  src/main/webapp
                  src/test/java
                                                                       Tests
                  src/test/resources
• Identification des « artifacts » (objet utilisé ou produit par le
  build)
                      Produit


                                  Utilisé
                                (dépendance)


                                            Génie Logiciel ( Laurent Guérin - Février 2013 ) | 45
Maven – Cycle de vie du « build »
Code                                                                                      23 phases
source
                                   generate-test-sources
              validate
                                    process-test-sources                    pre-integration-test

              initialize           generate-test-resources                     integration-test

                                   process-test-resources                  post-integration-test
         generate-sources

          process-sources               test-compile                                  verify
         generate-resources         process-test-classes
          process-sources                   test                                     install

              compile                 prepare-package                                deploy
          process-classes
                                          package



                                                       Génie Logiciel ( Laurent Guérin - Février 2013 ) | 46
Maven – Plugins
Maven a été conçu pour déléguer les traitements à un jeu de
« plugins » associés aux différentes phases.
                                              Pour chaque plugin :
                                pom.xml       1 à N « goals »
                 Phases
                                                  Plugins                          Goals
                  compile                                                               compile
                                                  compiler
                                                                                   testCompile
                test-compile                                                       test
                                                   surefire
                                                                                            jar
                    test                                                                  testJar
                                                       jar
                                                                                ejb
                  package                             ejb                     install

                                                   javadoc                                 javadoc
                   install
                                                                                          aggregate
                                                                                            etc...
Les plugins sont associés aux phases dans le fichier pom.xml
                                                 Génie Logiciel ( Laurent Guérin - Février 2013 ) | 47
Maven - Commandes
• On invoque Maven en lui indiquant jusqu’à quelle phase il
  doit exécuter les traitements
• Exemples :

             mvn compile




                               mvn install




                                    Génie Logiciel ( Laurent Guérin - Février 2013 ) | 48
Maven - Commandes
• Il est également possible de demander l’exécution d’un
  « goal » particulier
• Syntaxe :
       mvn     plugin_name : goal_name
• Exemples :
                mvn   compiler:compile
                mvn   jar:jar
                mvn   ejb:ejb
                mvn   surefire:test
                mvn   deploy:deploy
                mvn   sonar:sonar

• Dans ce cas seul le goal demandé est exécuté


                                    Génie Logiciel ( Laurent Guérin - Février 2013 ) | 49
Maven – Autres cycles de vie

        Nettoyage                   Génération du site web
   Cycle de vie « clean »            Cycle de vie « site »



          pre-clean                             pre-site

            clean                                 site

          post-clean                           post-site

                                             site-deploy


mvn clean                                                  mvn site
mvn post-clean                                             mvn pre-site


                                       Génie Logiciel ( Laurent Guérin - Février 2013 ) | 50
Maven / IDE

Editeur pour le pom.xml




                                 Génie Logiciel ( Laurent Guérin - Février 2013 ) | 51
Maven / IDE
Gestion des dépendances         Commandes intégrées
à partir du pom.xml




 Configuration
 de « .launch »




                                 Génie Logiciel ( Laurent Guérin - Février 2013 ) | 52
1-   Génie logiciel – Introduction

2-   ALM (Application Lifecycle Management)

3-   SCM (Source Code Management)

4-   Maven

5-   Intégration continue et qualité logicielle

6-   Génération de code




                                     Génie Logiciel ( Laurent Guérin - Février 2013 ) | 53
Avant l’intégration continue …
• Des phases bien séparées (trop séparées)

    Développement               Intégration                          Livraison
                           (tests d’intégration)




Temps


                    Mais ça c’était avant …
                                         Génie Logiciel ( Laurent Guérin - Février 2013 ) | 54
Intégration continue
• Principe développé par Martin Fowler :
         Pratique de développement dans laquelle les membres d’une
         équipe intègrent leurs travail fréquemment (au moins une fois
         par jour).
         Chaque intégration est vérifiée par un « build » automatisé
         (incluant les tests) afin de détecter les erreurs d’intégration
         le plus tôt possible.
         http://www.martinfowler.com/articles/continuousIntegration.html


     L'intégration continue est le principe de
    faire d'un processus d'intégration logiciel
              un «non-évènement».




                                              Génie Logiciel ( Laurent Guérin - Février 2013 ) | 55
Intégration continue - Outillage
• Un outil surveille les modifications du code dans le
  référentiel des sources (SCM)
• Quand un changement est détecté l’outil va
  automatiquement compiler et exécuter les tests automatisés
• Si une erreur survient (on dit qu’on a « cassé le build »)
  l’outil va alerter les développeurs pour qu’ils corrigent
  immédiatement le problème
• Autres fonctions de l’outil :        Objectifs :
                                          . maintenir la « dette technique »
   – surveillance de la qualité du code   au niveau le plus bas possible
   – métriques de couverture de test      . donner de la visibilité aux
   – etc…                                 indicateurs de qualité
                                          (motiver les développeurs)
• L’outil d’Intégration Continue
  devient un outil de communication
           transparence & management visuel
                                          Génie Logiciel ( Laurent Guérin - Février 2013 ) | 56
Intégration continue - Outillage
• Solutions d’intégration continue :
   –   CruiseControl ( SourceForge )
   –   Bamboo (Atlassian)
   –   Hudson ( repris pas Oracle)
   –   Jenkins ( fork de Hudson, désaccord du créateur avec Oracle )




         Application Java/web (.war)
                                           Génie Logiciel ( Laurent Guérin - Février 2013 ) | 57
Jenkins
• Il faut indiquer à Jenkins où se trouvent les sources




                                                            SCM au choix :
                                                            . CVS
                                                            . Subversion
                                                            . Git




                                      Génie Logiciel ( Laurent Guérin - Février 2013 ) | 58
Vue d’ensemble
                                                                               Apports

                                                                     • Intégration et
                                                                       détection des
                                                                       régressions au fil
         CheckStyle       Corbertura
                                                                       de l’eau
Poste de Développement                                               • Mise à disposition de
                                                                       versions de test
                                                                     • Production
                                                                       quotidienne de
                                                                       métriques
                                                                     • Coaching technique
                                                                       obligatoire
Automate de Fabrication
                                                    Référentiel
                                                    Unique des
                                                    Sources et
                                                    Composants




       Plugins MAVEN
       CheckStyle, Cobertura, CPD, PMD JavaDOC
       JDepend, SureFire, XRef




                                                 Génie Logiciel ( Laurent Guérin - Février 2013 ) | 59
Qualité
• Rappel :
             l’application a un cycle de vie

• Elle doit avoir un niveau de qualité suffisant pour évoluer
  pendant des années


    Pensez à celui qui va devoir reprendre le code !




                                      Génie Logiciel ( Laurent Guérin - Février 2013 ) | 60
Sonar
• Un tableau de bord pour une vue globale (multi-projets)




                                    Génie Logiciel ( Laurent Guérin - Février 2013 ) | 61
Sonar
 • Un tableau de bord pour chaque projet …
                   Compteurs
                   (lignes,
                   classes,.. )
                                                    Règles non
                                                    respectées




Complexité
cyclomatique
(McCabe)


 Taux de
 couverture du
 code par les
 tests unitaires



                                      Génie Logiciel ( Laurent Guérin - Février 2013 ) | 62
Sonar
• Suivi de la qualité du code dans le temps




                                   Génie Logiciel ( Laurent Guérin - Février 2013 ) | 63
1-   Génie logiciel – Introduction

2-   ALM (Application Lifecycle Management)

3-   SCM (Source Code Management)

4-   Maven

5-   Intégration continue et qualité logicielle

6-   Génération de code




                                     Génie Logiciel ( Laurent Guérin - Février 2013 ) | 64
Approche « Model First »
• Démarche « MDD » classique ( MDA, etc… )
• « Model - First » => concevoir un model !
   – investissement initial important
   – nécessite de respecter le processus (formation)
• Incompatible avec un démarrage rapide
               MODEL
                       Service
                      name




                    +port 0..n
                        Port                      Binding                   Port Type
                                                                                                                               XMI
                                                                                                                               ( XML )
                                                                    1
                                      +binding                          name
                      name                       name
                                           1                    +type                                  Param
                                                                                                      name

                   StartWithExtensions

                +output 0..1             +operation 0..n         +operation 0..n
                                                                                        +input    Input
                        0..1 +input
                                           BindingOperation                 Operation
                                                                                          0..1
                                          name                              name
                                                                    1                               0..1 Output
                                                                                                 +output

                                                                                                          +message         1
                                                 +fault 0..n            +fault 0..n
                                                                                                              Message
                                                                              Fault              +message
                                                 BindingFault                                                 name
                                                                            name
                                                                        1                                 1

                                                                                                              +part 0..n
                                                                                                                 Part
                                                                                                              name




                                                                                                                                                             Code
               Template                                                                                                         TOOL




                                                                                                                                         Génie Logiciel ( Laurent Guérin - Février 2013 ) | 65
Approche « scaffolding »
• Scaffolding de type « Database - First »
                                                                               Database
• Très efficace ( rapide )
• Mais pas d’action possible sur l’outil
                                                                                Metadata
  de génération
• Pas assez d’informations :-(
   – Noms/types des attributs Java                                               TOOL
   – Règles de validation : min, max, regexp, …
   – Représentation des Booléens
     (1/0, "T"/"F", … )                                Template
   – etc …
• Il faudrait ajouter (et conserver) des                                       Code
  informations complémentaires…
  … un modèle ?


                                          Génie Logiciel ( Laurent Guérin - Février 2013 ) | 66
Approche « scaffolding + modèle léger »
• Combinaison du « scaffolding » et du « MDD »
• Scaffolding + un modèle ultra léger pour ajouter des
  informations ou modifier les informations issues de la base




                                     Génie Logiciel ( Laurent Guérin - Février 2013 ) | 67
Génération de code
• Démo avec « Telosys Tools » ( plugin Eclipse )
                           http://marketplace.eclipse.org/content/telosys-tools




                                        Génie Logiciel ( Laurent Guérin - Février 2013 ) | 68
Annexes




          Génie Logiciel ( Laurent Guérin - Février 2013 ) | 69
Publications Sogeti

http://www.fr.sogeti.com/presse-et-publications/nos-publications

                WORLD QUALITY REPORT
             "The World Quality Report 2012-2013" est le quatrième volet d'une série
             d'enquêtes annuelles qui examinent l'état de la qualité des applications et des
             pratiques de test dans toutes les industries.



                Tmap NEXT
             L'approche de TMap Next’s Business Driven Test Management (BDTM) offre
             aux managers une panoplie d'outils de test pour traduire les objectifs d'affaires
             des systèmes d'information explicites et concrètes, les plans de test
             pragmatique et contrôlables, et ainsi atteindre un meilleur équilibre entre les
             résultats, les risques, les délais et les coûts.


                TPI NEXT

             La démarche numéro 1 dans le monde pour améliorer les processus de test


Livres au format PDF (téléchargement libre)
                                                     Génie Logiciel ( Laurent Guérin - Février 2013 ) | 70

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

Introduction au génie logiciel
Introduction au génie logicielIntroduction au génie logiciel
Introduction au génie logiciel
 
2.2 cycles de vie
2.2 cycles de vie2.2 cycles de vie
2.2 cycles de vie
 
Maintenance logicielle
Maintenance logicielleMaintenance logicielle
Maintenance logicielle
 
CM processus-unifie
CM processus-unifieCM processus-unifie
CM processus-unifie
 
Cycle de vie d’un logiciel
Cycle de vie d’un logicielCycle de vie d’un logiciel
Cycle de vie d’un logiciel
 
cycle de vie
cycle de vie cycle de vie
cycle de vie
 
Génie Logiciels : Introduction aux architectures
Génie Logiciels : Introduction aux architecturesGénie Logiciels : Introduction aux architectures
Génie Logiciels : Introduction aux architectures
 
Génie Logiciel : Conception
Génie Logiciel : ConceptionGénie Logiciel : Conception
Génie Logiciel : Conception
 
Modèle en cascade
Modèle en cascadeModèle en cascade
Modèle en cascade
 
Cycles de vie d'un logiciel
Cycles de vie d'un logicielCycles de vie d'un logiciel
Cycles de vie d'un logiciel
 
Chp1 - Introduction à l'AGL
Chp1 - Introduction à l'AGLChp1 - Introduction à l'AGL
Chp1 - Introduction à l'AGL
 
Métriques de qualité logicielle
Métriques de qualité logicielleMétriques de qualité logicielle
Métriques de qualité logicielle
 
Metrique
MetriqueMetrique
Metrique
 
les metriques de processus, de produit et de qualité
les metriques de processus, de produit et de qualitéles metriques de processus, de produit et de qualité
les metriques de processus, de produit et de qualité
 
Aql métriques logicielles
Aql métriques logiciellesAql métriques logicielles
Aql métriques logicielles
 
2 TUP
2 TUP2 TUP
2 TUP
 
Qualification Et Cycle De Vie Du Logiciel
Qualification Et Cycle De Vie Du LogicielQualification Et Cycle De Vie Du Logiciel
Qualification Et Cycle De Vie Du Logiciel
 
Modèle en v
 Modèle en v Modèle en v
Modèle en v
 
CM processus agile
CM processus agileCM processus agile
CM processus agile
 
CM Processus Méthodes
CM Processus MéthodesCM Processus Méthodes
CM Processus Méthodes
 

Andere mochten auch

Presentation BTS Assurance
Presentation BTS AssurancePresentation BTS Assurance
Presentation BTS Assurancejulien.veron1
 
Presentation Sur L'assurance
Presentation Sur L'assurancePresentation Sur L'assurance
Presentation Sur L'assuranceTimaL
 
Agile Qa Framework Jacky Wu
Agile Qa Framework Jacky WuAgile Qa Framework Jacky Wu
Agile Qa Framework Jacky WuJacky Wu
 
De la Securité Informatique a l’Identite Numerique 2.0
De la Securité Informatique a l’Identite Numerique 2.0De la Securité Informatique a l’Identite Numerique 2.0
De la Securité Informatique a l’Identite Numerique 2.0Eric Herschkorn
 
Slide l'assurance la gestion des produit assurance
Slide l'assurance la gestion des produit assuranceSlide l'assurance la gestion des produit assurance
Slide l'assurance la gestion des produit assuranceMhaidi Marouane
 
Présentation assurances
Présentation assurancesPrésentation assurances
Présentation assurancesSamuelFontenit
 
Audit de sécurité informatique
Audit de sécurité informatiqueAudit de sécurité informatique
Audit de sécurité informatiqueMohamed Ali Hadhri
 
Powerpoint Sur Le Video Recipes
Powerpoint Sur Le Video RecipesPowerpoint Sur Le Video Recipes
Powerpoint Sur Le Video Recipesjeannepan
 
Support Javascript
Support JavascriptSupport Javascript
Support Javascriptguestae24eb
 
Demo3: La vision d’Isogeo : Comment repenser le catalogage pour tisser ...
Demo3: La vision d’Isogeo : Comment repenser le catalogage pour tisser ...Demo3: La vision d’Isogeo : Comment repenser le catalogage pour tisser ...
Demo3: La vision d’Isogeo : Comment repenser le catalogage pour tisser ...teleparc
 
Profesión temporal mercede bolivia
Profesión temporal mercede   boliviaProfesión temporal mercede   bolivia
Profesión temporal mercede boliviaDavinia Martínez
 
Profesión perpetua María Guadalupe Rico
Profesión perpetua María Guadalupe RicoProfesión perpetua María Guadalupe Rico
Profesión perpetua María Guadalupe RicoDavinia Martínez
 
2010 made in marseille
2010   made in marseille2010   made in marseille
2010 made in marseilleciffer louis
 
Réussir à La Fac !
Réussir à La Fac !Réussir à La Fac !
Réussir à La Fac !9rayti.com
 
Cheminement 2011 last-son
Cheminement 2011  last-sonCheminement 2011  last-son
Cheminement 2011 last-sonPaul Savard
 

Andere mochten auch (20)

Presentation BTS Assurance
Presentation BTS AssurancePresentation BTS Assurance
Presentation BTS Assurance
 
Presentation Sur L'assurance
Presentation Sur L'assurancePresentation Sur L'assurance
Presentation Sur L'assurance
 
Agile Qa Framework Jacky Wu
Agile Qa Framework Jacky WuAgile Qa Framework Jacky Wu
Agile Qa Framework Jacky Wu
 
De la Securité Informatique a l’Identite Numerique 2.0
De la Securité Informatique a l’Identite Numerique 2.0De la Securité Informatique a l’Identite Numerique 2.0
De la Securité Informatique a l’Identite Numerique 2.0
 
Slide l'assurance la gestion des produit assurance
Slide l'assurance la gestion des produit assuranceSlide l'assurance la gestion des produit assurance
Slide l'assurance la gestion des produit assurance
 
Présentation assurances
Présentation assurancesPrésentation assurances
Présentation assurances
 
Audit de sécurité informatique
Audit de sécurité informatiqueAudit de sécurité informatique
Audit de sécurité informatique
 
Powerpoint Sur Le Video Recipes
Powerpoint Sur Le Video RecipesPowerpoint Sur Le Video Recipes
Powerpoint Sur Le Video Recipes
 
Notebook
NotebookNotebook
Notebook
 
Fichas secundaria 12 14
Fichas secundaria 12 14Fichas secundaria 12 14
Fichas secundaria 12 14
 
Support Javascript
Support JavascriptSupport Javascript
Support Javascript
 
Demo3: La vision d’Isogeo : Comment repenser le catalogage pour tisser ...
Demo3: La vision d’Isogeo : Comment repenser le catalogage pour tisser ...Demo3: La vision d’Isogeo : Comment repenser le catalogage pour tisser ...
Demo3: La vision d’Isogeo : Comment repenser le catalogage pour tisser ...
 
Profesión temporal mercede bolivia
Profesión temporal mercede   boliviaProfesión temporal mercede   bolivia
Profesión temporal mercede bolivia
 
Le Maroc!
Le Maroc!Le Maroc!
Le Maroc!
 
Profesión perpetua María Guadalupe Rico
Profesión perpetua María Guadalupe RicoProfesión perpetua María Guadalupe Rico
Profesión perpetua María Guadalupe Rico
 
2010 made in marseille
2010   made in marseille2010   made in marseille
2010 made in marseille
 
Réussir à La Fac !
Réussir à La Fac !Réussir à La Fac !
Réussir à La Fac !
 
Italia (Nou nou)
Italia (Nou nou)Italia (Nou nou)
Italia (Nou nou)
 
Cheminement 2011 last-son
Cheminement 2011  last-sonCheminement 2011  last-son
Cheminement 2011 last-son
 
Practica flujo laminar[1]
Practica flujo laminar[1]Practica flujo laminar[1]
Practica flujo laminar[1]
 

Ähnlich wie Genie logiciel eseo-v1.1-1spp

E-business - développement
E-business - développementE-business - développement
E-business - développementManon Cuylits
 
Auditer son plan de secours informatique et détecter ses vulnérabilités
Auditer son plan de secours informatique et détecter ses vulnérabilitésAuditer son plan de secours informatique et détecter ses vulnérabilités
Auditer son plan de secours informatique et détecter ses vulnérabilitésAlterest
 
Méthodologie 2 Track Unified Process
Méthodologie 2 Track Unified ProcessMéthodologie 2 Track Unified Process
Méthodologie 2 Track Unified ProcessZakaria Bouazza
 
Cv hlaoua mohamed helmi
Cv hlaoua mohamed helmiCv hlaoua mohamed helmi
Cv hlaoua mohamed helmihelmihlaoua
 
qualimétrie logiciel - Entreprise Software Analytic - nov 2015
qualimétrie logiciel -  Entreprise Software Analytic - nov 2015qualimétrie logiciel -  Entreprise Software Analytic - nov 2015
qualimétrie logiciel - Entreprise Software Analytic - nov 2015Julien Vq
 
Grille de lecture des méthodes agiles
Grille de lecture des méthodes agilesGrille de lecture des méthodes agiles
Grille de lecture des méthodes agilesXavier Warzee
 
Offre onepoint - Qualite Logicielle
Offre onepoint - Qualite Logicielle Offre onepoint - Qualite Logicielle
Offre onepoint - Qualite Logicielle GroupeONEPOINT
 
K2 la boite à outils pour le développement rapide d’applications métier s’app...
K2 la boite à outils pour le développement rapide d’applications métier s’app...K2 la boite à outils pour le développement rapide d’applications métier s’app...
K2 la boite à outils pour le développement rapide d’applications métier s’app...Microsoft Décideurs IT
 
Initiation à UML: Partie 1
Initiation à UML: Partie 1Initiation à UML: Partie 1
Initiation à UML: Partie 1DIALLO Boubacar
 
La mise en œuvre d’un ERP
La mise en œuvre d’un ERPLa mise en œuvre d’un ERP
La mise en œuvre d’un ERPAyoub Minen
 
ITOF (IT Operations Factory)
ITOF (IT Operations Factory)ITOF (IT Operations Factory)
ITOF (IT Operations Factory)Airmis
 
PréSentation Camoai Mai 2012
PréSentation Camoai   Mai 2012PréSentation Camoai   Mai 2012
PréSentation Camoai Mai 2012Jean-Marc Touzard
 
Maeci Presentation 11 Sept V2 Fr Quebec Septembre 2009.Pptx
Maeci Presentation 11 Sept V2 Fr Quebec Septembre 2009.PptxMaeci Presentation 11 Sept V2 Fr Quebec Septembre 2009.Pptx
Maeci Presentation 11 Sept V2 Fr Quebec Septembre 2009.PptxFirst Peoples Plus
 
L'industriel n'est pas là ou le croit !
L'industriel n'est pas là ou le croit !L'industriel n'est pas là ou le croit !
L'industriel n'est pas là ou le croit !reporter4change
 
Génie Logiciel.pptx
Génie Logiciel.pptxGénie Logiciel.pptx
Génie Logiciel.pptxLatifaBen6
 

Ähnlich wie Genie logiciel eseo-v1.1-1spp (20)

Agile@scale
Agile@scaleAgile@scale
Agile@scale
 
GL
GLGL
GL
 
E-business - développement
E-business - développementE-business - développement
E-business - développement
 
Auditer son plan de secours informatique et détecter ses vulnérabilités
Auditer son plan de secours informatique et détecter ses vulnérabilitésAuditer son plan de secours informatique et détecter ses vulnérabilités
Auditer son plan de secours informatique et détecter ses vulnérabilités
 
Méthodologie 2 Track Unified Process
Méthodologie 2 Track Unified ProcessMéthodologie 2 Track Unified Process
Méthodologie 2 Track Unified Process
 
Cv hlaoua mohamed helmi
Cv hlaoua mohamed helmiCv hlaoua mohamed helmi
Cv hlaoua mohamed helmi
 
qualimétrie logiciel - Entreprise Software Analytic - nov 2015
qualimétrie logiciel -  Entreprise Software Analytic - nov 2015qualimétrie logiciel -  Entreprise Software Analytic - nov 2015
qualimétrie logiciel - Entreprise Software Analytic - nov 2015
 
Grille de lecture des méthodes agiles
Grille de lecture des méthodes agilesGrille de lecture des méthodes agiles
Grille de lecture des méthodes agiles
 
Offre onepoint - Qualite Logicielle
Offre onepoint - Qualite Logicielle Offre onepoint - Qualite Logicielle
Offre onepoint - Qualite Logicielle
 
Gl rappels ac
Gl rappels acGl rappels ac
Gl rappels ac
 
K2 la boite à outils pour le développement rapide d’applications métier s’app...
K2 la boite à outils pour le développement rapide d’applications métier s’app...K2 la boite à outils pour le développement rapide d’applications métier s’app...
K2 la boite à outils pour le développement rapide d’applications métier s’app...
 
Initiation à UML: Partie 1
Initiation à UML: Partie 1Initiation à UML: Partie 1
Initiation à UML: Partie 1
 
Cartographie Métier : méthodologie
Cartographie Métier : méthodologieCartographie Métier : méthodologie
Cartographie Métier : méthodologie
 
La mise en œuvre d’un ERP
La mise en œuvre d’un ERPLa mise en œuvre d’un ERP
La mise en œuvre d’un ERP
 
Pourquoi Faire Du Bi Agile
Pourquoi Faire Du Bi AgilePourquoi Faire Du Bi Agile
Pourquoi Faire Du Bi Agile
 
ITOF (IT Operations Factory)
ITOF (IT Operations Factory)ITOF (IT Operations Factory)
ITOF (IT Operations Factory)
 
PréSentation Camoai Mai 2012
PréSentation Camoai   Mai 2012PréSentation Camoai   Mai 2012
PréSentation Camoai Mai 2012
 
Maeci Presentation 11 Sept V2 Fr Quebec Septembre 2009.Pptx
Maeci Presentation 11 Sept V2 Fr Quebec Septembre 2009.PptxMaeci Presentation 11 Sept V2 Fr Quebec Septembre 2009.Pptx
Maeci Presentation 11 Sept V2 Fr Quebec Septembre 2009.Pptx
 
L'industriel n'est pas là ou le croit !
L'industriel n'est pas là ou le croit !L'industriel n'est pas là ou le croit !
L'industriel n'est pas là ou le croit !
 
Génie Logiciel.pptx
Génie Logiciel.pptxGénie Logiciel.pptx
Génie Logiciel.pptx
 

Mehr von Laurent Guérin

Microservices-DDD-Telosys-Devoxx-FR-2022
Microservices-DDD-Telosys-Devoxx-FR-2022Microservices-DDD-Telosys-Devoxx-FR-2022
Microservices-DDD-Telosys-Devoxx-FR-2022Laurent Guérin
 
My web application in 20 minutes with Telosys
My web application in 20 minutes with Telosys My web application in 20 minutes with Telosys
My web application in 20 minutes with Telosys Laurent Guérin
 
Telosys project booster Paris Open Source Summit 2019
Telosys project booster Paris Open Source Summit 2019Telosys project booster Paris Open Source Summit 2019
Telosys project booster Paris Open Source Summit 2019Laurent Guérin
 
Telosys tutorial - Code generation for a Python web application based on Bott...
Telosys tutorial - Code generation for a Python web application based on Bott...Telosys tutorial - Code generation for a Python web application based on Bott...
Telosys tutorial - Code generation for a Python web application based on Bott...Laurent Guérin
 
MQTT avec Mosquitto et Paho - DevFest Brest 2019
MQTT avec Mosquitto et Paho - DevFest Brest 2019MQTT avec Mosquitto et Paho - DevFest Brest 2019
MQTT avec Mosquitto et Paho - DevFest Brest 2019Laurent Guérin
 
MQTT avec Mosquitto et Paho - Laurent Guerin - JUG Nantes Nov 2018
MQTT avec Mosquitto et Paho - Laurent Guerin - JUG Nantes Nov 2018MQTT avec Mosquitto et Paho - Laurent Guerin - JUG Nantes Nov 2018
MQTT avec Mosquitto et Paho - Laurent Guerin - JUG Nantes Nov 2018Laurent Guérin
 
Meetup python-bottle-telosys-2018-lgu-v1.0
Meetup python-bottle-telosys-2018-lgu-v1.0Meetup python-bottle-telosys-2018-lgu-v1.0
Meetup python-bottle-telosys-2018-lgu-v1.0Laurent Guérin
 
Sogeti labs developer-today-v1.1
Sogeti labs developer-today-v1.1Sogeti labs developer-today-v1.1
Sogeti labs developer-today-v1.1Laurent Guérin
 
DevOps MeetUp NL - Docker (Oct 2014)
DevOps MeetUp NL - Docker (Oct 2014)DevOps MeetUp NL - Docker (Oct 2014)
DevOps MeetUp NL - Docker (Oct 2014)Laurent Guérin
 
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2Laurent Guérin
 
Bean Validation - Cours v 1.1
Bean Validation - Cours v 1.1Bean Validation - Cours v 1.1
Bean Validation - Cours v 1.1Laurent Guérin
 
Devoxx 2011 - Scaffolding with Telosys
Devoxx 2011 - Scaffolding with TelosysDevoxx 2011 - Scaffolding with Telosys
Devoxx 2011 - Scaffolding with TelosysLaurent Guérin
 
Open World Forum 2009 Migration With Telosys
Open World Forum 2009 Migration With TelosysOpen World Forum 2009 Migration With Telosys
Open World Forum 2009 Migration With TelosysLaurent Guérin
 
Solutions Linux Développement Rapide Java
Solutions Linux Développement Rapide JavaSolutions Linux Développement Rapide Java
Solutions Linux Développement Rapide JavaLaurent Guérin
 

Mehr von Laurent Guérin (14)

Microservices-DDD-Telosys-Devoxx-FR-2022
Microservices-DDD-Telosys-Devoxx-FR-2022Microservices-DDD-Telosys-Devoxx-FR-2022
Microservices-DDD-Telosys-Devoxx-FR-2022
 
My web application in 20 minutes with Telosys
My web application in 20 minutes with Telosys My web application in 20 minutes with Telosys
My web application in 20 minutes with Telosys
 
Telosys project booster Paris Open Source Summit 2019
Telosys project booster Paris Open Source Summit 2019Telosys project booster Paris Open Source Summit 2019
Telosys project booster Paris Open Source Summit 2019
 
Telosys tutorial - Code generation for a Python web application based on Bott...
Telosys tutorial - Code generation for a Python web application based on Bott...Telosys tutorial - Code generation for a Python web application based on Bott...
Telosys tutorial - Code generation for a Python web application based on Bott...
 
MQTT avec Mosquitto et Paho - DevFest Brest 2019
MQTT avec Mosquitto et Paho - DevFest Brest 2019MQTT avec Mosquitto et Paho - DevFest Brest 2019
MQTT avec Mosquitto et Paho - DevFest Brest 2019
 
MQTT avec Mosquitto et Paho - Laurent Guerin - JUG Nantes Nov 2018
MQTT avec Mosquitto et Paho - Laurent Guerin - JUG Nantes Nov 2018MQTT avec Mosquitto et Paho - Laurent Guerin - JUG Nantes Nov 2018
MQTT avec Mosquitto et Paho - Laurent Guerin - JUG Nantes Nov 2018
 
Meetup python-bottle-telosys-2018-lgu-v1.0
Meetup python-bottle-telosys-2018-lgu-v1.0Meetup python-bottle-telosys-2018-lgu-v1.0
Meetup python-bottle-telosys-2018-lgu-v1.0
 
Sogeti labs developer-today-v1.1
Sogeti labs developer-today-v1.1Sogeti labs developer-today-v1.1
Sogeti labs developer-today-v1.1
 
DevOps MeetUp NL - Docker (Oct 2014)
DevOps MeetUp NL - Docker (Oct 2014)DevOps MeetUp NL - Docker (Oct 2014)
DevOps MeetUp NL - Docker (Oct 2014)
 
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
 
Bean Validation - Cours v 1.1
Bean Validation - Cours v 1.1Bean Validation - Cours v 1.1
Bean Validation - Cours v 1.1
 
Devoxx 2011 - Scaffolding with Telosys
Devoxx 2011 - Scaffolding with TelosysDevoxx 2011 - Scaffolding with Telosys
Devoxx 2011 - Scaffolding with Telosys
 
Open World Forum 2009 Migration With Telosys
Open World Forum 2009 Migration With TelosysOpen World Forum 2009 Migration With Telosys
Open World Forum 2009 Migration With Telosys
 
Solutions Linux Développement Rapide Java
Solutions Linux Développement Rapide JavaSolutions Linux Développement Rapide Java
Solutions Linux Développement Rapide Java
 

Genie logiciel eseo-v1.1-1spp

  • 1. Génie Logiciel, ALM et outillage E S E O - Angers Mardi 19 février 2013 Laurent Guérin laurent.guerin@sogeti.com @ltguerin
  • 2. 1- Génie logiciel – Introduction 2- ALM (Application Lifecycle Management) 3- SCM (Source Code Management) 4- Maven 5- Intégration continue et qualité logicielle 6- Génération de code Génie Logiciel ( Laurent Guérin - Février 2013 ) | 2
  • 3. Notion de Génie Logiciel • « Génie Logiciel » = « Software Engineering » ? • « Génie Industriel » appliqué au domaine du logiciel – méthodes de travail – bonnes pratiques – outils – etc.. • Approche industrielle du développement de logiciels – procédures – recherche de fiabilité, productivité, qualité – respect des délais et des coûts – performances – etc.. Génie Logiciel ( Laurent Guérin - Février 2013 ) | 3
  • 4. Notion de Génie Logiciel • Définition du « Génie Logiciel » : « l'ensemble des activités de conception et de mise en œuvre des produits et des procédures tendant à rationaliser la production du logiciel et son suivi » Journal officiel du 19 février 1984 Génie Logiciel ( Laurent Guérin - Février 2013 ) | 4
  • 5. Notions de MOA - MOE • La MOA confie une réalisation à la MOE MOA MOE Maitrise d’Ouvrage Maitrise d’Oeuvre ( Maître d’Ouvrage ) ( Maître d’Oeuvre ) Exprime un besoin et définit Réalise le projet . objectifs . budget . calendrier (délais) Génie Logiciel ( Laurent Guérin - Février 2013 ) | 5
  • 6. Différentes méthodes « Waterfall » Spécification Conception Implémentation Test Effet tunnel Cahier des charges Livraison mode prédictif, rigide « Méthodes Agiles » S C I T S C I T S C I T mode adaptatif, itératif, incrémental Génie Logiciel ( Laurent Guérin - Février 2013 ) | 6
  • 7. Cycle de vie du logiciel • Formaliser le Gestion de … Préoccu- • Livrer une système avec une • Maîtrise des application de Avancement pations vision utilisateur développements qualité tant d’un Reste à faire • S’assurer que • Points de point de vue Planification MOA / MOE tous les besoins visibilité pour fonctionnel que sont pris en éviter l’effet tunnel technique Assurance qualité compte … Spécifications et conception Développement Validation interne Recette ça ne Ateliers de travail et s’arrête Intégration Recette modélisation continue fonctionnelle pas là Maintenance (curative et Gestion des Normalisation de la évolutive) Recette technique exigences production MCO, … technique Génie Logiciel ( Laurent Guérin - Février 2013 ) | 7
  • 8. Industrialisation • On s’inspire des principes de l’industrie… Industrialisation Qualité • Notion de « Software Factory » Taylorisme ? Fordisme ? Toyotisme ? • Mais un logiciel est une œuvre originale, on ne « fabrique » pas 2 fois le même logiciel Génie Logiciel ( Laurent Guérin - Février 2013 ) | 8
  • 9. Qualité logicielle • Les contrôles qualité sont indispensables pendant toute la durée de vie d’un logiciel • Sinon … – Le logiciel subit des évolutions plus ou moins bien maîtrisées… – Il vieillit, sa qualité se dégrade progressivement – Plus le temps passe, plus il est coûteux de le remettre à niveaux – On accumule une « dette technique » Génie Logiciel ( Laurent Guérin - Février 2013 ) | 9
  • 10. Notion de « Dette Technique » • Métaphore : référence à la « dette financière » • Le coût nécessaire pour remettre le logiciel à un niveau de qualité acceptable • cf http://techdebt.org/ Génie Logiciel ( Laurent Guérin - Février 2013 ) | 10
  • 11. 1- Génie logiciel – Introduction 2- ALM (Application Lifecycle Management) 3- SCM (Source Code Management) 4- Maven 5- Intégration continue et qualité logicielle 6- Génération de code Génie Logiciel ( Laurent Guérin - Février 2013 ) | 11
  • 12. ALM • ALM = « Application Lifecycle Management » processus global de gestion du cycle de vie de l'application • Une application a un cycle de vie Naissance, vie et mort … • Elle fait partie du patrimoine de l’organisation/entreprise (elle a une valeur) • Il faut la gérer et l’entretenir… Génie Logiciel ( Laurent Guérin - Février 2013 ) | 12
  • 13. Cycle de vie d’une application • Le cycle de vie des applications (lifecycle) couvre toute la période durant laquelle une organisation engage des moyens (€, ressources) sur son patrimoine applicatif Génie Logiciel ( Laurent Guérin - Février 2013 ) | 13
  • 14. ALM = Multi-fonctions Idéalement… Des Des Productivité Guides équipes processus Gestion des risques et des Collaboration Partage des connaissances exigences Gestion de projet Méthodes Agiles Des technologies Interopérables Outillage Sécurité Performances Administration … Génie Logiciel ( Laurent Guérin - Février 2013 ) | 14
  • 15. Principaux domaines de l’ALM Génie Logiciel ( Laurent Guérin - Février 2013 ) | 15
  • 16. Des outils et des serveurs Development Tool Arch. & Design Test Tool Tool Design Documents Source Test Cases Code Versions Requirements Project Statistics Serveurs Project Requirements Management Tool Tool Génie Logiciel ( Laurent Guérin - Février 2013 ) | 16
  • 17. ALM • Gestion des exigences Génie Logiciel ( Laurent Guérin - Février 2013 ) | 17
  • 18. ALM • Collaboration / Travail en équipe / Support méthode Génie Logiciel ( Laurent Guérin - Février 2013 ) | 18
  • 19. ALM • Modélisation Génie Logiciel ( Laurent Guérin - Février 2013 ) | 19
  • 20. ALM • Gestion des tâches Génie Logiciel ( Laurent Guérin - Février 2013 ) | 20
  • 21. ALM • Pilotage / Tableaux de bord Génie Logiciel ( Laurent Guérin - Février 2013 ) | 21
  • 22. ALM • Tests fonctionnels Génie Logiciel ( Laurent Guérin - Février 2013 ) | 22
  • 23. ALM • Automatisation des builds Génie Logiciel ( Laurent Guérin - Février 2013 ) | 23
  • 24. ALM • Qualimétrie Analyse de code Tests unitaires et couverture de tests Génie Logiciel ( Laurent Guérin - Février 2013 ) | 24
  • 25. Les principales solutions d’ALM « Baromètre 2012 du Développement Logiciel » Etude Borland – MicroFocus novembre 2012 Parmi les différents éditeurs de solutions ALM, quels sont ceux dont vous connaissez/utilisez les offres ? Génie Logiciel ( Laurent Guérin - Février 2013 ) | 25
  • 26. Points importants de l’ALM « Baromètre 2012 du Développement Logiciel » Etude Borland – MicroFocus novembre 2012 Classez du plus important au moins important de (1 à 7) les thèmes qui selon vous caractérisent le mieux la démarche ALM 1er (618 points) (700 points possibles) 2ème (605 points) 3ème (560 points) Génie Logiciel ( Laurent Guérin - Février 2013 ) | 26
  • 27. 1- Génie logiciel – Introduction 2- ALM (Application Lifecycle Management) 3- SCM (Source Code Management) 4- Maven 5- Intégration continue et qualité logicielle 6- Génération de code Génie Logiciel ( Laurent Guérin - Février 2013 ) | 27
  • 28. Notion de SCM SCM ? Source Control Revision control Management Version control Source Code Management Source control Software Configuration Management Supply Chain Management Rien à voir ! Génie Logiciel ( Laurent Guérin - Février 2013 ) | 28
  • 29. SCM • Quelques outils : Source Control Software Configuration Management Management CVS Visual Source Safe PVCS Subversion *** Perforce BitKeeper ClearCase Git *** Mercurial Plus complet : Gestion des demandes d’évolution, Gestion des sources uniquement Liaison demande – modifications réalisées (fichiers en tous genres) Génie Logiciel ( Laurent Guérin - Février 2013 ) | 29
  • 30. Subversion Client Interface Repository Interface FSFS GUI client Apache apps mod_dav Repository TortoiseSVN access mod_dav_svn DAV Subversive Client Internet (Any TCP/IP Network) Library SVN svnserve WebClient for SVN Subversion Local Repository Command line client apps Working Copy Management Library Berkley DB Client Serveur Génie Logiciel ( Laurent Guérin - Février 2013 ) | 30
  • 31. Subversion • Différents protocoles : • file:// – Direct repository access to local or network drive. • http:// – Access via WebDAV protocol to Subversion-aware Apache server. • https:// – Same as http://, but with SSL encryption. • svn:// – Unauthenticated TCP/IP access via custom protocol to an svnserve server. • svn+ssh:// – Authenticated, encrypted TCP/IP access via custom protocol to an svn server. Génie Logiciel ( Laurent Guérin - Février 2013 ) | 31
  • 32. Subversion • Chaque commit produit un nouveau numéro de révision • Un commit sur Subversion est comparable à une transaction sur une base de données 0 1 2 3 4 0 1 2 3 4 1 1 1 4 1 1 1 1 1 1 1 1 1 1 1 4 2 3 3 2 2 2 3 3 3 3 Génie Logiciel ( Laurent Guérin - Février 2013 ) | 32
  • 33. Subversion – Checkout & Commit Référentiel Copie de travail « working copy » « Commit » Validation des modifications Génie Logiciel ( Laurent Guérin - Février 2013 ) | 33
  • 34. Subversion - Conflits Harry doit mettre à jour sa copie de travail pour y intégrer les modifications déjà commitées Échec du commit “working copy out of date” Génie Logiciel ( Laurent Guérin - Février 2013 ) | 34
  • 35. Subversion / Système d’exploitation En ligne de commande Dans l’explorateur de fichiers Génie Logiciel ( Laurent Guérin - Février 2013 ) | 35
  • 36. Subversion / IDE Exemple : Eclipse + Subclipse Navigation dans le repository Visibilité sur les différentes révisions Commandes subversion Génie Logiciel ( Laurent Guérin - Février 2013 ) | 36
  • 37. Subversion / IDE Accès à tout l’historique comparaison de deux révisions Révision courante Révision 30 ( workspace ) ( repository ) Génie Logiciel ( Laurent Guérin - Février 2013 ) | 37
  • 38. Subversion / Internet Navigateur Exemple : Google code Serveur Subversion Repository Génie Logiciel ( Laurent Guérin - Février 2013 ) | 38
  • 39. Subversion - Arborescence • Organisation standard de l’arborescence « trunk » « tags » « branches » Génie Logiciel ( Laurent Guérin - Février 2013 ) | 39
  • 40. Subversion - Arborescence • Les « tags » pour fixer les « releases » Root Project 1 trunk Le « tag » est une copie des sources à un instant T tags Ex : release 2.1.4 Release x.x.x Génie Logiciel ( Laurent Guérin - Février 2013 ) | 40
  • 41. Subversion - Arborescence • Les « branches » pour travailler en parallèle Main line Feature 1 (new UI) Feature 2 (multilingualism) Il va falloir faire un « merge » Après le « merge » les branches n’ont plus de raison d’être Génie Logiciel ( Laurent Guérin - Février 2013 ) | 41
  • 42. GIT • Créé pour le développement du noyau Linux – Distribué – Référentiel local • Successeur de Subversion ? • NB : suppose une organisation d’équipe différente • Progression importante depuis 2010 ( notamment grâce à GitHub : https://github.com/ ) Génie Logiciel ( Laurent Guérin - Février 2013 ) | 42
  • 43. 1- Génie logiciel – Introduction 2- ALM (Application Lifecycle Management) 3- SCM (Source Code Management) 4- Maven 5- Intégration continue et qualité logicielle 6- Génération de code Génie Logiciel ( Laurent Guérin - Février 2013 ) | 43
  • 44. Maven • Maven = = outil Open Source (Apache) d’automatisation des builds • Dans la lignée de « make » pour Unix, ou « ant » pour Java (en plus puissant) • Avantages : – Normalisation des répertoires d’un projet – Normalisation de l’identification des « artifacts » (group id, artifact id, version ) – Normalisation du cycle de construction d’un projet ( phases ) – Gestion des dépendances ( récupère des artefacts nécessaires sur des référentiels via internet ) – Tout est déclaré dans un fichier : « pom.xml » – Extensible ( système de « plugins » ) – Héritage ( « pom parent » ) Génie Logiciel ( Laurent Guérin - Février 2013 ) | 44
  • 45. Maven • Maven repose sur des conventions principe de « Convention over Configuration » ( CoC ) • Répertoires src/main/java src/main/resources Application src/main/webapp src/test/java Tests src/test/resources • Identification des « artifacts » (objet utilisé ou produit par le build) Produit Utilisé (dépendance) Génie Logiciel ( Laurent Guérin - Février 2013 ) | 45
  • 46. Maven – Cycle de vie du « build » Code 23 phases source generate-test-sources validate process-test-sources pre-integration-test initialize generate-test-resources integration-test process-test-resources post-integration-test generate-sources process-sources test-compile verify generate-resources process-test-classes process-sources test install compile prepare-package deploy process-classes package Génie Logiciel ( Laurent Guérin - Février 2013 ) | 46
  • 47. Maven – Plugins Maven a été conçu pour déléguer les traitements à un jeu de « plugins » associés aux différentes phases. Pour chaque plugin : pom.xml 1 à N « goals » Phases Plugins Goals compile compile compiler testCompile test-compile test surefire jar test testJar jar ejb package ejb install javadoc javadoc install aggregate etc... Les plugins sont associés aux phases dans le fichier pom.xml Génie Logiciel ( Laurent Guérin - Février 2013 ) | 47
  • 48. Maven - Commandes • On invoque Maven en lui indiquant jusqu’à quelle phase il doit exécuter les traitements • Exemples : mvn compile mvn install Génie Logiciel ( Laurent Guérin - Février 2013 ) | 48
  • 49. Maven - Commandes • Il est également possible de demander l’exécution d’un « goal » particulier • Syntaxe : mvn plugin_name : goal_name • Exemples : mvn compiler:compile mvn jar:jar mvn ejb:ejb mvn surefire:test mvn deploy:deploy mvn sonar:sonar • Dans ce cas seul le goal demandé est exécuté Génie Logiciel ( Laurent Guérin - Février 2013 ) | 49
  • 50. Maven – Autres cycles de vie Nettoyage Génération du site web Cycle de vie « clean » Cycle de vie « site » pre-clean pre-site clean site post-clean post-site site-deploy mvn clean mvn site mvn post-clean mvn pre-site Génie Logiciel ( Laurent Guérin - Février 2013 ) | 50
  • 51. Maven / IDE Editeur pour le pom.xml Génie Logiciel ( Laurent Guérin - Février 2013 ) | 51
  • 52. Maven / IDE Gestion des dépendances Commandes intégrées à partir du pom.xml Configuration de « .launch » Génie Logiciel ( Laurent Guérin - Février 2013 ) | 52
  • 53. 1- Génie logiciel – Introduction 2- ALM (Application Lifecycle Management) 3- SCM (Source Code Management) 4- Maven 5- Intégration continue et qualité logicielle 6- Génération de code Génie Logiciel ( Laurent Guérin - Février 2013 ) | 53
  • 54. Avant l’intégration continue … • Des phases bien séparées (trop séparées) Développement Intégration Livraison (tests d’intégration) Temps Mais ça c’était avant … Génie Logiciel ( Laurent Guérin - Février 2013 ) | 54
  • 55. Intégration continue • Principe développé par Martin Fowler : Pratique de développement dans laquelle les membres d’une équipe intègrent leurs travail fréquemment (au moins une fois par jour). Chaque intégration est vérifiée par un « build » automatisé (incluant les tests) afin de détecter les erreurs d’intégration le plus tôt possible. http://www.martinfowler.com/articles/continuousIntegration.html L'intégration continue est le principe de faire d'un processus d'intégration logiciel un «non-évènement». Génie Logiciel ( Laurent Guérin - Février 2013 ) | 55
  • 56. Intégration continue - Outillage • Un outil surveille les modifications du code dans le référentiel des sources (SCM) • Quand un changement est détecté l’outil va automatiquement compiler et exécuter les tests automatisés • Si une erreur survient (on dit qu’on a « cassé le build ») l’outil va alerter les développeurs pour qu’ils corrigent immédiatement le problème • Autres fonctions de l’outil : Objectifs : . maintenir la « dette technique » – surveillance de la qualité du code au niveau le plus bas possible – métriques de couverture de test . donner de la visibilité aux – etc… indicateurs de qualité (motiver les développeurs) • L’outil d’Intégration Continue devient un outil de communication transparence & management visuel Génie Logiciel ( Laurent Guérin - Février 2013 ) | 56
  • 57. Intégration continue - Outillage • Solutions d’intégration continue : – CruiseControl ( SourceForge ) – Bamboo (Atlassian) – Hudson ( repris pas Oracle) – Jenkins ( fork de Hudson, désaccord du créateur avec Oracle ) Application Java/web (.war) Génie Logiciel ( Laurent Guérin - Février 2013 ) | 57
  • 58. Jenkins • Il faut indiquer à Jenkins où se trouvent les sources SCM au choix : . CVS . Subversion . Git Génie Logiciel ( Laurent Guérin - Février 2013 ) | 58
  • 59. Vue d’ensemble Apports • Intégration et détection des régressions au fil CheckStyle Corbertura de l’eau Poste de Développement • Mise à disposition de versions de test • Production quotidienne de métriques • Coaching technique obligatoire Automate de Fabrication Référentiel Unique des Sources et Composants Plugins MAVEN CheckStyle, Cobertura, CPD, PMD JavaDOC JDepend, SureFire, XRef Génie Logiciel ( Laurent Guérin - Février 2013 ) | 59
  • 60. Qualité • Rappel : l’application a un cycle de vie • Elle doit avoir un niveau de qualité suffisant pour évoluer pendant des années Pensez à celui qui va devoir reprendre le code ! Génie Logiciel ( Laurent Guérin - Février 2013 ) | 60
  • 61. Sonar • Un tableau de bord pour une vue globale (multi-projets) Génie Logiciel ( Laurent Guérin - Février 2013 ) | 61
  • 62. Sonar • Un tableau de bord pour chaque projet … Compteurs (lignes, classes,.. ) Règles non respectées Complexité cyclomatique (McCabe) Taux de couverture du code par les tests unitaires Génie Logiciel ( Laurent Guérin - Février 2013 ) | 62
  • 63. Sonar • Suivi de la qualité du code dans le temps Génie Logiciel ( Laurent Guérin - Février 2013 ) | 63
  • 64. 1- Génie logiciel – Introduction 2- ALM (Application Lifecycle Management) 3- SCM (Source Code Management) 4- Maven 5- Intégration continue et qualité logicielle 6- Génération de code Génie Logiciel ( Laurent Guérin - Février 2013 ) | 64
  • 65. Approche « Model First » • Démarche « MDD » classique ( MDA, etc… ) • « Model - First » => concevoir un model ! – investissement initial important – nécessite de respecter le processus (formation) • Incompatible avec un démarrage rapide MODEL Service name +port 0..n Port Binding Port Type XMI ( XML ) 1 +binding name name name 1 +type Param name StartWithExtensions +output 0..1 +operation 0..n +operation 0..n +input Input 0..1 +input BindingOperation Operation 0..1 name name 1 0..1 Output +output +message 1 +fault 0..n +fault 0..n Message Fault +message BindingFault name name 1 1 +part 0..n Part name Code Template TOOL Génie Logiciel ( Laurent Guérin - Février 2013 ) | 65
  • 66. Approche « scaffolding » • Scaffolding de type « Database - First » Database • Très efficace ( rapide ) • Mais pas d’action possible sur l’outil Metadata de génération • Pas assez d’informations :-( – Noms/types des attributs Java TOOL – Règles de validation : min, max, regexp, … – Représentation des Booléens (1/0, "T"/"F", … ) Template – etc … • Il faudrait ajouter (et conserver) des Code informations complémentaires… … un modèle ? Génie Logiciel ( Laurent Guérin - Février 2013 ) | 66
  • 67. Approche « scaffolding + modèle léger » • Combinaison du « scaffolding » et du « MDD » • Scaffolding + un modèle ultra léger pour ajouter des informations ou modifier les informations issues de la base Génie Logiciel ( Laurent Guérin - Février 2013 ) | 67
  • 68. Génération de code • Démo avec « Telosys Tools » ( plugin Eclipse ) http://marketplace.eclipse.org/content/telosys-tools Génie Logiciel ( Laurent Guérin - Février 2013 ) | 68
  • 69. Annexes Génie Logiciel ( Laurent Guérin - Février 2013 ) | 69
  • 70. Publications Sogeti http://www.fr.sogeti.com/presse-et-publications/nos-publications WORLD QUALITY REPORT "The World Quality Report 2012-2013" est le quatrième volet d'une série d'enquêtes annuelles qui examinent l'état de la qualité des applications et des pratiques de test dans toutes les industries. Tmap NEXT L'approche de TMap Next’s Business Driven Test Management (BDTM) offre aux managers une panoplie d'outils de test pour traduire les objectifs d'affaires des systèmes d'information explicites et concrètes, les plans de test pragmatique et contrôlables, et ainsi atteindre un meilleur équilibre entre les résultats, les risques, les délais et les coûts. TPI NEXT La démarche numéro 1 dans le monde pour améliorer les processus de test Livres au format PDF (téléchargement libre) Génie Logiciel ( Laurent Guérin - Février 2013 ) | 70