JUG Elsass 2012                  Inspection Continue                  La chasse aux 7 péchés capitaux du                  ...
Une époque est révolue
Le savant génial
Capitaine Flam est parmi nousAu fin fond de lUnivers, à des annéeset des années-lumière de la Terre,Veille celui que le go...
Cest mon jouet !
La peur du changement…
Quand lindustrialisation sen mêle                  Projet géré sous contrôleur                   de version              ...
Quel est notre mission ?                 ?
Faire du neuf avec du vieux
Tout est maintenance évolutive !           Création       dune application    Maintenance Dune lapplication
Rien nest plus important que le CodeMais le code nest 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        ...
Poussés par des exigencesGestionnaire de configuration   Aucune modification ne passe en production    sans avoir été pré...
Poussés par des exigencesIntégration continue   Le code contenu dans le gestionnaire de    source doit pouvoir être compi...
Poussés par des exigencesInspection Continue   Tout nouveau code doit être accompagné de    tests unitaires   Aucune mét...
Rappel de bon sensDes étapes de maturité doivent être respectées   Assurer la traçabilité technique    Gestionnaire de co...
La fin ne justifie plus les moyens   Doing the right software   Doing the software right
Quest-ce quun code de qualité ?      « A well-written program is a program     where the cost of implementing a feature is...
Comment mesurer cette qualité ?
La dette technique
Les différents types de dette                     Imprudente                               Prudente           « Nous navon...
Les 7 péchés capitauxdu développeur                         Péchés                          Dette                        t...
Les 7 péchés capitaux ?Appliqués au code source   ?   ?   ?   ?   ?   ?   ?
Les 7 péchés capitauxAppliqués au code source   Duplications   Mauvaise distribution de la complexité   Mauvais Design...
Pour (re)trouver le droit chemin
Les 7 péchés capitauxAppliqués au code source   Duplications   Mauvaise distribution de la complexité   Mauvais Design...
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 dabstraction et étoffer la ...
Avant tout une histoire de bon sens   Avez-vous deux processus pour            Passer en production une nouvelle version...
Les 7 péchés capitauxAppliqués au code source   Duplications   Mauvaise distribution de la complexité   Mauvais Design...
Mauvaise distribution de la complexitéQuest-ce que la complexité cyclomatique ?
Mauvaise distribution de la complexité   Vaut-il mieux :       1 méthode dune complexité de 30            10 méthodes d...
La complexité se gère à tous les étages   Méthode   Classe   Package   ModuleRègle dor :Une méthode ou une classe nest...
Les 7 péchés capitauxAppliqués au code source   Duplications   Mauvaise distribution de la complexité   Mauvais Design...
Mauvais designComportant deux niveaux dabstraction   Quel package/classe est responsable de quoi ?
Les couches darchitectureLes cycles apparaissent comme le nez au milieu de figure
Les 7 péchés capitauxAppliqués au code source   Duplications   Mauvaise distribution de la complexité   Mauvais Design...
Peu ou pas dutilisation des tests unitaires   Merci dajouter un    nouveau cas et    déviter toute    régression bien    ...
Un code sans tests unitaires est soit   Du code jetable   Du code dont le coût dajout dune    fonctionnalité et des régr...
Leffet boule de neige du TDD   Raisonnement en terme de contrat            Donc en terme de responsabilité (SRP)       ...
Les 7 péchés capitauxAppliqués au code source   Duplications   Mauvaise distribution de la complexité   Mauvais Design...
Non respect des standards
La gestion des exceptions
Taille verticale et horizontale dun fichierQuel traitement réservez-vous aux emails qui ne           tiennent pas sur un é...
Les 7 péchés capitauxAppliqués au code source   Duplications   Mauvaise distribution de la complexité   Mauvais Design...
Bugs potentiels if (listeners == null)     listeners.remove(listener); Sun java : JDK1.6.0, b105, sun.awt.x11.XMSelection ...
Les 7 péchés capitauxAppliqués au code source   Duplications   Mauvaise distribution de la complexité   Mauvais Design...
Pas ou trop de commentaires
Expressivité du vocabulaireVersus densité des commentaires
La javadoc : un commentaire particulier   Lutilisation doit être limitée aux API   La Javadoc sadresse en priorité à des...
Un commentaire doit être utileOu ne pas être   Pour amplifier limportance dune logique   Pour apporter une vision dynami...
La mission de SonarPermettre de déclarer ouverte la         chasse aux      7 péchés capitaux
Sonar à cœur ouvert                  Sonar Runner                   Sonar Runner                  Checkstyle     mvn sonar...
Quelques chiffres     5,000+     téléchargements par mois     1,000+     abonnés aux mailing lists     15         releases...
Prochain SlideShare
Chargement dans…5
×

Soirée Qualité Logicielle avec Sonar

1 773 vues

Publié le

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

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

Aucune remarque pour cette diapositive

