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 = ...
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(...
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
‘san...
Mesures de Halstead
• Volume V (en octets) : V = N*log2(1 + 2)
• Volume potentiel V* (Volume d’implémentation
théorique ...
Métriques de Henry-Kafura
• Mesurer la complexité entre module :
Hki = Poidsi * (Ini * Outi)2
i : index du module dans le ...
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...
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 classesTC
• Nombre de méthode de classe Ci (i
entre 1 et TC)Md(Ci)
• méthode m de la clas...
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ées
Md(Ci) : Nombre de méthodes
définis dans la cla...
Facteur de couplage
CF (Coupling Factor)
Fourchette préconisée: [4%,20%]
Facteur de polymorphisme
PF (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%...
Prochain SlideShare
Chargement dans…5
×

La mesure logicielle

699 vues

Publié le

diapos de cours sur les métriques logicielle

Publié dans : Formation
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
699
Sur SlideShare
0
Issues des intégrations
0
Intégrations
7
Actions
Partages
0
Téléchargements
23
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

La mesure logicielle

  1. 1. La mesure logicielle LAJOUAD Rachid
  2. 2. Lignes de codes • Mesure directe sur le code : • KLOC • KLOCM • Standard : • LOC : 62 / fonction • LOCM : 60% par fonction
  3. 3. Complexité cyclomatique • Établir le graphe de McCabe • Compter le nombre d’arcs : a • Compter le nombre de nœuds : n C = a – n + 2
  4. 4. Notation de McCabe Sequence If-then-else While Do .. While
  5. 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. 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. 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. 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. 9. Métriques de Henry-Kafura • Mesurer la complexité entre module : Hki = Poidsi * (Ini * Outi)2 i : index du module dans le code.
  10. 10. Méthode GQM Vic Basili et David Rombach Goal – Question – Metrics Evaluation en utilisant des check-lists
  11. 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. 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. 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
  14. 14. Nombre d’enfants : NOC A B C
  15. 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)
  16. 16. La visibilité d’une méthode
  17. 17. Encapsulation Fourchette préconisée: [10%,30%] Fourchette préconisée: [70%,100%]
  18. 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%]
  19. 19. Facteur de couplage CF (Coupling Factor) Fourchette préconisée: [4%,20%]
  20. 20. Facteur de polymorphisme PF (Polymorphism Factor) Fourchette préconisée: [3.5%,10%]
  21. 21. 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%

×