Advances in AOP with AspectC++

Often declared dead or at least dying, C/C++ is still the lingua franca of many application domains. Aspect-Oriented Programming (AOP) is a programming paradigm that supports the modular implementation of crosscutting concerns. Thereby, AOP improves the maintainability, reusability, and configurability of software in general. Although already popular in the Java domain, AOP is still not commonly used in conjunction with C/C++. For a broad adoption of AOP by the software industry, it is crucial to provide solid language and tool support. However, research and tool development for C++ is known to be an extremely hard and tedious task, as the language is overwhelmed with interacting features and hard to analyze. Getting AOP into the C++ domain is not just technical challenge. It is also the question of integrating AOP concepts with the philosophy of the C++ language, which is very different from Java. This paper describes the design and development of the AspectC++ language and weaver, which brings fully-fledged AOP support into the C++ domain.

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

[2]  William G. Griswold,et al.  Getting started with ASPECTJ , 2001, CACM.

[3]  Wolfgang Schröder-Preikschat,et al.  AspectC++: an aspect-oriented extension to the C++ programming language , 2002 .

[4]  Magne Haveraaen,et al.  Design of the CodeBoost transformation system for domain-specific optimisation of C++ programs , 2003, Proceedings Third IEEE International Workshop on Source Code Analysis and Manipulation.

[5]  Gregor Kiczales,et al.  Aspect-oriented programming , 1996, CSUR.

[6]  Jörgen Hansson,et al.  Aspects and components in real-time system development: Towards reconfigurable and reusable software , 2005, J. Embed. Comput..

[7]  Andrei Alexandrescu,et al.  Modern C++ design: generic programming and design patterns applied , 2001 .

[8]  Louis Marie Johannes Bergmans,et al.  Composing Concurrent Objects , 1994 .

[9]  Karl Lieberherr,et al.  Adaptive Object-Oriented Software: The Demeter Method with Propagation Patterns , 1995 .

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

[11]  Jörgen Hansson,et al.  Application-tailored database systems: a case of aspects in an embedded database , 2004, Proceedings. International Database Engineering and Applications Symposium, 2004. IDEAS '04..

[12]  Krzysztof Czarnecki,et al.  Generative Programming , 2001, ECOOP Workshops.

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

[14]  Harold Ossher,et al.  Subject-oriented programming: a critique of pure objects , 1993, OOPSLA '93.

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

[16]  Gregor Kiczales,et al.  Design pattern implementation in Java and aspectJ , 2002, OOPSLA '02.

[17]  Olaf Spinczyk,et al.  Using AOP to develop architectural-neutral operating system components , 2004, EW 11.

[18]  Olaf Spinczyk,et al.  Architecture-Neutral Operating System Components , 2003 .

[19]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[20]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

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

[22]  Shigeru Chiba,et al.  A metaobject protocol for C++ , 1995, OOPSLA.

[23]  Sibylle Schupp,et al.  Semantic and behavioral library transformations , 2002, Inf. Softw. Technol..

[24]  Gregor Kiczales,et al.  Using aspectC to improve the modularity of path-specific customization in operating system code , 2001, ESEC/FSE-9.

[25]  Krzysztof Czarnecki,et al.  Generative programming - methods, tools and applications , 2000 .