solutions linux2008 construire sa vision qualite

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

Upload: francoisledroff

Post on 19-May-2015

2.104 views

Category:

Technology


0 download

DESCRIPTION

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

TRANSCRIPT

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