soirée qualité logicielle avec sonar
DESCRIPTION
TRANSCRIPT
![Page 1: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/1.jpg)
Inspection Continue La chasse aux 7 péchés capitaux dudéveloppeur peut commencer !
Par Freddy [email protected]
JUG Elsass 2012
![Page 2: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/2.jpg)
Une époque est révolue
![Page 3: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/3.jpg)
Le savant génial
![Page 4: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/4.jpg)
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 plusCapable de trouver une solution à ses problèmes, quand il ne reste plusAucun espoir :
le Capitaine FLAM !
![Page 5: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/5.jpg)
C'est mon jouet !
![Page 6: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/6.jpg)
La peur du changement…
![Page 7: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/7.jpg)
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
![Page 8: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/8.jpg)
Quel est notre mission ?
?
![Page 9: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/9.jpg)
Faire du neuf avec du vieux
![Page 10: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/10.jpg)
Tout est maintenance évolutive !
Création d'une application
Maintenance D'une l'application
![Page 11: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/11.jpg)
Rien n'est plus important que le CodeMais le code n'est rien tout seul
![Page 12: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/12.jpg)
Une époque est révolue
![Page 13: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/13.jpg)
Développer pour les autres
![Page 14: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/14.jpg)
Méthodologie
![Page 15: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/15.jpg)
Transparence
![Page 16: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/16.jpg)
Les outils évoluent tout comme nous
Makefile
Gestionnairede source
Gestionnairede projet technique
Gestionnairede tickets
IntégrationContinue
Refactoringdepuis l'IDE
VI / Emacs
Tests unitaires
InspectionContinue
![Page 17: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/17.jpg)
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
L'ensemble cohérent des sources d'une version applicative doit pouvoir être retrouvé aisément dans le gestionnaire de source
![Page 18: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/18.jpg)
Poussés par des exigencesInté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
![Page 19: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/19.jpg)
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 ...
![Page 20: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/20.jpg)
Rappel de bon sens
Assurer la traçabilité techniqueGestionnaire de configuration
Assurer la traçabilité fonctionnelle Gestionnaire de tickets
Assurer la stabilité du buildIntégration continue
Assurer la qualité du code sourceInspection Continue (Sonar)
Des étapes de maturité doivent être respectées
![Page 21: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/21.jpg)
La fin ne justifie plus les moyens
Doing the right software
Doing the software right
![Page 22: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/22.jpg)
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
![Page 23: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/23.jpg)
Comment mesurer cette qualité ?
![Page 24: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/24.jpg)
La dette technique
![Page 25: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/25.jpg)
Les différents types de dette
Volontaire
Involontaire
Extrait de http://martinfowler.com/bliki/TechnicalDebtQuadrant.html
Imprudente Prudente
« C'est quoi des couches logicielles ? »
« Nous n'avons pas le tempsde faire de la conception. »
« Maintenant nous savonscomment nous aurions
du faire. »
« Nous devons livrer maintenant
et assumer les conséquences. »
![Page 26: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/26.jpg)
Les 7 péchés capitauxdu développeur
Péchés
Dette technique
![Page 27: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/27.jpg)
Les 7 péchés capitaux ?Appliqués au code source
? ? ? ? ? ? ?
![Page 28: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/28.jpg)
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
![Page 29: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/29.jpg)
Pour (re)trouver le droit chemin
![Page 30: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/30.jpg)
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
![Page 31: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/31.jpg)
Code dupliqué
Que choisir entre la peste et le choléra ?
![Page 32: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/32.jpg)
Once and only once (Kent Beck)
Tout code dupliqué est une opportunité pour élever le niveau d'abstraction et étoffer la richesse
du design
![Page 33: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/33.jpg)
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 ?
![Page 34: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/34.jpg)
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
![Page 35: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/35.jpg)
Mauvaise distribution de la complexitéQu'est-ce que la complexité cyclomatique ?
![Page 36: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/36.jpg)
Mauvaise distribution de la complexité
Vaut-il mieux : 1 méthode d'une complexité de 30 10 méthodes d'une complexité de 3
![Page 37: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/37.jpg)
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
![Page 38: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/38.jpg)
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
![Page 39: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/39.jpg)
Mauvais design
Quel package/classe est responsable de quoi ?
Comportant deux niveaux d'abstraction
![Page 40: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/40.jpg)
Les couches d'architectureLes cycles apparaissent comme le nez au milieu de figure
![Page 41: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/41.jpg)
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
![Page 42: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/42.jpg)
Peu ou pas d'utilisation des tests unitaires
Merci d'ajouter un nouveau cas et d'éviter toute régression bien évidemment...
![Page 43: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/43.jpg)
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é
![Page 44: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/44.jpg)
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
![Page 45: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/45.jpg)
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
![Page 46: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/46.jpg)
Non respect des standards
![Page 47: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/47.jpg)
La gestion des exceptions
![Page 48: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/48.jpg)
Taille verticale et horizontale d'un fichier
Quel traitement réservez-vous aux emails qui ne tiennent pas sur un écran ?
![Page 49: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/49.jpg)
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
![Page 50: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/50.jpg)
Bugs potentiels
if (listeners == null) listeners.remove(listener);
Sun java : JDK1.6.0, b105, sun.awt.x11.XMSelection lines 243-244
![Page 51: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/51.jpg)
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
![Page 52: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/52.jpg)
Pas ou trop de commentaires
![Page 53: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/53.jpg)
Expressivité du vocabulaireVersus densité des commentaires
![Page 54: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/54.jpg)
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
![Page 55: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/55.jpg)
Un commentaire doit être utileOu ne pas être
Pour amplifier l'importance d'une logique
Pour apporter une vision dynamique
Quelques anti-patterns
![Page 56: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/56.jpg)
La mission de Sonar
Permettre de déclarer ouverte la chasse aux
7 péchés capitaux
![Page 57: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/57.jpg)
Sonar à cœur ouvert
Code source
Java,Cobol, VB,PL/SQL,Flex, C, ...
Code source
Java,Cobol, VB,PL/SQL,Flex, C, ...
Sonar Runner Sonar Runner Checkstyle
SquidJacoco
PMD / CPD
SonarDB
Sonar web interfaceSonar web interface
1
23
1-
2- http://sonar
4
Findbugs
Sonar EclipseSonar Eclipse
JUnit
mvn sonar:sonar orant sonar orsonar-runner
5
![Page 58: Soirée Qualité Logicielle avec Sonar](https://reader034.vdocuments.site/reader034/viewer/2022051612/54c3f4e74a7959285f8b4592/html5/thumbnails/58.jpg)
Quelques chiffres
X?,000 instances dans le monde
5,000+ téléchargements par mois
1,000+ abonnés aux mailing lists
50 plugins dans la forge
15 releases de la plateforme en 2 ans