Mesures orientées objet GEF492A 2014 Référence: [HvV §12.1.6] Capt Vincent Roberge Collège Militaire Royal du Canada Génie électrique et génie informatique roberge.segfaults.net PPL23-MesureOrientéeObjet
2 Automne 2014GEF492 Aperçu Mesures types utilisées avec code orienté objet La suite de mesure CK Méthodes pondérées par classe Profondeur de la classe dans l’arbre d’héritage Nombre d’enfants Couplage entre classes objet Réponse d’une classe Manque de cohésion d’une méthode
3 Automne 2014GEF492 L’habilité à maintenir et la réutilisation sont fonctions de la qualité du produit Les aspects de la qualité de la conception incluent: complexité basée sur la grandeur et la structure structure du système dépendances entre modules (dernière séance) abstraction procédurale – de données – de contrôle modularité cohésion et couplage masquage d’information Qualité de conception Qualité du produit (cette séance)
4 Automne 2014GEF492 Mesures types utilisées avec code orienté objet Au niveau de méthodes, on peut utiliser les mesures intramodules typiques (comme la complexité cyclomatique) donne une évaluation des caractéristiques de qualité du design du code inclut dans les méthodes par contre, ne fournit pas d’évaluation des caractéristiques de qualité au niveau de l’objet (ou de la classe) Au niveau objet, on pourrait utiliser les mesures intermodules typiques (comme l’impureté de l’arbre) ont des bénéfices limités ne mesure pas plusieurs des caractéristiques de qualités orientées objet désirables.
5 Automne 2014GEF492 Caractéristiques d’un bon design OO Grandeur on veut des classes qui sont petites et simples, et qui sont facilement maintenues et réutilisées Hiérarchie en plus d’une bonne hiérarchie architecturale (comme un arbre), on désire des hiérarchies d’héritage très claires Abstraction on veut des classes qui représentent bien l’essence du domaine du problème, mais qui cache la solution Cohésion on veut forte cohésion fonctionnelle et de données Couplage on veut un couplage interclasses très faible
6 Automne 2014GEF492 La suite de mesures CK Méthodes pondérées par classe (MPC) Profondeur de la classe dans l’arbre d’héritage (PAH) Nombre d’enfants (NDE) Couplage entre classes objet (CEO) Réponse pour une classe (RPC) Manque de cohésion d’une méthode (MCDM) * CK - Chidamber and Kemerer [1994]
Example 7 Class Class2 Class11 Class1 Class21Class22 Class23 Class211 Class21 Constructor1( ) Constructor2( ) SetSomeAttribute( ) GetSomeAttribute( ) Sort(Array a) Sort() Automne 2014GEF492
8 Automne 2014GEF492 Exemple
9 Automne 2014GEF492 Méthodes pondérées par classe (MPC) Une mesure de grandeur les classes plus grandes sont plus complexes, prenant plus de temps à développer / maintenir, et sont moins réutilisables On calcule la complexité de chaque méthode (eg. en utilisant la complexité cyclomatique de McCabe) On additionne les mesures de complexité pondérées MPC = c i * w i où w i = 1/nombre de méthodes {poids égal} Exemple: (Class21) MPC = ( )/5 = 1.6 Exemple
10 Automne 2014GEF492 Profondeur de la classe dans l’arbre d’héritage (PAH) La longueur maximale d’un nœud à la racine Comme la PAH grandit, les classes de bas niveau héritent de plusieurs méthodes les rendant plus difficiles à comprendre La complexité de design augmente Par contre … une grande mesure de PAH implique bonne réutilisation Les valeurs de PAH doivent être équilibrées Exemple: (Class21) PAH = 2 Exemple
11 Automne 2014GEF492 Nombre d’enfants (NDE) Les sous-classes qui sont immédiatement subordonnées à une classe dans la hiérarchie Un grand NDE implique haute réutilisation Par contre … comme le NDE augmente l’abstraction du parent peut être diluée maintenance / réutilisation devient plus difficile le nombre de cas spéciaux augmente Exemple: (Class21) NDE = 1 Exemple
12 Automne 2014GEF492 Couplage entre classes objet (CEO) un compte du nombre de classes qui: accède une méthode ou variable dans la classe titre, ou contiennent une méthode ou une variable accédée par la classe titre On désire garder cette valeur très basse un grand couplage est une indication d’interdépendances fortes, ce qui veut dire que la maintenance et la réutilisation seront difficiles Exemple: (Class21) CEO = 2 {dépendances tri( )} Exemple
13 Automne 2014GEF492 Réponse pour une classe (RPC) Également une mesure de couplage (profondeur du couplage vs. nombre de couples) Mesures du nombre de méthodes dans une classe qui peuvent être exécutées en réponse à un message reçu par un objet de cette classe (incluant méthodes dans les classes de base) On veut également que cette mesure soit basse
14 Automne 2014GEF492 Manque de cohésion d’une méthode (MCDM) Il s’agit de la mesure inverse de la cohésion d’une classe Compte du nombre de méthodes qui n’ont pas un attribut en commun avec au moins une autre méthode Une grande mesure indique que les méthodes et attributs sont reliés à plusieurs classes ou fonctions On veut une basse mesure Plusieurs autres versions de MCDM ont été définies
15 Automne 2014GEF492 Références supplémentaires Roger S. Pressman. Software Engineering - A Practitioner’s Approach 5th Edition, Sections 24-3,4. McGraw-Hill, ISBN S.R. Chidamber and C.F. Kemerer. ”A Metrics Suite for Object-Oriented Design.” IEEE Transactions on Software Engineering, 20(6): ,1994.
OBJECTIFS DE VÉRIFICATION ET VALIDATION Prochaine séance: Automne 2014GEF492 16