Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

La mesure logicielle

843 views

Published on

diapos de cours sur les métriques logicielle

Published in: Education
  • Be the first to comment

  • Be the first to like this

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%

×