30
AQL - LES MÉTRIQUES LOGICIELLES UHIIC - Faculté des sciences BEN MSI’K Master SII

Aql métriques logicielles

Embed Size (px)

Citation preview

Page 1: Aql métriques logicielles

AQL - LES MÉTRIQUES LOGICIELLES

UHIIC - Faculté des sciences BEN MSI’K

Master SII

Page 2: Aql métriques logicielles

Introduction

Les métriques logicielles

Exercices

Conclusion

PLAN

2

Page 3: Aql métriques logicielles

La mesure de la qualité SI3

Introduction Métriques Exercices Conclusion

La qualité du logiciel est définie comme « une mesure dans laquelle un composant système ou processus répond aux exigences spécifiques ou aux besoins et aux attentes client ou utilisateur »

Un facteur est un élément fonctionnel, technique ou ergonomique, qui est définie par un ensemble de métrique.

un modèle de qualité désigne un ensemble de vues de l'utilisateur d’un système, qui est décomposée en plusieurs facteurs et plusieurs critères ou caractéristiques.

Page 4: Aql métriques logicielles

La mesure de la qualité SI4

Introduction Métriques Exercices Conclusion

• Est-ce qu’il répond exactement aux besoins clients ? Exactitude

• Est-ce qu’il est fonctionnel dans  des conditions anormales ? la tolérance aux erreurs, la cohésion..Fiabilité

• Est-ce qu’il est facile pour localiser  et corriger ses défauts et erreurs ?Maintenabilité

• Est ce qu’il est modifiable facilement?Flexibilité • Est-ce qu’e le logiciel est décomposable en

éléments indépendants ?Modularité• Est-ce qu’il peut accepter des modifications

dans les spécifications et des adjonctions nouvelles ?Extensibilité

• Est ce qu’il est capable d'interfaçage avec d'autres composants/systèmes ? Intéropérabilité

Définitions

Page 5: Aql métriques logicielles

La mesure de la qualité SI5

Une métrique est une caractéristique ou une propriété d’un logiciel, sa mesure correspond à une valeur à un moment T, interprétable et propose une solution.

Définitions

Introduction Métriques Exercices Conclusion

Page 6: Aql métriques logicielles

La mesure de la qualité SI6

Fiabilité

Précision

Testabilité …

Maintenabilité…

Fonctionnalité Utilité…

Tolérance aux fautes

Concision

CCYC = a− n +e +s

Métrique McCabe

Simplicité…

FacteurCritère

Métrique

Relation critère/ Métrique

Introduction Métriques Exercices Conclusion

Page 7: Aql métriques logicielles

La mesure de la qualité SI7

Approches de mesure QL

Quantitative

Attributs internes

Mesure directe

Analyse entité

Qualitative

Attributs externes

Mesure indirecte

Analyse environnem

ent

Approches de mesure

Introduction Métriques Exercices Conclusion

Page 8: Aql métriques logicielles

La mesure de la qualité SI8

Caractéristiques d’une métrique

La forme d’une métrique peut être simple ou dérivée. Chaque métrique fait partie d’une classification

(Nominale, Ordinale, Intervalle…) .

Une métrique a un type spécifique. Une ou plusieurs métriques peuvent mesurer une

entité. Sa valeur est numérique absolue et positive. Chaque résultat obtenu a une interprétation.

Introduction Métriques Exercices Conclusion

Page 9: Aql métriques logicielles

La mesure de la qualité SI9

Type Exemple entité Sous- type Type

d’attribut Exemple de mesure

Processus TesteManagement Interne Délai

Qualité Externe Coût

Produits Code

Code source InterneNombre de lignes de code (Complexité, Fonctionnalité)

Spécifications ExterneNombre de défauts par classe (Fiabilité, Maintenabilité)

Ressources PersonnelHumaines Interne Productivité

Matérielles Externe Performance

Types des métriques

Introduction Métriques Exercices Conclusion

Page 10: Aql métriques logicielles

La mesure de la qualité SI10

Outil Désignation Type métrique

SonarCube V5 Open source  Supporte 25 langages  de   programmation. Code source

