Comparing White-box, Black-box, and Glass-box Composition of Aspect Mechanisms
Sergei Kojarski, Northeastern University
David H. Lorenz, University of Virginia
Abstract The manifestation of miscellaneous aspect-oriented extensions raises the question of how these extensions can be used together to combine their aspectual capabilities or reuse aspect code across extensions. While white-box composition of aspect mechanisms can produce an optimal compound mechanism, as exemplified by the merger of AspectJ and AspectWerkz into AspectJ 5, it comes with a high integration cost. Meanwhile, generic black-box composition can compose arbitrary aspect mechanisms, but may result in a compound mechanism that is suboptimal in comparison to white-box composition. For a particular family of aspect extensions, e.g.,AspectJ-like mechanisms, glass-box composition offers the best of two worlds. Glass-box may rely on the internal structure of, e.g., a pointcut-and-advice mechanism, without requiring a change to the code of the individual mechanisms. In this paper we compare white-, black-, and glass-box composition of aspect mechanisms. We explain subtle composition issues using an example drawn from the domain of secure and dependable computing, deploying a fault-tolerance aspect written in AspectWerkz together with an access-control aspect written in AspectJ. To compare the three composition methods, we integrate a TinyAJ extension with a TinyAW extension, and compare the results of running the aspects in a black-box framework and in a glass-box framework to the result of running these aspects in AspectJ 5. This work was supported in part by NSF’s Science of Design program under grants numbered CCF-0438971 and CCF-0609612, and by the Program for Secure and Dependable Computing at University of Virginia.
In Proceedings of the 9th International Conference on Software Reuse (ICSR9), LNCS 4039:246--259, Torino, Italy June 11-15, 2006.
http://dx.doi.org/10.1007/11763864_18 fulltext.pdf
@InProceedings{Kojarski:2006:CWB, Author = "Sergei Kojarski and David H. Lorenz", Crossref = "ICSR:9:2006", Title = "Comparing White-box, Black-box, and Glass-box Composition of Aspect Mechanisms", URL = "http://www.cs.virginia.edu/~lorenz/papers/icsr06/", Year = 2006, Pages = "246--259", } ---------- ICSR9 crossref begin ---------- @String{PROC = "Proceedings of"} @String{ICSR = "International Conference on Software Reuse"} @String{PROC:ICSR:9:2006 = PROC#" the 9$^{th}$ "#ICSR} @String{ICSR:9:2006 = "ICSR9 2006"} @Proceedings{ICSR:9:2006, Address = {Torino, Italy}, Booktitle = PROC:ICSR:9:2006, Number = 4039, Series = LNCS, Publisher = sv, xEditor = "", Key = ICSR:9:2006, Month = jun#{ 11-15}, Organization = ICSR:9:2006, Title = PROC:ICSR:9:2006, Year = 2006, } ---------- ICSR9 crossref end ----------