Aspectual Collaborations: Combining Modules and Aspects
Karl Lieberherr, Northeastern University
David H. Lorenz, Northeastern University
Johan Ovlinger, Northeastern University
Complex behavior often resists clean modularization in object-oriented languages. Aspect-oriented programming tackles this problem by providing flexible module boundaries that can span and partition classes. However, in order to achieve this flexibility, valuable modularity mechanisms, such as encapsulation and external composition, are lost. The ability to separately compile or reason about a modular unit is also compromised. We propose that this tradeoff is not necessary, and that by expressing aspects as part of our modules, we can restore lost modular properties while maintaining aspectual features. As a concrete demonstration, we present the main features of Aspectual Collaborations, and show how these interact to combine modularity with aspectual behavior. The expressiveness of Aspectual Collaborations, AspectJ, and Hyper/J are compared using a challenge problem, allowing us to estimate the effectiveness of the approach.
Karl Lieberherr, David H. Lorenz, and Johan Ovlinger. "Aspectual Collaborations: Combining Modules and Aspects." The Computer Journal, 46(5):542-565, September 2003.
Old draft:
ac.pdf (922k) [Computer Jounal username required]
main.pdf (928k)
main.ps.gz (104k)
main.ps (335k)
Links:
http://www.ccs.neu.edu/research/demeter/biblio/aspects+modules.html
http://www.ccs.neu.edu/home/johan/research/bcs03.pdf
@Article{Rashid:2003:AOP, Author = {Awais Rashid and Lynne Blair}, Journal = "The Computer Journal", Month = sep, Number = 5, Pages = "527--528", Title = {Aspect-oriented Programming and Separation of Crosscutting Concerns}, Volume = 46, Year = 2003, Note = "Editorial", } @Article{Lieberherr:2003:ACC, Author = {Karl Lieberherr and David~H. Lorenz and Johan Ovlinger}, Journal = "The Computer Journal", Month = sep, Number = 5, Pages = "542--565", Title = {Aspectual Collaborations: Combining Modules and Aspects}, Volume = 46, Year = 2003, URL= "\url{http://www.ccs.neu.edu/home/lorenz/papers/ac/}", } @Article{Sihman:2003:SAO, Author = {Marcelo Sihman and Shmuel Katz}, Journal = "The Computer Journal", Month = sep, Number = 5, Pages = "529--541", Title = {Superimpositions and Aspect-oriented Programming}, Volume = 46, Year = 2003, } @Article{Clark:2003:AOM, Author = {Tony Clark and Andy Evans and Stuart Kent}, Journal = "The Computer Journal", Month = sep, Number = 5, Pages = "566--577", Title = {Aspect-oriented Metamodelling}, Volume = 46, Year = 2003, } @Article{Welch:2003:RSC, Author = {Ian~S. Welch and Robert~J. Stroud}, Journal = "The Computer Journal", Month = sep, Number = 5, Pages = "578--589", Title = {Re-engineering Security as a Crosscutting Concern}, Volume = 46, Year = 2003, }