SlideShare une entreprise Scribd logo
1  sur  58
Télécharger pour lire hors ligne
JUG Elsass 2012



                  Inspection Continue
                  La chasse aux 7 péchés capitaux du
                  développeur peut commencer !




                  Par Freddy Mallet
                  freddy.mallet@sonarsource.com
Une époque est révolue
Le savant génial
Capitaine Flam est parmi nous




Au fin fond de l'Univers, à des années
et des années-lumière de la Terre,
Veille celui que le gouvernement
intersidéral appelle quand il n'est plus
Capable de trouver une solution à
ses problèmes, quand il ne reste plus
Aucun espoir :

le Capitaine FLAM !
C'est mon jouet !
La peur du changement…
Quand l'industrialisation s'en mêle

                  Projet géré sous contrôleur
                   de version
                  Projet sous intégration
                   continue
                  Projet avec traçabilité
                   technique / fonctionnelle
Quel est notre mission ?




                 ?
Faire du neuf avec du vieux
Tout est maintenance évolutive !



           Création
       d'une application




    Maintenance
 D'une l'application
Rien n'est plus important que le Code
Mais le code n'est rien tout seul
Une époque est révolue
Développer pour les autres
Méthodologie
Transparence
Les outils évoluent tout comme nous




       Makefile          Gestionnaire         Intégration       Tests unitaires
                      de projet technique      Continue

VI / Emacs    Gestionnaire           Gestionnaire      Refactoring           Inspection
               de source              de tickets       depuis l'IDE           Continue
Poussés par des exigences
Gestionnaire de configuration

   Aucune modification ne passe en production
    sans avoir été préalablement placée sous
    contrôle de version
   L'ensemble cohérent des sources d'une version
    applicative doit pouvoir être retrouvé
    aisément dans le gestionnaire de source
Poussés par des exigences
Intégration continue

   Le code contenu dans le gestionnaire de
    source doit pouvoir être compilé à tout instant
    et par n'importe qui
   L'exécution des tests unitaires fait pleinement
    parti du processus de construction
   La sortie du processus de construction est un
    livrable prêt à l'emploi
   Si une des exigences n'est plus respectée, rien
    n'est plus important que de corriger l'anomalie
Poussés par des exigences
Inspection Continue

   Tout nouveau code doit être accompagné de
    tests unitaires
   Aucune méthode ne doit excéder un seuil de
    complexité
   Il ne doit pas exister de cycles entre packages
   ...
Rappel de bon sens
Des étapes de maturité doivent être respectées

   Assurer la traçabilité technique
    Gestionnaire de configuration
   Assurer la traçabilité fonctionnelle
    Gestionnaire de tickets
   Assurer la stabilité du build
    Intégration continue
   Assurer la qualité du code source
    Inspection Continue (Sonar)
La fin ne justifie plus les moyens



   Doing the right software



   Doing the software right
Qu'est-ce qu'un code de qualité ?




      « A well-written program is a program
     where the cost of implementing a feature
 is constant throughout the program's lifetime. »

                                        Itay Maman
Comment mesurer cette qualité ?
La dette technique
Les différents types de dette

                     Imprudente                               Prudente


           « Nous n'avons pas le temps                    « Nous devons livrer
           de faire de la conception. »                       maintenant
                                                    et assumer les conséquences. »

       Volontaire
       Involontaire

                    « C'est quoi des                    « Maintenant nous savons
                 couches logicielles ? »                  comment nous aurions
                                                               du faire. »




Extrait de http://martinfowler.com/bliki/TechnicalDebtQuadrant.html
Les 7 péchés capitaux
du développeur




                         Péchés



                          Dette
                        technique
Les 7 péchés capitaux ?
Appliqués au code source

   ?
   ?
   ?
   ?
   ?
   ?
   ?
Les 7 péchés capitaux
Appliqués au code source

   Duplications
   Mauvaise distribution de la complexité
   Mauvais Design
   Pas de tests unitaires
   Pas de respect des standards
   Bugs potentiels
   Pas ou trop de commentaires
Pour (re)trouver le droit chemin
Les 7 péchés capitaux
Appliqués au code source

   Duplications
   Mauvaise distribution de la complexité
   Mauvais Design
   Pas de tests unitaires
   Pas de respect des standards
   Bugs potentiels
   Pas ou trop de commentaires
