• Aucun résultat trouvé

Formalisme des programmes orientés aspect

5.3 Mesure de métriques

5.3.1 Formalisme des programmes orientés aspect

Un formalisme facilite la définition des métriques et la construction d’outils pour calculer ces métriques automatiquement. La Figure 5.4 illustre la construction d’un ou-til de mesure sans formalisme. Un analyseur syntaxique construit un modèle pour un système, et les métriques sont définies sur ce modèle. Le premier problème avec cette approche est qu’il peut être difficile de définir les métriques directement sur le modèle du système, selon la complexité du langage et du modèle. Le second problème est ren-contré lorsqu’on veut que l’outil supporte un nouveau langage. Il faut construire un nouvel analyseur syntaxique, et redéfinir les métriques pour le nouveau modèle. S’il y a beaucoup de métriques à définir, cela peut devenir très coûteux. La Figure 5.5 illustre la construction d’un outil de mesure avec un formalisme. Il y a toujours besoin d’un nouvel analyseur syntaxique qui construit un modèle pour le nouveau langage, mais le modèle est traduit dans le formalisme, et les métriques sont définies sur le formalisme. Cela facilite la définition des métriques car le formalisme est de plus haut niveau que le modèle. Si on veut que l’outil supporte un nouveau langage, il faut toujours construire un nouvel analyseur syntaxique, mais au lieu de redéfinir toutes les métriques, il suf-fit de traduire le modèle du nouveau langage dans le formalisme. Les métriques sont ensuite automatiquement définies pour ce nouveau langage.

Briandet al.[Briand 99] ont proposé un formalisme pour définir des métriques pour des programmes orientés objet. Nous proposons d’étendre ce formalisme pour prendre en compte les aspects. Le but de cette extension est d’abstraire les systèmes écrits dans un langage à la fois orienté objet et orienté aspect.

Système

Définition 1 Système, classes, héritage.Un système orienté aspect consiste en un ensemble de classes, C. Il peut exister des relations d’héritages entre les classes telles que pour chaque classec∈C:

– P arents(c)⊂Cest l’ensemble des classes parentes dec. – Children(c)⊂Cest l’ensemble des classes enfantesc. – Ancestors(c)⊂Cest l’ensemble des classes ancêtres dec.

– Descendents(c)⊂Cest l’ensemble des classes descendantes dec.

Méthodes

Définition 2 Méthodes d’une classe. Pour chaque classec ∈ C, soitM(c) l’ensemble des méthodes dec.

Définition 3 Méthodes déclarées et implémentées.Pour chaque classec∈C, soit : – MD(c)⊆M(c)l’ensemble des méthodes déclarées dansc, c’est-à-dire les méthodes quec

hérite mais ne redéfinit pas ou les méthodes virtuelles dec. 1http://www.eclipse.org/modeling/emf/

CHAPITRE 5. FORMALISME ET ANALYSE 105 – MI(c) ⊆ M(c) l’ensemble des méthodes implémentées dansc, c’est-à-dire les méthodes

quechérite et redéfinit ou les méthodes non-virtuelles et non-héritées dec.

– MA(c)⊆ M(c)l’ensemble des méthodes inter-types pourc, c’est-à-dire les méthodes de

cdéclarées et implémentées par une autre classe. où{MD(c), MI(c), MA(c)}est une partition deM(c).

Définition 4 M(C)est l’ensemble des toutes les méthodes dans le système :

