55
Salon Solution Linux 2008 Construire sa vision qualité Java avec des logiciels libres

Solutions Linux2008 Construire Sa Vision Qualite

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

Construire sa vision qualité Java avec des logiciels libres

Page 2: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

Nous

✔François Le Droff : ✔[email protected]

✔http://www.droff.com

✔Romain Pelisse ✔[email protected]✔http://belaran.eu/

Page 3: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

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

✔ "la qualité, c'est l'aptitude à l'emploi"

✔ "la qualité, c'est la conformité aux spécifications"

Page 4: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

Hors Sujet

✔Cette présentation n'est pas sur

✔Le modèle CMM

✔Les modèles Qualité ISO :ISO 9000-2000, ISO 9126, "Technologies de l’Information : Qualités des produits logiciels"

✔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 "conformité aux besoins"

Page 5: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

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

Page 6: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

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)

Page 7: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

Pourquoi ? une obligation professionnelle

Page 8: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

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

~Tom DeMarco

“Control l ing complexity is the essence of computer programming.”

~Brian Kernighan.

“There does not now, nor wil l there ever exist , a programming language in which it i s the least bit hard to write bad programs.”

~Lawrence Flon

“Programs for sale: fast , re l iable , cheap - choose two.”

~Author Unknown

Page 9: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

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 !

Page 10: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

Pourquoi ? Votre code : c'est votre réputation, votre publicité

✔Programmer c'est « publier » (une API)

✔« APIs are for ever »

✔Une API de qualité : ✔ s imple✔addictif !

Une fois adoptée, on refuse d'en changer !

Page 11: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

La qualité rendra vos clients accro

Page 12: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

✔En un mot : la qualité c'est bon, mangez-en

Pourquoi s'en priver ?

Page 13: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

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é

Page 14: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

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

Page 15: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

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

Page 16: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

Quoi ? Les indicateurs recherchés

✔Usabilité / Lisibilité

✔Maintenabilité

✔Efficacité / Performance

✔Portabilité

✔Fiabilité

✔Testabilité ✔ Ne pas mesurer pour mesurer

Page 17: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

Quoi ? Faites votre marché

Page 18: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

Construisez votre réferentiel

✔Communiquer et formaliser vos exigences qualité

Page 19: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

Zoom sur quelques exemples

Page 20: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

Règles de nommage :On ne retient que les bons mots

Page 21: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

Règles de nommage :

Page 22: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

Règles d'encapsulation

✔Rendre les choses aussi inacessibles que possible

Page 23: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

Règles d'encapsulation

Page 24: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

La gestion des exceptions

Page 25: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

Les exceptions

Page 26: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

Les exceptions

Page 27: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

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

Page 28: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

Comment ?

✔« c’est à ses outils qu’on reconnait un bon ouvrier  »

Page 29: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

Analyse statique de code source Java

✔ Les Contrôleur de code

✔ PMD,

✔ CheckStyle (bluecheckstyle, jjguidelines),

✔ Hammurapi,

✔ FindBugs,

✔ PatternTesting,

✔ lint4j, jcsc,

✔ QJ-Pro

✔ Contrôle et refactoring:

✔ Eclipse : Spoon, TPTP

✔ Netbeans : Jackpot

✔ Pré requis unique : un code syntaxiquement correct✔ré-utilise l'arbre syntaxique abstrait (AST) fourni par

javacc✔ Fonctionnalités: contrôlent

✔le style et les règles de nommage,✔les erreurs d'encapsulation, ✔les erreurs de programmations, de design,✔les erreurs de gestion et l'utilisation des exceptions, ✔les erreurs de gestion mémoire, ✔les erreurs de synchronisation défectueuses✔et détecte une partie du code mort/inutile

Page 30: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

Exemple de rapport Checkstyle

Page 31: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

Exemple de rapport PMD

Page 32: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

Analyse statique de code source Java

✔ Détecteurs de copié-col lé : 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

Page 33: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

Exemple de rapport JavaNCSS

Page 34: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

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

Page 35: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

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

Page 36: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

Analyse de byte code Java

✔ Métriques de package

