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