Dynamic AspectC++: Generic Advice at Any Time

In theory, the expressive power of an aspect language should be independent of the aspect deployment approach, whether it is static or dynamic weaving. However, in the area of strictly statically typed and compiled languages, such as C or C++, there seems to be a feedback from the weaver implementation to the language level: dynamic aspect languages offer noticeable fewer features than their static counterparts. Especially means for generic aspect implementations are missing, as they are very difficult to implement in dynamic weavers. This hinders reusability of aspects and the application of AOP to scenarios where both, runtime and compile-time adaptation is required. Our solution to overcome these limitations is based on a novel combination of static and dynamic weaving techniques, which facilitates the support of typical static language features, such as generic advice, in dynamic weavers for compiled languages. In our implementation, the same AspectC++ aspect code can now be woven statically or dynamically into the Squid web proxy, providing flexibility and best of bread for many AOP-based adaptation scenarios.

[1]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[2]  Wim Vanderperren,et al.  JAsCo: an aspect-oriented approach tailored for component based software development , 2003, AOSD '03.

[3]  Olaf Spinczyk,et al.  The design and implementation of AspectC++ , 2007, Knowl. Based Syst..

[4]  Tzilla Elrad,et al.  Aspect-oriented programming: Introduction , 2001, CACM.

[5]  Wolfgang Schröder-Preikschat,et al.  Static and Dynamic Weaving in System Software with AspectC++ , 2006, Proceedings of the 39th Annual Hawaii International Conference on System Sciences (HICSS'06).

[6]  Michael Haupt,et al.  Axon | Dynamic AOP through Runtime Inspection and Monitoring , 2003 .

[7]  Shigeru Chiba,et al.  A dynamic aspect-oriented system for OS kernels , 2006, GPCE '06.

[8]  Günter Kniesel,et al.  A Definition, Overview and Taxonomy of Generic Aspect Languages , 2006, Obj. Logiciel Base données Réseaux.

[9]  Gregor Kiczales,et al.  Back to the future: a retroactive study of aspect evolution in operating system code , 2003, AOSD '03.

[10]  Laurence Duchien,et al.  JAC: A Flexible Solution for Aspect-Oriented Programming in Java , 2001, Reflection.

[11]  Julia L. Lawall,et al.  Web cache prefetching as an aspect: towards a dynamic-weaving based solution , 2003, AOSD '03.

[12]  Wolfgang Schröder-Preikschat,et al.  A quantitative analysis of aspects in the eCos kernel , 2006, EuroSys.

[13]  Renaud Pawlak Spoon: annotation-driven program transformation --- the AOP case , 2005, AOMD '05.

[14]  Olaf Spinczyk,et al.  Generic Advice: On the Combination of AOP with Generative Programming in AspectC++ , 2004, GPCE.

[15]  Jean-Marc Menaud,et al.  Software security patches -- Audit, deployment and hot update , 2005 .

[16]  Gordon S. Blair,et al.  On the Separation of Concerns in Program Families , 2004 .

[17]  Bernd Freisleben,et al.  Supporting autonomic computing functionality via dynamic operating system kernel aspects , 2005, AOSD '05.

[18]  Michael Haupt,et al.  Micro-measurements for Dynamic Aspect-Oriented Systems , 2004, Net.ObjectDays.

[19]  Robert E. Filman,et al.  What Is Aspect-Oriented Programming , 2001 .

[20]  Michael Haupt,et al.  Virtual machine support for dynamic join points , 2004, AOSD '04.

[21]  Shigeru Chiba,et al.  A Selective, Just-in-Time Aspect Weaver , 2003, GPCE.

[22]  Gustavo Alonso,et al.  Just-in-time aspects: efficient dynamic weaving for Java , 2003, AOSD '03.

[23]  Mario Südholt,et al.  An expressive aspect language for system applications with Arachne , 2005, AOSD '05.

[24]  Olaf Spinczyk,et al.  On Typesafe Aspect Implementations in C++ , 2005, SC@ETAPS.

[25]  Olaf Spinczyk,et al.  Dynamic Aspect Weaver Family for Family-based Adaptable Systems , 2005, NODe/GSEM.