Foundations of AOP
I have participated in different work on the foundation of AOP, in
particular on formal semantics for stateful aspect languages, static
analysis of interactions among aspects and, most recently, type
systems for aspects.
I have been involved, along with Rémi Douence (a colleague from EM
Nantes), in one of the very first formal definition of a stateful
pointcut language, the first by transformation into a functional
With Rémi Douence and Pascal Fradet (then INRIA-Rennes) I have
introduced an operational, small-step semantics, for regular
aspects. In this formal framework we have given a first formal
definition of two weaving algorithms that do or do not apply
aspects to behavior introduced by other aspects (respectively called
visible and silent weaving) [DFS02]. A later paper extended
the original framework by the definition and use of variables in
stateful (in this case, regular) pointcuts, [DFS04-1].
These semantics are presented in a more informal (and hopefully more
accessible) manner as part of the AOSD book by Addison-Wesley
The first formally-defined static analysis for the interaction
of (regular) aspects has been defined in [DFS02]. In this
work, interaction is defined as the application of several aspects at
the same execution event. The corresponding analysis has later been
extended to stateful pointcuts with variables [DFS04-2].
These papers have also provided formal definitions for two other
- Aspect composition operators that allow to resolve aspect
- Aspect application conditions that enable aspect
application to be restricted based on semantic conditions on the
behavior of the base program. Applicability is defined in terms of
the absence of a special kind of interactions.
Recently, with Bruno De Fraine and Viviane Jonckers (Vrije
Universiteit Brussel), I have developed the first safe type
system for AspectJ-like aspects, in particular applying advice
with proceed to non-generic and generic Java
programs. (This type system extends the system proposed by
Jagadeesan et al.)
Technically, the safe application of advice to non/generic contexts is
achieved by separate type signatures for advice
and proceed and the use of type ranges to bound
application contexts from above and from below.
The principles of the type systems, examples and two implementations
are described in [DSJ08]. The full type system is presented in
- [DMS01] R. Douence, O. Motelet,
- "A formal definition of crosscuts",
Proceedings of the 3rd International Conference on Reflection, LNCS 2192,
- [DFS02] R. Douence, P. Fradet, M. Südholt
- "A framework for the detection and resolution of aspect interactions",
Proceedings of the ACM SIGPLAN/SIGSOFT Conference on
Generative Programming and Component Engineering
- [DFS04-1] R. Douence, P. Fradet, M. Südholt
- "Composition, Reuse and
Interaction Analysis of Stateful Aspects",
3rd Int. Conf. on Aspect-Oriented Software Development (AOSD'04),
- [DFS04-2] R. Douence, P. Fradet, M. Südholt
- "Trace-based Aspects",
in M. Aksit, C. Clarke, T. Ellrad, R. Filman (eds.):
"Aspect-Oriented Software Development",
Addison-Wesley Professional, Sep. 2004.
- [DSJ07] B. De Fraine, M. Südholt, V. Jonckers
- ""A Formal
Semantics of Flexible and Safe Pointcut/Advice Bindings", TR
SSEL 02/2007/a, Vrije Universiteit Brussel, Oct. 2007.
- [DSJ08] B. De Fraine, M. Südholt, V. Jonckers
- "StrongAspectJ: Flexible and Safe Pointcut/Advice
Bindings", 7th ACM Int. Conf. on
Aspect-Oriented Software Development (AOSD'08), March 2008.
last modification on 23 Dec. 2007 by Mario Südholt