Code dupliqué

   Que choisir entre la peste et le choléra ?
Once and only once (Kent Beck)


    Tout code dupliqué est une opportunité pour
 élever le niveau d'abstraction et étoffer la richesse
                     du design
Avant tout une histoire de bon sens

   Avez-vous deux processus pour
    
        Passer en production une nouvelle version
        applicative ?
    
        Soumettre un appel d'offre ?
    
        Recruter un collaborateur ?
Les 7 péchés capitaux
Appliqués au code source

   Duplications
   Mauvaise distribution de la complexité
   Mauvais Design
   Pas de tests unitaires
   Pas de respect des standards
   Bugs potentiels
   Pas ou trop de commentaires
Mauvaise distribution de la complexité
Qu'est-ce que la complexité cyclomatique ?
Mauvaise distribution de la complexité

   Vaut-il mieux :
       1 méthode d'une complexité de 30
    
        10 méthodes d'une complexité de 3
La complexité se gère à tous les étages

   Méthode
   Classe
   Package
   Module




Règle d'or :
Une méthode ou une classe n'est jamais trop petite
Les 7 péchés capitaux
Appliqués au code source

   Duplications
   Mauvaise distribution de la complexité
   Mauvais Design
   Pas de tests unitaires
   Pas de respect des standards
   Bugs potentiels
   Pas ou trop de commentaires
Mauvais design
Comportant deux niveaux d'abstraction

   Quel package/classe est responsable de quoi ?
Les couches d'architecture
Les cycles apparaissent comme le nez au milieu de figure
Les 7 péchés capitaux
Appliqués au code source

   Duplications
   Mauvaise distribution de la complexité
   Mauvais Design
   Pas de tests unitaires
   Pas de respect des standards
   Bugs potentiels
   Pas ou trop de commentaires
Peu ou pas d'utilisation des tests unitaires

   Merci d'ajouter un
    nouveau cas et
    d'éviter toute
    régression bien
    évidemment...
Un code sans tests unitaires est soit

   Du code jetable
   Du code dont le coût d'ajout d'une
    fonctionnalité et des régressions associées est
    sans importance
   Du code d'une pure application CRUD (Create
    Read Update Delete)
   Du code legacy dont la piètre qualité entraine
    un coût d'écriture et de maintenance des tests
    unitaires trop élevé
L'effet boule de neige du TDD

   Raisonnement en terme de contrat
    
        Donc en terme de responsabilité (SRP)
       Expressivité du vocabulaire
   Approche itérative et incrémentale au niveau
    le plus fin
       Méthodes peu complexes
    
        Linéarité des développements et donc meilleuer
        prédictibilité des délais
Les 7 péchés capitaux
Appliqués au code source

   Duplications
   Mauvaise distribution de la complexité
   Mauvais Design
   Pas de tests unitaires
   Pas de respect des standards
   Bugs potentiels
   Pas ou trop de commentaire
Non respect des standards
La gestion des exceptions
Taille verticale et horizontale d'un fichier




Quel traitement réservez-vous aux emails qui ne
           tiennent pas sur un écran ?
Les 7 péchés capitaux
Appliqués au code source

   Duplications
   Mauvaise distribution de la complexité
   Mauvais Design
   Pas de tests unitaires
   Pas de respect des standards
   Bugs potentiels
   Pas ou trop de commentaires
Bugs potentiels



 if (listeners == null)
     listeners.remove(listener);


 Sun java : JDK1.6.0, b105,
 sun.awt.x11.XMSelection
 lines 243-244
Les 7 péchés capitaux
Appliqués au code source

   Duplications
   Mauvaise distribution de la complexité
   Mauvais Design
   Pas de tests unitaires
   Pas de respect des standards
   Bugs potentiels
   Pas ou trop de commentaires
Pas ou trop de commentaires
Expressivité du vocabulaire
Versus densité des commentaires
La javadoc : un commentaire particulier

   L'utilisation doit être limitée aux API
   La Javadoc s'adresse en priorité à des
    consommateurs et non aux équipes en charge
    de la maintenance évolutive
