Safe and practical decoupling of aspects with join point interfaces
Aspect-Oriented Programming (AOP) is an advanced technique for modularizing crosscutting concerns such as profiling, security, monitoring, among others. To do this, AOP introduces a new functional unit called aspect. In current aspect-oriented systems, aspects references to the base code. Those references are fragile and give up important software engineering properties such as modular reasoning and independent evolution of aspects and base code. In this thesis, we introduce a novel abstraction called Join Point Interfaces that, by design, supports modular reasoning and independent evolution by decoupling aspects from base code and by providing a modular type-checking algorithm. Join point interfaces can be used both with implicit announcement through pointcuts, and with explicit announcement by using closure join points. Join point interfaces further offer polymorphic dispatch on join points, with an advice-dispatch semantics akin to multi-methods. In this work, we show how our proposal solves a large number of problems observed in previous, related approaches. We have implemented join point interfaces as an open-source extension to AspectJ. An initial study on existing aspect-oriented programs supports our initial design in general, but also highlights some limitations which we then address by introducing parametric polymor- phism and a more permissive quantification mechanism. As a result, join point interfaces are a safe and practical way of decoupling aspects.
Magíster en Ciencias, Mención Computación