SlideShare une entreprise Scribd logo
1  sur  35
Télécharger pour lire hors ligne
Présentation outils de
Qualimétrie Open
Source pour Java
Club Qualimétrie – 25/09/2007
Fabrice Bellingard - Qualixo
L’open source s’outille de lui même pour sa propre qualité
2Outils de Qualimétrie Java Open Source 25/09/2007
Plan
• Les outils de qualimétrie
• Critères d’analyse
• Présentation des outils
– Vérification de règles
– Production de métriques
– Automatisation
– Détection de patterns
• Synthèse
3Outils de Qualimétrie Java Open Source 25/09/2007
Les grandes familles d’outils de qualimétrie
• De la qualité du produit…
– Vérification de règles (aka « Rules Checking »)
• programmation
• Nommage
• Mise en forme
• Documentation
• Respect de l’architecture
– Production de métriques pour l’analyse statique
– Production de métriques pour l’analyse dynamique
– Détection de patterns
• … à la qualité du processus
– Automatisation
– Intégration continue
– Gestion des dépendances
4Outils de Qualimétrie Java Open Source 25/09/2007
Sélection d’outils abordés
• Vérification de règles
– Checkstyle
– PMD
– Macker
• Production de métriques
(statiques)
– Metrics
– JavaNCSS
– CKJM
– JDepend
• Production de métriques
(dynamique)
– JUnit/TestNG
– Cobertura et Emma
• Détection de patterns
– CPD
• Détection de copier-coller
– Clirr
• Analyse de compatibilité
d’API
• Automatisation
– Ant
– Maven
5Outils de Qualimétrie Java Open Source 25/09/2007
Les points à regarder
• Maturité / popularité
• Activité / réactivité de la communauté open-source
• Extensibilité et configurabilité
• Exploitation des données générées
• Couplage avec un IDE / outil de build
– Fort : impossibilité d’en extraire la technologie
– Faible : intégrations possibles existantes
• Dans quels IDEs ?
• Dans quels outils de build ?
• Type de licence
– Dans notre cas, seulement des licences approuvées par
l’OSI
Vérification de règles
Checkstyle
PMD
Macker
7Outils de Qualimétrie Java Open Source 25/09/2007
Checkstyle
• Rules Checking Java
– Outil couvrant un spectre de règle étendu
– Intégrable à de nombreux IDE dont Eclipse
• Avantages
– Spectre de règle relativement large
• Mise en forme
• Nommage
• Documentation
• Programmation
– Connu et reconnu
• Outil très largement employé au delà du monde de l’Open Source
– Communauté très réactive
– Plugin Eclipse très avancé et réactif
– Nombreuses extensions et personnalisations possibles
• Inconvénients
– Création de nouvelles règles requiert un développement Java
– Règles plus génériques que PMD
http://checkstyle.sourceforge.net
LGPL
8Outils de Qualimétrie Java Open Source 25/09/2007
Checkstyle : illustration
9Outils de Qualimétrie Java Open Source 25/09/2007
PMD
• Rules Checking Java/JSP/JSF
– Outil
• Polyvalent
• Dans l’esprit d’un détecteur de mauvaises pratiques
– Intégrable à de nombreux IDE dont Eclipse
• Avantages
– Nombreuses règles mais spectre plus réduit
• Règles souvent plus pointues et plus précises
– Possibilité d’adapter des règles à ses propres règles
– Création de nouvelles règles sans nouveau développement
• XSL / XPATH
• Inconvénients
– Pas de règles de mise en forme
– Règles de nommage limitées
– Nécessité de connaître XPath pour l’écriture de nouvelles règles
• Requête XPath sur l’arbre du code source
– Plugin Eclipse moins avancé
• bien intégré, mais réactivité plus limité
http://pmd.sourceforge.net
BSD
10Outils de Qualimétrie Java Open Source 25/09/2007
PMD : illustration
11Outils de Qualimétrie Java Open Source 25/09/2007
Macker
• Respect Architecture
– Une fois définie, vérifie que l’architecture définie sur un
projet est respecté et que les appels entres classes sont
autorisés
• Avantages
– Outil puissant avec peu d’équivalent
– Configuration relativement aisée
– Automatisable via Ant
• Inconvénients
– Ne descend pas plus bas que le niveau classe
– Fichier de configuration à maintenir à jour en fonction de
l’évolution du projet
– Pas de plugin dans les IDE
http://innig.net/macker/
GPL
12Outils de Qualimétrie Java Open Source 25/09/2007
Macker : illustration
Organisation de l’architecture en couche
Synthèse des signalements obtenus avec si besoin la référence aux méthodes incriminées
Areo
Aerométier
+Simulators+Emulators
Ange
A661
Asterix
Equipments
Remote
Cockpit
Util
Bus
Tools
Tools
Plugins
Swing
E(1)
E(2) E(n)
C(1)
C(2) C(n)
Aero
Sun
Fichier
de
configuration
Depuis Vers NB
Bus 1
plugins 1
emulators 131
plugins 3
remote 3
swing 125
equipments 14
plugins 1
tools 13
remote 78
equipments 27
tools 9
util 42
simulators 48
Bus 3
plugins 14
remote 4
swing 27
swing 26
cockpit 16
remote 10
tools 6
Autre couche 6
util 184
Ange 11
Bus 2
cockpit 2
equipments 8
remote 120
swing 41
Total 488
Appels incorrects
Source
code
Production de
métriques
Statique
Dynamique
14Outils de Qualimétrie Java Open Source 25/09/2007
JavaNCSS
• Calcul de métriques procédurales
– Calcule un set restreint de métriques basées
essentiellement sur la volumétrie
• Avantages
– Répandu et fiabilité éprouvée
– Robuste et tolérant aux erreurs
• Java 1.5 supporté
– Calcul peu de métriques mais les calcule bien
• Existe depuis les premières versions de Java 1997
– Plugins à de nombreux outils
• Inconvénients
– Ne travaille que sur le code source et pas sur le bytecode
– Ouverture prévue au niveau classes et packages, mais
ne prévoit pas de s’ouvrir à plus de métriques
http://www.kclee.de/clemens/java/javancss/
GPL
15Outils de Qualimétrie Java Open Source 25/09/2007
JavaNCSS : illustration
16Outils de Qualimétrie Java Open Source 25/09/2007
CKJM
• Calcul de métriques orientés objets
– Calcule les métriques de Chidamber et Kemerer
• Avantages
– Travaille sur le byte code généré
• Java 1.5 supporté
– Auteur réactif et reconnu dans le milieu de la qualité
• Nombreux ouvrages à son actif
– Solution régulièrement maintenue
– Calcul peu de métriques mais les calcule bien
– Automatisable via Ant
• Inconvénients
– Moins connu que les autres outils
– Communauté plus faible
– Pas de plugins pour les IDE
http://www.spinellis.gr/sw/ckjm/
~BSD
17Outils de Qualimétrie Java Open Source 25/09/2007
CKJM : illustration
18Outils de Qualimétrie Java Open Source 25/09/2007
JDepend
• Calcul des dépendances entre classes et détection
des cycles
– Couplages afférents/efférents, taux d’abstraction et
d’instabilité, distance à la normale
• Extensibilité, réutilisabilité et maintenabilité
• Avantages
– Données facilement exploitables
– Très bonne intégration dans Eclipse
– Automatisable via Ant et Maven
• Inconvénients
– Communauté plus faible
http://clarkware.com/software/JDepend.html
BSD
19Outils de Qualimétrie Java Open Source 25/09/2007
JDepend : illustration
20Outils de Qualimétrie Java Open Source 25/09/2007
Metrics
• Plugin Eclipse permettant de calculer des métriques
– Structurelles
– Orientées Objets
• Avantages
– Excellente intégration à Eclipse
– Donne les moyennes et maximum au niveau projet
– Permet de plonger jusqu’au attributs et méthodes de classes
– Donne une représentation graphique de son analyse des
dépendances
• Inconvénients
– Plugin Eclipse seulement : impossibilité de récupérer les
métriques automatiquement
– Représentation graphique des dépendances pas évidente à
exploiter
http://metrics.sourceforge.net
CPL
21Outils de Qualimétrie Java Open Source 25/09/2007
Metrics : illustration
22Outils de Qualimétrie Java Open Source 25/09/2007
JUnit
• Framework d’écriture de tests unitaires
– Facilite la vérification de la non régression du code
– Standard de facto
• Incontournable du développement en Java
• Copié sur d’autres plateformes (NUnit en .NET)
– TestNG : challenger, créé à la base pour Java 5
• Avantages
– Technologie très répandue et fiabilité éprouvée
– Principe très simple et minimaliste mais très puissant
– Intégration dans tous les IDEs Java
– De multiples extensions existent
• Base de données, couche HTTP, couche Struts, …
• Inconvénients
– L’écriture des tests peut se révéler plus ou moins complexe
• Isolation du code à tester (bouchonnage)
http://junit.org
CPL
23Outils de Qualimétrie Java Open Source 25/09/2007
JUnit & TestNG : illustration
24Outils de Qualimétrie Java Open Source 25/09/2007
Cobertura
• Calcul de la couverture des tests unitaires
– Se greffe sur l’exécution de tests JUnit pour donner le
pourcentage de code effectivement testé
• Permet de vérifier la validité des tests unitaires
• Indispensable
– Autres technologies OSS : Emma, JCoverage
• Avantages
– Utilisation triviale
– Permet de détecter du code potentiellement mort
– Quelques intégrations au niveau des IDEs (Eclipse)
• Inconvénients
– Dérive possible : vouloir un 100% de couverture est une
utopie
http://cobertura.sourceforge.net/
GPL
25Outils de Qualimétrie Java Open Source 25/09/2007
Cobertura : illustration
Détection de patterns
27Outils de Qualimétrie Java Open Source 25/09/2007
CPD
• Détection de copier coller
– Support spécifique pour langages Java/JSP, C/C++
• Possibilité d’ignorer les littérales, les noms de variables, etc.
– Seuil minimum de détection
– Détection générique dans tout fichier au format texte
• Avantages
– Intégration avec Ant
– Très rapide pour des résultats pertinents
• Inconvénients
– Essentiellement une analyse textuelle
– Moins puissant que des outils type Simian
• Encore un peu jeune
– Pas d’intégration dans des IDE
– Requiert des fichiers bien formés pour certains langages
• Ex : fichiers xml-compliant pour les JSP
http://pmd.sourceforge.net
BSD
28Outils de Qualimétrie Java Open Source 25/09/2007
Clirr
• Comparaison de la compatibilité d’API entre 2 versions d’un
JAR
– Recommandé pour le développement de
bibliothèques/frameworks qui exposent des APIs
– Intéressant aussi dans tout développement pour vérifier les
changements de structure interne
• Avantages
– Permet d’assurer :
• Pour les développeurs : une évolution sereine des APIs d’un
composant (voire d’une application)
• Pour les utilisateurs : une connaissance parfaite des changements
d’API lors d’une montée de version d’un composant
– utilisation d’une numérotation adaptée
– Intégré dans les outils de build connus (Ant, Maven)
• Inconvénients
– Ne permet pas de juger de la qualité du code au fil du temps
• Utilisé généralement seulement entre 2 versions n et n-1
http://clirr.sourceforge.net
LGPL
Automatisation
30Outils de Qualimétrie Java Open Source 25/09/2007
Apache Ant
• Automatisation du build et du passage des outils
– Standard Java de facto pour gérer
• Le build
• L’intégration
• Le passage d’outils sur du code source
– Équivalent de l’outil « make » en C/C++
• Copié dans sur d’autres plateformes (NAnt sur .NET)
• Avantages
– Technologie répandue et fiabilité éprouvée
• Très massivement utilisé
– Outil réactif et forte communauté
– S’interface avec la très grande majorité des outils java du
marché
• Inconvénients
– Puissant mais scripts XML parfois verbeux
– Manque de réutilisabilité
– Gestion des dépendances manuelle
• Transitivité et compatibilité des dépendances ( projet Ivy)
http://ant.apache.org/
31Outils de Qualimétrie Java Open Source 25/09/2007
Apache Maven
• Automatisation du build et du passage des outils
– Basé sur la définition d’une carte d’identité du projet
– Moteur d’exécution de plugins mis à disposition via un référentiel
central
• Avantages
– Technologie répandue et fiabilité éprouvée
– Outil réactif et forte communauté
– Plus haut niveau qu’Ant
• Gestion efficace des dépendances
– Forte réutilisabilité et partage des meilleures pratiques
• Inconvénients
– Prise en main plus complexe qu’Ant
• Mais retour sur investissement plus rapide et important
– Moins bonne intégration dans les IDEs
http://maven.apache.org/
32Outils de Qualimétrie Java Open Source 25/09/2007
On aurait pu aborder…
• D’autres outils
– vérification de règles
• Jlint
• FindBugs
– Production de métriques statiques
• MetricsReloaded
– Production de métriques dynamiques
• JMeter, JMeasurement
– Les analyseurs de dépendances
• DependencyFinder
• Classycle
• En marge de la qualimétrie
– L’intégration continue / ordonnancement
• CruiseControl
• Continuum
• Luntbuild
– L’agrégation de résultats
• XRadar : intranet statique à base de feuilles XSL sur les résultats
• QALab : statique sur format propre
33Outils de Qualimétrie Java Open Source 25/09/2007
Récapitulatif
Auto.PatternsMétriquesD.MétriquesS.V.Règles
+ + +
+ + +
=
+ +
+
+
+ +
+ +
+ +
+
+ +
=
-
+ +
+ +
Activité
+ + +
+ + +
- -
+
+ +
+ +
+
+ + +
+ +
-
+
+ +
- -
+ +
+ + +
Popularité
+ + +
+ + +
+
~
+
+
+ +
+ +
+ +
+
+ +
+
+
+ +
+ +
maturité
+ + +
+ + +
+ +
+ +
+ +
+
+
=
+ +
+
Extension
+ + +
+ + +
+
+
+
+
+ +
+ +
=
-
=
+
+ +
+ +
+ +
configuration
+ +
+ + +
=
+
+
+
+ +
+ +
+
+
+
=
+
+ +
+ +
Réactivité
LGPL+JavaNCSS
GPL+ +Cobertura
Apache+ +TestNG
CPL+ +JUnit
LGPL+Clirr
BSD+CPD
CPL+ +Emma
Apache+ +Ant
CPL--Metrics
GPL+Macker
BSD+ +PMD
BSD+ +JDepend
~BSD+CKJM
Apache+Maven
LGPL+ +Checkstyle
LicenceCouplageOutil
34Outils de Qualimétrie Java Open Source 25/09/2007
Conclusion
• Monde riche
– Couvre un large spectre du domaine de la qualité
• Qualité du produit
• Qualité des processus
– Très orienté projets/développeurs
• En maturation
– Manque de suivi
– Efforts redondants
– Manque de concertation/coordination
• Efforts en cours
• Des manques
– Outil d’agrégation de métriques
– Outil de cartographie/valorisation du patrimoine applicatif
35Outils de Qualimétrie Java Open Source 25/09/2007
Merci de votre attention
• Questions
• Commentaires
• Remarques

