SlideShare une entreprise Scribd logo
1  sur  55
Télécharger pour lire hors ligne
Construire sa vision qualité Java avec
                    des logiciels libres




Salon Solution Linux 2008
Nous


                ✔François Le Droff :
                            ✔francois.le.droff@gmail.com
                            ✔http://www.droff.com

                 ✔Romain Pelisse
                            ✔belaran@gmail.com
                            ✔http://belaran.eu/




Salon Solution Linux 2008
La Qualité Logicielle : Définition

    ✔Pas de définition universelle

    ✔La qualité, c’est l’aptitude d’un ensemble de caractéristiques
     intrinsèques d’un produit, d’un système ou d’un processus à
     satisfaire les exigences des clients et autres parties
     intéressées (ISO 9000-2000).
    ✔ quot;la qualité, c'est l'aptitude à l'emploiquot;
    ✔ quot;la qualité, c'est la conformité aux spécificationsquot;


Salon Solution Linux 2008
Hors Sujet
       ✔Cette présentation n'est pas sur
             ✔Le modèle CMM
             ✔Les modèles Qualité ISO :ISO 9000-2000, ISO 9126,
              quot;Technologies de l’Information : Qualités des produits logicielsquot;
             ✔Les modèles Mc Call (US Air Force: 23 Facteurs de qualité, 300
              métriques) et ses nombreux dérivés : Boehm, FORSE, QUIM
             ✔La qualité en terme de quot;conformité aux besoinsquot;




Salon Solution Linux 2008
Agenda :
    ✔ Le contrôle qualité de code (Java)
       ✔Pourquoi ?
       ✔Qui ?
       ✔Quand ?
       ✔Quoi ?
       ✔Comment ?
                ✔ Industrialiser et automatiser
                ✔ Comment agréger, historiser, analyser, synthétiser et communiquer vos rapports de
                  contrôle ?
                ✔ Trouver votre niveau d'exigence, affiner et capitaliser vos critères et vos contrôles de
                  qualité ?



Salon Solution Linux 2008
Pourquoi ? Les statistiques




     ✔ 80% des entreprises négligent la qualité logicielle
     ✔1 projet sur 3 n'est pas livré, 2/3 ne passent pas la recette
     ✔9/10 sont livrés en retard
     ✔70% du budget : maintenance
     ✔40% de cette maintenance à la réécriture
                                                         ✔ (source compureware)

Salon Solution Linux 2008
Pourquoi ?
                   une obligation professionnelle




Salon Solution Linux 2008
Quelques citations
                  «“Any fool can write code that a computer can understand.
                  Good programmers write code that humans can understand.”
                                                                                ~M. Fowler
                             “You can't control what you can't measure.quot;
                                                                         ~Tom DeMarco
                   “Controlling complexity is the essence of computer programming.”
                                                                       ~Brian Kernighan.
                “There does not now, nor will there ever exist, a programming language
                        in which it is the least bit hard to write bad programs.”
                                                                             ~Lawrence Flon
                            “Programs for sale: fast, reliable, cheap - choose two.”
                                                                           ~Author Unknown




Salon Solution Linux 2008
Pourquoi ? La qualité c'est fun !




   ✔La qualité c'est fun, enrichissant, c'est à la mode, c'est
       sexy ... c'est agile, c'est scrum et tdt friendly, c'est web2.0
       c'est SOA c'est la QOA !
Salon Solution Linux 2008
Pourquoi ? Votre code : c'est votre
                  réputation, votre publicité

    ✔Programmer c'est « publier » (une API)
          ✔« APIs are for ever »

     ✔Une API de qualité :
       ✔ simple
       ✔addictif !

   Une fois adoptée,
        on refuse d'en changer !

Salon Solution Linux 2008
La qualité rendra vos clients accro




Salon Solution Linux 2008
Pourquoi s'en priver ?




   ✔En un mot : la qualité c'est bon, mangez-en
Salon Solution Linux 2008
Qui ? Cibler tous les métiers
        ✔ L'architecte :
            ✔ Facilite le respect de l'ensemble des règles ;
            ✔ Définit les contraintes d'architecture spécifiques

        ✔ Le développeur :
            ✔ Assisté par les outils, intégré à l'IDE
            ✔ Qualité garantie à la source (démarche proactive)

        ✔ L'intégrateur/recetteur :
            ✔ veille au respect des règles au quotidien (intégration continue)
            ✔ assure la recevabilité technique.

        ✔ Le chef de projet de la MOE :
            ✔ planifie et prend les mesures nécessaires au respect des exigences qualité
Salon Solution Linux 2008
Quand ?

 ✔ Tout au long du cycle du vie du projet
    ✔Éviter l'effet tunnel
    ✔Contractualiser les exigences
    ✔Mode itératif
 ✔ Contrôle qualité continu
    ✔Au cours du développement
    ✔Build, intégration continue
    ✔Recette



Salon Solution Linux 2008
Quoi ?
                  Les Axes du contrôle Qualité du code
     ✔Contrôle de :
          ✔Taille/métrique du code
          ✔Lisibilité du code (cohérence du style et nommage, organisation
           des sources :rendre une copie propre)
          ✔Documentation
          ✔Respect des règles de programmation (nombreux sous domaines)
          ✔Respect des règles de paquetages, de modularité, de dépendances
           et d'architecture en couche
          ✔Test et couverture de test

Salon Solution Linux 2008
Quoi ? Les indicateurs recherchés

     ✔Usabilité / Lisibilité
     ✔Maintenabilité
     ✔Efficacité / Performance
     ✔Portabilité
     ✔Fiabilité
     ✔Testabilité
                                         ✔ Ne pas mesurer pour mesurer




