• Aucun résultat trouvé

3 Ingénierie dirigée par les modèles et Programmation

3.3 Programmation Orientée Aspects

3.3.2 Principes de la programmation par aspects

Afin de pallier les problèmes évoqués précédemment, la programmation par aspects propose de découpler les propriétés non fonctionnelles de la structure des modules de dé-composition d’un système (composant, par exemple).

Dans le contexte où la partie fonctionnelle de l’application est fondée sur les composants, la programmation par aspects consiste à réaliser une application en deux temps. Une pre-mière étape consiste à décomposer l’application en composants et aspects. Les différents

as-pects et composants sont définis séparément les uns des autres. Leurs implantations doivent être découplées, de sorte qu’elles ne se référencent pas les unes les autres. Ensuite, l’ap-plication est produite par la recomposition, également désigné sous le nom de tissage, de l’ensemble des aspects et des composants ainsi définis (voir figure3.11). Dans cette seconde étape, il faut spécifier les règles de recomposition.

Figure 3.11 — Décomposition d’une application dans l’AOP [Hachani,2002]

Cette recomposition est assuré par un mécanisme de composition : le tissage d’aspects (appelé en anglais, Aspect Weaving). Dans [Kiczales et al., 1997], le tisseur d’aspects est représenté comme un outil qui reçoit en entrée les codes sources des composants et des aspects, et qui émet en sortie un code tissé représentant le code source de l’application (voir figure3.12).

Figure 3.12 — Construction du code exécutable dans l’AOP [Hachani,2002]

En pratique, la programmation orientée aspect définit les notions suivantes [Kiczales et al.,1997] :

– Les points de jonction ("joinpoint"). Les points de jonction représentent des points, bien définis, dans le flot d’exécution des composants fonctionnels de l’application. Ce sont des éléments fondamentaux dans toute implantation par aspects. Ils sont relatifs à l’ensemble des points où les aspects interagissent avec les composants. Par exemple, l’invocation d’une méthode, l’accès à un attribut, l’accès à une instance d’une certaine classe.

– Les coupes ("pointcut"). Une coupe est un regroupement de points de jonctions. Un pointcut permet la définition des points de jonction à utiliser pour composer chaque aspect avec les composants.

attachés à un pointcut particulier. C’est le code qui définit le comportement de l’aspect. C’est le code que l’on veut intégrer à l’application. Mais il reste aussi à définir comment le code aspect va modifier le comportement du code applicatif. Ainsi, on précise si le code de l’aspect doit s’exécuter avant, après ou autour d’un point de jonction.

En conclusion, la programmation par aspects permet d’implémenter des préoccupations qui s’entrelacent avec le reste du système d’une manière modulaire. Ce paradigme permet de bénéficier des avantages de la modularité qui garantie un code plus simple, plus facile à développer et à maintenir et qui a un meilleur potentiel de réutilisation.

3.4 Conclusion

Dans ce chapitre, nous avons mis l’accent sur les concepts de base, les standards ainsi que les langages associés à l’ingénierie dirigée par les modèles. Le développement logiciel dirigé par les modèles a pour principal objectif de concevoir des applications en séparant les préoccupations et en plaçant les notions de modèles, méta-modèles et transformations de modèles au centre du processus de développement. L’IDM permet aussi de travailler à un niveau d’abstraction supérieur grâce au raisonnement autour des modèles. C’est pour-quoi nous avons choisi d’utiliser cette approche et les technologie développés autour. Aussi dans ce même chapitre, nous avons montré que la complexité du code source d’un système résulte, principalement, de l’enchevêtrement et de la dispersion du code des propriétés non fonctionnelles d’une application, dans la description de ses composants. Une solution à ce problème consiste à séparer et à découpler la définition de ces propriétés, respectant ainsi le principe de séparation des préoccupations.

C’est sur ce principe que la programmation orientée aspect été proposée. Elle constitue un outil technique efficace pour la séparation des préoccupations. Différentes implantations existantes. Elles ont toutes des avantages et des inconvénients. Chacune répond à un besoin spécifique.

Dans notre contexte, nous allons définir des aspect relatives aux patrons de sécurité ap-pliqués dans le modèle à composants. Cela garantit la séparation entre la partie fonctionnelle des composants et les aspects liés à la sécurité proposés par les patrons de sécurité.

Parmi les technologies et langages présentés dans ce chapitre nous avons choisi dans le cadre de cette thèse d’utiliser :

– UML 2.0 pour modéliser les composants car UML s’est imposé comme la référence en modélisation et génie logiciel. Ce standard est très utilisé dans l’industrie du logiciel et de nombreux outils permettant de créer, éditer et manipuler des diagrammes UML existent actuellement sur le marché en open source et gratuit.

– Les profils UML comme mécanisme d’extension du méta-modèle UML. Ce méca-nisme permet d’étendre UML pour supporter les concepts de sécurité.

– ATL comme langage de transformation de modèles. Nous fixons deux critères liés aux transformations de modèles que nous souhaitons établir dans le cadre de cette thèse : la simplicité d’établissement des règles et la possibilité de gérer des modèles et d’appliquer des profils UML. ATL semble répondre à ces deux critères. En plus d’être un outil libre, les règles ATL sont simples à mettre en œuvre. Son langage à base de

variables et d’affectation le rend accessible. De plus, ATL est considéré maintenant comme un standard de transformation dans Eclipse et est intégré depuis 2007 dans le projet UML2 Tools (un environnement Eclipse pour la gestion de modèles UML). – AspectJ comme une implémentation du paradigme aspect. Pour le développement

du prototype exposé au chapitre 6, nous avons utilisé AspectJ car il est totalement indépendant de l’environnement d’exécution. Il ne manipule pas la machine virtuelle Java ce qui le rend compatible de fait avec toutes les plates-formes composants. Comme nous l’avons rapidement indiqué, nous nous intéressons dans cette thèse l’in-tégration de la sécurité dans les applications à base de composants à partir des patrons de sécurité. Nous présentons dans le chapitre suivant différent travaux qui ont étudié cette intégration.

4

Travaux connexes : Vers le