M(C) = [

c∈C

M(c)

Invocations

Définition 5 Soitc∈C,m∈MI(c), etm ∈M(C). Alorsm ∈SIM(m) ⇔ ∃d∈ Ctelle quem∈M(d)et le corps deminvoque la méthodemsur un objet de type statiqued.

Définition 6 Soitc∈C,m∈MI(c), etm ∈SIM(m).NSI(m, m

)est le nombre d’invoca-tions parmdem sur un objet de type statiqued, etm ∈M(d).

Définition 7 Soit c ∈ C, m ∈ MI(c), et m

∈ M(C). Alors m

∈ PIM(m) ⇔ ∃d ∈ C

telle quem ∈M(d)et le corps dempeut invoquerm, à cause du polymorphisme et des liens dynamiques, sur un objet de type dynamiqued.

Définition 8 Soitc∈C,m∈MI(c), etm ∈PIM(m).NPI(m, m)est le nombre d’invoca-tions dansmoùm peut être invoquée sur un objet de type dynamiqued, etm ∈M(d).

Greffons

Définition 9 Greffons tissés (WA). Soitc ∈ C,m ∈ MI(c), etm ∈ M(C). Alorsm ∈ WA(m)⇔ ∃d∈C, m ∈MI(d)etmest tissé dans le corps dem.

Définition 10 Soitc∈ C,m ∈MI(c), etm ∈ WA(m).NWA(m, m)est le nombre de fois oùmest tissé dansm.

Les greffons sont des méthodes tissées dans d’autres méthodes. Attributs

Définition 11 Attributs d’une classe.SoitA(c)l’ensemble des attributs de la classec∈C. Définition 12 Attributs déclarés et implémentés.Pour chaque classec∈C, soit :

– AD(c)⊆A(c)l’ensemble des attributs déclarés dans la classec(c’est-à-dire les attributs hérités).

– AI(c)⊆A(c)l’ensemble des attributs implémentés dans la classec(c’est-à-dire les attri-buts non-hérités).

106 CHAPITRE 5. FORMALISME ET ANALYSE

– AA(c) ⊆ A(c) l’ensemble des attributs inter-types de c, c’est-à-dire les attributs de c

définits par une autre classe.

où{AD(c), AI(c), AA(c)}est une partition deA(c).

Définition 13 A(C)est l’ensemble de tous les attributs du système :

A(C) = [

c∈C

A(c)

Définition 14 SoitAR(m)l’ensemble des attributs référencés par la méthodem∈M(C).

Prédicat

Définition 15 Utilise.Soitc∈C,d∈C.

utilise(c, d) ⇔ (∃m∈MI(c),∃m ∈MI(d), m ∈PIM(m))∨

(∃m∈MI(c),∃a∈AI(d), a∈AR(m))∨

(∃m∈MI(c),∃m

∈MI(d), m

∈WA(m))

Ce prédicat indique qu’une classecutiliseune classed, si elle invoque une méthode définie pard, si elle référence un attribut ded, ou sida une méthode qui est tissée dans

c.

Discussion

Il existe plusieurs langages orientés aspect qui ont tous des spécificités et des conce-pts communs. La plupart de ces langages peuvent être abstraits à l’aide du formalisme proposé.

Classes spécifiques Certains langages introduisent un nouveau type de classe, uti-lisé pour encapsuler les nouveaux concepts de la programmation orientée aspect. En AspectJ ces classes spécifiques sont appelées aspects(mot-clé «aspect»). En CaesarJ ces classes sont appeléescclass(mot-clé «cclass»). D’autres langages comme Aspect-Werkz ou JBoss AOP n’ont pas de classe spécifique.

Dans le formalisme proposé, les classes et les classes spécifiques ne sont pas dis-tinguées. Les différences sont très spécifiques et parfois seulement syntaxiques, il n’y a donc pas d’intérêt à formaliser ces différences.

Greffons Dans la plupart des langages orientés objet, un greffon est une méthode et ce qui est tissé est une invocation de cette méthode. En AspectJ et CaesarJ, une syn-taxe spécifique est utilisé, tandis qu’en JBoss AOP et AspectWerkz les greffons sont des méthodes java.

Dans le formalisme proposé, les greffons et les méthodes ne sont pas distinguées, pour les mêmes raisons que pour les classes spécifiques.

CHAPITRE 5. FORMALISME ET ANALYSE 107 Expression de point de coupe Les expressions de point de coupe sont le concept de la programmation orientée aspect qui diffère le plus entre les différents langages orientés aspect. Ils peuvent être définis en utilisant une syntaxe spéciale (AspectJ, CaesarJ), des annotations (AspectJ, AspectWerkz, JBoss AOP), ou xml (AspectWerkz, JBoss AOP).

Dans ce formalisme, nous considérons que les expressions de point de coupe ont été résolues et il y a une relation entre les méthodes pour déterminer les méthodes qui sont tissées dans d’autres méthodes. Le concept d’expression de point de coupe n’est donc pas directement formalisé.

Résumé des extensions

Le formalisme proposé est une extension du formalisme proposé par Briand et al.[Briand 99] pour prendre en compte les aspects. Si le système n’a pas d’aspect, les deux formalismes sont équivalents. Voici un résumé des changements apportés. Définitions inter-types Les définitions inter-types sont des méthodes ou des attributs d’une classe qui sont définis par un aspect. L’extension pour les définitions inter-types consiste en deux ensembles,MA(c)et AA(c).MA(c)est l’ensemble des méthodes dec

définies à l’extérieur decpar des aspects.AA(c)est l’ensemble des attributs decdéfinis à l’extérieur decpar des aspects.

Greffons Comme expliqué dans la discussion de la section précédente, les greffons sont des méthodes. L’extension pour les greffons consiste enW A(m)etN W A(m, m

).

W A(m)est l’ensemble des greffons tissés dans la méthodem.N W A(m, m)est le nom-bre de fois oùm est tissé dansm. Le prédicatutilisea aussi été modifié pour prendre en compte les greffons.