Salon Solution Linux 2008
Quoi ? Faites votre marché




Salon Solution Linux 2008
Construisez votre réferentiel

    ✔Communiquer et formaliser vos exigences qualité




Salon Solution Linux 2008
Zoom sur quelques exemples




Salon Solution Linux 2008
Règles de nommage :
                  On ne retient que les bons mots




Salon Solution Linux 2008
Règles de nommage :




Salon Solution Linux 2008
Règles d'encapsulation




               ✔Rendre les choses aussi inacessibles que possible

Salon Solution Linux 2008
Règles d'encapsulation




Salon Solution Linux 2008
La gestion des exceptions




Salon Solution Linux 2008
Les exceptions




Salon Solution Linux 2008
Les exceptions




Salon Solution Linux 2008
la taille du code : le pire ennemi ?

     ✔Nombre de lignes de code
          ✔total
          ✔par fichier/classe
          ✔par méthode

     ✔Détection de copié-collé

     ✔La complexité cyclomatique

Salon Solution Linux 2008
Comment ?
    ✔« c’est à ses outils qu’on reconnait un bon ouvrier  »




Salon Solution Linux 2008
Analyse statique de code source Java
      ✔ Les Contrôleur de code         ✔ Pré requis unique : un code syntaxiquement correct
         ✔ PMD,                            ✔ ré-utilise l'arbre syntaxique abstrait (AST) fourni par
                                              javacc
         ✔ CheckStyle (bluecheckstyle, ✔ Fonctionnalités: contrôlent
            jjguidelines),                 ✔ le style et les règles de nommage,
         ✔ Hammurapi,                      ✔ les erreurs d'encapsulation,
                                           ✔ les erreurs de programmations, de design,
         ✔ FindBugs,                       ✔ les erreurs de gestion et l'utilisation des exceptions,
         ✔ PatternTesting,                 ✔ les erreurs de gestion mémoire,
                                           ✔ les erreurs de synchronisation défectueuses
         ✔ lint4j, jcsc,                   ✔ et détecte une partie du code mort/inutile
         ✔ QJ-Pro
      ✔ Contrôle et refactoring:
         ✔ Eclipse : Spoon, TPTP
         ✔ Netbeans : Jackpot


Salon Solution Linux 2008
Exemple de rapport Checkstyle




Salon Solution Linux 2008
Exemple de rapport PMD




Salon Solution Linux 2008
Analyse statique de code source Java
✔ Détecteurs de copié-collé : PMD-CPD, Simian, Condenser :
   ✔ Pré requis unique : un code syntaxiquement correct


✔ Calcul de métriques : JavaNCSS :
   ✔ Pré requis unique : un code syntaxiquement correct
   ✔ Fonctionnalités: calcul de métriques
        ✔ Nombres de classes, paramètres, lignes de code, variable locales
        ✔ calcul de complexité cyclomatique




Salon Solution Linux 2008
Exemple de rapport JavaNCSS




Salon Solution Linux 2008
Analyse de byte code Java
    ✔ Gestion des dépendances externes
          ✔ Connaissance et maîtrise des dépendances
             ✔transitivité
          ✔ Détection des incompatibilités


    ✔ Quelques outils :
       ✔ Clirr, Maven, Ivy




Salon Solution Linux 2008
Analyse de byte code Java
✔ Indicateurs métriques 00 et architecture :
   ✔ JDepend, Classycle, CKJM, Macker
   ✔ Eclipse plugins : CAP, Metrics, ByeCycle




✔ Exemple :
   ✔ calcul et graphe de dépendances




Salon Solution Linux 2008
Analyse de byte code Java
   ✔ Métriques de package
      ✔ Nombres de classes concrètes, abstraites, publiques
      ✔ Nombres d'interfaces
      ✔ Graphe de dépendances de packages :
           ✔ couplage afférent et efférent
      ✔ Détection de dépendances cycliques
      ✔ Degré d’abstraction
      ✔ Degré d'instabilité
      ✔ Distance normale




Salon Solution Linux 2008
Exemple plugin CAPS




Salon Solution Linux 2008
Tests et couverture de test
   ✔ Test unitaires                  ✔ Couverture des tests
      ✔ JUnit, testNG, JMockit, DbUnit, ✔ Cobertura, Emma avec ant parmaven,
                                                                   et
        Unitils....                     ✔ Plugins eclipse : EclEmma exemple




Salon Solution Linux 2008
Comment industrialiser ?




Salon Solution Linux 2008
Build et intégration continue
    ✔Outils de build systématique, unifié et standardisé
               ✔Ant             ✔Maven
    ✔Intégrer le contrôle qualité et les tests au cycle de vie du
        build
     ✔ Règles d 'échec au build (au commit ?)
     ✔ Production de rapports, de synthèses
    ✔Machine dédiée
     ✔ Build
     ✔Intégration continue
     ✔Historisation des résultats
Salon Solution Linux 2008
Démo : intégration au build

    ✔maven et son écosystème
          ✔Démo




    PS: on peut aussi le faire avec ant (plus de scripts à
      développer)

Salon Solution Linux 2008
Outils d'agrégation, de synthèse et
                        d'historisation ?
    ✔Option 1: construisez le vôtre :
          ✔Rapport html / excel




Salon Solution Linux 2008
Outils d'agrégation, de synthèse et
                        d'historisation ?
    ✔Exemple de rapport excel




Salon Solution Linux 2008
Sonar




Salon Solution Linux 2008
Démo Sonar




Salon Solution Linux 2008
XRadar




