Cooperative Aspect-Oriented Programming (Co-AOP)
The potential of aspect-oriented techniques to adequately
capture cross-cutting concerns has yet to be fully realized. Indeed, authors
have detailed significant challenges in creating reusable aspect component
libraries. Proposed solutions include restricting the join point model,
inferring concern interaction, structuring base code through design rules. We
propose to reduce obliviousness in return for increased modularity through
explicit annotations in the mainline code, enabling a cooperative
aspect-oriented programming (Co-AOP) style where base code and aspects
Co-AOP leverages the concept of explicit join points (EJPs). These are introduced into the mainline code to delineate places and scope of advice application. EJPs have been implemented as extension to AspectJ based on the abc compiler, providing the developer the possibility of flexibly balancing our explicit join points and the more traditional oblivious ones. We have substantial empirical results backing the advantages of Co-AOP based on EJPs versus pure AOP achieved with AspectJ, based on comparisons of real-life software implemented in both ways and assessed in terms of well-known software metrics.
Explicit join points also bridge the gap between explicit event-based programming and more implicit aspect-oriented techniques. Our scoped EJPs are extremely expressive in that they allow arbitrary blocks of code to be advised and not only "atomic" events. Explicit join point arguments allow for arbitrary data to be shared in a controlled manner between mainline code and aspects.
This project is currently financially supported by internal funds from Purdue University.
K. Hoffman and P. Eugster