Mercredi 26 mars 2008, 14h-17h, Amphi 4

Aspect-oriented Programming

Anya Helene Bagge, Institutt for Informatikk, Universitetet i Bergen, Norway

Separation of concerns is the idea of breaking down a program into encapsulated pieces that overlap in functionality as little as possible. Encapsulated entities, such as classes, methods or modules, are more manageable, easier to test and maintain, and may be reused more easily than a large, entangled program. A cross-cutting concern is something that cannot be encapsulated using normal abstraction mechanisms, thus defeating separation of concerns. A classical example of this is logging (e.g., logging calls and returns to a file while the program is running) - the logging code needs to be added to every applicable method in the program. The logging code for each method may be almost identical, creating an undesirable overlap in functionality. Aspects let a programmer implement a cross-cutting concern as a separate entity, through advice (how a concern should be implemented) and join points (where it should be implemented). I will give an introduction to aspect-orientation and aspect languages, and also talk a bit about domain-specific aspect languages.

Anya Helene Bagge is a research fellow at the University of Bergen, Norway. Her research interests include programming language design, program transformation, parallel computer architectures and program optimisation.

Context-oriented Programming with ContextL

Pascal Costanza, Vrije Universiteit, Brussel, Belgium

Context-oriented Programming allows one to modularize a software system using partial class and method definitions organized into layers. Layers are composed into or out of the system depending on the context apparent during program execution. The basic concept of layers as partial program definitions has been suggested before, but with our approach we extend this idea by the notion of dynamically scoped layer activation, resulting in a viable approach for expressing context-dependent behavior. We will discuss the basic language constructs for Context-oriented Programming, the development of non-trivial examples, implementation issues, especially with regard to retaining efficient method dispatch, integration with the CLOS Metaobject Protocol, and if time permits, advanced topics like ContextL's reflective facilities for controlling layer activation and deactivation.

Pascal Costanza has a Ph.D. degree from the University of Bonn, Germany, and works as a research assistant at the Programming Technology Lab of the Vrije Universiteit Brussel, Belgium. His past involvements include specification and implementation of the languages Gilgul and Lava, and the design and application of the JMangler framework for load-time transformation of Java class files. He has also implemented ContextL, the first programming language extension for Context-oriented Programming based on CLOS, and aspect-oriented extensions for CLOS. He is furthermore the initiator and lead of Closer, an open source project that provides a compatibility layer for the CLOS MOP across multiple Common Lisp implementations.