Salon Solution Linux 2008
XRadar
 ✔Caractéristiques techniques
     -   Pas de base de données, simple fichiers        -   Sortie HTML (ou XML)



     -   Performant, peu d'exigence matérielle



     -   Intégration dans les builds

                                  Oui

                               Partielle

                                                   -   Moteur à base de transformation XML
                               Q2 2008


Salon Solution Linux 2008
XRadar
 ✔« Killing Features »
       ✔ Agrège les résulats de nombreux outils d'analyses de code OSS
       ✔ Intégration dans les outils de builds Ant et Maven
       ✔ Historisation, analyse de la tendance qualité du projet:
                                                        ✔ Synthèse graphique:




       ✔ Analyse complète, du plus bas niveau ( code) au plus haut (architecture)

Salon Solution Linux 2008
Démo XRadar




Salon Solution Linux 2008
Autres Outils OS

    ✔Historisation
          ✔QALab                      ✔Maven Dashboard




Salon Solution Linux 2008
Facteurs clés de réussite:
                                une qualité active
       ✔ Implication des sponsors
       ✔ Adhésion des développeurs,
          ✔chacun des acteurs du projet
       ✔ Ne pas repousser les tests et mesures en fin de projet
       ✔ Formaliser ses exigences
          ✔ne pas mesurer pour mesurer
          ✔intégrer la qualité à la recette aux contrats
       ✔ Outillage intégré et adapté
       ✔ Communiquer et fournir des rapports synthétiques aux décideurs.

Salon Solution Linux 2008
Conclusion




Salon Solution Linux 2008
Références : projets et outils OS
                                                             ✔   FindBugs : http://findbugs.sourceforge.net/
                                                             ✔   JavaNCSS : http://www.kclee.de/clemens/java/javancss/
       ✔   Ant : http://ant.apache.org/                      ✔   Jdepend : http://clarkware.com/software/JDepend.html
                                                             ✔   Macker : http://innig.net/macker/index.html
       ✔   Maven 1 :http://maven.apache.org/maven-1.x/       ✔   Ckjm : http://www.spinellis.gr/sw/ckjm/doc/indexw.html
       ✔   Maven 2 :http://maven.apache.org/                 ✔   Classcycle :http://classycle.sourceforge.net/
       ✔   Ivy : http://www.jaya.free.fr/ivy/                ✔ ... et encore d'autre sur :
       ✔   Xradar: http://xradar.sourceforge.net/                http://en.wikipedia.org/wiki/List_of_tools_for_static_code_ana
       ✔   Sonar: http://sonar.hortis.ch/
       ✔   PMD : http://pmd.sourceforge.net/
                                                             ✔   Junit: http://www.junit.org/
       ✔   CheckStyle : http://checkstyle.sourceforge.net/   ✔   Unitils: http://www.unitils.org/summary.html
       ✔   Metrics : http://metrics.sourceforge.net/         ✔   Emma :http://emma.sourceforge.net/
                                                             ✔   Cobertura : http://cobertura.sourceforge.net/
                                                             ✔   Dbunit: http://www.dbunit.org/
                                                             ✔   HttpUnit: http://httpunit.sourceforge.net/




Salon Solution Linux 2008
Références : biblio

     ✔ «Charte de Développement Java/J2EEquot;» (Réf. : CharteDevJavaJ2EE - août 2006) , François Le Droff,
         Xavier Chatelain
          ✔ réalisé pour le compte de la DGI par « Atos Origin Open Source Center »
     ✔ «  Effective Java: Programming Language Guide », Joshua Bloch
     ✔ « OO Design Quality Metrics », Robert Martin
     ✔ « Langage Java », Philippe Prados

     ✔   http://lil.univ-littoral.fr/~oumoumsack/qualite/
     ✔   http://www.objectmentor.com/resources/articles/Principles_and_Patterns.pdf
     ✔   http://www.infoq.com/presentations/effective-api-design
     ✔   http://www.infoq.com/news/Ken-Schwaber-Sacrificing-Quality
     ✔   http://www.quotegarden.com/programming.html




Salon Solution Linux 2008
Les photos
     ✔   http://flickr.com/photos/jamesgrayking/2105820477/    ✔   http://flickr.com/photos/youkeo/185917327/
     ✔   http://flickr.com/photos/slimcoincidence/594599028/   ✔   http://flickr.com/photos/lesloups/1907354379/
     ✔   http://flickr.com/photos/jeanmi/210374309/            ✔   http://flickr.com/photos/marysia/514900457/
     ✔   http://flickr.com/photos/tgalli55/173550102/          ✔   http://flickr.com/photos/77945684@N00/310887851/
     ✔   http://flickr.com/photos/cheesebikini/804099102/      ✔   http://flickr.com/photos/invad3r/236233328/
     ✔   http://flickr.com/photos/jurvetson/101046514/         ✔   http://flickr.com/photo_zoom.gne?id=1039909856&size=l
     ✔   http://flickr.com/photos/jeremybrooks/1399474069/     ✔   http://flickr.com/photo_zoom.gne?id=1402088933&size=o
     ✔   http://flickr.com/photos/athenamat/149632152/
     ✔   http://flickr.com/photos/el%2Dcatalejo/1474055306/
     ✔   http://flickr.com/photos/cunaldo/271683015/
     ✔   http://flickr.com/photos/denial_land/2094163680/
     ✔   http://flickr.com/photos/clintjcl/382107734/
     ✔   http://flickr.com/photos/jurvetson/128666829/
     ✔   http://flickr.com/photos/opendemocracy/1417040538/




Salon Solution Linux 2008

