Metriques de Logiciels Chapitre 15 Lfi2 Automne 2008
Hierarchie d’Attributs Attributs de Qualite. On les sent, mais on ne sait pas les definir. Fonctions Quantitatives. On sait les definir, mais on ne sait pas les calculer. Metriques Calculables. On sait les calculer mais on ne sait pas ce qu’elles representent. AQ FQ: Relation de modelisation (partielle). FQ MC: Relation d’approximation.
Hierarchie d’Attributs
Exemple DefinitionRoleExemple Attributs qualitatifs Qualite intuitive Definit attribut pertinent Maintenabilite Fonctions quantitatives Fonction numerique Apprehende attribut Effort annuel de maint/ loc Metriques calculables MetriqueApproxime la fq Size, nesting, structures
Taille Nombre de lignes de code Indicateurs d’effort? Indicateurs de fonctionalite? En moyenne…
Mesure d’Effort Utilise dans COCOMO. Varie selon le langage?
Mesure de Fonction alite?
Taille Nombre de lexemes Lexeme: unite syntaxique (mot cle, symbole, separateur, operateur, variable, constante, etc). Permet de depasser la limitation de la variabilite des longueurs de lignes.
Exemple
Separation entre operateurs, operandes
Combining Compelemtary tokens
Exemple de Calcul void unsuccessfultest (int testnumber, indextype N, itemtype a[MaxSize], itemtype x) { teststream << "Test#" << testnumber << "was unsuccessful" << endl; teststream << "Initial Data N=" << N << "x=" << x << "a=" << endl; for (i=0; i<N; i++) {teststream << a[i];} teststream << endl; }
Operations
Operandes
Mesures de Profondeur Taille: dimension superficielle. Ne reflete pas la complexite logique. Ne reflete pas l’imbrication du code.
Contraste
Mesure de McCabe V = e – n + 1. Nombre de regions dans le graphe de flot du programme.
Mesure de McCabe
Mesure de Dunsmore: Profondeur
Prendre la moyenne des profondeurs. Dans le cas du programme pris pour exemple: Longueur: 7.
Mesures de Taille La Taille selon Halstead n1: nombre d’operateurs uniques n2: nombre d’operandes uniques N1: nombre (d’instances) d’operateurs. N2: nombre (d’instances) d’operandes. n = n1+n2. N = N1+N2. Volume, V = N x log2(n).
Quantite d’Information d’un message Alphabet = {m1, m2, … mk}. H(k): quantite d’information transmise par message parmi k. H(1)=0. H(2)=1. Deux sources: A de taille n, B de taille m. H(n x m) = H(n) + H(m). H(n) = log2(n). N bits: 2^^N. H(2^^N)=log2(2^^N)=N.
Interpretation de Halstead Operateurs et operandes: alphabet avec lequel est ecrit ce programme. log2(n) quantite d’information portee par chaque symbole du programme. N x log2(n): quantite totale d’information portee par le programme.
Exemple de Volume
Calcul de Volume n = 14+14=28. n1 = 14. n2 = 14. N = = 69. N1 = 42. N2 = 27. V = 69 x log2(28) = 69 x 4.81 = 332.
Longueur Estimee Longueur reelle: N1 + N2. Longueur estimee: n1 x log2(n1) + n2 x log2(n2). Exemple: 14 x log2(14) + 14 x log2(14) = 106 > 69.
Variables Vivantes 48/16 = 3
Etendue des Variables 48/16 = 3
Metriques de Conception Couplage et Cohesion
Metriques OO Profondeur de la structure hereditaire. Fan In, Fan Out. Nombre de redefinitions.