Contenu connexe

Similaire à 20070925 04 - Panorama des outils Open Source / Qualité des développements

20080923 04 - Selenium web application testing system
20080923 04 - Selenium web application testing system20080923 04 - Selenium web application testing system
20080923 04 - Selenium web application testing systemLeClubQualiteLogicielle
 
0251-formation-java-programmation-objet.pdf
0251-formation-java-programmation-objet.pdf0251-formation-java-programmation-objet.pdf
0251-formation-java-programmation-objet.pdfOmbotimbe Salifou
 
20070320 05 - Squale Portail qualimétrie
20070320 05 - Squale Portail qualimétrie20070320 05 - Squale Portail qualimétrie
20070320 05 - Squale Portail qualimétrieLeClubQualiteLogicielle
 
20070925 05 - Un portail qualimétrie en Open Source
20070925 05 - Un portail qualimétrie en Open Source20070925 05 - Un portail qualimétrie en Open Source
20070925 05 - Un portail qualimétrie en Open SourceLeClubQualiteLogicielle
 
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Normandy JUG
 
Automatisation des tests - objectifs et concepts - partie 2
Automatisation des tests  - objectifs et concepts - partie 2Automatisation des tests  - objectifs et concepts - partie 2
Automatisation des tests - objectifs et concepts - partie 2Christophe Rochefolle
 