Contenu connexe

Tendances

Conférence: L'assurance qualité au-delà de la qualité logicielle
Conférence: L'assurance qualité au-delà de la qualité logicielleConférence: L'assurance qualité au-delà de la qualité logicielle
Conférence: L'assurance qualité au-delà de la qualité logiciellegeosaa
 
Innovations Techniques Au Service Du Test De Recette Automatisé
Innovations Techniques Au Service Du Test De Recette AutomatiséInnovations Techniques Au Service Du Test De Recette Automatisé
Innovations Techniques Au Service Du Test De Recette AutomatiséEmmanuel Hugonnet
 
Traçabilité des exigences dans les sytèmes critiques
Traçabilité des exigences dans les sytèmes critiquesTraçabilité des exigences dans les sytèmes critiques
Traçabilité des exigences dans les sytèmes critiquescontactregiscanioncqfr
 
Cleancode / Tocea / Introduction
Cleancode / Tocea / IntroductionCleancode / Tocea / Introduction
Cleancode / Tocea / IntroductionSylvain Leroy
 
AddInn Tunisie - Nos offres de stage 2020
AddInn Tunisie - Nos offres de stage 2020AddInn Tunisie - Nos offres de stage 2020
AddInn Tunisie - Nos offres de stage 2020Aymen ZNAIDI
 
Revue de code - PHP Tour Nantes 2012
Revue de code - PHP Tour Nantes 2012Revue de code - PHP Tour Nantes 2012
Revue de code - PHP Tour Nantes 2012Jean-Marc Fontaine
 
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 PratiquesEmmanuel Hugonnet
 
Rappels Modularisation application C/C++
Rappels Modularisation application C/C++Rappels Modularisation application C/C++
Rappels Modularisation application C/C++Sylvain Leroy
 
Soirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualife
Soirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualifeSoirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualife
Soirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualifeTelecomValley
 
Qu'est ce qu'un logiciel de qualité
Qu'est ce qu'un logiciel de qualitéQu'est ce qu'un logiciel de qualité
Qu'est ce qu'un logiciel de qualitéSylvain Leroy
 
20151013 - DevOps et qualification continue
20151013 - DevOps et qualification continue20151013 - DevOps et qualification continue
20151013 - DevOps et qualification continueLeClubQualiteLogicielle
 
Qualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et WebQualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et WebChristophe Rochefolle
 
Gérer sa dette technique avec SonarQube
Gérer sa dette technique avec SonarQubeGérer sa dette technique avec SonarQube
Gérer sa dette technique avec SonarQubePierre-Henri Gache
 
Maintenir du code historique - RMLL 2011
Maintenir du code historique - RMLL 2011Maintenir du code historique - RMLL 2011
Maintenir du code historique - RMLL 2011Jean-Marc Fontaine
 
20120612 02 - Automatisation des tests avec squash TA en environnement bancai...
20120612 02 - Automatisation des tests avec squash TA en environnement bancai...20120612 02 - Automatisation des tests avec squash TA en environnement bancai...
20120612 02 - Automatisation des tests avec squash TA en environnement bancai...LeClubQualiteLogicielle
 
20171122 01 - REX : Intégration et déploiement continu chez Engie
20171122 01 - REX : Intégration et déploiement continu chez Engie20171122 01 - REX : Intégration et déploiement continu chez Engie
20171122 01 - REX : Intégration et déploiement continu chez EngieLeClubQualiteLogicielle
 

Tendances (17)

Conférence: L'assurance qualité au-delà de la qualité logicielle
Conférence: L'assurance qualité au-delà de la qualité logicielleConférence: L'assurance qualité au-delà de la qualité logicielle
Conférence: L'assurance qualité au-delà de la qualité logicielle
 
Innovations Techniques Au Service Du Test De Recette Automatisé
Innovations Techniques Au Service Du Test De Recette AutomatiséInnovations Techniques Au Service Du Test De Recette Automatisé
Innovations Techniques Au Service Du Test De Recette Automatisé
 
Traçabilité des exigences dans les sytèmes critiques
Traçabilité des exigences dans les sytèmes critiquesTraçabilité des exigences dans les sytèmes critiques
Traçabilité des exigences dans les sytèmes critiques
 
Cleancode / Tocea / Introduction
Cleancode / Tocea / IntroductionCleancode / Tocea / Introduction
Cleancode / Tocea / Introduction
 
AddInn Tunisie - Nos offres de stage 2020
AddInn Tunisie - Nos offres de stage 2020AddInn Tunisie - Nos offres de stage 2020
AddInn Tunisie - Nos offres de stage 2020
 
Revue de code - PHP Tour Nantes 2012
Revue de code - PHP Tour Nantes 2012Revue de code - PHP Tour Nantes 2012
Revue de code - PHP Tour Nantes 2012
 
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
 
Rappels Modularisation application C/C++
Rappels Modularisation application C/C++Rappels Modularisation application C/C++
Rappels Modularisation application C/C++
 
Soirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualife
Soirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualifeSoirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualife
Soirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualife
 
Qu'est ce qu'un logiciel de qualité
Qu'est ce qu'un logiciel de qualitéQu'est ce qu'un logiciel de qualité
Qu'est ce qu'un logiciel de qualité
 
20151013 - DevOps et qualification continue
20151013 - DevOps et qualification continue20151013 - DevOps et qualification continue
20151013 - DevOps et qualification continue
 
Qualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et WebQualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et Web
 
Gérer sa dette technique avec SonarQube
Gérer sa dette technique avec SonarQubeGérer sa dette technique avec SonarQube
Gérer sa dette technique avec SonarQube
 
