160 likes | 247 Views
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 Vincent.roberge@rmc.ca roberge.segfaults.net PPL23-MesureOrientéeObjet. Aperçu.
E N D
Mesures orientées objetGEF492A 2014Référence: [HvV §12.1.6] Capt Vincent Roberge Collège Militaire Royal du Canada Génie électrique et génie informatique Vincent.roberge@rmc.ca roberge.segfaults.net PPL23-MesureOrientéeObjet
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 GEF492
Qualité de conception Qualité du produit • 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 (cette séance) GEF492
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. GEF492
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 GEF492
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] GEF492
Class21 Class22 Class21 Class1 Class23 Class2 Class Class211 Class11 Example Constructor1( ) Constructor2( ) SetSomeAttribute( ) GetSomeAttribute( ) Sort(Array a) Sort() Sort() GEF492
Exemple GEF492
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 = ci * wi où wi = 1/nombre de méthodes {poids égal} Exemple: (Class21) MPC = (1+1+1+1+4)/5 = 1.6 GEF492 Exemple
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 GEF492 Exemple
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 GEF492 Exemple
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( )} GEF492 Exemple
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 GEF492
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 GEF492
Références supplémentaires Roger S. Pressman. Software Engineering - A Practitioner’s Approach 5th Edition, Sections 24-3,4. McGraw-Hill, 2001. ISBN 0-07-365578-3 S.R. Chidamber and C.F. Kemerer. ”A Metrics Suite for Object-Oriented Design.” IEEE Transactions on Software Engineering, 20(6):476-493,1994. GEF492
Prochaine séance: Objectifs de vérification et validation GEF492