Learn More
Omniscient debuggers make it possible to navigate backwards in time within a program execution trace, drastically improving the task of debugging complex applications. Still, they are mostly ignored in practice due to the challenges raised by the potentially huge size of the execution traces. This paper shows that omniscient debugging can be realistically(More)
Behavioral reflection is a powerful approach for adapting the behavior of running applications. In this paper we present and motivate <i>partial behavioral reflection</i>, an approach to more efficient and flexible behavioral reflection. We expose the <i>spatial</i> and <i>temporal</i> dimensions of such reflection, and propose a model of partial behavioral(More)
Being able to define and use different aspect languages, including domain-specific aspect languages, to cleanly modularize concerns of a software system represents a valuable perspective. However, combining existing tools leads to unpredictable results, and proposals for experimentation with and integration of aspect languages mostly fail to deal with(More)
Context-aware applications behave differently depending on the context in which they are running. Since context-specific behaviour tends to crosscut base programs, it can advantageously be implemented as aspects. This leads to the notion of context-aware aspects, i.e., aspects whose behaviour depends on context. This paper analyzes the issue of appropriate(More)
Objects model the world, and state is fundamental to a faithful modeling. Engineers use state machines to understand and reason about state transitions, but programming languages provide little support for building software based on state abstractions. We propose Plaid, a language in which objects are modeled not just in terms of classes, but in terms of(More)
Aspect composition is a challenging and multi-faceted issue, generally under-supported by current AOP languages and frameworks. This paper presents the composition support provided in Reflex, a versatile kernel for multi-language AOP in Java. The core of Reflex is based on a model of partial reflection whose central abstractions are links: bindings between(More)
Aspect-Oriented Programming (AOP) is attracting attention from both research and industry, as illustrated by the ever-growing popularity of AspectJ, the <i>de facto</i> standard AOP extension of Java. From a compiler construction perspective AspectJ is interesting as it is a typical example of <i>compositional language, ie</i> a language composed of a(More)
In aspect-oriented programming languages, advice evaluation is usually considered as part of the base program evaluation. This is also the case for certain pointcuts, such as if pointcuts in AspectJ, or simply all pointcuts in higher-order aspect languages like AspectScheme. While viewing aspects as part of base level computation clearly distinguishes AOP(More)