20080115 02 - Panorama des outils de recueil de métriques PHP Open Source
20080115 02 - Panorama des outils de recueil de métriques PHP Open Source20080115 02 - Panorama des outils de recueil de métriques PHP Open Source
20080115 02 - Panorama des outils de recueil de métriques PHP Open SourceLeClubQualiteLogicielle
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation MavenArnaud Héritier
 
Une architecture agile et testable
Une architecture agile et testableUne architecture agile et testable
Une architecture agile et testablemartinsson
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement MicrosoftChristophe HERAL
 
Presentation Rex Methodes Agiles
Presentation Rex Methodes AgilesPresentation Rex Methodes Agiles
Presentation Rex Methodes AgilesIppon
 
RefCard Tests sur tous les fronts
RefCard Tests sur tous les frontsRefCard Tests sur tous les fronts
RefCard Tests sur tous les frontsOCTO Technology
 
Performance ug#1
Performance ug#1Performance ug#1
Performance ug#1Marc Bojoly
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logicielsSylvain Leroy
 
Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29Elapse Technologies
 

Similaire à 20070925 04 - Panorama des outils Open Source / Qualité des développements (20)

20080923 04 - Selenium web application testing system
20080923 04 - Selenium web application testing system20080923 04 - Selenium web application testing system
20080923 04 - Selenium web application testing system
 