Un commentaire doit être utile
Ou ne pas être


   Pour amplifier l'importance d'une logique


   Pour apporter une vision dynamique



   Quelques anti-patterns
La mission de Sonar




Permettre de déclarer ouverte la
         chasse aux
      7 péchés capitaux
Sonar à cœur ouvert

                  Sonar Runner
                   Sonar Runner                  Checkstyle     mvn sonar:sonar
 Code
  Code                 JUnit                     PMD / CPD          or
source
 source                Jacoco
                                    Squid
                                                 Findbugs
                                                              1
                                                              - ant sonar
  Java,
   Java,                                                            or
Cobol, VB,    1                                                 sonar-runner
 Cobol, VB,
 PL/SQL,
  PL/SQL,
  Flex,
   Flex,
  C, ...
   C, ...          3                              2


                                Sonar web interface
                                 Sonar web interface
                       4
          Sonar
           DB                                                 2-   http://sonar




                                                  5

                                Sonar Eclipse
                                 Sonar Eclipse
Quelques chiffres




     5,000+     téléchargements par mois

     1,000+     abonnés aux mailing lists

     15         releases de la plateforme en 2 ans

     50         plugins dans la forge


     X?,000     instances dans le monde

Contenu connexe

Tendances

Rappels Modularisation application C/C++
Rappels Modularisation application C/C++Rappels Modularisation application C/C++
Rappels Modularisation application C/C++Sylvain Leroy
 
La revue de code : agile, lean, indispensable !
La revue de code : agile, lean, indispensable !La revue de code : agile, lean, indispensable !
La revue de code : agile, lean, indispensable !Lucian Precup
 
Formation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratifFormation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratifkemenaran
 
A la poursuite du bug perdu - 2019 - THEAULT - DI GIORGIO - ACPQUALIFE
A la poursuite du bug perdu - 2019 - THEAULT - DI GIORGIO - ACPQUALIFEA la poursuite du bug perdu - 2019 - THEAULT - DI GIORGIO - ACPQUALIFE
A la poursuite du bug perdu - 2019 - THEAULT - DI GIORGIO - ACPQUALIFETelecomValley
 
D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?
D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?
D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?XP Day CH
 
Soirée du Test Logiciel - Administration et orchestration des tests avec Refe...
Soirée du Test Logiciel - Administration et orchestration des tests avec Refe...Soirée du Test Logiciel - Administration et orchestration des tests avec Refe...
Soirée du Test Logiciel - Administration et orchestration des tests avec Refe...TelecomValley
 
Indicateurs REPaRéD pour le testing craftsmanship
Indicateurs REPaRéD pour le testing craftsmanshipIndicateurs REPaRéD pour le testing craftsmanship
Indicateurs REPaRéD pour le testing craftsmanshipChristophe Moustier
 
Altran soirée du test logiciel - assez des c 05-10-17
Altran   soirée du test logiciel - assez des c 05-10-17Altran   soirée du test logiciel - assez des c 05-10-17
Altran soirée du test logiciel - assez des c 05-10-17Marc Hage Chahine
 
Extreme programming
Extreme programmingExtreme programming
Extreme programmingBilal ZIANE
 
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
 
TDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringTDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringneuros
 
2019 - HAGE CHAHINE - ALTRAN - Presentation-DecouverteMondeAgile_V1.1
2019 - HAGE CHAHINE - ALTRAN - Presentation-DecouverteMondeAgile_V1.12019 - HAGE CHAHINE - ALTRAN - Presentation-DecouverteMondeAgile_V1.1
2019 - HAGE CHAHINE - ALTRAN - Presentation-DecouverteMondeAgile_V1.1TelecomValley
 
IA pour les tests logiciels - LEGEARD - Smartesting Université Franche Comté-...
IA pour les tests logiciels - LEGEARD - Smartesting Université Franche Comté-...IA pour les tests logiciels - LEGEARD - Smartesting Université Franche Comté-...
IA pour les tests logiciels - LEGEARD - Smartesting Université Franche Comté-...TelecomValley
 