Maintenir du code historique - RMLL 2011
Maintenir du code historique - RMLL 2011Maintenir du code historique - RMLL 2011
Maintenir du code historique - RMLL 2011
 
Esiea - 5A - Archi 1/3
Esiea - 5A - Archi 1/3Esiea - 5A - Archi 1/3
Esiea - 5A - Archi 1/3
 
20120612 02 - Automatisation des tests avec squash TA en environnement bancai...
20120612 02 - Automatisation des tests avec squash TA en environnement bancai...20120612 02 - Automatisation des tests avec squash TA en environnement bancai...
20120612 02 - Automatisation des tests avec squash TA en environnement bancai...
 
20171122 01 - REX : Intégration et déploiement continu chez Engie
20171122 01 - REX : Intégration et déploiement continu chez Engie20171122 01 - REX : Intégration et déploiement continu chez Engie
20171122 01 - REX : Intégration et déploiement continu chez Engie
 

Similaire à Solutions Linux2008 Construire Sa Vision Qualite

Introduction au génie logiciel
Introduction au génie logicielIntroduction au génie logiciel
Introduction au génie logicielMohamed Diallo
 
QSOS 2.0 Solutions Linux 2009
QSOS 2.0 Solutions Linux 2009QSOS 2.0 Solutions Linux 2009
QSOS 2.0 Solutions Linux 2009Raphaël Semeteys
 
Agile Tour 2010 - Mise en place d'un projet agile
Agile Tour 2010 - Mise en place d'un projet agileAgile Tour 2010 - Mise en place d'un projet agile
Agile Tour 2010 - Mise en place d'un projet agileLaurent Deséchalliers
 
AT2010 Mise place d'un projet Agile
AT2010 Mise place d'un projet AgileAT2010 Mise place d'un projet Agile
AT2010 Mise place d'un projet AgileNormandy JUG
 
Mix-IT 2013 - Agilistes : n'oubliez pas la technique - mix-it 2013
Mix-IT 2013 - Agilistes : n'oubliez pas la technique - mix-it 2013Mix-IT 2013 - Agilistes : n'oubliez pas la technique - mix-it 2013
Mix-IT 2013 - Agilistes : n'oubliez pas la technique - mix-it 2013Xavier NOPRE
 
Formation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPFFormation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPFBoubker ABERWAG
 
2009-01-29 Squale aux Jeudis de l'Objet
2009-01-29 Squale aux Jeudis de l'Objet2009-01-29 Squale aux Jeudis de l'Objet
2009-01-29 Squale aux Jeudis de l'ObjetFabrice Bellingard
 
Réutilisation de code entre windows 8 et windows phone 8
Réutilisation de code entre windows 8 et windows phone 8Réutilisation de code entre windows 8 et windows phone 8
Réutilisation de code entre windows 8 et windows phone 8Arnaud Auroux
 
2-Cours de Géniel Logiciel
2-Cours de Géniel Logiciel2-Cours de Géniel Logiciel
2-Cours de Géniel Logiciellauraty3204
 
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
 