0251-formation-java-programmation-objet.pdf
0251-formation-java-programmation-objet.pdf0251-formation-java-programmation-objet.pdf
0251-formation-java-programmation-objet.pdf
 
20070320 05 - Squale Portail qualimétrie
20070320 05 - Squale Portail qualimétrie20070320 05 - Squale Portail qualimétrie
20070320 05 - Squale Portail qualimétrie
 
Angular.pdf
Angular.pdfAngular.pdf
Angular.pdf
 
20070925 05 - Un portail qualimétrie en Open Source
20070925 05 - Un portail qualimétrie en Open Source20070925 05 - Un portail qualimétrie en Open Source
20070925 05 - Un portail qualimétrie en Open Source
 
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
 
Automatisation des tests - objectifs et concepts - partie 2
Automatisation des tests  - objectifs et concepts - partie 2Automatisation des tests  - objectifs et concepts - partie 2
Automatisation des tests - objectifs et concepts - partie 2
 
Usine Logicielle 2013
Usine Logicielle 2013Usine Logicielle 2013
Usine Logicielle 2013
 
20080115 02 - Panorama des outils de recueil de métriques PHP Open Source
20080115 02 - Panorama des outils de recueil de métriques PHP Open Source20080115 02 - Panorama des outils de recueil de métriques PHP Open Source
20080115 02 - Panorama des outils de recueil de métriques PHP Open Source
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven
 
Une architecture agile et testable
Une architecture agile et testableUne architecture agile et testable
Une architecture agile et testable
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
 
Rails 3 au Djangocong
Rails 3 au DjangocongRails 3 au Djangocong
Rails 3 au Djangocong
 
Presentation Rex Methodes Agiles
Presentation Rex Methodes AgilesPresentation Rex Methodes Agiles
Presentation Rex Methodes Agiles
 
Normandy JUG integration Continue
Normandy JUG integration ContinueNormandy JUG integration Continue
Normandy JUG integration Continue
 
Hands on Sonar
Hands on SonarHands on Sonar
Hands on Sonar
 
RefCard Tests sur tous les fronts
RefCard Tests sur tous les frontsRefCard Tests sur tous les fronts
RefCard Tests sur tous les fronts
 
Performance ug#1
Performance ug#1Performance ug#1
Performance ug#1
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logiciels
 
Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29
 

Plus de LeClubQualiteLogicielle

20171122 03 - Les tests de performance en environnement DevOps
20171122 03 - Les tests de performance en environnement DevOps20171122 03 - Les tests de performance en environnement DevOps
20171122 03 - Les tests de performance en environnement DevOpsLeClubQualiteLogicielle
 
20171122 04 - Automatisation - formation et certifications
20171122 04 - Automatisation - formation et certifications20171122 04 - Automatisation - formation et certifications
20171122 04 - Automatisation - formation et certificationsLeClubQualiteLogicielle
 
20171122 01 - REX : Intégration et déploiement continu chez Engie
20171122 01 - REX : Intégration et déploiement continu chez Engie20171122 01 - REX : Intégration et déploiement continu chez Engie
20171122 01 - REX : Intégration et déploiement continu chez EngieLeClubQualiteLogicielle
 
20171122 02 - Engage developers to use better coding practices
20171122 02 - Engage developers to use better coding practices20171122 02 - Engage developers to use better coding practices
20171122 02 - Engage developers to use better coding practicesLeClubQualiteLogicielle
 
20171122 - Accueil Club Qualité Logicielle
20171122 - Accueil Club Qualité Logicielle 20171122 - Accueil Club Qualité Logicielle
20171122 - Accueil Club Qualité Logicielle LeClubQualiteLogicielle
 
20151013 - Crédit Mutuel ARKEA : mise en place d'une traçabilité outillée des...
20151013 - Crédit Mutuel ARKEA : mise en place d'une traçabilité outillée des...20151013 - Crédit Mutuel ARKEA : mise en place d'une traçabilité outillée des...
20151013 - Crédit Mutuel ARKEA : mise en place d'une traçabilité outillée des...LeClubQualiteLogicielle
 
20151013 - Agirc arrco : Behavior driven development
20151013 - Agirc arrco : Behavior driven development20151013 - Agirc arrco : Behavior driven development
20151013 - Agirc arrco : Behavior driven developmentLeClubQualiteLogicielle
 
20151013 - Réduire les coûts des tests de performance ?
20151013 - Réduire les coûts des tests de performance ?20151013 - Réduire les coûts des tests de performance ?
20151013 - Réduire les coûts des tests de performance ?LeClubQualiteLogicielle
 
20151013 - Accueil Club Qualité Logicielle
20151013 - Accueil Club Qualité Logicielle 20151013 - Accueil Club Qualité Logicielle
20151013 - Accueil Club Qualité Logicielle LeClubQualiteLogicielle
 