Tester en continu avec le Cloud - GACHE HUCKERT - AXA FRANCE - Soirée du Test...
Tester en continu avec le Cloud - GACHE HUCKERT - AXA FRANCE - Soirée du Test...Tester en continu avec le Cloud - GACHE HUCKERT - AXA FRANCE - Soirée du Test...
Tester en continu avec le Cloud - GACHE HUCKERT - AXA FRANCE - Soirée du Test...TelecomValley
 
Tdd en action - découverte
Tdd en action - découverteTdd en action - découverte
Tdd en action - découverteEric Mignot
 
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
 
201001 TDD
201001 TDD201001 TDD
201001 TDDlyonjug
 
eXtreme Programming [fr]
eXtreme Programming [fr]eXtreme Programming [fr]
eXtreme Programming [fr]Rémy Coutable
 
Et si mon test était la spécification de mon application ? - JACOB - iWE - So...
Et si mon test était la spécification de mon application ? - JACOB - iWE - So...Et si mon test était la spécification de mon application ? - JACOB - iWE - So...
Et si mon test était la spécification de mon application ? - JACOB - iWE - So...TelecomValley
 

Tendances (20)

Rappels Modularisation application C/C++
Rappels Modularisation application C/C++Rappels Modularisation application C/C++
Rappels Modularisation application C/C++
 
La revue de code : agile, lean, indispensable !
La revue de code : agile, lean, indispensable !La revue de code : agile, lean, indispensable !
La revue de code : agile, lean, indispensable !
 
Formation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratifFormation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratif
 
A la poursuite du bug perdu - 2019 - THEAULT - DI GIORGIO - ACPQUALIFE
A la poursuite du bug perdu - 2019 - THEAULT - DI GIORGIO - ACPQUALIFEA la poursuite du bug perdu - 2019 - THEAULT - DI GIORGIO - ACPQUALIFE
A la poursuite du bug perdu - 2019 - THEAULT - DI GIORGIO - ACPQUALIFE
 
D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?
D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?
D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?
 
Soirée du Test Logiciel - Administration et orchestration des tests avec Refe...
Soirée du Test Logiciel - Administration et orchestration des tests avec Refe...Soirée du Test Logiciel - Administration et orchestration des tests avec Refe...
Soirée du Test Logiciel - Administration et orchestration des tests avec Refe...
 
Indicateurs REPaRéD pour le testing craftsmanship
Indicateurs REPaRéD pour le testing craftsmanshipIndicateurs REPaRéD pour le testing craftsmanship
Indicateurs REPaRéD pour le testing craftsmanship
 
Altran soirée du test logiciel - assez des c 05-10-17
Altran   soirée du test logiciel - assez des c 05-10-17Altran   soirée du test logiciel - assez des c 05-10-17
Altran soirée du test logiciel - assez des c 05-10-17
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
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
 
TDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringTDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoring
 
2019 - HAGE CHAHINE - ALTRAN - Presentation-DecouverteMondeAgile_V1.1
2019 - HAGE CHAHINE - ALTRAN - Presentation-DecouverteMondeAgile_V1.12019 - HAGE CHAHINE - ALTRAN - Presentation-DecouverteMondeAgile_V1.1
2019 - HAGE CHAHINE - ALTRAN - Presentation-DecouverteMondeAgile_V1.1
 
IA pour les tests logiciels - LEGEARD - Smartesting Université Franche Comté-...
IA pour les tests logiciels - LEGEARD - Smartesting Université Franche Comté-...IA pour les tests logiciels - LEGEARD - Smartesting Université Franche Comté-...
IA pour les tests logiciels - LEGEARD - Smartesting Université Franche Comté-...
 
Tester en continu avec le Cloud - GACHE HUCKERT - AXA FRANCE - Soirée du Test...
Tester en continu avec le Cloud - GACHE HUCKERT - AXA FRANCE - Soirée du Test...Tester en continu avec le Cloud - GACHE HUCKERT - AXA FRANCE - Soirée du Test...
Tester en continu avec le Cloud - GACHE HUCKERT - AXA FRANCE - Soirée du Test...
 
Tdd en action - découverte
Tdd en action - découverteTdd en action - découverte
Tdd en action - découverte
 
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é
 
201001 TDD
201001 TDD201001 TDD
201001 TDD
 
