soirée qualité logicielle avec sonar

58
Inspection Continue La chasse aux 7 péchés capitaux du développeur peut commencer ! Par Freddy Mallet [email protected] JUG Elsass 2012

Upload: elsassjug

Post on 25-Jan-2015

932 views

Category:

Technology


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Soirée Qualité Logicielle avec Sonar

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

Une époque est révolue

Page 3: Soirée Qualité Logicielle avec Sonar

Le savant génial

Page 4: Soirée Qualité Logicielle avec Sonar

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

C'est mon jouet !

Page 6: Soirée Qualité Logicielle avec Sonar

La peur du changement…

Page 7: Soirée Qualité Logicielle avec Sonar

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

Quel est notre mission ?

?

Page 9: Soirée Qualité Logicielle avec Sonar

Faire du neuf avec du vieux

Page 10: Soirée Qualité Logicielle avec Sonar

Tout est maintenance évolutive !

Création d'une application

Maintenance D'une l'application

Page 11: Soirée Qualité Logicielle avec Sonar

Rien n'est plus important que le CodeMais le code n'est rien tout seul

Page 12: Soirée Qualité Logicielle avec Sonar

Une époque est révolue

Page 13: Soirée Qualité Logicielle avec Sonar

Développer pour les autres

Page 14: Soirée Qualité Logicielle avec Sonar

Méthodologie

Page 15: Soirée Qualité Logicielle avec Sonar

Transparence

Page 16: Soirée Qualité Logicielle avec Sonar

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

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

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

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

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

La fin ne justifie plus les moyens

Doing the right software

Doing the software right

Page 22: Soirée Qualité Logicielle avec Sonar

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

Comment mesurer cette qualité ?

Page 24: Soirée Qualité Logicielle avec Sonar

La dette technique

Page 25: Soirée Qualité Logicielle avec Sonar

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

Les 7 péchés capitauxdu développeur

Péchés

Dette technique

Page 27: Soirée Qualité Logicielle avec Sonar

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

? ? ? ? ? ? ?

Page 28: Soirée Qualité Logicielle avec Sonar

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

Pour (re)trouver le droit chemin

Page 30: Soirée Qualité Logicielle avec Sonar

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

Code dupliqué

Que choisir entre la peste et le choléra ?

Page 32: Soirée Qualité Logicielle avec Sonar

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

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

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

Mauvaise distribution de la complexitéQu'est-ce que la complexité cyclomatique ?

Page 36: Soirée Qualité Logicielle avec Sonar

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

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

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

Mauvais design

Quel package/classe est responsable de quoi ?

Comportant deux niveaux d'abstraction

Page 40: Soirée Qualité Logicielle avec Sonar

Les couches d'architectureLes cycles apparaissent comme le nez au milieu de figure

Page 41: Soirée Qualité Logicielle avec Sonar

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

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

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

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

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

Non respect des standards

Page 47: Soirée Qualité Logicielle avec Sonar

La gestion des exceptions

Page 48: Soirée Qualité Logicielle avec Sonar

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

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

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

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

Pas ou trop de commentaires

Page 53: Soirée Qualité Logicielle avec Sonar

Expressivité du vocabulaireVersus densité des commentaires

Page 54: Soirée Qualité Logicielle avec Sonar

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

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

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

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

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