20151013 - DevOps et qualification continue
20151013 - DevOps et qualification continue20151013 - DevOps et qualification continue
20151013 - DevOps et qualification continueLeClubQualiteLogicielle
 
20140410 - Cartographie applicative multi-technologies et analyse d'impact
20140410 - Cartographie applicative multi-technologies et analyse d'impact20140410 - Cartographie applicative multi-technologies et analyse d'impact
20140410 - Cartographie applicative multi-technologies et analyse d'impactLeClubQualiteLogicielle
 
20140410 - Implémentation de squash TM-TA - Architecture et méthodologie
20140410 - Implémentation de squash TM-TA - Architecture et méthodologie20140410 - Implémentation de squash TM-TA - Architecture et méthodologie
20140410 - Implémentation de squash TM-TA - Architecture et méthodologieLeClubQualiteLogicielle
 
20140410 - Gestion des identités, traçabilité des accés - Analogie avec la qu...
20140410 - Gestion des identités, traçabilité des accés - Analogie avec la qu...20140410 - Gestion des identités, traçabilité des accés - Analogie avec la qu...
20140410 - Gestion des identités, traçabilité des accés - Analogie avec la qu...LeClubQualiteLogicielle
 
20140410 - Choisir et implanter un outil de test
20140410 - Choisir et implanter un outil de test20140410 - Choisir et implanter un outil de test
20140410 - Choisir et implanter un outil de testLeClubQualiteLogicielle
 
20130113 02 - TMMI, un modèle pour rentabiliser une organisation de test et a...
20130113 02 - TMMI, un modèle pour rentabiliser une organisation de test et a...20130113 02 - TMMI, un modèle pour rentabiliser une organisation de test et a...
20130113 02 - TMMI, un modèle pour rentabiliser une organisation de test et a...LeClubQualiteLogicielle
 
20130113 06 - Travaux de recherche sur la corrélation entre qualité du code e...
20130113 06 - Travaux de recherche sur la corrélation entre qualité du code e...20130113 06 - Travaux de recherche sur la corrélation entre qualité du code e...
20130113 06 - Travaux de recherche sur la corrélation entre qualité du code e...LeClubQualiteLogicielle
 
20130113 05 - Inspection continue et roadmap 2013
20130113 05 - Inspection continue et roadmap 201320130113 05 - Inspection continue et roadmap 2013
20130113 05 - Inspection continue et roadmap 2013LeClubQualiteLogicielle
 
20130113 04 - Tests d'integration et virtualisation - La vision IBM
20130113 04 - Tests d'integration et virtualisation - La vision IBM20130113 04 - Tests d'integration et virtualisation - La vision IBM
20130113 04 - Tests d'integration et virtualisation - La vision IBMLeClubQualiteLogicielle
 
20130523 06 - The mathematics the way algorithms think / the mathematics the ...
20130523 06 - The mathematics the way algorithms think / the mathematics the ...20130523 06 - The mathematics the way algorithms think / the mathematics the ...
20130523 06 - The mathematics the way algorithms think / the mathematics the ...LeClubQualiteLogicielle
 

Plus de LeClubQualiteLogicielle (20)

20171122 03 - Les tests de performance en environnement DevOps
20171122 03 - Les tests de performance en environnement DevOps20171122 03 - Les tests de performance en environnement DevOps
20171122 03 - Les tests de performance en environnement DevOps
 
20171122 04 - Automatisation - formation et certifications
20171122 04 - Automatisation - formation et certifications20171122 04 - Automatisation - formation et certifications
20171122 04 - Automatisation - formation et certifications
 
20171122 01 - REX : Intégration et déploiement continu chez Engie
20171122 01 - REX : Intégration et déploiement continu chez Engie20171122 01 - REX : Intégration et déploiement continu chez Engie
20171122 01 - REX : Intégration et déploiement continu chez Engie
 
20171122 02 - Engage developers to use better coding practices
20171122 02 - Engage developers to use better coding practices20171122 02 - Engage developers to use better coding practices
20171122 02 - Engage developers to use better coding practices
 
20171122 - Accueil Club Qualité Logicielle
20171122 - Accueil Club Qualité Logicielle 20171122 - Accueil Club Qualité Logicielle
20171122 - Accueil Club Qualité Logicielle
 
20151013 - Crédit Mutuel ARKEA : mise en place d'une traçabilité outillée des...
20151013 - Crédit Mutuel ARKEA : mise en place d'une traçabilité outillée des...20151013 - Crédit Mutuel ARKEA : mise en place d'une traçabilité outillée des...
20151013 - Crédit Mutuel ARKEA : mise en place d'une traçabilité outillée des...
 
20151013 - Agirc arrco : Behavior driven development
20151013 - Agirc arrco : Behavior driven development20151013 - Agirc arrco : Behavior driven development
20151013 - Agirc arrco : Behavior driven development
 
20151013 - Réduire les coûts des tests de performance ?
20151013 - Réduire les coûts des tests de performance ?20151013 - Réduire les coûts des tests de performance ?
20151013 - Réduire les coûts des tests de performance ?
 
20151013 - Accueil Club Qualité Logicielle
20151013 - Accueil Club Qualité Logicielle 20151013 - Accueil Club Qualité Logicielle
20151013 - Accueil Club Qualité Logicielle
 
20151013 - DevOps et qualification continue
20151013 - DevOps et qualification continue20151013 - DevOps et qualification continue
20151013 - DevOps et qualification continue
 
20140410 - Cartographie applicative multi-technologies et analyse d'impact
20140410 - Cartographie applicative multi-technologies et analyse d'impact20140410 - Cartographie applicative multi-technologies et analyse d'impact
20140410 - Cartographie applicative multi-technologies et analyse d'impact
 
