Section: New Results
Aspects
Participants : Luis Daniel Benavides Navarro, Simplice Djoko Djoko, Rémi Douence, Jacques Noyé, Angel Núñez, Mario Südholt.
Our results on aspects have focused on two main activities. First we provide expressive support for AOP by means of configurable interpreters, model of event handling to define context, and aspect-oriented languages for distribution. Secondly, we provide safe support for AOP by means of operational semantics, analysis of an aspect-oriented requirement description languages, categories of aspects and restricted languages that preserve classes of properties. The two approaches are complementary (some of our work belong to both approaches) and they mostly aim at facilitating the application of AOP in real-world contexts.
Declarative Definition of Contexts with Polymorphic Events
A context-aware application is an application that is able to adapt its behavior in order to best meet its users' need by taking into account context information. A modular notion of context is still difficult to provide when the context depends on events happening at different places in the application. We propose a new model [29] of event handling combining explicitly triggered events with events intercepted with aspect-oriented features. The model supports event abstraction, polymorphic references to events, and declarative definition of events as expressions involving references to events from other objects. We show that this model makes it easy to define a declarative and compositional notion of event-based context. We illustrate these ideas with examples in ECaesarJ, a language with concrete support for our model (see Sec. 5.2 ), and relate the events of ECaesarJ to other event-handling and context-handling models.
Expressive Scoping of Distributed Aspects
Dynamic deployment of aspects brings greater flexibility and reuse potential, but requires proper means for scoping aspects. Scoping issues are particularly crucial in a distributed context: adequate treatment of distributed scoping is necessary to enable the propagation of aspect instances across host boundaries and to avoid inconsistencies due to unintentional spreading of data and computations in a distributed system. We extended recent work on deployment strategies for non-distributed aspects and introduced a set of high-level strategies for specifying locality of aspect propagation and activation [31] . This work shows that, given some extensions to their original execution model, deployment strategies are directly applicable to the expressive scoping of distributed aspects.
AWED: aspects with explicit distribution
Luis Daniel Benavides Navarro defended his PhD thesis [12] on "Distributed Aspects: better separation of crosscutting concerns in distributed software systems". He has presented the currently most comprehensive aspect model and language that enable pointcuts to be defined in terms of sequences over events occurring on different hosts, and advice to be executed on multiple hosts that are defined relative to the hosts where the corresponding pointcut has been matched or where the encompassing aspect is deployed. Furthermore, he has introduced a notion of causal distributed sequence pointcuts and shown that these pointcuts permit distributed applications to be debugged that run two orders of magnitude faster than is possible if non-distributed debugging sessions are coordinated manually — as is the case, for example, if Eclipse is used for distributed debugging. Finally, he has validated the use of distributed aspects in the context of substantial real-world middlewares, especially JBoss Cache and Apache MQ.
As part of this PhD thesis the AWED system (see 5.1 ) has been designed and implemented. It has been applied to the adaptation of a satellite-based automatic tolling system that we have developed in the context of an industry cooperation with Siemens AG, Munich, Germany. This application has been presented as part of an article that is scheduled for publication in the journal “IEEE Computer” in 2010.
CALI: a common aspect language interpreter
One of the main elements of an Aspect-Oriented Programming language or framework is its pointcut language. Experimenting with AspectJ shows that two basic primitive pointcuts, call and execution, dealing with method invocation from the caller and callee standpoints, respectively, lead to confusion. This is due to a subtle interplay between the use of static and dynamic types to select execution points, dynamic lookup, and the expectation to easily select the caller and callee execution points related to the same invocation. As a result, alternative semantics have been proposed but have remained paper design. These various semantics can be reconsidered in a practical way by implementing them using CALI, our Common Aspect Language Interpreter. This framework reuses both Java as a base language and AspectJ as a way to select the program execution points of interest. An additional interpretation layer can then be used to prototype interesting AOP variants in a full-blown environment. This work [34] illustrates the benefits of applying such a setting to the case of the call and execution pointcuts. We show that alternative semantics can be implemented very easily and exercised in the context of AspectJ without resorting to complex compiler technology.
Property preservation in the presence of aspects
Simplice Djoko Djoko defended his PhD thesis [13] on "Aspect-oriented programming and preservation of properties" in June 2009. Aspect-Oriented Programming can arbitrarily distort the semantics of programs. In particular, weaving can invalidate crucial safety and liveness properties of the base program. In his thesis, Simplice Djoko Djoko has identified categories of aspects that preserve a larger set of classes of properties than previous approaches. It is then sufficient to check that an aspect belongs to a specific category to know which properties will remain satisfied by woven programs. These categories are defined precisely based on a language independent abstract semantics framework. The classes of properties are defined as subsets of LTL for deterministic programs and CTL* for non-deterministic ones. As part of the PhD, it has been proven that, for any program, the weaving of any aspect in a category preserves any property in the related class. He has also designed a specialized aspect language for each aspect category, which ensures that any aspect written in that language belongs to the corresponding category, and has proved that these languages preserve the corresponding classes of properties by construction.
Cross-document dependency analysis for system-of-system integration
Systems-of-systems are formed through integration of individual complex systems, often not designed to work together, a paradigmatic example being all systems that have to cooperate in case of a real-world emergency. A number of factors can make this integration very challenging which often leads to catastrophic failures. We have focused on three major classes of system-of-system integration problems: managerial independence, interface incompatibility, and component-system complexity. In this context, we have presented an aspect-oriented requirements description language (RDL) which uses natural language analysis capabilities to reason about dependencies across the documentation of the constituent systems of a system-of-systems [28] . The aspect-oriented compositions in the RDL also facilitate specification of cross-document constraints and inconsistency resolution strategies, which can be used for deriving proof obligations and test cases for verification and validation of the emergent behavior of a system-of-systems. We have showcased the capabilities of our RDL through a case study of a real-world emergency response system. Our analysis has shown that the querying and composition capabilities of the RDL provide valuable support for reasoning across documentation of multiple systems and specifying suitable integration constraints.