symfony : Simplifier le développement des interfaces bases de données (PHP ...
symfony : Simplifier le développement des interfaces bases de données (PHP ...symfony : Simplifier le développement des interfaces bases de données (PHP ...
symfony : Simplifier le développement des interfaces bases de données (PHP ...Fabien Potencier
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyonClement Bouillier
 
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)Fabien Potencier
 
2012 02-09-eranea-presentation-jug-lausanne
2012 02-09-eranea-presentation-jug-lausanne2012 02-09-eranea-presentation-jug-lausanne
2012 02-09-eranea-presentation-jug-lausanneDidier Durand
 
Introduction à Silverlight
Introduction à SilverlightIntroduction à Silverlight
Introduction à Silverlightkemenaran
 
Oracle cloud-toolbox-vf
Oracle cloud-toolbox-vfOracle cloud-toolbox-vf
Oracle cloud-toolbox-vfANASYS
 

Similaire à Solutions Linux2008 Construire Sa Vision Qualite (20)

Hands on Sonar
Hands on SonarHands on Sonar
Hands on Sonar
 
Introduction au génie logiciel
Introduction au génie logicielIntroduction au génie logiciel
Introduction au génie logiciel
 
QSOS 2.0 Solutions Linux 2009
QSOS 2.0 Solutions Linux 2009QSOS 2.0 Solutions Linux 2009
QSOS 2.0 Solutions Linux 2009
 
Agl2012
Agl2012Agl2012
Agl2012
 
Wygday 2008
Wygday 2008Wygday 2008
Wygday 2008
 
_JCVFr
_JCVFr_JCVFr
_JCVFr
 
Agile Tour 2010 - Mise en place d'un projet agile
Agile Tour 2010 - Mise en place d'un projet agileAgile Tour 2010 - Mise en place d'un projet agile
Agile Tour 2010 - Mise en place d'un projet agile
 
AT2010 Mise place d'un projet Agile
AT2010 Mise place d'un projet AgileAT2010 Mise place d'un projet Agile
AT2010 Mise place d'un projet Agile
 
Mix-IT 2013 - Agilistes : n'oubliez pas la technique - mix-it 2013
Mix-IT 2013 - Agilistes : n'oubliez pas la technique - mix-it 2013Mix-IT 2013 - Agilistes : n'oubliez pas la technique - mix-it 2013
Mix-IT 2013 - Agilistes : n'oubliez pas la technique - mix-it 2013
 
Formation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPFFormation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPF
 
2009-01-29 Squale aux Jeudis de l'Objet
2009-01-29 Squale aux Jeudis de l'Objet2009-01-29 Squale aux Jeudis de l'Objet
2009-01-29 Squale aux Jeudis de l'Objet
 
Réutilisation de code entre windows 8 et windows phone 8
Réutilisation de code entre windows 8 et windows phone 8Réutilisation de code entre windows 8 et windows phone 8
Réutilisation de code entre windows 8 et windows phone 8
 
2-Cours de Géniel Logiciel
2-Cours de Géniel Logiciel2-Cours de Géniel Logiciel
2-Cours de Géniel Logiciel
 
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
 
symfony : Simplifier le développement des interfaces bases de données (PHP ...
symfony : Simplifier le développement des interfaces bases de données (PHP ...symfony : Simplifier le développement des interfaces bases de données (PHP ...
symfony : Simplifier le développement des interfaces bases de données (PHP ...
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyon
 
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
 
2012 02-09-eranea-presentation-jug-lausanne
2012 02-09-eranea-presentation-jug-lausanne2012 02-09-eranea-presentation-jug-lausanne
2012 02-09-eranea-presentation-jug-lausanne
 
Introduction à Silverlight
Introduction à SilverlightIntroduction à Silverlight
Introduction à Silverlight
 
Oracle cloud-toolbox-vf
Oracle cloud-toolbox-vfOracle cloud-toolbox-vf
Oracle cloud-toolbox-vf
 

Solutions Linux2008 Construire Sa Vision Qualite

  • 1. Construire sa vision qualité Java avec des logiciels libres Salon Solution Linux 2008
  • 2. Nous ✔François Le Droff : ✔francois.le.droff@gmail.com ✔http://www.droff.com ✔Romain Pelisse ✔belaran@gmail.com ✔http://belaran.eu/ Salon Solution Linux 2008
  • 3. La Qualité Logicielle : Définition ✔Pas de définition universelle ✔La qualité, c’est l’aptitude d’un ensemble de caractéristiques intrinsèques d’un produit, d’un système ou d’un processus à satisfaire les exigences des clients et autres parties intéressées (ISO 9000-2000). ✔ quot;la qualité, c'est l'aptitude à l'emploiquot; ✔ quot;la qualité, c'est la conformité aux spécificationsquot; Salon Solution Linux 2008
  • 4. Hors Sujet ✔Cette présentation n'est pas sur ✔Le modèle CMM ✔Les modèles Qualité ISO :ISO 9000-2000, ISO 9126, quot;Technologies de l’Information : Qualités des produits logicielsquot; ✔Les modèles Mc Call (US Air Force: 23 Facteurs de qualité, 300 métriques) et ses nombreux dérivés : Boehm, FORSE, QUIM ✔La qualité en terme de quot;conformité aux besoinsquot; Salon Solution Linux 2008
  • 5. Agenda : ✔ Le contrôle qualité de code (Java) ✔Pourquoi ? ✔Qui ? ✔Quand ? ✔Quoi ? ✔Comment ? ✔ Industrialiser et automatiser ✔ Comment agréger, historiser, analyser, synthétiser et communiquer vos rapports de contrôle ? ✔ Trouver votre niveau d'exigence, affiner et capitaliser vos critères et vos contrôles de qualité ? Salon Solution Linux 2008
  • 6. Pourquoi ? Les statistiques ✔ 80% des entreprises négligent la qualité logicielle ✔1 projet sur 3 n'est pas livré, 2/3 ne passent pas la recette ✔9/10 sont livrés en retard ✔70% du budget : maintenance ✔40% de cette maintenance à la réécriture ✔ (source compureware) Salon Solution Linux 2008
  • 7. Pourquoi ? une obligation professionnelle Salon Solution Linux 2008
  • 8. Quelques citations «“Any fool can write code that a computer can understand. Good programmers write code that humans can understand.” ~M. Fowler “You can't control what you can't measure.quot; ~Tom DeMarco “Controlling complexity is the essence of computer programming.” ~Brian Kernighan. “There does not now, nor will there ever exist, a programming language in which it is the least bit hard to write bad programs.” ~Lawrence Flon “Programs for sale: fast, reliable, cheap - choose two.” ~Author Unknown Salon Solution Linux 2008
  • 9. Pourquoi ? La qualité c'est fun ! ✔La qualité c'est fun, enrichissant, c'est à la mode, c'est sexy ... c'est agile, c'est scrum et tdt friendly, c'est web2.0 c'est SOA c'est la QOA ! Salon Solution Linux 2008
  • 10. Pourquoi ? Votre code : c'est votre réputation, votre publicité ✔Programmer c'est « publier » (une API) ✔« APIs are for ever » ✔Une API de qualité : ✔ simple ✔addictif ! Une fois adoptée, on refuse d'en changer ! Salon Solution Linux 2008
  • 11. La qualité rendra vos clients accro Salon Solution Linux 2008
  • 12. Pourquoi s'en priver ? ✔En un mot : la qualité c'est bon, mangez-en Salon Solution Linux 2008
  • 13. Qui ? Cibler tous les métiers ✔ L'architecte : ✔ Facilite le respect de l'ensemble des règles ; ✔ Définit les contraintes d'architecture spécifiques ✔ Le développeur : ✔ Assisté par les outils, intégré à l'IDE ✔ Qualité garantie à la source (démarche proactive) ✔ L'intégrateur/recetteur : ✔ veille au respect des règles au quotidien (intégration continue) ✔ assure la recevabilité technique. ✔ Le chef de projet de la MOE : ✔ planifie et prend les mesures nécessaires au respect des exigences qualité Salon Solution Linux 2008
  • 14. Quand ? ✔ Tout au long du cycle du vie du projet ✔Éviter l'effet tunnel ✔Contractualiser les exigences ✔Mode itératif ✔ Contrôle qualité continu ✔Au cours du développement ✔Build, intégration continue ✔Recette Salon Solution Linux 2008
  • 15. Quoi ? Les Axes du contrôle Qualité du code ✔Contrôle de : ✔Taille/métrique du code ✔Lisibilité du code (cohérence du style et nommage, organisation des sources :rendre une copie propre) ✔Documentation ✔Respect des règles de programmation (nombreux sous domaines) ✔Respect des règles de paquetages, de modularité, de dépendances et d'architecture en couche ✔Test et couverture de test Salon Solution Linux 2008
  • 16. Quoi ? Les indicateurs recherchés ✔Usabilité / Lisibilité ✔Maintenabilité ✔Efficacité / Performance ✔Portabilité ✔Fiabilité ✔Testabilité ✔ Ne pas mesurer pour mesurer Salon Solution Linux 2008
  • 17. Quoi ? Faites votre marché Salon Solution Linux 2008
  • 18. Construisez votre réferentiel ✔Communiquer et formaliser vos exigences qualité Salon Solution Linux 2008
  • 19. Zoom sur quelques exemples Salon Solution Linux 2008
  • 20. Règles de nommage : On ne retient que les bons mots Salon Solution Linux 2008
  • 21. Règles de nommage : Salon Solution Linux 2008
  • 22. Règles d'encapsulation ✔Rendre les choses aussi inacessibles que possible Salon Solution Linux 2008
  • 24. La gestion des exceptions Salon Solution Linux 2008
  • 27. la taille du code : le pire ennemi ? ✔Nombre de lignes de code ✔total ✔par fichier/classe ✔par méthode ✔Détection de copié-collé ✔La complexité cyclomatique Salon Solution Linux 2008
  • 28. Comment ? ✔« c’est à ses outils qu’on reconnait un bon ouvrier  » Salon Solution Linux 2008
  • 29. Analyse statique de code source Java ✔ Les Contrôleur de code ✔ Pré requis unique : un code syntaxiquement correct ✔ PMD, ✔ ré-utilise l'arbre syntaxique abstrait (AST) fourni par javacc ✔ CheckStyle (bluecheckstyle, ✔ Fonctionnalités: contrôlent jjguidelines), ✔ le style et les règles de nommage, ✔ Hammurapi, ✔ les erreurs d'encapsulation, ✔ les erreurs de programmations, de design, ✔ FindBugs, ✔ les erreurs de gestion et l'utilisation des exceptions, ✔ PatternTesting, ✔ les erreurs de gestion mémoire, ✔ les erreurs de synchronisation défectueuses ✔ lint4j, jcsc, ✔ et détecte une partie du code mort/inutile ✔ QJ-Pro ✔ Contrôle et refactoring: ✔ Eclipse : Spoon, TPTP ✔ Netbeans : Jackpot Salon Solution Linux 2008
  • 30. Exemple de rapport Checkstyle Salon Solution Linux 2008
  • 31. Exemple de rapport PMD Salon Solution Linux 2008
  • 32. Analyse statique de code source Java ✔ Détecteurs de copié-collé : PMD-CPD, Simian, Condenser : ✔ Pré requis unique : un code syntaxiquement correct ✔ Calcul de métriques : JavaNCSS : ✔ Pré requis unique : un code syntaxiquement correct ✔ Fonctionnalités: calcul de métriques ✔ Nombres de classes, paramètres, lignes de code, variable locales ✔ calcul de complexité cyclomatique Salon Solution Linux 2008
  • 33. Exemple de rapport JavaNCSS Salon Solution Linux 2008
  • 34. Analyse de byte code Java ✔ Gestion des dépendances externes ✔ Connaissance et maîtrise des dépendances ✔transitivité ✔ Détection des incompatibilités ✔ Quelques outils : ✔ Clirr, Maven, Ivy Salon Solution Linux 2008
  • 35. Analyse de byte code Java ✔ Indicateurs métriques 00 et architecture : ✔ JDepend, Classycle, CKJM, Macker ✔ Eclipse plugins : CAP, Metrics, ByeCycle ✔ Exemple : ✔ calcul et graphe de dépendances Salon Solution Linux 2008
  • 36. Analyse de byte code Java ✔ Métriques de package ✔ Nombres de classes concrètes, abstraites, publiques ✔ Nombres d'interfaces ✔ Graphe de dépendances de packages : ✔ couplage afférent et efférent ✔ Détection de dépendances cycliques ✔ Degré d’abstraction ✔ Degré d'instabilité ✔ Distance normale Salon Solution Linux 2008
  • 37. Exemple plugin CAPS Salon Solution Linux 2008
  • 38. Tests et couverture de test ✔ Test unitaires ✔ Couverture des tests ✔ JUnit, testNG, JMockit, DbUnit, ✔ Cobertura, Emma avec ant parmaven, et Unitils.... ✔ Plugins eclipse : EclEmma exemple Salon Solution Linux 2008
  • 39. Comment industrialiser ? Salon Solution Linux 2008
  • 40. Build et intégration continue ✔Outils de build systématique, unifié et standardisé ✔Ant ✔Maven ✔Intégrer le contrôle qualité et les tests au cycle de vie du build ✔ Règles d 'échec au build (au commit ?) ✔ Production de rapports, de synthèses ✔Machine dédiée ✔ Build ✔Intégration continue ✔Historisation des résultats Salon Solution Linux 2008
  • 41. Démo : intégration au build ✔maven et son écosystème ✔Démo PS: on peut aussi le faire avec ant (plus de scripts à développer) Salon Solution Linux 2008
  • 42. Outils d'agrégation, de synthèse et d'historisation ? ✔Option 1: construisez le vôtre : ✔Rapport html / excel Salon Solution Linux 2008
  • 43. Outils d'agrégation, de synthèse et d'historisation ? ✔Exemple de rapport excel Salon Solution Linux 2008
  • 47. XRadar ✔Caractéristiques techniques - Pas de base de données, simple fichiers - Sortie HTML (ou XML) - Performant, peu d'exigence matérielle - Intégration dans les builds Oui Partielle - Moteur à base de transformation XML Q2 2008 Salon Solution Linux 2008
  • 48. XRadar ✔« Killing Features » ✔ Agrège les résulats de nombreux outils d'analyses de code OSS ✔ Intégration dans les outils de builds Ant et Maven ✔ Historisation, analyse de la tendance qualité du projet: ✔ Synthèse graphique: ✔ Analyse complète, du plus bas niveau ( code) au plus haut (architecture) Salon Solution Linux 2008
  • 50. Autres Outils OS ✔Historisation ✔QALab ✔Maven Dashboard Salon Solution Linux 2008
  • 51. Facteurs clés de réussite: une qualité active ✔ Implication des sponsors ✔ Adhésion des développeurs, ✔chacun des acteurs du projet ✔ Ne pas repousser les tests et mesures en fin de projet ✔ Formaliser ses exigences ✔ne pas mesurer pour mesurer ✔intégrer la qualité à la recette aux contrats ✔ Outillage intégré et adapté ✔ Communiquer et fournir des rapports synthétiques aux décideurs. Salon Solution Linux 2008
  • 53. Références : projets et outils OS ✔ FindBugs : http://findbugs.sourceforge.net/ ✔ JavaNCSS : http://www.kclee.de/clemens/java/javancss/ ✔ Ant : http://ant.apache.org/ ✔ Jdepend : http://clarkware.com/software/JDepend.html ✔ Macker : http://innig.net/macker/index.html ✔ Maven 1 :http://maven.apache.org/maven-1.x/ ✔ Ckjm : http://www.spinellis.gr/sw/ckjm/doc/indexw.html ✔ Maven 2 :http://maven.apache.org/ ✔ Classcycle :http://classycle.sourceforge.net/ ✔ Ivy : http://www.jaya.free.fr/ivy/ ✔ ... et encore d'autre sur : ✔ Xradar: http://xradar.sourceforge.net/ http://en.wikipedia.org/wiki/List_of_tools_for_static_code_ana ✔ Sonar: http://sonar.hortis.ch/ ✔ PMD : http://pmd.sourceforge.net/ ✔ Junit: http://www.junit.org/ ✔ CheckStyle : http://checkstyle.sourceforge.net/ ✔ Unitils: http://www.unitils.org/summary.html ✔ Metrics : http://metrics.sourceforge.net/ ✔ Emma :http://emma.sourceforge.net/ ✔ Cobertura : http://cobertura.sourceforge.net/ ✔ Dbunit: http://www.dbunit.org/ ✔ HttpUnit: http://httpunit.sourceforge.net/ Salon Solution Linux 2008
  • 54. Références : biblio ✔ «Charte de Développement Java/J2EEquot;» (Réf. : CharteDevJavaJ2EE - août 2006) , François Le Droff, Xavier Chatelain ✔ réalisé pour le compte de la DGI par « Atos Origin Open Source Center » ✔ «  Effective Java: Programming Language Guide », Joshua Bloch ✔ « OO Design Quality Metrics », Robert Martin ✔ « Langage Java », Philippe Prados ✔ http://lil.univ-littoral.fr/~oumoumsack/qualite/ ✔ http://www.objectmentor.com/resources/articles/Principles_and_Patterns.pdf ✔ http://www.infoq.com/presentations/effective-api-design ✔ http://www.infoq.com/news/Ken-Schwaber-Sacrificing-Quality ✔ http://www.quotegarden.com/programming.html Salon Solution Linux 2008
  • 55. Les photos ✔ http://flickr.com/photos/jamesgrayking/2105820477/ ✔ http://flickr.com/photos/youkeo/185917327/ ✔ http://flickr.com/photos/slimcoincidence/594599028/ ✔ http://flickr.com/photos/lesloups/1907354379/ ✔ http://flickr.com/photos/jeanmi/210374309/ ✔ http://flickr.com/photos/marysia/514900457/ ✔ http://flickr.com/photos/tgalli55/173550102/ ✔ http://flickr.com/photos/77945684@N00/310887851/ ✔ http://flickr.com/photos/cheesebikini/804099102/ ✔ http://flickr.com/photos/invad3r/236233328/ ✔ http://flickr.com/photos/jurvetson/101046514/ ✔ http://flickr.com/photo_zoom.gne?id=1039909856&size=l ✔ http://flickr.com/photos/jeremybrooks/1399474069/ ✔ http://flickr.com/photo_zoom.gne?id=1402088933&size=o ✔ http://flickr.com/photos/athenamat/149632152/ ✔ http://flickr.com/photos/el%2Dcatalejo/1474055306/ ✔ http://flickr.com/photos/cunaldo/271683015/ ✔ http://flickr.com/photos/denial_land/2094163680/ ✔ http://flickr.com/photos/clintjcl/382107734/ ✔ http://flickr.com/photos/jurvetson/128666829/ ✔ http://flickr.com/photos/opendemocracy/1417040538/ Salon Solution Linux 2008