Soirée Qualité Logicielle avec Sonar

  1. 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. 2. Une époque est révolue
  3. 3. Le savant génial
  4. 4. Capitaine Flam est parmi nousAu fin fond de lUnivers, à des annéeset des années-lumière de la Terre,Veille celui que le gouvernementintersidéral appelle quand il nest plusCapable de trouver une solution àses problèmes, quand il ne reste plusAucun espoir :le Capitaine FLAM !
  5. 5. Cest mon jouet !
  6. 6. La peur du changement…
  7. 7. Quand lindustrialisation sen mêle  Projet géré sous contrôleur de version  Projet sous intégration continue  Projet avec traçabilité technique / fonctionnelle
  8. 8. Quel est notre mission ? ?
  9. 9. Faire du neuf avec du vieux
  10. 10. Tout est maintenance évolutive ! Création dune application Maintenance Dune lapplication
  11. 11. Rien nest plus important que le CodeMais le code nest rien tout seul
  12. 12. Une époque est révolue
  13. 13. Développer pour les autres
  14. 14. Méthodologie
  15. 15. Transparence
  16. 16. Les outils évoluent tout comme nous Makefile Gestionnaire Intégration Tests unitaires de projet technique ContinueVI / Emacs Gestionnaire Gestionnaire Refactoring Inspection de source de tickets depuis lIDE Continue
  17. 17. Poussés par des exigencesGestionnaire de configuration Aucune modification ne passe en production sans avoir été préalablement placée sous contrôle de version Lensemble cohérent des sources dune version applicative doit pouvoir être retrouvé aisément dans le gestionnaire de source
  18. 18. Poussés par des exigencesIntégration continue Le code contenu dans le gestionnaire de source doit pouvoir être compilé à tout instant et par nimporte qui Lexécution des tests unitaires fait pleinement parti du processus de construction La sortie du processus de construction est un livrable prêt à lemploi Si une des exigences nest plus respectée, rien nest plus important que de corriger lanomalie
  19. 19. Poussés par des exigencesInspection 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. 20. Rappel de bon sensDes é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. 21. La fin ne justifie plus les moyens Doing the right software Doing the software right
  22. 22. Quest-ce quun code de qualité ? « A well-written program is a program where the cost of implementing a feature is constant throughout the programs lifetime. » Itay Maman
  23. 23. Comment mesurer cette qualité ?
  24. 24. La dette technique
  25. 25. Les différents types de dette Imprudente Prudente « Nous navons pas le temps « Nous devons livrer de faire de la conception. » maintenant et assumer les conséquences. » Volontaire Involontaire « Cest quoi des « Maintenant nous savons couches logicielles ? » comment nous aurions du faire. »Extrait de http://martinfowler.com/bliki/TechnicalDebtQuadrant.html
  26. 26. Les 7 péchés capitauxdu développeur Péchés Dette technique
  27. 27. Les 7 péchés capitaux ?Appliqués au code source ? ? ? ? ? ? ?
  28. 28. Les 7 péchés capitauxAppliqué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. 29. Pour (re)trouver le droit chemin
  30. 30. Les 7 péchés capitauxAppliqué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. 31. Code dupliqué Que choisir entre la peste et le choléra ?
  32. 32. Once and only once (Kent Beck) Tout code dupliqué est une opportunité pour élever le niveau dabstraction et étoffer la richesse du design
  33. 33. Avant tout une histoire de bon sens Avez-vous deux processus pour  Passer en production une nouvelle version applicative ?  Soumettre un appel doffre ?  Recruter un collaborateur ?
  34. 34. Les 7 péchés capitauxAppliqué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. 35. Mauvaise distribution de la complexitéQuest-ce que la complexité cyclomatique ?
  36. 36. Mauvaise distribution de la complexité Vaut-il mieux :  1 méthode dune complexité de 30  10 méthodes dune complexité de 3
  37. 37. La complexité se gère à tous les étages Méthode Classe Package ModuleRègle dor :Une méthode ou une classe nest jamais trop petite
  38. 38. Les 7 péchés capitauxAppliqué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. 39. Mauvais designComportant deux niveaux dabstraction Quel package/classe est responsable de quoi ?
  40. 40. Les couches darchitectureLes cycles apparaissent comme le nez au milieu de figure
  41. 41. Les 7 péchés capitauxAppliqué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. 42. Peu ou pas dutilisation des tests unitaires Merci dajouter un nouveau cas et déviter toute régression bien évidemment...
  43. 43. Un code sans tests unitaires est soit Du code jetable Du code dont le coût dajout dune fonctionnalité et des régressions associées est sans importance Du code dune 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. 44. Leffet 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. 45. Les 7 péchés capitauxAppliqué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. 46. Non respect des standards
  47. 47. La gestion des exceptions
  48. 48. Taille verticale et horizontale dun fichierQuel traitement réservez-vous aux emails qui ne tiennent pas sur un écran ?
  49. 49. Les 7 péchés capitauxAppliqué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. 50. Bugs potentiels if (listeners == null) listeners.remove(listener); Sun java : JDK1.6.0, b105, sun.awt.x11.XMSelection lines 243-244
  51. 51. Les 7 péchés capitauxAppliqué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. 52. Pas ou trop de commentaires
  53. 53. Expressivité du vocabulaireVersus densité des commentaires
  54. 54. La javadoc : un commentaire particulier Lutilisation doit être limitée aux API La Javadoc sadresse en priorité à des consommateurs et non aux équipes en charge de la maintenance évolutive
  55. 55. Un commentaire doit être utileOu ne pas être Pour amplifier limportance dune logique Pour apporter une vision dynamique Quelques anti-patterns
  56. 56. La mission de SonarPermettre de déclarer ouverte la chasse aux 7 péchés capitaux
  57. 57. Sonar à cœur ouvert Sonar Runner Sonar Runner Checkstyle mvn sonar:sonar Code Code JUnit PMD / CPD orsource source Jacoco Squid Findbugs 1 - ant sonar Java, Java, orCobol, 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. 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

×