Solutions Linux2008 Construire Sa Vision Qualite

Post on 19-May-2015

2.104 views 0 download

description

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

Transcript of Solutions Linux2008 Construire Sa Vision Qualite

Salon Solution Linux 2008

Construire sa vision qualité Java avec des logiciels libres

Salon Solution Linux 2008

Nous

✔François Le Droff : ✔francois.le.droff@gmail.com

✔http://www.droff.com

✔Romain Pelisse ✔belaran@gmail.com✔http://belaran.eu/

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"

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"

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

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)

Salon Solution Linux 2008

Pourquoi ? une obligation professionnelle

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

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 !

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 !

Salon Solution Linux 2008

La qualité rendra vos clients accro

Salon Solution Linux 2008

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

Pourquoi s'en priver ?

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é

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

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

Salon Solution Linux 2008

Quoi ? Les indicateurs recherchés

✔Usabilité / Lisibilité

✔Maintenabilité

✔Efficacité / Performance

✔Portabilité

✔Fiabilité

✔Testabilité ✔ Ne pas mesurer pour mesurer

Salon Solution Linux 2008

Quoi ? Faites votre marché

Salon Solution Linux 2008

Construisez votre réferentiel

✔Communiquer et formaliser vos exigences qualité

Salon Solution Linux 2008

Zoom sur quelques exemples

Salon Solution Linux 2008

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

Salon Solution Linux 2008

Règles de nommage :

Salon Solution Linux 2008

Règles d'encapsulation

✔Rendre les choses aussi inacessibles que possible

Salon Solution Linux 2008

Règles d'encapsulation

Salon Solution Linux 2008

La gestion des exceptions

Salon Solution Linux 2008

Les exceptions

Salon Solution Linux 2008

Les exceptions

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

Salon Solution Linux 2008

Comment ?

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

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

Salon Solution Linux 2008

Exemple de rapport Checkstyle

Salon Solution Linux 2008

Exemple de rapport PMD

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

Salon Solution Linux 2008

Exemple de rapport JavaNCSS

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

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

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

Salon Solution Linux 2008

Exemple plugin CAPS

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

Salon Solution Linux 2008

Comment industrialiser ?

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

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)

Salon Solution Linux 2008

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

✔Option 1: construisez le vôtre :

✔Rapport html / excel

Salon Solution Linux 2008

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

✔Exemple de rapport excel

Salon Solution Linux 2008

Sonar

Salon Solution Linux 2008

Démo Sonar

Salon Solution Linux 2008

XRadar

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

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)

Salon Solution Linux 2008

Démo XRadar

Salon Solution Linux 2008

Autres Outils OS

✔Historisation

✔QALab ✔Maven Dashboard

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.

Salon Solution Linux 2008

Conclusion

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/

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

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