• Aucun résultat trouvé

approches Aspect

4 VERS UN OUTIL GÉNÉRIQUE D’EXTRACTION DES MÉTRIQUES

2 Étude comparative

2.1 Comparaison quantitative

2.1.2 Résultats obtenus

2.1.2.1 Résultats des métriques étendues de la programmation objet

Comme indiqué précédemment, les différentes métriques étendues de la programmation objet touchent trois facteurs importants du génie logiciel, que sont : la taille, le couplage et la cohésion. Le tableau 9 présente les résultats obtenus pour ces trois attributs :

Tableau 9 Résultats des métriques étendues de la programmation objet

METRIQUES DE TAILLE METRIQUES DE

COUPLAGE

METRIQUES DE

COHESION

LOCC WOM NOC NOO NOA CBC DIT LCOO

AspectJ 1568 540 31 334 62 452 2 111

JBoss AOP 2107 605 18 367 79 676 3 27

CaesarJ 1710 612 62 367 60 498/872 4 20

Meilleur résultat

pour la métrique AspectJ AspectJ JBoss AspectJ CaesarJ AspectJ AspectJ

CaesarJ Meilleur résultat pour l’attribut (taille, couplage, cohésion) AspectJ AspectJ

Dans ce qui suit nous allons présenter les résultats de chaque attribut.  Résultats de taille

La figure 32illustre graphiquement les résultats des métriques de taille pour AspectJ, JBoss AOP et CaesarJ (pour cette métrique un résultat faible est préférable).

Pour l’attribut de taille on considère l’approche qui donne de bons résultats pour la majorité des métriques de taille comme la meilleure. Par exemple, avec 13 patrons de conception AspectJ a donné les meilleurs résultats avec la majorité des métriques de taille par rapport à JBoss AOP et CaesarJ. Ces patrons sont : Commande, Composite, COR, Médiateur, Observateur, Poids mouche, Itérateur, Prototype, Stratégie, Visiteur 2, Constructeur, Patron de méthode, Etat. La plus part de ces patrons sont des patrons de comportement ou il y a plusieurs interactions entre les composants constituant leurs solutions.

Le patron de conception Mémento donne des résultats différents pour les trois approches. AspectJ prend la première place pour le nombre de lignes de code, JBoss AOP dans le nombre des enfants et CaesarJ dans le nombre d’opérations. Dans les deux autres métriques les trois approches donnent des résultats similaires. Cela nous a empêché de classifier les approches pour ce patron.

Visiteur1 (La première variante de l’implémentation du patron Visiteur) donne des bons résultats pour AspectJ et JBoss AOP avec les trois métriques : WOM, NOC, NOA, Cependant, sa réalisation a pris peu de lignes de code avec AspectJ comparé à celle de JBoss AOP, en revanche peu de méthodes sont utilisées avec la solution JBoss AOP.

82

Prototype, Décorateur, Fabrique abstraite, Pont, Fabrique, et Interpréteur donnent des résultats meilleurs avec CaesarJ. La majorité de ces patrons sont des patrons de structure, ce qui prouve l’efficacité de CaesarJ dans la résolution des problèmes de structure.

 Résultats du couplage

Comme nous avons déjà mentionné, CaesarJ présente une nouvelle méthode pour la modularisation, il offre une nouvelle approche de conception, ainsi il utilise un mécanisme de classes virtuelles qui permet aux cclasses de contenir d’autres cclasses de la même manière que d’avoir des méthodes et des attributs. Ces classes internes sont elles aussi des classes virtuelles et elles ont des propriétés différentes de celles de Java. Conceptuellement, la relation entre les classes internes affecte l’attribut de couplage.

Dans notre étude nous avons pris en compte deux types de couplage avec CaesarJ, pour cette raison nous allons avoir deux résultats pour l’attribut de couplage dans le diagramme de résultats (i.e. Prendre en compte le couplage produit entre les classes internes dans le premier calcul, et négliger ce genre de couplage dans le deuxième)

La Figure 31 résume les résultats de couplage avec le patron de conception Observateur, la première ligne et colonne représentent les cclasses de la solution où chaque cclasse peut contenir d’autres cclasses internes.

Nous avons deux résultats, le premier est obtenu en prenant en charge le couplage produit entre les classes internes. Par exemple dans le compte de la métrique CBCI d’ObserverProtocol cclass les deux classes internes sont

couplées ensemble. En effet, la classe virtuelle Observer appelle la classe interne Subject et vice versa, ce qui donne un résultat de 2. Par contre la cclass ObserverProtocol ne fait aucun appel à une autre cclass ce qui donne un résultat négatif pour cette cclasse.

La figure 33 illustre graphiquement les résultats des métriques de couplage pour : AspectJ, JBoss AOP et CaesarJ (un couplage faible est préférable) La majorité des patrons de conception implémentés avec AspectJ donnent des bons résultats pour l’attribut de couplage. Ces patrons sont : Commande, Composite, COR, Médiateur, Observateur, Poids mouche, Itérateur, Mémento, Prototype, Adaptateur, Stratégie, Visiteur1, Visiteur2, Pont, Constructeur, Patron de méthode, Interpréteur et Etat.

Quatre patrons de conception ont donné les meilleurs résultats pour JBoss AOP ces patrons sont : Singleton, Décorateur, Proxy et Etat. Tous ces patrons utilisent des intercepteurs dans leurs réalisations ce qui réduit le couplage produit entre les éléments de leurs solutions.

Dans le cas où on prend en compte le couplage produit entre les classes internes, CaesarJ donne des mauvais résultats. Seulement trois patrons de conception donnent des bons résultats. Ces patrons sont : Adaptateur, Décorateur et Fabrique abstraite. Par contre, si on néglige ce genre de couplage on trouve que CaesarJ donne des bons résultats avec six patrons de conception, que sont : Adaptateur, Décorateur, Pont, Fabrique abstraite, Constructeur, et Fabrication. Notons que la plupart de ces partons sont des patrons de structure aussi.

Figure 31 Résultats de couplage du patron de conception Observateur (Avec CaesarJ)1[Debboub, 2014]

Décorateur donne de bons résultats avec JBoss AOP et CaesarJ, le déploiement dynamique des aspects offert par ces deux approches était très utile dans l’implémentation du patron de conception Décorateur, où l’intention de ce dernier exige d’attacher des responsabilités supplémentaires à un objet dynamiquement.

 Résultats de cohésion

La figure 34 illustre graphiquement les résultats de cohésion pour : AspectJ, JBoss AOP et CaesarJ (une cohésion forte est préférable)

Dans l’attribut de cohésion les trois approches ont donné de bons résultats, cela est dû à l’efficacité des nouveaux concepts introduit par la programmation orientée aspect et qui améliore la modularisation. Cependant, dans cet attribut, AspectJ a donné l’occasion à CaesarJ pour prouver sa force. Quelques patrons de conception ont montré un manque de cohésion avec AspectJ, comme Commande, Composite, Observateur et Interpréteur. L’approche CaesarJ est basée essentiellement sur le principe qui insiste sur le rassemblement de composants qui travaillent ensemble, ce qui explique les bons résultats de CaesarJ par rapport aux autres approches dans l’attribut de cohésion.

1

84

86

2.1.2.2 Résultats des métriques spécifiques pour la programmation orientée