Concepts de base
Transcription
Concepts de base
Houari Sahraoui, DIRO, Université de Montréal École d’Hiver sur les applications de l’informatique industrielle, réseaux et génie logiciel Université d'Oran, 09 au 12 décembre 2013 Mesure du logiciel Houari Sahraoui Houari Sahraoui, DIRO, Université de Montréal 2 Concepts de base • Définitions – Mesure : processus qui consiste à affecter des nombres et des symboles aux attributs des objets du monde réel pour les décrire selon des règles clairement définies – Une entité : un objet (par exemple personne, salle) ou un événement (par exemple, voyage, phase de test) dans le monde réel – Un attribut : une propriété d'une entité (par exemple la couleur de la salle, le coût du voyage, le temps de test écoulé). 1 Houari Sahraoui, DIRO, Université de Montréal 3 Concepts de base • La mesure doit être valide pour être utilisée dans une étude empirique • Un même attribut peut être mesuré de différentes façons • Chaque façon définit une échelle • La transformation d’une échelle à une autre doit préserver les relations entre les objets • Chaque postulat sur une mesure doit avoir du sens Houari Sahraoui, DIRO, Université de Montréal 4 Types d’échelles • Il existe 5 types d’échelles 1. 2. 3. 4. 5. • • Nominale Ordinale Intervalle Ratio Absolue Classification (1 à 4) proposée par Stevens en 1946 Chaque type d’échelles autorise certains types de transformations 2 Houari Sahraoui, DIRO, Université de Montréal 5 Échelle nominale • La plus basse dans les niveaux de mesure • Elle consiste en une classification simple • Exemples – – – – – Sexes : mâle (1) femelle (2) Couleurs : rouge, vert, … Religions Processus de développement Langage de programmation • Aucun ordre entre les classes même si ce sont des nombres Houari Sahraoui, DIRO, Université de Montréal 6 Échelle nominale • Propriétés – Les classes doivent être conjointement exhaustives • Pour le langage de programmation, par exemple, utiliser une classe « autre » pour être exhaustif – Les classes doivent être mutuellement exclusives • Une personne ne peut pas être en même temps catholique et protestante 3 Houari Sahraoui, DIRO, Université de Montréal 7 Échelle ordinale • Permet de rajouter la notion d’ordre à l’échelle nominale • La notion d’ordre peut être établie aussi bien entre les nombres que les symboles • Exemples – Classes sociales – Tailles (petit, moyen, grand) – Niveaux CMM Houari Sahraoui, DIRO, Université de Montréal 8 Échelle ordinale • Propriétés – Transitivité • Considérant la relation > qui définit un ordre entre les entités, si P1 > P2 et P2 > P3 alors P1 > P3 • Exemple CMM : une organisation au niveau défini est plus mature qu’une organisation au niveau initial – Complétude • Pour deux entités distinctes P1 et P2, il faut toujours avoir soit P1 > P2, soit P2 > P1 4 Houari Sahraoui, DIRO, Université de Montréal 9 Échelle intervalle • Permet d’ajouter la notion de distance relative entre deux classes de mesures • Pour deux valeurs successives quelconques vi et vj, vj-vi = d • Exemple – Température en Celsius ou en Fahrenheit – Date de survenu d’une faute Houari Sahraoui, DIRO, Université de Montréal 10 Échelle ratio • Ajoute la notion de zéro absolu à l’échelle intervalle • Zéro absolu = absence de l’attribut mesuré • Exemples – Température en Kelvin – Temps entre 2 fautes 5 Houari Sahraoui, DIRO, Université de Montréal 11 Échelle absolue • L’attribut ne peut être mesuré que d’une seule façon • Consiste généralement à compter • Exemple – Nombre de voitures dans le stationnement – Nombre d’erreurs trouvées lors du test d’intégration Houari Sahraoui, DIRO, Université de Montréal Transformations, significations et statistiques 12 • Transformations – Soit x une entité et M(x) une mesure sur x – Chaque type d’échelle autorise un certain type de transformations t sur M : t(M(x)) – Échelle nominale • Uniquement les transformations un vers un • Exemple – Java → 1, C++ → 2, C# → 3 6 Houari Sahraoui, DIRO, Université de Montréal Transformations, significations et statistiques 13 • Transformations – Échelle ordinale • Toute transformation qui préserve l’ordre (toute fonction monotone croissante) • Exemple : transformation de labels dans une échelle de Likert (1 → très satisfait, etc.) – Échelle intervalle • Toute transformation de la forme t(M(x)) = a × M(x) + b, a>0 • Exemple : conversion Celsius Fahrenheit F = 9/5 C + 32 Houari Sahraoui, DIRO, Université de Montréal Transformations, significations et statistiques 14 • Transformations – Échelle ratio • Toute transformation de la forme t(M(x)) = a × M(x), a>0 • Exemple : Conversion de monnaie CAD = 0.6 EUR – Échelle absolue • Uniquement la transformation « identité » t(M(x)) = M(x) 7 Houari Sahraoui, DIRO, Université de Montréal Transformations, significations et statistiques 15 • Transformations Types d’échelle Transformations Exemples Nominale Fonctions un à un Sexe, religion Ordinale Fonctions monotones croissantes Échelle de Likert Intervalle f(x) = a x + b, a > 0 Degré Celcius Ratio f(x) = a x, Absolue f(x) = x a>0 (identité) Degré Kelvin Nombre de… Houari Sahraoui, DIRO, Université de Montréal Transformations, significations et statistiques 16 • Signification – Le type d’échelle d’une mesure détermine quelles sont les opérations possibles sur les données – Par exemple, les analyses statistiques utilisent les opérateurs arithmétiques (+, –, ÷, ×) – Ces opérations ne sont pas permises sur des données de type échelles nominale et ordinale, les analyses statistiques qui les utilisent ne sont donc pas significatives 8 Houari Sahraoui, DIRO, Université de Montréal Transformations, significations et statistiques 17 • Signification – Exemple : la moyenne • Lors des tests d’acceptabilité, à la question « Êtesvous satisfait de la qualité de l’interface? », 5 utilisateurs ont répondu suivant une échelle de Likert à 5 choix de réponses : 3 , 5, 3, 4, 3 • Est-ce que la moyenne est significative comme mesure globale de la satisfaction du groupe ? 3+5+3+4+3 = 3,6 5 • Sinon, quelles seraient les alternatives ? Houari Sahraoui, DIRO, Université de Montréal Transformations, significations et statistiques 18 • Signification – Exemple : la moyenne (suite) • La médiane (= 3) peut être utilisée dans ce cas • La médiane ne peut pas être utilisée dans le cas d’une échelle nominale, pourquoi ? • Le mode (= 3) peut être utilisé dans le cas d’une échelle nominale 9 Houari Sahraoui, DIRO, Université de Montréal Transformations, significations et statistiques 19 • Signification – Exemple : la moyenne (suite) • Le nombre de fautes a augmenté de 10% la première année, de 15% la seconde et de 5% la troisième • Quelle est la moyenne de l’augmentation ? – Moyenne arithmétique ? (10% + 15% + 5%) / 3 = 10% – Moyenne géométrique ? (10%*15%*5%)1/3 = 9,08% Houari Sahraoui, DIRO, Université de Montréal Transformations, significations et statistiques 20 • Signification Type d’échelle Moyenne Écart Nominale Mode Fréquence Ordinale Médiane Percentile Intervalle Moyenne arithmétique Écart type Ratio Moyenne géométrique Déviation géométrique Absolue Tout Tout 10 Houari Sahraoui, DIRO, Université de Montréal Transformations, significations et statistiques 21 • Autres exemples de signification – Ali est deux fois plus grand que Yanis – Significatif ? • Autres exemples de signification – Il a fait deux fois plus chaud le 22 juin dernier à 10h à Alger qu’à Oran – Significatif ? • Autres exemples de signification – La différence de température entre Alger et Oran a été 2 fois plus élevée le 22 juin que le 23 juin – Significatif ? Houari Sahraoui, DIRO, Université de Montréal Mesures objectives vs subjectives 22 • Mesure objective – Dépend uniquement de l’objet mesuré – Aucun jugement n’est requis – Mesures répétées sur le même objet donnent toujours la même valeur – Ex: LOC • Mesure subjective – La personne qui mesure contribue à travers un jugement – Le résultat dépend de l’objet et de la personne – Résultats potentiellement différents pour des mesures répétées – Souvent de type nominal ou ordinal 11 Houari Sahraoui, DIRO, Université de Montréal 23 Mesures directes et indirectes • Directe vs indirecte – Mesure directe d’un attribut : ne doit pas impliquer d’autres attributs ou entités, elle doit être une évaluation de quelque chose qui existe – Mesure indirecte : permet le calcul qui implique d’autres attributs ou entités en utilisant le modèle mathématique associé – Système de prédiction : permet, en utilisant un modèle mathématique avec des procédures de prédiction, de déterminer des paramètres inconnus et d’analyser les résultats Houari Sahraoui, DIRO, Université de Montréal 24 Mesures directes et indirectes • Cas des attributs non mesurables directement – L’attribut est décomposé en sous-attributs directement mesurables – Cas de la qualité d’une conception : elle peut être représentée par le couple (couplage, cohésion) – Il est préférable d’avoir un faible couplage et une forte cohésion • Pour une classe A, j’ai deux conceptions possibles, l’une donne le couple (10, 0.3), l’autre le couple (12, 0.4), laquelle choisir ? – Problème de prise de décision multicritères 12 Houari Sahraoui, DIRO, Université de Montréal 25 Mesure du logiciel • Les processus – Ce sont des séries d'activités reliées au développement du logiciel • Les produits – Ce sont tous les objets produits, livrables ou documents qui résultent d'une activité d’un processus • Les ressources – Ce sont des entités exigées par une activité d’un processus Houari Sahraoui, DIRO, Université de Montréal 26 Mesure du logiciel • Chaque entité des trois classes « produit », « processus » et « ressource » possède – Des attributs internes : attributs mesurables sur l’entité indépendamment de son environnement – Des attributs externes : attributs mesurables par rapport aux liens avec son environnement 13 Houari Sahraoui, DIRO, Université de Montréal 27 Mesure du logiciel • Exemples Catégorie Exemple d’objet Type d’attribut Exemple de mesure Produit Code Interne Taille Externe Fiabilité Processus Phase de test Interne Durée Externe Coût Interne Age Externe Productivité Ressource Personnel Houari Sahraoui, DIRO, Université de Montréal 28 Mesure du logiciel • De nombreux travaux montrent que les attributs internes du produit logiciel ont un impact sur ses attributs externes – Une bonne structure interne donne une bonne qualité du produit – Agir sur la structure interne permet de contrôler la qualité du produit • Les attributs internes peuvent être mesurés très tôt dans le cycle de développement – Grâce à la prédiction, des actions correctives peuvent être entreprises, réduisant ainsi les coûts de maintenance 14 Houari Sahraoui, DIRO, Université de Montréal 29 Attributs internes Produit Attributs internes (exemples) Spécification Taille, réutilisation, modularité, fonctionnalité, redondance, … Conception Taille, réutilisation, modularité, couplage, cohésion, fonctionnalité, … Code Taille, réutilisation, modularité, couplage, cohésion, fonctionnalité, complexité algorithmique, structuration du flot de contrôle, … Données de test Taille, couverture, … Houari Sahraoui, DIRO, Université de Montréal 30 Taille • Historiquement, un des premiers aspects mesurés du logiciel • Similaire à l’attribut taille d’un humain (attributs grandeur, poids) • Par analogie, les attributs importants de la taille sont – Taille physique – Fonctionnalité – Complexité 15 Houari Sahraoui, DIRO, Université de Montréal 31 Taille : taille physique • C’est la taille physique d’un produit • Elle peut être mesurée aussi bien au niveau du code qu’au niveau de la spécification ou de la conception • Code – La mesure la plus utilisée est le Nombre de Lignes de Code – Mesure ambiguë : différentes façons de la mesurer • Inclusion ou non des commentaires et des déclarations • Comment compter si une ligne qui contient plusieurs instructions Houari Sahraoui, DIRO, Université de Montréal 32 Taille : taille physique • Code (suite) – La définition la plus répondue est « Est considérée comme ligne de code toute ligne qui n’est pas un commentaire ni une ligne vide. Le nombre d’instructions ou de parties d’instructions n’est pas important » Ceci inclut les en-têtes de programmes, les déclarations et les instructions (exécutables et non exécutables) – Cette mesure est désignée par NCLOC (NonComment Lines Of Code) 16 Houari Sahraoui, DIRO, Université de Montréal 33 Taille : taille physique • Code (suite) – Le nombre de commentaires peut être mesuré par le nombre de lignes de commentaires (CLOC) – La taille physique totale est donc LOC = NCLOC + CLOC – On peut ainsi mesurer la densité de commentaires par CLOC/LOC – LOC peut être plus pratique à utiliser que NCLOC • Elle est plus facile à extraire • Elle renseigne sur le nombre de pages pour imprimer le programme, l’espace nécessaire pour le stockage et la gestion de la visualisation à l’écran Houari Sahraoui, DIRO, Université de Montréal 34 Taille : taille physique • Code (autres mesures) – Le nombre d’octets nécessaires au stockage du programme • Mesure indépendante du type de langage • Facile à extraire – Le nombre de caractères CHAR est une autre mesure de la taille physique • Facile à extraire • Peut être une base pour le calcule de LOC LOC = CHAR/α où α est le nombre moyen de caractères par ligne de texte 17 Houari Sahraoui, DIRO, Université de Montréal 35 Taille : taille physique • Spécification et conception – Il est très difficile de trouver une mesure similaire à LOC ou CHAR – La nature des documents est très variée et il est difficile de déterminer les types d’objets atomiques à compter (comme les caractères ou les lignes dans le cas du code) – Les documents sont composés de texte et de diagrammes Houari Sahraoui, DIRO, Université de Montréal 36 Taille : taille physique • Spécification et conception – Dans l’industrie, une mesure utilisée est le nombre de pages • Avantage : uniformise le texte et les diagrammes • Inconvénient : comment gérer les pages contenant du texte et des diagrammes – Une idée serait de mesurer le texte et trouver une unité de mesure pour les diagrammes 18 Houari Sahraoui, DIRO, Université de Montréal 37 Taille : taille physique • Prédiction – Il est très utile de prédire la taille physique du code (LOC) très tôt dans le cycle de développement – Soit α le ratio d’expansion obtenu à partir de données historiques – Soit Si la taille de conception d’un module i – LOC peut être estimé par la formule suivante Houari Sahraoui, DIRO, Université de Montréal 38 Taille : taille physique • Prédiction – α dépend de chaque organisation – Une autre façon de prédire LOC a été proposée par Walston & Felix – D est la taille de la documentation en pages et L la taille du code en milliers de LOC 19 Houari Sahraoui, DIRO, Université de Montréal 39 Taille : fonctionnalité • Intuitivement, c’est le nombre de fonctions fournies dans le logiciel • Il existe deux travaux reconnus pour la mesure de la fonctionnalité – Les points de fonctions (Albrecht) – Les métriques BANG (De Marco) • L’objectif de ces deux travaux est de produire des mesures de taille qui permettent de bien prédire le coût et l’effort de développement Houari Sahraoui, DIRO, Université de Montréal Taille : fonctionnalité 40 • Points de fonctions – L’objectif est de mesurer la quantité de fonctionnalité offerte par un logiciel à partir de sa spécification – Pour calculer le nombre de points de fonctions FP (function points), il faut d’abord calculer le compte de fonctions non ajusté UFC (unadjusted function count) 20 Houari Sahraoui, DIRO, Université de Montréal 41 Taille : fonctionnalité • Points de fonctions – Pour calculer UFC, il faut déterminer à partir d'une certaine représentation du logiciel, le nombre d'éléments des types suivants • Entrées externes : éléments de données fournis par l'utilisateur (tels que des noms de fichiers et des sélections de menus). Ceci n’inclut pas les requêtes de l’utilisateur • Sorties externes : éléments de données fournis à l'utilisateur (tels que les états et les messages) • Requêtes externes : entrées interactives exigeant une réponse • Fichiers externes : interfaces compréhensibles par une machine avec d'autres systèmes • Fichiers internes : Fichiers principaux logiques dans le système Houari Sahraoui, DIRO, Université de Montréal 42 Taille : fonctionnalité • Points de fonctions – Exemple (vérificateur d’orthographe) – Spécification : • Le vérificateur accepte en entrée un fichier document et, optionnellement, un fichier dictionnaire personnel • Le vérificateur affiche tous les mots qui ne sont ni dans le fichier dictionnaire, ni dans le fichier dictionnaire personnel • L’utilisateur peut à tout moment demander le nombre de mots traités et le nombre d’erreurs trouvées durant le processus de vérification 21 Houari Sahraoui, DIRO, Université de Montréal 43 Taille : fonctionnalité • Points de fonctions Message # mots traités Requête # erreurs Requête # mots traités Vérificateur Utilisateur Message # erreurs trouvées à date Utilisateur Fichier document Fichier dictionnaire personnel Contenu du dictionnaire Rapport des mots erronés Dictionnaire • • • • • # entrées externes = 2 # sorties externes = 3 # requêtes externes = 2 # fichiers externes = 2 # fichiers internes = 1 Houari Sahraoui, DIRO, Université de Montréal 44 Taille : fonctionnalité • Points de fonctions – Complexité subjective • Échelle ordinale • Valeurs : simple, moyen et complexe – Les entreprises ont développé des heuristiques pour attribuer une valeur à un type d’éléments – Facteur de pondération (fpond) • Un coefficient qui correspond à une combinaison (type d’éléments – complexité subjective) Types d’éléments Facteur de pondération simple Moyen complexe Entrées externes 3 4 6 Sorties externes 4 5 7 Requêtes externes 3 4 6 Fichiers externes 7 10 15 Fichiers internes 5 7 10 22 Houari Sahraoui, DIRO, Université de Montréal 45 Taille : fonctionnalité • Points de fonctions – Calcul de UFC – Exemple (Vérificateur) • Quelle est la valeur de UFC si tous les éléments sont de complexité moyenne? • Quelle est la valeur de UFC si le fichier dictionnaire était complexe Houari Sahraoui, DIRO, Université de Montréal 46 Taille : fonctionnalité • Points de fonctions – Calcul du nombre de points de fonction FP – Facteur de complexité technique (TFC) • C’est un facteur d’ajustement de UFC dans une plage de ±35% (0.65 <=TFC<=1.35) • Facteurs influençant la complexité F1 Back-up fiable et récupération F2 Communication de données F3 Fonctions distribuées F4 Exigences de performances F5 Configuration très utilisée F6 Saisie de données en ligne F7 Facilité d'opération F8 Mise à jour en ligne F9 Interface complexe F10 Traitements complexes F11 Facilité de Réutilisation F12 Facilité d’installation F13 Sites multiples F14 Facilité de changement 23 Houari Sahraoui, DIRO, Université de Montréal 47 Taille : fonctionnalité • Points de fonctions – Facteur de complexité technique • Calcul de TFC Pour chaque facteur on attribue une valeur dans une échelle ordinale (0,1,2,3, 4,5) où 0 veut dire que le facteur est non pertinent et 5 veut dire essentiel ( =0.65 si tous les Fi=0 et 1.35 si tous les Fi=5) Houari Sahraoui, DIRO, Université de Montréal Structure du flot de contrôle 48 • De nombreux travaux sur les métriques ont porté sur la structure du flot de contrôle • Graphe de flot de contrôle – Graphe orienté • nœud = instruction du programme • Arc = le flot de contrôle entre une instruction et une autre – Autres concepts • • • • • • Degré_entrée d’un nœud = nombre d’arcs incidents Degré_sortie d’un nœud = nombre d’arcs sortants Nœud procédure = un nœud de degré_sortie 1 Nœud prédicat = un nœud de degré_sortie > 1 Chemin = une séquence d’arcs consécutifs Chemin simple = une séquence d’arcs consécutifs sans répétition 24 Houari Sahraoui, DIRO, Université de Montréal 49 Structure du flot de contrôle • Exemple de graphe de flot de contrôle 10 lire p 20 lire e 30 Cal := 1 40 Si e ~= 0 alors 50 Tant que e > 0 faire 60 cal := cal * p 70 e := e - 1 80 Fin_faire 90 Fin_si 100 écrire cal 110 fin 10 20 30 40 50 60 70 80 90 100 110 Houari Sahraoui, DIRO, Université de Montréal 50 Mesure de la complexité • Complexité cyclomatique de McCabe – Pour un graphe de flot de contrôle F comportant n nœuds (dont d nœuds prédicats) et e arcs, il existe trois façons de la mesurer • V(F) = e – n + 2 • V(F) = 1 + d • V(F) = r (r est le nombre de régions de F) 25 Houari Sahraoui, DIRO, Université de Montréal Mesure de la complexité 51 Complexité cyclomatique de McCabe – Exemple 10 20 30 40 v(F) = 12 – 11 + 2 =1+2 =3 50 60 70 80 90 100 110 Houari Sahraoui, DIRO, Université de Montréal 52 Couplage • Définition – C’est le degré d’interdépendance entre modules • Types de couplage entre deux modules x et y (du moins mauvais au plus mauvais) – Pas de couplage (R0) : x et y sont indépendant – Couplage de données (R1) : x et y communiquent avec des paramètres – Couplage de signature (R2) : x et y acceptent le même type d'enregistrement comme paramètre – Couplage de contrôle (R3) : x passe un paramètre à y qui influence le contrôle – Couplage par variables globales communes (R4) : x et y accèdent à la même donnée globale – Couplage de contenu (R5) : x modifie des données ou des instructions à l'intérieur de y 26 Houari Sahraoui, DIRO, Université de Montréal 53 Couplage • Graphe de couplage M1 Module (2,2) M2 (2,2) (3,2) (5,1) (3,2) Relation de couplage (signatures) Occurrences M3 M4 Mesure de couplage i est la pire relation de couplage et n le nombre d’interconnexions entre x et y Exemple Houari Sahraoui, DIRO, Université de Montréal 54 Couplage • Mesure de couplage – c(x,y) est de type ordinal – Soit un système S comportant les modules M1, …, Mm, comment définir une mesure globale du couplage C(S) ? – D’autres mesures de couplage pour un module x existent. Par exemple, le nombre maximum, le nombre moyen et le nombre total d’interconnexions 27 Houari Sahraoui, DIRO, Université de Montréal 55 Cohésion • Définition – La cohésion d'un module est le degré de participation des composants à la même tâche • Types de cohésion (du plus désirable au moins désirable) – Fonctionnelle : le module effectue une seule fonction bien définie. – Séquentielle: le module effectue plus d'une fonction, mais dans l'ordre défini par la spécification – Communicationnelle: le module effectue plusieurs fonctions toutes sur le même ensemble de données – Procédurale : le module effectue plusieurs fonctions appartenant au même processus – Temporelle: le module effectue plusieurs fonctions intervenant toutes dans le même laps de temps. – Logique: le module effectue plusieurs fonctions liées logiquement – Cohésion par coïncidence: le module effectue plusieurs fonctions sans aucune liaison entre elles Houari Sahraoui, DIRO, Université de Montréal 56 Cohésion • Un module peut avoir plusieurs types de cohésion • On caractérise un module par sa moins désirable cohésion • La mesure de cohésion est de type ordinal • La cohésion d’un système peut être mesurée comme suit 28 Houari Sahraoui, DIRO, Université de Montréal Les métriques orientées objet 57 • La majorité des métriques proposées sont destinées au paradigme procédural • Elles ne s’appliquent pas au paradigme des objets • Des métriques spécifiques OO ont été proposées ces dernières années • Les plus connues sont celles de Chidamber et Kamerer Houari Sahraoui, DIRO, Université de Montréal 58 Les métriques orientées objet • Éléments de base – Ensemble de classes • • • • • C : ensemble de toutes les classes du système Parents(c) : ensemble des superclasses directes de c Children(c) : ensemble des sous-classes directes de c Ancestors(c) : ensemble des superclasses de c Descendents(c) : ensemble des sous-classes de c – Ensemble de méthodes • • • • M(C) : ensemble de toutes les méthodes du système M(c) : ensemble de toutes les méthodes d’une classe c MD(c) : ensemble des méthodes déclarées dans la classe c MI(c) : ensemble des méthodes implantées dans la classe c MD(c) ∪ MI(c) = M(c) MD(c) ∩ MI(c) = ∅ 29 Houari Sahraoui, DIRO, Université de Montréal 59 Les métriques orientées objet • Éléments de base – Ensemble de méthodes • MINH(c) : ensemble des méthodes héritées de c • MOVR(c) : ensemble des méthodes redéfinies de c • MNEW(c) : ensemble des méthodes nouvellement créées de c MINH(c) ∪ MOVR(c) ∪ MNEW(c) = M(c) • MPUB(c) : ensemble des méthodes publiques de c • MNPUB(c) : ensemble des méthodes non publiques de c MPUB(c) ∪ MNPUB(c) = M(c) MPUB(c) ∩ MNPUB(c) = ∅ • • • • SIM(m) : ensemble des méthodes statiquement invoquées dans m NSI(m, m′ ) : nombre d’invocations statiques de m′ par m PIM(m) : ensemble des méthodes invoquées dans m de manière polymorphique NPI(m, m′ ) : nombre d’invocations polymorphiques de m′ par m Houari Sahraoui, DIRO, Université de Montréal Les métriques orientées objet 60 • Éléments de base – Ensemble d’attributs • AD(c) : ensemble des attributs hérités dans la classe c • AI(c) : ensemble des attributs définis dans la classe c • A(c) : ensemble des attributs de la classe c A(c) = AD(c) ∪ AI(c) • AR(m) : ensemble des attributs référencés par une méthode m 30 Houari Sahraoui, DIRO, Université de Montréal Les métriques orientées objet 61 • Depth of Inheritance Tree (DIT) – Définition : • Profondeur de la classe dans l'arbre d'héritage. En cas d'héritage multiple, DIT vaudra la profondeur maximale depuis la classe racine jusqu'à la classe mesurée 1 max ∈ 0 !"# ∅ Houari Sahraoui, DIRO, Université de Montréal 62 Les métriques orientées objet • Depth of Inheritance Tree (DIT) – Considérations : • Plus une classe se situe profondément dans l'arbre d'héritage, plus le nombre de méthodes et de comportements, dont elle hérite, sera grand. Ceci rendra son comportement d'autant moins prévisible. • Plus un arbre est profond, plus la conception est complexe • Plus une classe se situe profond dans l'arbre d'héritage, plus il est probable qu'elle réutilise des méthodes héritées 31 Houari Sahraoui, DIRO, Université de Montréal 63 Les métriques orientées objet • Number Of Children (NOC) – Définition: • Nombre de descendants immédiat de la classe dans la hiérarchie de classe. %&' '() ! Houari Sahraoui, DIRO, Université de Montréal 64 Les métriques orientées objet • Number Of Children (NOC) – Considérations : • Plus le nombre d'enfants est élevé, plus la réutilisation effective est importante, car l'héritage est une forme de réutilisation • Plus le nombre d'enfants est élevé, plus le risque d'une utilisation inadéquate du mécanisme de l'héritage est grand. On pourra alors se trouver face à une mauvaise abstraction pour la classe de base • Le nombre d'enfants donne une idée de l'influence potentielle d'une classe sur la conception. Si une classe a un nombre important d'enfants, elle pourra requérir un effort de test plus conséquent 32 Houari Sahraoui, DIRO, Université de Montréal 65 Les métriques orientées objet • Weighted Methods per Class (WMC) – Définition: • Somme pondérée des complexités des méthodes d'une classe. Si toutes les méthodes d'une classe sont de complexité 1, elle est égale au nombre de méthodes *+' , 0∈12 -./ . *+' +3 #∀. ∈ +3 , -./ . 1 – Cas de la complexité cyclomatique *+' , 0∈12 6 . Houari Sahraoui, DIRO, Université de Montréal 66 Les métriques orientées objet • Weighted Methods per Class (WMC) – Considérations : • Le nombre et la complexité des méthodes d'une classe sont un bon indicateur du temps à passer pour développer et maintenir une classe. • Plus on a de méthodes dans une classe, plus l'impact pourra être grand sur les classes enfants via l'héritage. • Les classes qui ont un grand nombre de méthodes complexes sont en général plus spécifiques à l'application et donc moins réutilisables. 33 Houari Sahraoui, DIRO, Université de Montréal 67 Les métriques orientées objet • Coupling Between Objects (CBO) – Définition: • Nombre d'autres classes auxquelles une classe est couplée. Deux classes sont dites couplées si une méthode de l'une utilise une méthode ou un attribut de l'autre '7& ∈ ' 8 |:# # , ∨ :# #, :# # , ⟺ ∃. ∈ +3 , ∃.> ∈ +3 , .> ∈ + . ∨ ∃. ∈ +3 , ∃ ∈ ?3 , ∈ ?@ . Houari Sahraoui, DIRO, Université de Montréal 68 Les métriques orientées objet • Coupling Between Objects (CBO) – Considération : • Un couplage excessif entre classes se fait au détriment de la modularité et empêche la réutilisation. • Pour promouvoir l'encapsulation, le couplage entre classes devrait être minimal. Plus une classe est couplée à d'autres classes, plus une modification de cette classe peut influencer de classes. • Une mesure du couplage est importante pour déterminer la complexité du test des diverses parties d'un logiciel. L'effort de test d'une classe devrait être d'autant plus élevé que le CBO de cette classe est élevé. 34 Houari Sahraoui, DIRO, Université de Montréal 69 Les métriques orientées objet • Response For a Class (RFC) – Définition : • RFC vaut la cardinalité de l'ensemble réponse d'une classe. L'ensemble réponse d'une classe est l'ensemble des méthodes qui peuvent être directement appelées lors de l'exécution de n'importe quelle méthode de cette classe (= réponse à un message) @A' @A'B C @A'C D @E avec EFG @G + et @EHB D +. 0∈IJ Houari Sahraoui, DIRO, Université de Montréal 70 Les métriques orientées objet • Response For a Class (RFC) – Considérations : • Si un grand nombre de méthodes peuvent être appelées en réponse à un message, le test et le débogage d'une classe deviennent plus compliqués, car ils requièrent un niveau de compréhension plus élevé de la part du testeur • La complexité d'une classe est d'autant plus élevée qu'elle peut appeler un grand nombre de méthodes 35 Houari Sahraoui, DIRO, Université de Montréal Les métriques orientées objet 71 • Lack of COhesion in Methods (LCOM) – Définition • LCOM1 compte le nombre de paires de méthodes qui n’accèdent pas aux mêmes attributs K'&+1 avec .B , .L |.B , .L ∈ +3 ∧ .B N .L ∧ [email protected] ∩ [email protected] ∩ ?3 ∅ • LCOM2 compte le nombre de paires de méthodes qui n’accèdent pas aux mêmes attributs diminué du nombre de paires de méthodes qui accèdent aux mêmes attributs K'&+2 Q avec R 8 R # S R 0#!-! .B , .L |.B , .L ∈ +3 ∧ .B N .L ∧ [email protected] ∩ [email protected] ∩ ?3 N ∅ Houari Sahraoui, DIRO, Université de Montréal Les métriques orientées objet 72 • Lack of COhesion in Methods (LCOM) – Considérations : • Une forte cohésion est signe d’une bonne encapsulation • Une faible cohésion suggère qu’une classe doit être décomposée en 2 ou plusieurs classes • Toute mesure de disparité entre les méthodes aide à trouver les fautes de conception • Une faible cohésion augmente la complexité et par conséquent la probabilité d’existence d’erreurs dans le processus de développement 36