Thèse soutenue

FR  |  
EN
Auteur / Autrice : Ali Assaf
Direction : Pierre Cointe
Type : Thèse de doctorat
Discipline(s) : Informatique
Date : Soutenance en 2011
Etablissement(s) : Nantes
Ecole(s) doctorale(s) : École doctorale Sciences et technologies de l'information et mathématiques (Nantes)
Partenaire(s) de recherche : autre partenaire : École nationale supérieure des mines (Nantes ; 1990-2016)

Résumé

FR  |  
EN

The value of using different (possibly domain-specific) aspect languages to deal with a variety of crosscutting concerns in the development of complex software systems is well recognized. One should be able to use several of these languages together in a single program. However, on the one hand, developing a new Domain-Specific Aspect Language (DSAL) in order to capture all common programming patterns of the domain takes a lot of time, and on the other hand, the designer of a new language should manage the interactions with the other languages when they are used together. In this thesis, we introduce support for rapid prototyping and composing aspect languages based on interpreters. We start from a base interpreter of a subset of Java and we analyze and present a solution for its modular extension to support AOP based on a common semantics aspect base defined once and for all. The extension, called the aspect interpreter, implements a common aspect mechanism and leaves holes to be defined when developing concrete languages. The power of this approach is that the aspect languages are directly implemented from their operational semantics. This is illustrated by implementing a lightweight version of AspectJ. To apply the same approach and the same architecture to full Java without changing its interpreter (JVM), we reuse AspectJ to perform a first step of static weaving, which we complement by a second step of dynamic weaving, implemented through a thin interpretation layer. This can be seen as an interesting example of reconciling interpreters and compilers. We validate our approach by describing prototypes for AspectJ, EAOP, COOL and a couple of other DSALs and demonstrating the openess of our AspectJ implementation with two extensions, one dealing with dynamic scheduling of aspects and another with alternative pointcut semantics. Different aspect language implemented with our framework can be easily composed. Moreover, we provide support for customizing this composition.