CAST Measures V5

Depuis 2006 le pionnier du marché de la Gouvernance des Développements Applicatifs.

ProcessusCode source

Squale V7Projet   initié  par  Air  France  et  QualixoDétermine les modèles de  qualimétrie  S’interésse aux outillage de control et suivi projets.

ProcessusCode Ressource

McCabe V8

Spécialisé   dans    le   management  de   la   qualitéAnalyse qualimétrique, La  couverture  de  test,Visualiser architecture système...

ProcessusRessource

Outils de mesure

Introduction Métriques Exercices Conclusion

Page 11: Aql métriques logicielles

La mesure de la qualité SI11

Cet indice se calcule sur une classe entière. SPE = (S*P)/Nb

S = Nombre de méthodes redéfinies P = Profondeur d’héritage depuis System.Object Nb = nombre de méthodes de la classe

Il s’augmente quand le nombre de méthodes redéfinies (S) ou la profondeur d'héritage (P) augmente.

Il se diminue quand le nombre de méthodes spécifiques à la classe (NB) augmente ou le nombre de méthodes redéfinies (S) diminue.

Une valeur de 1,5 est considérée comme trop élevée. Une classe dont le SPE est trop élevé devra être refactorée.

L'indice de spécialisation

Introduction Métriques Exercices Conclusion

Page 12: Aql métriques logicielles

La mesure de la qualité SI12

I = Ce / (Ce + Ca) Accouplement Afférente (Ca): Le nombre de classes hors

d'un package qui dépendent d'une classe dans le package. Accouplement efférente (Ce) : Le nombre de classes dans

un packages qui dépendent d'une classe d'un autre package.

Cette mesure est un indicateur de la résistance de l'emballage au changement. La plage de cette métrique est de 0 à 1 ; 0 <= I <= 1,

Avec I = 0 indiquant un package complètement stable et I = 1 indique un package complètement instable.

Exemple de  la classe System.String, qui ne dépend pas de grand monde, mais dont au contraire, énormément d'autres classes dépendent, (I) tend vers 1, et un refactoring de cette classe sera donc risqué.

L'indice d'instabilité d'un package

Introduction Métriques Exercices Conclusion

Page 13: Aql métriques logicielles

La mesure de la qualité SI13

A = I / T I = Nombre d’interfaces du package T = Nombre total de types du package (classes et interfaces)

Abstraction (A): Le rapport entre le nombre de classes abstraites (et interfaces) dans le paquet analysé sur le nombre total de classes du package.

La plage de cette métrique est de 0 à 1. A = 0 indiquant un ensemble tout à fait concrète A = 1 indique un package complètement abstraite.

Le coefficient d'abstraction d’un package

Introduction Métriques Exercices Conclusion

Page 14: Aql métriques logicielles

La mesure de la qualité SI14

La Distance (D) se calcule sur un ou ensemble de packages. D = A + I = 1 ou  D = | I + A - 1 |

A : l'indice d'abstraction du paquetage I : l'indice d'instabilité du paquetage

Cette mesure est un indicateur de l'équilibre du paquet entre abstraction et de la stabilité.

Les paquets Idéals  sont soit complètement abstraite et parfaitement stable (I = 0, A = 1) ou tout à fait concrète et instable car elle dépend d'une multitude d'autres packages (I = 1, A = 0).

La plage de cette métrique est de 0 à 1 D = 0 indique un package qui coïncide avec la séquence

principale D = 1 indique un package qui est aussi loin de la séquence

principale que possible

La distance de la bonne conception d'un package

Introduction Métriques Exercices Conclusion

Page 15: Aql métriques logicielles

La mesure de la qualité SI15

On représente le flux de contrôle du programme sous forme d’un graphe (exemple des instructions Switch, if, for, while, do, case, catch)

CCYC = a− n +e +s a: le nombre d’arcs du graphe n: le nombre de nœuds e: le nombre de points d’entrées s: le nombre de points de sortie

Plus la complexité cyclomatique augmente, plus le programme sera susceptible de contenir des erreurs, sera difficile à comprendre et a tester.

