Upload
francoisledroff
View
2.104
Download
0
Embed Size (px)
DESCRIPTION
Présentation du Solutions Linux2008 "Construire Sa Vision Qualite"
Citation preview
Salon Solution Linux 2008
Construire sa vision qualité Java avec des logiciels libres
Salon Solution Linux 2008
Nous
✔François Le Droff : ✔[email protected]
✔http://www.droff.com
✔Romain Pelisse ✔[email protected]✔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