soirée qualité logicielle avec sonar

Post on 25-Jan-2015

932 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

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

Par Freddy Malletfreddy.mallet@sonarsource.com

JUG Elsass 2012

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 plusCapable de trouver une solution à ses problèmes, quand il ne reste plusAucun 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 CodeMais 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

Gestionnairede source

Gestionnairede projet technique

Gestionnairede tickets

IntégrationContinue

Refactoringdepuis l'IDE

VI / Emacs

Tests unitaires

InspectionContinue

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

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

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 ...

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

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

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. »

Les 7 péchés capitauxdu développeur

Péchés

Dette technique

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 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 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

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 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

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 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

Mauvais design

Quel package/classe est responsable de quoi ?

Comportant deux niveaux d'abstraction

Les couches d'architectureLes 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 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 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

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 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

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 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

Pas ou trop de commentaires

Expressivité du vocabulaireVersus 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 utileOu 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

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

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

top related