Cooperative Aspect-Oriented Programming (Co-AOP)

 

Rationale

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 synergistically collaborate.

 

Results

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.

 

Publications

  1. K. Hoffman and P. Eugster. Cooperative Aspect-Oriented Programming. Science of Computer Programming, 74(5-6), 2009.
  2. K. Hoffman and P. Eugster. Towards Reusable Components with Aspects: An Empirical Study on Modularity and Obliviousness. ICSE 2008. More results
  3. K. Hoffman and P. Eugster. Bridging Java and AspectJ through Explicit Join Points. ACM PPPJ 2007.

 

Support

This project is currently financially supported by internal funds from Purdue University.

 

Members

K. Hoffman and P. Eugster