A Program Transformation Technique to Support AOP within C++ Template

Aspect-oriented programming (AOP) provides assistance in modularizing concerns that crosscut the boundaries of system decomposition. Aspects have the potential to interact with many different kinds of language constructs in order to modularize crosscutting concerns. Although several aspect languages have demonstrated advantages in applying aspects to traditional modularization boundaries (e.g., object-oriented hierarchies), additional language concepts such as parametric polymorphism can also benefit from aspects. Many popular programming languages support parametric polymorphism (e.g., C++ templates), but the combination of aspects and generics is a topic in need of further investigation. The paper enumerates the general challenges of uniting aspects with C++ templates. It also underlines the need for new language constructs to extend AOP support to C++ templates and provides an initial solution to realize this goal.

[1]  Jeremy G. Siek,et al.  The Matrix Template Library: A Generic Programming Approach to High Performance Numerical Linear Algebra , 1998, ISCOPE.

[2]  Dennis Gannon,et al.  HPC++: experiments with the parallel standard template library , 1997, ICS '97.

[3]  Christopher W. Pidgeon,et al.  DMS®: Program Transformations for Practical Scalable Software Evolution , 2002, IWPSE '02.

[4]  Jeffrey G. Gray,et al.  A technique for constructing aspect weavers using a program transformation engine , 2004, AOSD '04.

[5]  Jack Dongarra,et al.  ScaLAPACK Users' Guide , 1987 .

[6]  Ralf Lämmel,et al.  Declarative Aspect-Oriented Programming , 1999, PEPM.

[7]  James R. Cordy,et al.  The TXL source transformation language , 2006, Sci. Comput. Program..

[8]  Vladimir Getov,et al.  High-performance parallel programming in Java: exploiting native libraries , 1998 .

[9]  Alfred Strohmeier,et al.  Better Generative Programming with Generic Aspects , 2003, OOPSLA 2003.

[10]  Thomas Ledoux,et al.  Aspect-Oriented Software Development , 2003 .

[11]  Todd L. Veldhuizen,et al.  Arrays in Blitz++ , 1998, ISCOPE.

[12]  Jeffrey G. Gray,et al.  Reinventing explicit parallel programming for improved engineering of high performance computing software , 2004, ICSE 2004.

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

[14]  Nicolai M. Josuttis The C++ Standard Library: A Tutorial and Reference , 2012 .

[15]  Paul Klint,et al.  Compiling language definitions: the ASF+SDF compiler , 2000, TOPL.

[16]  John R. Gilbert,et al.  Aspect-Oriented Programming of Sparse Matrix Code , 1997, ISCOPE.

[17]  Roberto Erick Lopez-Herrejon,et al.  A disciplined approach to aspect composition , 2006, PEPM '06.

[18]  Anthony Skjellum,et al.  Early Applications in the Message-Passing Interface (Mpi) , 1995, Int. J. High Perform. Comput. Appl..

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

[20]  Kevin A. Schneider,et al.  Source transformation in software engineering using the TXL transformation system , 2002, Inf. Softw. Technol..

[21]  Cristina V. Lopes,et al.  A study on exception detection and handling using aspect-oriented programming , 2000, Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.

[22]  Mla Citations,et al.  Getting Started with , 2006 .

[23]  Luca Cardelli,et al.  On understanding types, data abstraction, and polymorphism , 1985, CSUR.

[24]  I.D. Baxter,et al.  DMS/spl reg/: program transformations for practical scalable software evolution , 2004, Proceedings. 26th International Conference on Software Engineering.

[25]  Christoph W. Kessler,et al.  Crosscutting Concerns in Parallelization by Invasive Software Composition and Aspect Weaving , 2006, Proceedings of the 39th Annual Hawaii International Conference on System Sciences (HICSS'06).

[26]  Dennis Gannon,et al.  Active Libraries: Rethinking the roles of compilers and libraries , 1998, ArXiv.

[27]  Markus Schordan,et al.  Parallel object‐oriented framework optimization , 2004, Concurr. Comput. Pract. Exp..