✔ Nombres de c lasses concrètes , abstraites , publ iques

✔ Nombres d ' interfaces

✔ Graphe de dépendances de packages :

✔ couplage afférent et efférent

✔ Détect ion de dépendances cyc l iques

✔ Degré d’abstract ion

✔ Degré d ' instabi l i té

✔ Distance normale

Page 37: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

Exemple plugin CAPS

Page 38: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

Tests et couverture de test

✔ Test unitaires

✔ JUnit, testNG, JMockit, DbUnit, Unitils....

✔ Couverture des tests✔ Cobertura, Emma avec ant et maven, ✔Plugins eclipse : EclEmma par exemple

Page 39: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

Comment industrialiser ?

Page 40: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

Build et intégration continue

✔Outils de build systématique, unifié et standardisé

✔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

✔Maven ✔Ant

Page 41: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

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)

Page 42: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

Outils d'agrégation, de synthèse et d'historisation ?

✔Option 1: construisez le vôtre :

✔Rapport html / excel

Page 43: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

Outils d'agrégation, de synthèse et d'historisation ?

✔Exemple de rapport excel

Page 44: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

Sonar

Page 45: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

Démo Sonar

Page 46: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

XRadar

Page 47: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

XRadar✔Caractéristiques techniques

- Moteur à base de transformation XML

- Performant, peu d'exigence matérielle

- Pas de base de données, simple fichiers - Sortie HTML (ou XML)

Oui

Partielle

Q2 2008

- Intégration dans les builds

Page 48: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

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)

Page 49: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

Démo XRadar

Page 50: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

Autres Outils OS

✔Historisation

✔QALab ✔Maven Dashboard

Page 51: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

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.

Page 52: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

Conclusion

Page 53: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

Références : projets et outils OS

✔ Ant : http://ant.apache.org/

✔ Maven 1 :http://maven.apache.org/maven-1.x/

✔ Maven 2 :http://maven.apache.org/

✔ Ivy : http://www.jaya.free.fr/ivy/

✔ Xradar: http://xradar.sourceforge.net/

✔ Sonar: http://sonar.hortis.ch/

✔ PMD : http://pmd.sourceforge.net/

✔ CheckStyle : http://checkstyle.sourceforge.net/

✔ Metrics : http://metrics.sourceforge.net/

✔ FindBugs : http://findbugs.sourceforge.net/✔ JavaNCSS : http://www.kclee.de/clemens/java/javancss/✔ Jdepend : http://clarkware.com/software/JDepend.html✔ Macker : http://innig.net/macker/index.html✔ Ckjm : http://www.spinellis.gr/sw/ckjm/doc/indexw.html✔ Classcycle :http://classycle.sourceforge.net/

✔ ... et encore d'autre sur : http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis

✔ Junit: http://www.junit.org/✔ Unitils: http://www.unitils.org/summary.html✔ Emma :http://emma.sourceforge.net/✔ Cobertura : http://cobertura.sourceforge.net/✔ Dbunit: http://www.dbunit.org/✔ HttpUnit: http://httpunit.sourceforge.net/

Page 54: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

Références : biblio

✔ «Charte de Développement Java/J2EE"» (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

Page 55: Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

Les photos

✔ http://flickr.com/photos/jamesgrayking/2105820477/

✔ http://flickr.com/photos/slimcoincidence/594599028/

✔ http://flickr.com/photos/jeanmi/210374309/

✔ http://flickr.com/photos/tgalli55/173550102/

✔ http://flickr.com/photos/cheesebikini/804099102/

✔ http://flickr.com/photos/jurvetson/101046514/

✔ http://flickr.com/photos/jeremybrooks/1399474069/

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

✔ http://flickr.com/photos/youkeo/185917327/

✔ http://flickr.com/photos/lesloups/1907354379/

✔ http://flickr.com/photos/marysia/514900457/

✔ http://flickr.com/photos/77945684@N00/310887851/

✔ http://flickr.com/photos/invad3r/236233328/

✔ http://flickr.com/photo_zoom.gne?id=1039909856&size=l

✔ http://flickr.com/photo_zoom.gne?id=1402088933&size=o