Solution: Refactoring -> Optimisation du code source

McCabe la complexité cyclomatique

Introduction Métriques Exercices Conclusion

Page 16: Aql métriques logicielles

La mesure de la qualité SI16

Le taux de couverture d'une méthode est une métrique donne un pourcentage de chemins couvert par les tests.

COUV = (NbTest / Nb) * 100 NbTest = Nombre de lignes couvertes par les tests

unitaires (TU) Nb = Nombre total de lignes de la méthode

Si COUV = 100%, le nombre de tests unitaires d'une méthode est égal à son indice de complexité cyclomatique.

Le taux de couverture

Introduction Métriques Exercices Conclusion

Page 17: Aql métriques logicielles

La mesure de la qualité SI17

Il s'agit d'une mesure de difficulté et de complexité d’un logiciel.

Elle est calculée par : [Difficulté] = ([Nombre d'opérateurs uniques] /2) * ([Nombre

d'opérandes] / [nombre d'opérandes uniques]) Exemple opérateurs:  :=, = ou == (affectation ou bien

égalité), != ou <> (inégalité), && (et booléen), || (ou booléen),  ! (négation booléenne)..

Un opérande peut être une constante, une simple variable ou une expression faisant intervenir d'autres opérations.

Elle peut être calculée pour toute méthode ou le conteneur de la méthode.

Complexité d'Halstead: Métrique de difficulté

Introduction Métriques Exercices Conclusion

Page 18: Aql métriques logicielles

La mesure de la qualité SI18

Il s'agit d'une estimation de la taille du programme, calculé par :

[programme longueur] = [Nombre d'opérateurs] + [nombre d'opérandes]

Plus que le programme est long, plus qu’il est complexe. Elle peut être calculée pour toute méthode, classe ou

package.

Mesure de la taille d’un programme

Introduction Métriques Exercices Conclusion

Page 19: Aql métriques logicielles

La mesure de la qualité SI19

Facteur Critère Indication Métrique Formule

Utilisabilité

CompréhensibilitéQuelle fonction décrite dans la description de

produit ?

Métrique de perfection de description

X = A/BA = nb fonctions décrites

dans la description logiciel.

B = nb total de fonctions.0 < =X < =1

Près de 1 -> plus complet.

Documentation

Quel est le nombre de fonctions

décrites dans le manuel

utilisateur ?

Métrique de perfection de

manuel d’utilisation

X = A/B A = nb fonctions décrites

dans le guide logiciel.B = nb total de fonctions.

0 < = X < = 1 Près de 1 -> plus complet.

Opérabilité

Quelle opération se

comporte de la même façon

aux opérations semblables

dans d'autres parties du système ?

Métrique d’opérabilité

X=1 - A/BA= nb opérations

incohérentesB= nb total d'opérations

0 < = X < = 1Près de 1 -> plus

cohérent.

Introduction Métriques Exercices Conclusion

Page 20: Aql métriques logicielles

La mesure de la qualité SI20

Introduction Métriques Exercices Conclusion

Indice instabilité, indice d’abstraction et la distance

Page 21: Aql métriques logicielles

La mesure de la qualité SI21

L'indice d'instabilité :

Introduction Métriques Exercices Conclusion

Pour le paquetage B Instable, on a : Ca = 0, puisqu'aucune classe ne dépend de ce paquetage. Ce = 3, puisque ce paquetage dépend de trois classes du paquetage

stable. Pour cet exemple, l'indice d'instabilité vaut 1/(1+0) = 1, ce

qui représente la valeur maximale de l'indice d'instabilité. Voyons maintenant l'indice d'instabilité du paquetage A

Stable: Ca = 3, puisque trois classes du paquetage instable dépendent de

ce paquetage. Ce = 0, puisque ce paquetage ne dépend d'aucun autre.

Cette fois, on obtient un indice d'instabilité de 0/(0+1) = 0. Tout ceci est cohérent : en effet, on voit bien que changer le

comportement du paquetage stable pourrait gêner le bon fonctionnement du paquetage instable. L'inverse n'est pas possible.

