21
La mesure logicielle LAJOUAD Rachid

La mesure logicielle

Embed Size (px)

Citation preview

La mesure logicielle

LAJOUAD Rachid

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

Notation de McCabe

Sequence

If-then-else

While

Do .. While

• 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

Nombre d’enfants : NOC

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)

La visibilité d’une méthode

Encapsulation

Fourchette préconisée: [10%,30%]

Fourchette préconisée: [70%,100%]

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%]

Facteur de couplageCF (Coupling Factor)

Fourchette préconisée: [4%,20%]

Facteur de polymorphismePF (Polymorphism Factor)

Fourchette préconisée: [3.5%,10%]

Quelques références MOOD pour comparaison

System MFC GNU ET+ Motif

MHF 24.6% 13.3% 9.6% 39.2%

AHF 68.4% 84.1% 69.4% 100.0%

MIF 83.2% 63.1% 83.9% 64.3%

AIF 59.6% 62.6% 51.8% 50.3%

PF 2.7% 3.5% 4.5% 9.8%

CF 9.0% 2.8% 7.7% 7.6%