5. • Trouver le graphe de flux de McCabe pour la portion du code
suivante :
scanf("%d",&a);
if(a > 10) {
printf("Hello");
if(b < a){
printf("Partie 1");
if(c > a) {
printf ("Partie 2");
}
} else {
printf ("Partie 3");
}
}
6. Méthode rapide pour calculer C
1. Compter le nombre de décision : .
Une décision = if, while, case, goto, for
C = + 1
7. Science informatique de Halstead
• Déterminer le nombre d’opérateurs ‘sans
répétitions’ (1) et le nombre d’opérandes
‘sans répétitions’ (2). [Nombre de jetons :
= 1 + 2 ].
• Le nombre d’opérandes potentiels : nombre
d’opérandes sans initialisation (2
*).
• On détermine la longueur N = N1+N2 avec :
N1 = 1i*fi et N2 = 2i*fi
8. Mesures de Halstead
• Volume V (en octets) : V = N*log2(1 + 2)
• Volume potentiel V* (Volume d’implémentation
théorique minimale):
V* = (2+2*)*log2(1 + 2*)
• Niveau d’implémentation : L = V*/V
• Effort mental : E = V/L
• Temps, T (S = 18 « nombre de Stroud »)
T = E/S
• Nombre de Bugs : B = (E^(2/3))/3000
9. Métriques de Henry-Kafura
• Mesurer la complexité entre module :
Hki = Poidsi * (Ini * Outi)2
i : index du module dans le code.
10. Méthode GQM
Vic Basili et David Rombach
Goal – Question – Metrics
Evaluation en utilisant des check-lists
11. Métriques pour l’OO
Méthodes pondérées par classes : WMC.
Profondeur de l’arbre d’héritage : DIT
Nombre d’enfants : NOC.
Métriques : MOOD (encapsulation,
héritage, polymorphisme, couplage)
12. Mesure : WMC
C’est la seule métrique à calculer en moyenne
sur toutes les classes :
WMC = (1/n)*(i=0 a n) ci*Mi
13. Profondeur de l’arbre d’héritage DIT
Distance maximale
entre le nœud et
la racine de
l’arbre d’héritage.
A
B
C
15. Métriques MOOD
• Nombre total de classesTC
• Nombre de méthode de classe Ci (i
entre 1 et TC)Md(Ci)
• méthode m de la classe i.Mm,i
• = 1 si i j et Cj peut appeler Mm,i.
• = 0 sinon
EstVisible(Mm,i , Cj)
18. Facteurs d’héritage
Mi(Ci) : nombre de méthodes
hérités et non surchargées
Md(Ci) : Nombre de méthodes
définis dans la classe
Ma(Ci) = Md(Ci) + Mi(Ci)
Ai(Ci) : nombre d’attributs
hérités
Ad(Ci) : Nombre d’attributs
définis dans la classe
Aa(Ci) = Ad(Ci) + Ai(Ci)
Fourchette préconisée: [65%,80%]
Fourchette préconisée: [50%,60%]