20140410 - Implémentation de squash TM-TA - Architecture et méthodologie
20140410 - Implémentation de squash TM-TA - Architecture et méthodologie20140410 - Implémentation de squash TM-TA - Architecture et méthodologie
20140410 - Implémentation de squash TM-TA - Architecture et méthodologie
 
20140410 - Gestion des identités, traçabilité des accés - Analogie avec la qu...
20140410 - Gestion des identités, traçabilité des accés - Analogie avec la qu...20140410 - Gestion des identités, traçabilité des accés - Analogie avec la qu...
20140410 - Gestion des identités, traçabilité des accés - Analogie avec la qu...
 
20140410 - Choisir et implanter un outil de test
20140410 - Choisir et implanter un outil de test20140410 - Choisir et implanter un outil de test
20140410 - Choisir et implanter un outil de test
 
20130113 02 - TMMI, un modèle pour rentabiliser une organisation de test et a...
20130113 02 - TMMI, un modèle pour rentabiliser une organisation de test et a...20130113 02 - TMMI, un modèle pour rentabiliser une organisation de test et a...
20130113 02 - TMMI, un modèle pour rentabiliser une organisation de test et a...
 
20130113 06 - Travaux de recherche sur la corrélation entre qualité du code e...
20130113 06 - Travaux de recherche sur la corrélation entre qualité du code e...20130113 06 - Travaux de recherche sur la corrélation entre qualité du code e...
20130113 06 - Travaux de recherche sur la corrélation entre qualité du code e...
 
20130113 05 - Inspection continue et roadmap 2013
20130113 05 - Inspection continue et roadmap 201320130113 05 - Inspection continue et roadmap 2013
20130113 05 - Inspection continue et roadmap 2013
 
20130113 04 - Tests d'integration et virtualisation - La vision IBM
20130113 04 - Tests d'integration et virtualisation - La vision IBM20130113 04 - Tests d'integration et virtualisation - La vision IBM
20130113 04 - Tests d'integration et virtualisation - La vision IBM
 
20130523 06 - The mathematics the way algorithms think / the mathematics the ...
20130523 06 - The mathematics the way algorithms think / the mathematics the ...20130523 06 - The mathematics the way algorithms think / the mathematics the ...
20130523 06 - The mathematics the way algorithms think / the mathematics the ...
 
20130523 05 - Cyclomatic complexity
20130523 05 - Cyclomatic complexity20130523 05 - Cyclomatic complexity
20130523 05 - Cyclomatic complexity
 