eXtreme Programming [fr]
eXtreme Programming [fr]eXtreme Programming [fr]
eXtreme Programming [fr]
 
Usine Logicielle 2013
Usine Logicielle 2013Usine Logicielle 2013
Usine Logicielle 2013
 
Et si mon test était la spécification de mon application ? - JACOB - iWE - So...
Et si mon test était la spécification de mon application ? - JACOB - iWE - So...Et si mon test était la spécification de mon application ? - JACOB - iWE - So...
Et si mon test était la spécification de mon application ? - JACOB - iWE - So...
 

Similaire à Soirée Qualité Logicielle avec Sonar

Sonar 2.0 au GenevaJUG par Freddy Mallet
Sonar 2.0 au GenevaJUG par Freddy MalletSonar 2.0 au GenevaJUG par Freddy Mallet
Sonar 2.0 au GenevaJUG par Freddy MalletGenevaJUG
 
Sonar - Freddy Mallet - April 2009
Sonar - Freddy Mallet - April 2009Sonar - Freddy Mallet - April 2009
Sonar - Freddy Mallet - April 2009JUG Lausanne
 
AT2010 Principes Integration Continue
AT2010 Principes Integration ContinueAT2010 Principes Integration Continue
AT2010 Principes Integration ContinueNormandy JUG
 
Agile tour 2015 alliés contre les défauts
Agile tour 2015   alliés contre les défautsAgile tour 2015   alliés contre les défauts
Agile tour 2015 alliés contre les défautsJulien Jakubowski
 
Agile tour Lille 2015 allies ensemble contre les defauts
Agile tour Lille 2015 allies ensemble contre les defautsAgile tour Lille 2015 allies ensemble contre les defauts
Agile tour Lille 2015 allies ensemble contre les defautsAntoine Blk
 
Sonar devant le Java User Group de Lausanne
Sonar devant le Java User Group de LausanneSonar devant le Java User Group de Lausanne
Sonar devant le Java User Group de LausanneFreddy Mallet
 
Fichier, Nouveau projet… Et après ?
Fichier, Nouveau projet… Et après ?Fichier, Nouveau projet… Et après ?
Fichier, Nouveau projet… Et après ?Microsoft
 
Introduction au test_logiciel-fr
Introduction au test_logiciel-frIntroduction au test_logiciel-fr
Introduction au test_logiciel-frEmanBali
 
Les Code Reviews : le guide de survie
Les Code Reviews : le guide de survieLes Code Reviews : le guide de survie
Les Code Reviews : le guide de survieNicolas VERINAUD
 
La Quete du code source fiable et sécurisé - GSDAYS 2015
La Quete du code source fiable et sécurisé - GSDAYS 2015La Quete du code source fiable et sécurisé - GSDAYS 2015
La Quete du code source fiable et sécurisé - GSDAYS 2015Sebastien Gioria
 
Techdays2011
Techdays2011 Techdays2011
Techdays2011 ALTER WAY
 
Deployer en continu, Benoît Lafontaine, USIEVENT 2013
Deployer en continu, Benoît Lafontaine, USIEVENT 2013Deployer en continu, Benoît Lafontaine, USIEVENT 2013
Deployer en continu, Benoît Lafontaine, USIEVENT 2013Benoît Lafontaine
 
10 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 810 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 8Microsoft
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache MavenArnaud Héritier
 
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Normandie Web Xperts
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation MavenArnaud Héritier
 
Analyser la sécurité de son code source avec SonarSource
Analyser la sécurité de son code source avec SonarSourceAnalyser la sécurité de son code source avec SonarSource
Analyser la sécurité de son code source avec SonarSourceSébastien GIORIA
 
2014 11-06-sonarqube-asfws-141110031042-conversion-gate01
2014 11-06-sonarqube-asfws-141110031042-conversion-gate012014 11-06-sonarqube-asfws-141110031042-conversion-gate01
2014 11-06-sonarqube-asfws-141110031042-conversion-gate01Cyber Security Alliance
 
Mob programming 101 @Morpho (Groupe Safran) - 08/03/2016
Mob programming 101 @Morpho (Groupe Safran) - 08/03/2016Mob programming 101 @Morpho (Groupe Safran) - 08/03/2016
Mob programming 101 @Morpho (Groupe Safran) - 08/03/2016André De Sousa
 

