1. Construire sa vision qualité Java avec
des logiciels libres
Salon Solution Linux 2008
2. 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
3. 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).
✔ quot;la qualité, c'est l'aptitude à l'emploiquot;
✔ quot;la qualité, c'est la conformité aux spécificationsquot;
Salon Solution Linux 2008
4. Hors Sujet
✔Cette présentation n'est pas sur
✔Le modèle CMM
✔Les modèles Qualité ISO :ISO 9000-2000, ISO 9126,
quot;Technologies de l’Information : Qualités des produits logicielsquot;
✔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 quot;conformité aux besoinsquot;
Salon Solution Linux 2008
5. 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
6. 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
7. Pourquoi ?
une obligation professionnelle
Salon Solution Linux 2008
8. 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.quot;
~Tom DeMarco
“Controlling complexity is the essence of computer programming.”
~Brian Kernighan.
“There does not now, nor will there ever exist, a programming language
in which it is the least bit hard to write bad programs.”
~Lawrence Flon
“Programs for sale: fast, reliable, cheap - choose two.”
~Author Unknown
Salon Solution Linux 2008
9. 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
10. Pourquoi ? Votre code : c'est votre
réputation, votre publicité
✔Programmer c'est « publier » (une API)
✔« APIs are for ever »
✔Une API de qualité :
✔ simple
✔addictif !
Une fois adoptée,
on refuse d'en changer !
Salon Solution Linux 2008
12. Pourquoi s'en priver ?
✔En un mot : la qualité c'est bon, mangez-en
Salon Solution Linux 2008
13. 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
14. 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
15. 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
16. Quoi ? Les indicateurs recherchés
✔Usabilité / Lisibilité
✔Maintenabilité
✔Efficacité / Performance
✔Portabilité
✔Fiabilité
✔Testabilité
✔ Ne pas mesurer pour mesurer
Salon Solution Linux 2008
17. Quoi ? Faites votre marché
Salon Solution Linux 2008
27. 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
28. Comment ?
✔« c’est à ses outils qu’on reconnait un bon ouvrier »
Salon Solution Linux 2008
29. Analyse statique de code source Java
✔ Les Contrôleur de code ✔ Pré requis unique : un code syntaxiquement correct
✔ PMD, ✔ ré-utilise l'arbre syntaxique abstrait (AST) fourni par
javacc
✔ CheckStyle (bluecheckstyle, ✔ Fonctionnalités: contrôlent
jjguidelines), ✔ le style et les règles de nommage,
✔ Hammurapi, ✔ les erreurs d'encapsulation,
✔ les erreurs de programmations, de design,
✔ FindBugs, ✔ les erreurs de gestion et l'utilisation des exceptions,
✔ PatternTesting, ✔ les erreurs de gestion mémoire,
✔ les erreurs de synchronisation défectueuses
✔ lint4j, jcsc, ✔ et détecte une partie du code mort/inutile
✔ QJ-Pro
✔ Contrôle et refactoring:
✔ Eclipse : Spoon, TPTP
✔ Netbeans : Jackpot
Salon Solution Linux 2008
34. 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
35. 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
36. Analyse de byte code Java
✔ Métriques de package
✔ Nombres de classes concrètes, abstraites, publiques
✔ Nombres d'interfaces
✔ Graphe de dépendances de packages :
✔ couplage afférent et efférent
✔ Détection de dépendances cycliques
✔ Degré d’abstraction
✔ Degré d'instabilité
✔ Distance normale
Salon Solution Linux 2008
38. Tests et couverture de test
✔ Test unitaires ✔ Couverture des tests
✔ JUnit, testNG, JMockit, DbUnit, ✔ Cobertura, Emma avec ant parmaven,
et
Unitils.... ✔ Plugins eclipse : EclEmma exemple
Salon Solution Linux 2008
40. Build et intégration continue
✔Outils de build systématique, unifié et standardisé
✔Ant ✔Maven
✔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
Salon Solution Linux 2008
41. 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
42. Outils d'agrégation, de synthèse et
d'historisation ?
✔Option 1: construisez le vôtre :
✔Rapport html / excel
Salon Solution Linux 2008
43. Outils d'agrégation, de synthèse et
d'historisation ?
✔Exemple de rapport excel
Salon Solution Linux 2008
47. XRadar
✔Caractéristiques techniques
- Pas de base de données, simple fichiers - Sortie HTML (ou XML)
- Performant, peu d'exigence matérielle
- Intégration dans les builds
Oui
Partielle
- Moteur à base de transformation XML
Q2 2008
Salon Solution Linux 2008
48. 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
50. Autres Outils OS
✔Historisation
✔QALab ✔Maven Dashboard
Salon Solution Linux 2008
51. 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
54. Références : biblio
✔ «Charte de Développement Java/J2EEquot;» (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