20070925 04 - Panorama des outils Open Source / Qualité des développements

  • 1. Présentation outils de Qualimétrie Open Source pour Java Club Qualimétrie – 25/09/2007 Fabrice Bellingard - Qualixo L’open source s’outille de lui même pour sa propre qualité
  • 2. 2Outils de Qualimétrie Java Open Source 25/09/2007 Plan • Les outils de qualimétrie • Critères d’analyse • Présentation des outils – Vérification de règles – Production de métriques – Automatisation – Détection de patterns • Synthèse
  • 3. 3Outils de Qualimétrie Java Open Source 25/09/2007 Les grandes familles d’outils de qualimétrie • De la qualité du produit… – Vérification de règles (aka « Rules Checking ») • programmation • Nommage • Mise en forme • Documentation • Respect de l’architecture – Production de métriques pour l’analyse statique – Production de métriques pour l’analyse dynamique – Détection de patterns • … à la qualité du processus – Automatisation – Intégration continue – Gestion des dépendances
  • 4. 4Outils de Qualimétrie Java Open Source 25/09/2007 Sélection d’outils abordés • Vérification de règles – Checkstyle – PMD – Macker • Production de métriques (statiques) – Metrics – JavaNCSS – CKJM – JDepend • Production de métriques (dynamique) – JUnit/TestNG – Cobertura et Emma • Détection de patterns – CPD • Détection de copier-coller – Clirr • Analyse de compatibilité d’API • Automatisation – Ant – Maven
  • 5. 5Outils de Qualimétrie Java Open Source 25/09/2007 Les points à regarder • Maturité / popularité • Activité / réactivité de la communauté open-source • Extensibilité et configurabilité • Exploitation des données générées • Couplage avec un IDE / outil de build – Fort : impossibilité d’en extraire la technologie – Faible : intégrations possibles existantes • Dans quels IDEs ? • Dans quels outils de build ? • Type de licence – Dans notre cas, seulement des licences approuvées par l’OSI
  • 7. 7Outils de Qualimétrie Java Open Source 25/09/2007 Checkstyle • Rules Checking Java – Outil couvrant un spectre de règle étendu – Intégrable à de nombreux IDE dont Eclipse • Avantages – Spectre de règle relativement large • Mise en forme • Nommage • Documentation • Programmation – Connu et reconnu • Outil très largement employé au delà du monde de l’Open Source – Communauté très réactive – Plugin Eclipse très avancé et réactif – Nombreuses extensions et personnalisations possibles • Inconvénients – Création de nouvelles règles requiert un développement Java – Règles plus génériques que PMD http://checkstyle.sourceforge.net LGPL
  • 8. 8Outils de Qualimétrie Java Open Source 25/09/2007 Checkstyle : illustration
  • 9. 9Outils de Qualimétrie Java Open Source 25/09/2007 PMD • Rules Checking Java/JSP/JSF – Outil • Polyvalent • Dans l’esprit d’un détecteur de mauvaises pratiques – Intégrable à de nombreux IDE dont Eclipse • Avantages – Nombreuses règles mais spectre plus réduit • Règles souvent plus pointues et plus précises – Possibilité d’adapter des règles à ses propres règles – Création de nouvelles règles sans nouveau développement • XSL / XPATH • Inconvénients – Pas de règles de mise en forme – Règles de nommage limitées – Nécessité de connaître XPath pour l’écriture de nouvelles règles • Requête XPath sur l’arbre du code source – Plugin Eclipse moins avancé • bien intégré, mais réactivité plus limité http://pmd.sourceforge.net BSD
  • 10. 10Outils de Qualimétrie Java Open Source 25/09/2007 PMD : illustration
  • 11. 11Outils de Qualimétrie Java Open Source 25/09/2007 Macker • Respect Architecture – Une fois définie, vérifie que l’architecture définie sur un projet est respecté et que les appels entres classes sont autorisés • Avantages – Outil puissant avec peu d’équivalent – Configuration relativement aisée – Automatisable via Ant • Inconvénients – Ne descend pas plus bas que le niveau classe – Fichier de configuration à maintenir à jour en fonction de l’évolution du projet – Pas de plugin dans les IDE http://innig.net/macker/ GPL
  • 12. 12Outils de Qualimétrie Java Open Source 25/09/2007 Macker : illustration Organisation de l’architecture en couche Synthèse des signalements obtenus avec si besoin la référence aux méthodes incriminées Areo Aerométier +Simulators+Emulators Ange A661 Asterix Equipments Remote Cockpit Util Bus Tools Tools Plugins Swing E(1) E(2) E(n) C(1) C(2) C(n) Aero Sun Fichier de configuration Depuis Vers NB Bus 1 plugins 1 emulators 131 plugins 3 remote 3 swing 125 equipments 14 plugins 1 tools 13 remote 78 equipments 27 tools 9 util 42 simulators 48 Bus 3 plugins 14 remote 4 swing 27 swing 26 cockpit 16 remote 10 tools 6 Autre couche 6 util 184 Ange 11 Bus 2 cockpit 2 equipments 8 remote 120 swing 41 Total 488 Appels incorrects Source code
  • 14. 14Outils de Qualimétrie Java Open Source 25/09/2007 JavaNCSS • Calcul de métriques procédurales – Calcule un set restreint de métriques basées essentiellement sur la volumétrie • Avantages – Répandu et fiabilité éprouvée – Robuste et tolérant aux erreurs • Java 1.5 supporté – Calcul peu de métriques mais les calcule bien • Existe depuis les premières versions de Java 1997 – Plugins à de nombreux outils • Inconvénients – Ne travaille que sur le code source et pas sur le bytecode – Ouverture prévue au niveau classes et packages, mais ne prévoit pas de s’ouvrir à plus de métriques http://www.kclee.de/clemens/java/javancss/ GPL
  • 15. 15Outils de Qualimétrie Java Open Source 25/09/2007 JavaNCSS : illustration
  • 16. 16Outils de Qualimétrie Java Open Source 25/09/2007 CKJM • Calcul de métriques orientés objets – Calcule les métriques de Chidamber et Kemerer • Avantages – Travaille sur le byte code généré • Java 1.5 supporté – Auteur réactif et reconnu dans le milieu de la qualité • Nombreux ouvrages à son actif – Solution régulièrement maintenue – Calcul peu de métriques mais les calcule bien – Automatisable via Ant • Inconvénients – Moins connu que les autres outils – Communauté plus faible – Pas de plugins pour les IDE http://www.spinellis.gr/sw/ckjm/ ~BSD
  • 17. 17Outils de Qualimétrie Java Open Source 25/09/2007 CKJM : illustration
  • 18. 18Outils de Qualimétrie Java Open Source 25/09/2007 JDepend • Calcul des dépendances entre classes et détection des cycles – Couplages afférents/efférents, taux d’abstraction et d’instabilité, distance à la normale • Extensibilité, réutilisabilité et maintenabilité • Avantages – Données facilement exploitables – Très bonne intégration dans Eclipse – Automatisable via Ant et Maven • Inconvénients – Communauté plus faible http://clarkware.com/software/JDepend.html BSD
  • 19. 19Outils de Qualimétrie Java Open Source 25/09/2007 JDepend : illustration
  • 20. 20Outils de Qualimétrie Java Open Source 25/09/2007 Metrics • Plugin Eclipse permettant de calculer des métriques – Structurelles – Orientées Objets • Avantages – Excellente intégration à Eclipse – Donne les moyennes et maximum au niveau projet – Permet de plonger jusqu’au attributs et méthodes de classes – Donne une représentation graphique de son analyse des dépendances • Inconvénients – Plugin Eclipse seulement : impossibilité de récupérer les métriques automatiquement – Représentation graphique des dépendances pas évidente à exploiter http://metrics.sourceforge.net CPL
  • 21. 21Outils de Qualimétrie Java Open Source 25/09/2007 Metrics : illustration
  • 22. 22Outils de Qualimétrie Java Open Source 25/09/2007 JUnit • Framework d’écriture de tests unitaires – Facilite la vérification de la non régression du code – Standard de facto • Incontournable du développement en Java • Copié sur d’autres plateformes (NUnit en .NET) – TestNG : challenger, créé à la base pour Java 5 • Avantages – Technologie très répandue et fiabilité éprouvée – Principe très simple et minimaliste mais très puissant – Intégration dans tous les IDEs Java – De multiples extensions existent • Base de données, couche HTTP, couche Struts, … • Inconvénients – L’écriture des tests peut se révéler plus ou moins complexe • Isolation du code à tester (bouchonnage) http://junit.org CPL
  • 23. 23Outils de Qualimétrie Java Open Source 25/09/2007 JUnit & TestNG : illustration
  • 24. 24Outils de Qualimétrie Java Open Source 25/09/2007 Cobertura • Calcul de la couverture des tests unitaires – Se greffe sur l’exécution de tests JUnit pour donner le pourcentage de code effectivement testé • Permet de vérifier la validité des tests unitaires • Indispensable – Autres technologies OSS : Emma, JCoverage • Avantages – Utilisation triviale – Permet de détecter du code potentiellement mort – Quelques intégrations au niveau des IDEs (Eclipse) • Inconvénients – Dérive possible : vouloir un 100% de couverture est une utopie http://cobertura.sourceforge.net/ GPL
  • 25. 25Outils de Qualimétrie Java Open Source 25/09/2007 Cobertura : illustration
  • 27. 27Outils de Qualimétrie Java Open Source 25/09/2007 CPD • Détection de copier coller – Support spécifique pour langages Java/JSP, C/C++ • Possibilité d’ignorer les littérales, les noms de variables, etc. – Seuil minimum de détection – Détection générique dans tout fichier au format texte • Avantages – Intégration avec Ant – Très rapide pour des résultats pertinents • Inconvénients – Essentiellement une analyse textuelle – Moins puissant que des outils type Simian • Encore un peu jeune – Pas d’intégration dans des IDE – Requiert des fichiers bien formés pour certains langages • Ex : fichiers xml-compliant pour les JSP http://pmd.sourceforge.net BSD
  • 28. 28Outils de Qualimétrie Java Open Source 25/09/2007 Clirr • Comparaison de la compatibilité d’API entre 2 versions d’un JAR – Recommandé pour le développement de bibliothèques/frameworks qui exposent des APIs – Intéressant aussi dans tout développement pour vérifier les changements de structure interne • Avantages – Permet d’assurer : • Pour les développeurs : une évolution sereine des APIs d’un composant (voire d’une application) • Pour les utilisateurs : une connaissance parfaite des changements d’API lors d’une montée de version d’un composant – utilisation d’une numérotation adaptée – Intégré dans les outils de build connus (Ant, Maven) • Inconvénients – Ne permet pas de juger de la qualité du code au fil du temps • Utilisé généralement seulement entre 2 versions n et n-1 http://clirr.sourceforge.net LGPL
  • 30. 30Outils de Qualimétrie Java Open Source 25/09/2007 Apache Ant • Automatisation du build et du passage des outils – Standard Java de facto pour gérer • Le build • L’intégration • Le passage d’outils sur du code source – Équivalent de l’outil « make » en C/C++ • Copié dans sur d’autres plateformes (NAnt sur .NET) • Avantages – Technologie répandue et fiabilité éprouvée • Très massivement utilisé – Outil réactif et forte communauté – S’interface avec la très grande majorité des outils java du marché • Inconvénients – Puissant mais scripts XML parfois verbeux – Manque de réutilisabilité – Gestion des dépendances manuelle • Transitivité et compatibilité des dépendances ( projet Ivy) http://ant.apache.org/
  • 31. 31Outils de Qualimétrie Java Open Source 25/09/2007 Apache Maven • Automatisation du build et du passage des outils – Basé sur la définition d’une carte d’identité du projet – Moteur d’exécution de plugins mis à disposition via un référentiel central • Avantages – Technologie répandue et fiabilité éprouvée – Outil réactif et forte communauté – Plus haut niveau qu’Ant • Gestion efficace des dépendances – Forte réutilisabilité et partage des meilleures pratiques • Inconvénients – Prise en main plus complexe qu’Ant • Mais retour sur investissement plus rapide et important – Moins bonne intégration dans les IDEs http://maven.apache.org/
  • 32. 32Outils de Qualimétrie Java Open Source 25/09/2007 On aurait pu aborder… • D’autres outils – vérification de règles • Jlint • FindBugs – Production de métriques statiques • MetricsReloaded – Production de métriques dynamiques • JMeter, JMeasurement – Les analyseurs de dépendances • DependencyFinder • Classycle • En marge de la qualimétrie – L’intégration continue / ordonnancement • CruiseControl • Continuum • Luntbuild – L’agrégation de résultats • XRadar : intranet statique à base de feuilles XSL sur les résultats • QALab : statique sur format propre
  • 33. 33Outils de Qualimétrie Java Open Source 25/09/2007 Récapitulatif Auto.PatternsMétriquesD.MétriquesS.V.Règles + + + + + + = + + + + + + + + + + + + + = - + + + + Activité + + + + + + - - + + + + + + + + + + + - + + + - - + + + + + Popularité + + + + + + + ~ + + + + + + + + + + + + + + + + + maturité + + + + + + + + + + + + + + = + + + Extension + + + + + + + + + + + + + + = - = + + + + + + + configuration + + + + + = + + + + + + + + + + = + + + + + Réactivité LGPL+JavaNCSS GPL+ +Cobertura Apache+ +TestNG CPL+ +JUnit LGPL+Clirr BSD+CPD CPL+ +Emma Apache+ +Ant CPL--Metrics GPL+Macker BSD+ +PMD BSD+ +JDepend ~BSD+CKJM Apache+Maven LGPL+ +Checkstyle LicenceCouplageOutil
  • 34. 34Outils de Qualimétrie Java Open Source 25/09/2007 Conclusion • Monde riche – Couvre un large spectre du domaine de la qualité • Qualité du produit • Qualité des processus – Très orienté projets/développeurs • En maturation – Manque de suivi – Efforts redondants – Manque de concertation/coordination • Efforts en cours • Des manques – Outil d’agrégation de métriques – Outil de cartographie/valorisation du patrimoine applicatif
  • 35. 35Outils de Qualimétrie Java Open Source 25/09/2007 Merci de votre attention • Questions • Commentaires • Remarques