JDepend - Analyse de la qualité du code Java -

Slides:



Advertisements
Présentations similaires
Présentation LabPlus v3. Solution novatrice en Technologies de l’information Solution novatrice en Technologies de l’information Application pour la Gestion.
Advertisements

Formation ExtJS 1 Vendredi 21 aout 2009 – Villeurbanne – Société IZEO.
RMLL 2008 Isis-FISH/Gesi Benjamin Poussin Code Lutin
Présentation des résultats de la COMPOSANTE 2 Estimation de la valeur économique et sociale des services rendus par les écosystèmes forestiers méditerranéens.
Encadrés par C. Recanati et N. Rolin. 11/01/2016année universitaire: Plan Objectifs du module Evaluation et livrables Premier rapport Réalisation.
Revue N°1 : Projet DECMA BTS IRIS – 903 Étudiant : Florent BONNET.
Développement d'applications Web avec le framework PHP Symfony 2 Mathieu Peltier (Mercator Océan - CNRS) (UMS 831, Observatoire Midi-Pyrénées)
Logiciel Assistant Gestion d’Événement Rémi Papillie (Chef d’équipe) Maxime Brodeur Xavier Pajani Gabriel Rolland David St-Jean.
Chainedit 10èmes Rencontres Mondiales du Logiciel Libre Nantes – 10 juillet 2009 Frédéric Hannouche - CIRM.
1 Créer un extension OpenOffice.org avec Eclipse Créer une extension OpenOffice.org avec Eclipse.
Présentation de projet Open ModelSphere HTML Reports.
Test logiciel J.M. Vanel Sommaire Pourquoi tester? Catégories de tests Stratégies de test Pratique des test Caractéristiques des bons tests Gestions.
Réaliser un CD lecteur de salon (photos ou vidéos) pouvant être lu
ARCHITECTURE RESEAUX.
Reforme du collège physique chimie au cycle 4
Support et Maintenance SIAN : MDEL partenaires
Mener une activité.
PDF Accessibilité et PDF.
Découvrir le monde avec les mathématiques *Se repérer dans l’espace
Présentation de l'association CENABUMIX
Session 1 6 mars 2017 Plateforme ICONICS Justine Guégan
Le Cycle de vie d’un logiciel
Processus d’examen des écoles élémentaires de Clare
Séminaire Novembre 2006 Zephir : Déploiement et supervision des serveurs Eole.
Fedora 26 Quelles nouveautés ? License CC-BY-SA.
Tunis (Tunisie), 3 – 6 Octobre 2017
Envoie et Reception d’sms via les commande AT
Visite guidée - session 2
Javadoc et débogueur Semaine 03 Version A16.
EXERCICE N°1 TRAITE PAR LE GROUPE 3.
Ghania HAMMICHE Mamadou Adama DIALLO
Polymorphisme : règles
Réalisation d'agents de surveillance Zephir
Réaliser un PowerPoint
QoS - Configuration de NBAR (Network-Based Application Recognition)
Programmation en C++ Classes
LES IDE DE CONCEPTION Myriam BAKAYOKO Manon RAJAONARIVELO Jeremy MICHEL André NOEL Guillaume GEBAVI Arthur AGERON Fabien SIMON - G6S2.
Processus « Contrôler les subventions réglementaires» Harmonisation et simplification administrative – 11 mai CSS.
Package R Markdown: Un outil pour générer des pages html avec R Studio
Introduction aux langages formels
Mme Sarah Aouhassi Ingénieur d’Etat en Statistiques
Techniques de diffusion
Prélude ERP 7 Présentation 19/09/2018 © Gérard Baglin,
Développement d’applications interactives
Integrated Business intelligence
Diagrammes UML 420-KE2-LG.
Évaluations par compétences
Programmation Android Première application Android
CRITERES DE QUALITE 1) PRECISION 2) RAPIDITE 3) AMORTISSEMENT
Prélude 7 ERP Présentation 15/11/2018 © Gérard Baglin,
Programmation Android Composantes d’une application
Module 13 : Implémentation de la protection contre les sinistres
Épreuve écrite E4.1 BTS CG Session /02/2017.
Langages de programmation TP11
Serveurs d’applications
Prélude ERP 7 Présentation 09/12/2018 © Gérard Baglin,
Bilan de projet pour [Nom du projet]
20 Données semi-structurées et XML
EPITECH 2009 UML EPITECH 2009
Elles contiennent des informations autre que géométriques
Les différents modes de démarrage de Windows
Analyse et Mise en place de fvpat Webdev Server
Retour sur les interfaces
Les différentes épreuves professionnelles
Modélisation des SI et de la connaissance
Parcours vers l’adoption d’une méthode de prestation DevOps (Opérations de développement) Applications offertes sur le marché et applications de SPC.
RAPPORT DU GROUPE 4 Rapporteur: Jacques DOUKA
Les données structurées et leur traitement
spécialité mathématiques Première
Séquence 1:Analyse du système d’information comptable
Transcription de la présentation:

