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 ----------