Page 22: Aql métriques logicielles

La mesure de la qualité SI22

L'indice d’abstraction:

Introduction Métriques Exercices Conclusion

A= I/T Trivialement, on voit que l'indice d'abstraction de chacun de

ces deux paquetages vaut 0 puisqu'ils n'ont aucune interface.

Page 23: Aql métriques logicielles

La mesure de la qualité SI23

La distance

Introduction Métriques Exercices Conclusion

Paquetage stable : Instability : 0 Abstractness : 0

Paquetage instable : Instability : 1 Abstractness : 0

En appliquant la formule, on obtient une distance from the main sequence de |0+0-1| = 1 pour le paquetage stable (A) et de |1+0-1| = 0 pour le paquetage instable (B).

Page 24: Aql métriques logicielles

La mesure de la qualité SI24

L'indice de spécialisation

Introduction Métriques Exercices Conclusion

La classe 1 hérite de la classe Object. Sur ce diagramme, la classe 2 hérite de la classe 1 mais ne redéfinit aucune méthode. La classe 3 hérite de la classe 2 et redéfinit les méthodes 1, 2 et 3.

Page 25: Aql métriques logicielles

La mesure de la qualité SI25

L’indice de spécialisation

Introduction Métriques Exercices Conclusion

Pour la classe 3, on a donc : NORM = 3, puisqu'on redéfinit trois méthodes. DIT = 3, il s'agit de la profondeur de la classe 3 dans l'arbre

d'héritage. NOM = 3, puisqu'au total, la classe 3 possède trois

méthodes (les trois méthodes redéfinies). Spécialisation = 3*3/3 = 3. Il s'agit d'un indice de spécialisation élevé donc refactoring.

Page 26: Aql métriques logicielles

La mesure de la qualité SI26

L’indice de spécialisation

Introduction Métriques Exercices Conclusion

Solution proposée: La classe 3 implémente maintenant la même interface que la classe 1, plutôt que de redéfinir toutes ses méthodes. Pour les quelques méthodes qui restent les mêmes (les méthodes 4 et 5), la classe 3 délègue les traitements à la classe 1.

Page 27: Aql métriques logicielles

La mesure de la qualité SI27

En utilisant la métrique McCabe, mesurez la complexité cyclomatique du graphe à droite:

McCabe

Introduction Métriques Exercices Conclusion

Page 28: Aql métriques logicielles

La mesure de la qualité SI28

Introduction Métriques Exercices Conclusion

McCabe

On a la formule : CCYC = a− n +e +s Dans notre exemple: a=16 ; n=13 ; e=1 et s=1 Donc CCYC= 16-13+1+1= 5 Condition: le nombre cyclomatic d'une fonction devrait être

inférieur à 15. Plus de 15 chemins sont difficiles à identifier et tester.

Interprétation: notre programme est stable et testable.

Page 29: Aql métriques logicielles

La mesure de la qualité SI

[1] Nadia Tawbi (1996) Modèles de qualité, Computer Based Learning Unit, University of Leeds, West Yorkshire, England.

[2] Norman E. Fenton, Shari Lawrence Pfleeger. 1997. Software metrics: a rigorous and practical approach. PWS Publishing Company.

[3] Bansiya, J. and Davis, C. G, A hierarchical model for object-oriented design quality assessment. IEEE Trans. 2002

[4] Martin Monperrus (2008), The measurement models by models: a generative approach - Université de Rennes 1 France.

[5] Michael Kläs, Klaus Lochmann, Lars Heinemann (2014), Evaluating a Quality Model for Software Product Assessments – A Case Study. Germany.

[6] Roland Kaschek, Lois M.L. Delcambre (2011). Springer Science & Business Media, 4 févr. Book: The Evolution of Conceptual Modeling.

[7] Norman E. Fenton, Shari Lawrence Pfleeger (1997). Software metrics: a rigorous and practical approach. PWS Publishing Company.

29

RÉFÉRENCES

Page 30: Aql métriques logicielles

MERCI POUR VOTRE ATTENTION