JDepend - Analyse de la qualité du code Java - Guillon Denis - IR3 Groupe 2 - Exposé Système

Déroulement de l’exposé Programmation et qualité Présentation de JDepend Critères de qualité Installation et mise en œuvre Intégrations diverses Améliorations de la qualité du code Intérêts et limitations 14/01/2019

Programmation et qualité Pourquoi écrire du code de qualité ? La réussite du projet en dépend Le respect de normes de développement permet : d’assurer la pérennité et de la diffusion du projet une maintenance et documentation aisée Mesure de la qualité Lisibilité du code Uniformité des conventions Couplage minimum (modules indépendants) 14/01/2019

Présentation de JDepend Outil développé en Java par Mark Clark Parcourt les répertoires contenant les classes d’un projet Java Calcule des métriques de qualité pour chaque package Sensible à l’extensibilité, la réutilisabilité et la maintenabilité des sources Soumis à la licence « BSD License » 14/01/2019

Critères de qualité - Métriques 1/2 - Nombre de classes et d’interfaces (CC et AC) Critère d’extensibilité des packages Couplage par dépendance ascendante (Ca) Indicateur de mauvaise gestion des dépendances Indicateur d’un package au centre de l’application Couplage par dépendance descendante (Ce) Indicateur d’indépendance du code 14/01/2019

Critères de qualité - Métriques 2/2 - Degré d’abstraction (A) (0<A<1) % de classes concrètes Degré de stabilité (I) ( I = Ce / (Ce + Ca) ) Propriété de stabilité par rapport à la mise à jour d’autres packages Distance normale (D) à la droite A + I = 1 Indicateur de l’équilibre d’un package Volatilité (V) Propension d’un package à évoluer dans le temps Dépendance cyclique 14/01/2019

Distance normale 14/01/2019

Dépendances - Exemples - A = 0, I =1, D = 0 Package dont les autres packages ne doivent pas dépendre A = 0,85, I = 0, D = 0,15 A l’inverse, package réutilisable car très stable 14/01/2019

Installation et mise en œuvre - Installation sous Unix - Téléchargement des sources http://www.clarkware.com/software/JDepend.html jdepend-2.9.zip Décompression de l’archive dans un répertoire Ajout en variable d’environnement : du répertoire : JDEPEND_HOME=~/chemin/jdepend-2.9 chmod -R a+x $JDEPEND_HOME de l’archive jar contenant les classes : export CLASSPATH=$CLASSPATH:$JDEPEND_HOME/lib/jdepend.jar Recompilation cd $JDEPEND_HOME ant jar 14/01/2019

Installation et mise en œuvre - Mise en oeuvre - Interfaces de visualisation des métriques : 1 interface graphique Affichage d’un arbre hiérarchique de chaque package par les dépendances ascendantes et descendantes 2 interfaces en ligne de commande (texte et xml) Affichage dans un fichier des métriques détaillées et des cycles pour chaque package Calculs de métriques pour des packages spécifiques ligne de commande : option -components Configuration du fichier jdepends.properties 14/01/2019

Intégrations diverses Utilisation avec Ant ajout d’une tâche dans le build.xml pour la génération automatique de l’analyse de la qualité du code Utilisation avec JUnit vérification l’existence de dépendances vérification de l’existence de cycles de dépendances vérification de valeurs « acceptables » de métriques 14/01/2019

Amélioration de la qualité du code Objectif : Suppression de dépendances entre classes applicatives et implémentation Méthode : Injection de code pour manipuler des objets indépendamment de leur stockage Les différents types d’injection de code Injection par constructeur Passage d’un objet au constructeur d’une classe Injection par mutateur Passage d’un objet par setter Injection par interface Passage d’un objet suivant une méthode déclarée dans une interface 14/01/2019

Conclusion Un package faiblement couplé, abstrait et stable est de qualité Intérêts Mesure automatique de la qualité du code en terme d’extensibilité, de réutilisabilité et de maintenabilité. Révèle des problèmes d’organisation des classes Outil Open source Limitations Ne fournit pas d’interprétation des métriques Ne collecte pas de métriques sur le code source 14/01/2019

Ressources http://www.clarkware.com/software/JDepend.html http://cyberzoide.developpez.com/java/jdepend/ http://zer0.free.fr/blog/index.php/2005/01/13/21-analyse-de-la-qualite-du-code-source-java 14/01/2019