Solutions Linux2008 Construire Sa Vision Qualite

  • 2,040 views
Uploaded on

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

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

More in: Technology , Travel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,040
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
54
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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
  • 11. La qualité rendra vos clients accro 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
  • 18. Construisez votre réferentiel ✔Communiquer et formaliser vos exigences qualité Salon Solution Linux 2008
  • 19. Zoom sur quelques exemples Salon Solution Linux 2008
  • 20. Règles de nommage : On ne retient que les bons mots Salon Solution Linux 2008
  • 21. Règles de nommage : Salon Solution Linux 2008
  • 22. Règles d'encapsulation ✔Rendre les choses aussi inacessibles que possible Salon Solution Linux 2008
  • 23. Règles d'encapsulation Salon Solution Linux 2008
  • 24. La gestion des exceptions Salon Solution Linux 2008
  • 25. Les exceptions Salon Solution Linux 2008
  • 26. Les exceptions 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
  • 30. Exemple de rapport Checkstyle Salon Solution Linux 2008
  • 31. Exemple de rapport PMD Salon Solution Linux 2008
  • 32. Analyse statique de code source Java ✔ Détecteurs de copié-collé : 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
  • 33. Exemple de rapport JavaNCSS 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
  • 37. Exemple plugin CAPS 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
  • 39. Comment industrialiser ? 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
  • 44. Sonar Salon Solution Linux 2008
  • 45. Démo Sonar Salon Solution Linux 2008
  • 46. XRadar 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
  • 49. Démo XRadar 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
  • 52. Conclusion Salon Solution Linux 2008
  • 53. Références : projets et outils OS ✔ FindBugs : http://findbugs.sourceforge.net/ ✔ JavaNCSS : http://www.kclee.de/clemens/java/javancss/ ✔ Ant : http://ant.apache.org/ ✔ Jdepend : http://clarkware.com/software/JDepend.html ✔ Macker : http://innig.net/macker/index.html ✔ Maven 1 :http://maven.apache.org/maven-1.x/ ✔ Ckjm : http://www.spinellis.gr/sw/ckjm/doc/indexw.html ✔ Maven 2 :http://maven.apache.org/ ✔ Classcycle :http://classycle.sourceforge.net/ ✔ Ivy : http://www.jaya.free.fr/ivy/ ✔ ... et encore d'autre sur : ✔ Xradar: http://xradar.sourceforge.net/ http://en.wikipedia.org/wiki/List_of_tools_for_static_code_ana ✔ Sonar: http://sonar.hortis.ch/ ✔ PMD : http://pmd.sourceforge.net/ ✔ Junit: http://www.junit.org/ ✔ CheckStyle : http://checkstyle.sourceforge.net/ ✔ Unitils: http://www.unitils.org/summary.html ✔ Metrics : http://metrics.sourceforge.net/ ✔ Emma :http://emma.sourceforge.net/ ✔ Cobertura : http://cobertura.sourceforge.net/ ✔ Dbunit: http://www.dbunit.org/ ✔ HttpUnit: http://httpunit.sourceforge.net/ 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
  • 55. Les photos ✔ http://flickr.com/photos/jamesgrayking/2105820477/ ✔ http://flickr.com/photos/youkeo/185917327/ ✔ http://flickr.com/photos/slimcoincidence/594599028/ ✔ http://flickr.com/photos/lesloups/1907354379/ ✔ http://flickr.com/photos/jeanmi/210374309/ ✔ http://flickr.com/photos/marysia/514900457/ ✔ http://flickr.com/photos/tgalli55/173550102/ ✔ http://flickr.com/photos/77945684@N00/310887851/ ✔ http://flickr.com/photos/cheesebikini/804099102/ ✔ http://flickr.com/photos/invad3r/236233328/ ✔ http://flickr.com/photos/jurvetson/101046514/ ✔ http://flickr.com/photo_zoom.gne?id=1039909856&size=l ✔ http://flickr.com/photos/jeremybrooks/1399474069/ ✔ http://flickr.com/photo_zoom.gne?id=1402088933&size=o ✔ 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/ Salon Solution Linux 2008