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.

Formal semantics for stateful aspect languages

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 language [DMS01].

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 [DFS04-2].

Interaction analysis, aspect composition and aspect applicability conditions

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 fundamental concepts:

Type systems  

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 [DSJ07].


[DMS01] R. Douence, O. Motelet, M. Südholt
"A formal definition of crosscuts", Proceedings of the 3rd International Conference on Reflection, LNCS 2192, Sep. 2001

[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 (GPCE'02), preprint version, Oct. 2002

[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), Mar. 2004.

[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   NEW!
"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