Playing with the idea of Aspect Programming for Reactive Systems
INP Grenoble - Verimag
2, avenue de Vignate, F38610 GIERES

Aspect programming means: 1) starting from a language or formalism that provides the constructs S for structuring programs (objects, parallel components, ...); 2) identifying an additional functionality F to be provided by a program P structured with S, and such that it cannot be implemented in P while {\em ``respecting''} S, because it is transverse to the existing structure; 3) specifying this transverse modification needed for P; 4) generating the modified program P' by {\em weaving} new code into P.

Aspect programming tools like AspectJ concentrate on the expressivity of the aspect specification language and the efficiency of the weaving tool. There are very few attempts at defining aspects semantically.

We concentrate on reactive systems, because there are a lot of simple and expressive formal models than can be used, based on traces and automata. Moreover, the main construct in the programming languages of the domain is the parallel composition, and the notion of {\em transverse} modification is quite natural.

Slides (.pdf)