Your SlideShare is downloading. ×
0
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Solutions Linux2008 Construire Sa Vision Qualite

2,108

Published on

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

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

Published in: Technology, Travel
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,108
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
56
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

×