Similaire à Soirée Qualité Logicielle avec Sonar (20)

Sonar 2.0 au GenevaJUG par Freddy Mallet
Sonar 2.0 au GenevaJUG par Freddy MalletSonar 2.0 au GenevaJUG par Freddy Mallet
Sonar 2.0 au GenevaJUG par Freddy Mallet
 
Sonar - Freddy Mallet - April 2009
Sonar - Freddy Mallet - April 2009Sonar - Freddy Mallet - April 2009
Sonar - Freddy Mallet - April 2009
 
Normandy JUG integration Continue
Normandy JUG integration ContinueNormandy JUG integration Continue
Normandy JUG integration Continue
 
AT2010 Principes Integration Continue
AT2010 Principes Integration ContinueAT2010 Principes Integration Continue
AT2010 Principes Integration Continue
 
Agile tour 2015 alliés contre les défauts
Agile tour 2015   alliés contre les défautsAgile tour 2015   alliés contre les défauts
Agile tour 2015 alliés contre les défauts
 
Agile tour Lille 2015 allies ensemble contre les defauts
Agile tour Lille 2015 allies ensemble contre les defautsAgile tour Lille 2015 allies ensemble contre les defauts
Agile tour Lille 2015 allies ensemble contre les defauts
 
Sonar devant le Java User Group de Lausanne
Sonar devant le Java User Group de LausanneSonar devant le Java User Group de Lausanne
Sonar devant le Java User Group de Lausanne
 
Fichier, Nouveau projet… Et après ?
Fichier, Nouveau projet… Et après ?Fichier, Nouveau projet… Et après ?
Fichier, Nouveau projet… Et après ?
 
Introduction au test_logiciel-fr
Introduction au test_logiciel-frIntroduction au test_logiciel-fr
Introduction au test_logiciel-fr
 
Les Code Reviews : le guide de survie
Les Code Reviews : le guide de survieLes Code Reviews : le guide de survie
Les Code Reviews : le guide de survie
 
La Quete du code source fiable et sécurisé - GSDAYS 2015
La Quete du code source fiable et sécurisé - GSDAYS 2015La Quete du code source fiable et sécurisé - GSDAYS 2015
La Quete du code source fiable et sécurisé - GSDAYS 2015
 
Techdays2011
Techdays2011 Techdays2011
Techdays2011
 
Deployer en continu, Benoît Lafontaine, USIEVENT 2013
Deployer en continu, Benoît Lafontaine, USIEVENT 2013Deployer en continu, Benoît Lafontaine, USIEVENT 2013
Deployer en continu, Benoît Lafontaine, USIEVENT 2013
 
10 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 810 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 8
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven
 
Analyser la sécurité de son code source avec SonarSource
Analyser la sécurité de son code source avec SonarSourceAnalyser la sécurité de son code source avec SonarSource
Analyser la sécurité de son code source avec SonarSource
 
2014 11-06-sonarqube-asfws-141110031042-conversion-gate01
2014 11-06-sonarqube-asfws-141110031042-conversion-gate012014 11-06-sonarqube-asfws-141110031042-conversion-gate01
2014 11-06-sonarqube-asfws-141110031042-conversion-gate01
 
Mob programming 101 @Morpho (Groupe Safran) - 08/03/2016
Mob programming 101 @Morpho (Groupe Safran) - 08/03/2016Mob programming 101 @Morpho (Groupe Safran) - 08/03/2016
Mob programming 101 @Morpho (Groupe Safran) - 08/03/2016
 

