Turning Spaghetti into ...

Lasagne

Aspect-Oriented Middleware for Context-Sensitive and Dynamic Customization of Distributed Services

What's Lasagne About

We are developing the Lasagne model that supports aspect-oriented software development (AOSD) such that

Lasagne is used for the construction of customizable middleware and distributed services

Problem Description

In aspect-oriented software development (AOSD) research, it has been recognized that a slice of behavior affecting a set of collaborating objects is a better unit of reuse than a single object. Different techniques and language extensions have been proposed to express such slices in programming languages.

The aim of this project is to investigate how AOSD methods can be used for the customization of distributed systems, middleware platforms and on-line services. We particularly focus on solving the problem of the need for context-sensitive customization of such systems. The need for context-sensitive customization can be described as:
clients of an on-line service must be able to customize this service for use in their own contexts (without affecting the service behavior that is delivered to other clients of that service).
It is important to understand that due to the Internet success, an on-line service is at the same time used by hundreds or even thousands of simultaneously requesting client systems, where each client system may have different - possibly conflicting - preferences about how the service must be customized to their needs. So multiple client-specific views must simultaneously be taken into account during the customization process of such a system.

In order to get a grip at this problem, we present the customization process of a core system as a dynamic and selective integration of extensions to the core system on per client request basis. According to the AOSD approach, each extension implements a reusable slice of behavior. However in order to make AOSD feasible for context-sensitive customization of on-line services, AOSD techniques must be improved in the following ways:

The Approach Taken

We have developed an architecture for run-time and context-sensitive combination of aspects. Note that we are not focussing on new high-level programming concepts nor pointcut definitions that improve existing aspect-oriented programming languages. Our sole intention is to develop a run-time aspect weaving mechanism that can be integrated on top of existing object-oriented and aspect-oriented programming languages and middleware platforms

Our approach is based on a non-invasive, aspect-oriented, per-instance, per-collaboration component extension mechanism; the idea behind this mechanism is changing the behavior of the system without changing the code of core components, but instead encapsulating them within wrappers. In turn, wrappers can be encapsulated in other wrappers if needed.

Non-invasive extension mechanism. Wrappers support separation of concerns, since code for implementing a concern can be completely encapsulated in a wrapper. As was described above, subsequent composition of concerns is supported by conjunctive encapsulation of such wrappers.

Aspect-oriented extension mechanism. According to the AOSD approach, wrappers are grouped into extensions that encapsulate a slice of reusable behavior. An extension may update multiple components at the same time, where each wrapper of that extension is decorated around another component.

Per-instance extension mechanism. Since wrappers operate at the instance-level, run-time composition of extensions becomes feasible.

Per-collaboration extension mechanism. Selection of extensions happens per client request. Since a client request triggers a collaboration that executes over the entire core system, special attention is paid on maintaining consistency: Once an extension is selected for a client request, this decision must be coordinated all over the core system such that all wrappers of that extension are applied.

The Underlying Framework

Context-sensitive customization builds upon propagation of the calling and deployment context within the core system. Context is reified by contextual properties which stem from the clients or configurator/deployer of that system. Example contextual properties are client-specific preferences, method call history, message arguments, etc.

The underlying programming language or middleware platform must implement a method dispatch mechanism that supports a run-time combination of wrappers on a per collaboration basis, while taking the contextual properties into account. First, by means of programmable interceptors contextual properties can be defined and attached to specific collaborations. Second, another kind of interceptors inspect the values of these contextual properties to decide which extensions should be executed for each ongoing collaboration. More specifically, the latter kind of interceptors supports some kind of predicate dispatching over the context. They can specify that an extension should be executed when a programmer-defined expression over the contextual properties is true. Third, the run-time wrapper combination mechanism knows from this decision which extensions must be composed with the core system. Furthermore, this decision is propagated with the collaboration's message flow to enable consistent, system-wide dispatching to all the wrappers of a selected extension. As such, a modular predicate dispatch mechanism is achieved that allows for dispatching to aspect-oriented extensions in a consistent manner.

Interceptors at the server-side allow the system configurator to detect and override invalid customizations that were requested by clients.

Important Contributions

Selected Publications

Eddy Truyen, Dynamic and Context-Sensitive Composition in Distributed Systems, PhD thesis, K.U.Leuven, Belgium, November 2004 (pdf).

B. N. Joergensen and E Truyen, "Evolution of collective object behavior in presence of simultaneous client-specific views", International Conference on Object-Oriented Information Systems", Springer, 2003. (pdf)

E. Truyen and W. Joosen, "An Object Model With Feature-Based Dispatch for Context-Sensitive Behavior in Distributed Systems", Technical Report, Department of Computer Science, CW 527, 2008 (pdf)

E. Truyen, W. Joosen, P. Verbaeten, and B. N. Joergensen, "A metadata-driven approach that combines family polymorphism, delegation and flexible composition semantics", draft - available on request

E. Truyen, W. Joosen, P. Verbaeten, "Consistency Management in the presence of Simultaneous Client-Specific Views", accepted for International Conference on Software Maintenance (ICSM'2002), Montreal, Canada (pdf), (ps.gz) [IEEE copyright]

Eddy Truyen, Bart Vanhaute, Wouter Joosen, Pierre Verbaeten, Bo Noerregaard Joergensen, "Dynamic and Selective Combination of Extensions in Component-based Applications", in Proceedings of the 23rd International Conference on Software Engineering (ICSE'2001), May 2001, Toronto, Canada. (ppt) (pdf) (abstract) [IEEE copyright]

Eddy Truyen, Bo N. Joergensen, Wouter Joosen, "Customization of Object Request Brokers through Dynamic Reconfiguration", in Proceedings of Tools Europe 2000, June 2000, Mont-St-Michel, France (PDF) (postscript) (abstract) [IEEE copyright]

Bo Noerregaard Joergensen, Eddy Truyen, Frank Matthijs, Wouter Joosen. Customization of Object Request Brokers by Application Specific Policies. in Proceedings of the Middleware'2000 conference, April 2000, New York, USA. (PDF)(ps) (abstract) [Springer copyright]

Eddy Truyen, Bart Vanhaute, Wouter Joosen, Pierre Verbaeten, Bo N. Joergensen, "Customization of On-line Services With Simultaneous Client-specific Views", accepted for ICSE'2001 and ECOOP'2001 workshops on Advanced Separation of Concerns. (pdf)

Eddy Truyen, Bart Vanhaute, Wouter Joosen, Pierre Verbaeten, Bo Noerregaard Joergensen, "A Dynamic Customization Model for Distributed Component-Based Applications, accepted for International Workshop on Dynamic and Distributed Multiservice Architectures (DDMA 2001). (pdf), (extended version)

Downloads

Lasagne is an abstract model in the sense that it can be implemented on top of various platforms:

Contact us when you have troubles with using Lasagne. There are some small examples included that show you how to program Lasagne components and how to get them woven into an application.

Contact

Eddy Truyen
Bo N. Joergensen
Wouter Joosen