Abstract:
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)