Soirée Qualité Logicielle avec Sonar

  • 1. JUG Elsass 2012 Inspection Continue La chasse aux 7 péchés capitaux du développeur peut commencer ! Par Freddy Mallet freddy.mallet@sonarsource.com
  • 2. Une époque est révolue
  • 4. Capitaine Flam est parmi nous Au fin fond de l'Univers, à des années et des années-lumière de la Terre, Veille celui que le gouvernement intersidéral appelle quand il n'est plus Capable de trouver une solution à ses problèmes, quand il ne reste plus Aucun espoir : le Capitaine FLAM !
  • 6. La peur du changement…
  • 7. Quand l'industrialisation s'en mêle  Projet géré sous contrôleur de version  Projet sous intégration continue  Projet avec traçabilité technique / fonctionnelle
  • 8. Quel est notre mission ? ?
  • 9. Faire du neuf avec du vieux
  • 10. Tout est maintenance évolutive ! Création d'une application Maintenance D'une l'application
  • 11. Rien n'est plus important que le Code Mais le code n'est rien tout seul
  • 12. Une époque est révolue
  • 16. Les outils évoluent tout comme nous Makefile Gestionnaire Intégration Tests unitaires de projet technique Continue VI / Emacs Gestionnaire Gestionnaire Refactoring Inspection de source de tickets depuis l'IDE Continue
  • 17. Poussés par des exigences Gestionnaire de configuration  Aucune modification ne passe en production sans avoir été préalablement placée sous contrôle de version  L'ensemble cohérent des sources d'une version applicative doit pouvoir être retrouvé aisément dans le gestionnaire de source
  • 18. Poussés par des exigences Intégration continue  Le code contenu dans le gestionnaire de source doit pouvoir être compilé à tout instant et par n'importe qui  L'exécution des tests unitaires fait pleinement parti du processus de construction  La sortie du processus de construction est un livrable prêt à l'emploi  Si une des exigences n'est plus respectée, rien n'est plus important que de corriger l'anomalie
  • 19. Poussés par des exigences Inspection Continue  Tout nouveau code doit être accompagné de tests unitaires  Aucune méthode ne doit excéder un seuil de complexité  Il ne doit pas exister de cycles entre packages  ...
  • 20. Rappel de bon sens Des étapes de maturité doivent être respectées  Assurer la traçabilité technique Gestionnaire de configuration  Assurer la traçabilité fonctionnelle Gestionnaire de tickets  Assurer la stabilité du build Intégration continue  Assurer la qualité du code source Inspection Continue (Sonar)
  • 21. La fin ne justifie plus les moyens Doing the right software Doing the software right
  • 22. Qu'est-ce qu'un code de qualité ? « A well-written program is a program where the cost of implementing a feature is constant throughout the program's lifetime. » Itay Maman
  • 23. Comment mesurer cette qualité ?
  • 25. Les différents types de dette Imprudente Prudente « Nous n'avons pas le temps « Nous devons livrer de faire de la conception. » maintenant et assumer les conséquences. » Volontaire Involontaire « C'est quoi des « Maintenant nous savons couches logicielles ? » comment nous aurions du faire. » Extrait de http://martinfowler.com/bliki/TechnicalDebtQuadrant.html
  • 26. Les 7 péchés capitaux du développeur Péchés Dette technique
  • 27. Les 7 péchés capitaux ? Appliqués au code source  ?  ?  ?  ?  ?  ?  ?
  • 28. Les 7 péchés capitaux Appliqués au code source  Duplications  Mauvaise distribution de la complexité  Mauvais Design  Pas de tests unitaires  Pas de respect des standards  Bugs potentiels  Pas ou trop de commentaires
  • 29. Pour (re)trouver le droit chemin
  • 30. Les 7 péchés capitaux Appliqués au code source  Duplications  Mauvaise distribution de la complexité  Mauvais Design  Pas de tests unitaires  Pas de respect des standards  Bugs potentiels  Pas ou trop de commentaires
  • 31. Code dupliqué  Que choisir entre la peste et le choléra ?
  • 32. Once and only once (Kent Beck) Tout code dupliqué est une opportunité pour élever le niveau d'abstraction et étoffer la richesse du design
  • 33. Avant tout une histoire de bon sens  Avez-vous deux processus pour  Passer en production une nouvelle version applicative ?  Soumettre un appel d'offre ?  Recruter un collaborateur ?
  • 34. Les 7 péchés capitaux Appliqués au code source  Duplications  Mauvaise distribution de la complexité  Mauvais Design  Pas de tests unitaires  Pas de respect des standards  Bugs potentiels  Pas ou trop de commentaires
  • 35. Mauvaise distribution de la complexité Qu'est-ce que la complexité cyclomatique ?
  • 36. Mauvaise distribution de la complexité  Vaut-il mieux :  1 méthode d'une complexité de 30  10 méthodes d'une complexité de 3
  • 37. La complexité se gère à tous les étages  Méthode  Classe  Package  Module Règle d'or : Une méthode ou une classe n'est jamais trop petite
  • 38. Les 7 péchés capitaux Appliqués au code source  Duplications  Mauvaise distribution de la complexité  Mauvais Design  Pas de tests unitaires  Pas de respect des standards  Bugs potentiels  Pas ou trop de commentaires
  • 39. Mauvais design Comportant deux niveaux d'abstraction  Quel package/classe est responsable de quoi ?
  • 40. Les couches d'architecture Les cycles apparaissent comme le nez au milieu de figure
  • 41. Les 7 péchés capitaux Appliqués au code source  Duplications  Mauvaise distribution de la complexité  Mauvais Design  Pas de tests unitaires  Pas de respect des standards  Bugs potentiels  Pas ou trop de commentaires
  • 42. Peu ou pas d'utilisation des tests unitaires  Merci d'ajouter un nouveau cas et d'éviter toute régression bien évidemment...
  • 43. Un code sans tests unitaires est soit  Du code jetable  Du code dont le coût d'ajout d'une fonctionnalité et des régressions associées est sans importance  Du code d'une pure application CRUD (Create Read Update Delete)  Du code legacy dont la piètre qualité entraine un coût d'écriture et de maintenance des tests unitaires trop élevé
  • 44. L'effet boule de neige du TDD  Raisonnement en terme de contrat  Donc en terme de responsabilité (SRP)  Expressivité du vocabulaire  Approche itérative et incrémentale au niveau le plus fin  Méthodes peu complexes  Linéarité des développements et donc meilleuer prédictibilité des délais
  • 45. Les 7 péchés capitaux Appliqués au code source  Duplications  Mauvaise distribution de la complexité  Mauvais Design  Pas de tests unitaires  Pas de respect des standards  Bugs potentiels  Pas ou trop de commentaire
  • 46. Non respect des standards
  • 47. La gestion des exceptions
  • 48. Taille verticale et horizontale d'un fichier Quel traitement réservez-vous aux emails qui ne tiennent pas sur un écran ?
  • 49. Les 7 péchés capitaux Appliqués au code source  Duplications  Mauvaise distribution de la complexité  Mauvais Design  Pas de tests unitaires  Pas de respect des standards  Bugs potentiels  Pas ou trop de commentaires
  • 50. Bugs potentiels if (listeners == null) listeners.remove(listener); Sun java : JDK1.6.0, b105, sun.awt.x11.XMSelection lines 243-244
  • 51. Les 7 péchés capitaux Appliqués au code source  Duplications  Mauvaise distribution de la complexité  Mauvais Design  Pas de tests unitaires  Pas de respect des standards  Bugs potentiels  Pas ou trop de commentaires
  • 52. Pas ou trop de commentaires
  • 53. Expressivité du vocabulaire Versus densité des commentaires
  • 54. La javadoc : un commentaire particulier  L'utilisation doit être limitée aux API  La Javadoc s'adresse en priorité à des consommateurs et non aux équipes en charge de la maintenance évolutive
  • 55. Un commentaire doit être utile Ou ne pas être  Pour amplifier l'importance d'une logique  Pour apporter une vision dynamique  Quelques anti-patterns
  • 56. La mission de Sonar Permettre de déclarer ouverte la chasse aux 7 péchés capitaux
  • 57. Sonar à cœur ouvert Sonar Runner Sonar Runner Checkstyle mvn sonar:sonar Code Code JUnit PMD / CPD or source source Jacoco Squid Findbugs 1 - ant sonar Java, Java, or Cobol, VB, 1 sonar-runner Cobol, VB, PL/SQL, PL/SQL, Flex, Flex, C, ... C, ... 3 2 Sonar web interface Sonar web interface 4 Sonar DB 2- http://sonar 5 Sonar Eclipse Sonar Eclipse
  • 58. Quelques chiffres 5,000+ téléchargements par mois 1,000+ abonnés aux mailing lists 15 releases de la plateforme en 2 ans 50 plugins dans la forge X?,000 instances dans le monde