Construire sa vision qualité Java avec
                    des logiciels libres




Salon Solution Linux 2008
Nous


                ✔François Le Droff :
                            ✔francois.le.droff@gmail.com
                     ...
La Qualité Logicielle : Définition

    ✔Pas de définition universelle

    ✔La qualité, c’est l’aptitude d’un ensemble de...
Hors Sujet
       ✔Cette présentation n'est pas sur
             ✔Le modèle CMM
             ✔Les modèles Qualité ISO :ISO...
Agenda :
    ✔ Le contrôle qualité de code (Java)
       ✔Pourquoi ?
       ✔Qui ?
       ✔Quand ?
       ✔Quoi ?
       ✔...
Pourquoi ? Les statistiques




     ✔ 80% des entreprises négligent la qualité logicielle
     ✔1 projet sur 3 n'est pas ...
Pourquoi ?
                   une obligation professionnelle




Salon Solution Linux 2008
Quelques citations
                  «“Any fool can write code that a computer can understand.
                  Good prog...
Pourquoi ? La qualité c'est fun !




   ✔La qualité c'est fun, enrichissant, c'est à la mode, c'est
       sexy ... c'est...
Pourquoi ? Votre code : c'est votre
                  réputation, votre publicité

    ✔Programmer c'est « publier » (une ...
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 ;
      ...
Quand ?

 ✔ Tout au long du cycle du vie du projet
    ✔Éviter l'effet tunnel
    ✔Contractualiser les exigences
    ✔Mode...
Quoi ?
                  Les Axes du contrôle Qualité du code
     ✔Contrôle de :
          ✔Taille/métrique du code
     ...
Quoi ? Les indicateurs recherchés

     ✔Usabilité / Lisibilité
     ✔Maintenabilité
     ✔Efficacité / Performance
     ✔...
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
      ...
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 c...
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 : u...
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
    ...
Analyse de byte code Java
✔ Indicateurs métriques 00 et architecture :
   ✔ JDepend, Classycle, CKJM, Macker
   ✔ Eclipse ...
Analyse de byte code Java
   ✔ Métriques de package
      ✔ Nombres de classes concrètes, abstraites, publiques
      ✔ No...
Exemple plugin CAPS




Salon Solution Linux 2008
Tests et couverture de test
   ✔ Test unitaires                  ✔ Couverture des tests
      ✔ JUnit, testNG, JMockit, Db...
Comment industrialiser ?




Salon Solution Linux 2008
Build et intégration continue
    ✔Outils de build systématique, unifié et standardisé
               ✔Ant             ✔Ma...
Démo : intégration au build

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




    PS: on peut aussi le faire avec ant (plu...
Outils d'agrégation, de synthèse et
                        d'historisation ?
    ✔Option 1: construisez le vôtre :
      ...
Outils d'agrégation, de synthèse et
                        d'historisation ?
    ✔Exemple de rapport excel




Salon Solu...
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)



 ...
XRadar
 ✔« Killing Features »
       ✔ Agrège les résulats de nombreux outils d'analyses de code OSS
       ✔ Intégration ...
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
       ✔ A...
Conclusion




Salon Solution Linux 2008
Références : projets et outils OS
                                                             ✔   FindBugs : http://findb...
Références : biblio

     ✔ «Charte de Développement Java/J2EEquot;» (Réf. : CharteDevJavaJ2EE - août 2006) , François Le ...
Les photos
     ✔   http://flickr.com/photos/jamesgrayking/2105820477/    ✔   http://flickr.com/photos/youkeo/185917327/
 ...
Prochain SlideShare
Chargement dans…5
×

Solutions Linux2008 Construire Sa Vision Qualite

2 599 vues

Publié le

Présentation du Solutions Linux2008 "Construire Sa Vision Qualite"

Publié dans : Technologie, Voyages
0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
2 599
Sur SlideShare
0
Issues des intégrations
0
Intégrations
130
Actions
Partages
0
Téléchargements
57
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Solutions Linux2008 Construire Sa Vision Qualite

  1. 1. Construire sa vision qualité Java avec des logiciels libres Salon Solution Linux 2008
  2. 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. 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. 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. 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. 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. 7. Pourquoi ? une obligation professionnelle Salon Solution Linux 2008
  8. 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. 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. 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. 11. La qualité rendra vos clients accro Salon Solution Linux 2008
  12. 12. Pourquoi s'en priver ? ✔En un mot : la qualité c'est bon, mangez-en Salon Solution Linux 2008
  13. 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. 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. 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. 16. Quoi ? Les indicateurs recherchés ✔Usabilité / Lisibilité ✔Maintenabilité ✔Efficacité / Performance ✔Portabilité ✔Fiabilité ✔Testabilité ✔ Ne pas mesurer pour mesurer Salon Solution Linux 2008
  17. 17. Quoi ? Faites votre marché Salon Solution Linux 2008
  18. 18. Construisez votre réferentiel ✔Communiquer et formaliser vos exigences qualité Salon Solution Linux 2008
  19. 19. Zoom sur quelques exemples Salon Solution Linux 2008
  20. 20. Règles de nommage : On ne retient que les bons mots Salon Solution Linux 2008
  21. 21. Règles de nommage : Salon Solution Linux 2008
  22. 22. Règles d'encapsulation ✔Rendre les choses aussi inacessibles que possible Salon Solution Linux 2008
  23. 23. Règles d'encapsulation Salon Solution Linux 2008
  24. 24. La gestion des exceptions Salon Solution Linux 2008
  25. 25. Les exceptions Salon Solution Linux 2008
  26. 26. Les exceptions Salon Solution Linux 2008
  27. 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. 28. Comment ? ✔« c’est à ses outils qu’on reconnait un bon ouvrier  » Salon Solution Linux 2008
  29. 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. 30. Exemple de rapport Checkstyle Salon Solution Linux 2008
  31. 31. Exemple de rapport PMD Salon Solution Linux 2008
  32. 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. 33. Exemple de rapport JavaNCSS Salon Solution Linux 2008
  34. 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. 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. 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. 37. Exemple plugin CAPS Salon Solution Linux 2008
  38. 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. 39. Comment industrialiser ? Salon Solution Linux 2008
  40. 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. 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. 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. 43. Outils d'agrégation, de synthèse et d'historisation ? ✔Exemple de rapport excel Salon Solution Linux 2008
  44. 44. Sonar Salon Solution Linux 2008
  45. 45. Démo Sonar Salon Solution Linux 2008
  46. 46. XRadar Salon Solution Linux 2008
  47. 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. 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
  49. 49. Démo XRadar Salon Solution Linux 2008
  50. 50. Autres Outils OS ✔Historisation ✔QALab ✔Maven Dashboard Salon Solution Linux 2008
  51. 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
  52. 52. Conclusion Salon Solution Linux 2008
  53. 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. 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. 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

×