Nov 27, 2012: Tim Molderez: Tackling obliviousness in aspects with data-flow analysis and design by contract

November 27, 2012Tackling obliviousness in aspects with data-flow analysis and design by contract
Room: Zi 5126Tim Molderez

Aspect-oriented languages allow crosscutting concerns to be modularized at a syntactic level. It is however a well-known problem that, due to the implicit nature of pointcuts, each aspect is essentially only aware of itself. This means that the remainder of the system is oblivious towards the existence of aspects, including how they interact with the system. As a result, this notion of obliviousness may lead to unexpected or undesired behaviour. Our aim is to identify such undesired behaviour with data-flow analysis and design by contract.
Using data-flow analysis we can statically, as well as incrementally, detect the interactions caused by each aspect. More specifically, our focus lies in exposing data dependencies, i.e. to find which variables may be modified within the execution of an advice, and may later affect the base system or some other aspect. Detecting such an interaction by itself however does not indicate whether it will cause desired or undesired behaviour. As design by contract is a well-known approach to specify the desired behaviour of an application, we can make use of the system's contracts to find out whether or not a particular interaction may cause a contract violation in the base system or another aspect. By doing so, we can detect which aspects are harmless, which ones may cause undesired behaviour and why.