la mesure logicielle
Post on 04-Aug-2015
176 Views
Preview:
TRANSCRIPT
Lignes de codes
• Mesure directe sur le code :
• KLOC
• KLOCM
• Standard :
• LOC : 62 / fonction
• LOCM : 60% par fonction
Complexité cyclomatique
• Établir le graphe de McCabe
• Compter le nombre d’arcs : a
• Compter le nombre de nœuds : n
C = a – n + 2
Seuil = 10
• 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");
}
}
Méthode rapide pour calculer C
1. Compter le nombre de décision : .
Une décision = if, while, case, goto, for
C = + 1
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
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
20 < V < 1000
Métriques de Henry-Kafura
• Mesurer la complexité entre module :
Hki = Poidsi * (Ini * Outi)2
i : index du module dans le code.
Méthode GQM
Vic Basili et David Rombach
Goal – Question – Metrics
Evaluation en utilisant des check-lists
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)
Mesure : WMC
C’est la seule métrique à calculer en moyenne sur toutes les classes :
WMC = (1/n)*(i=0 a n) ci*Mi
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
Métriques MOOD
•Nombre total de classes
TC
•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)
Facteurs d’héritage
Mi(Ci) : nombre de méthodes hérités et non surchargéesMd(Ci) : Nombre de méthodes définis dans la classe
Ma(Ci) = Md(Ci) + Mi(Ci)
Ai(Ci) : nombre d’attributs héritésAd(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%]
top related