Puma: An Aspect-Oriented Code Analysis and Manipulation Framework for C and C++

PUMA is a framework for the development of applications that analyze and optionally transform C or C++ source code. It supports all standard ISO C and C++ language features as well as many language extensions of the GNU Compiler Collection and Microsoft Visual C++. Aspects played an important role during the design and implementation of the framework. It is written in the AspectC++ language. By employing AOSD concepts we gained clean separation of concerns and, thereby, very good configurability and extensibility. All these -ilities are of vital importance for our project, because the available manpower for maintenance tasks is limited. This paper describes the tools, which we used for the development, the principles behind the design of PUMA, and its implementation. Even though criticized during the last few years, our experiences show that aspect technology has clear benefits for the development of complex industrial applications.

[1]  Jan Bosch Generative and Component-Based Software Engineering , 2001, Lecture Notes in Computer Science.

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

[3]  Kenn R. Luecke,et al.  Reengineering C++ Component Models via Automatic Program Transformation , 2005, WCRE.

[4]  Friedrich Steimann The paradoxical success of aspect-oriented programming , 2006, OOPSLA '06.

[5]  Terence Parr The Definitive ANTLR Reference: Building Domain-Specific Languages , 2007 .

[6]  Andrew Glover,et al.  Continuous Integration: Improving Software Quality and Reducing Risk (The Addison-Wesley Signature Series) , 2007 .

[7]  Görel Hedin,et al.  JastAdd--an aspect-oriented compiler construction system , 2003, Sci. Comput. Program..

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

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

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

[11]  Wolfgang Schröder-Preikschat,et al.  Dynamic AspectC++: Generic Advice at Any Time , 2009, SoMeT.

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

[13]  Wolfgang Schröder-Preikschat,et al.  Lean and Efficient System Software Product Lines: Where Aspects Beat Objects , 2006, LNCS Trans. Aspect Oriented Softw. Dev..

[14]  Ira D. Baxter,et al.  Design maintenance systems , 1991, CACM.

[15]  Ravi Sethi,et al.  Yacc: a parser generator , 1990 .

[16]  Wolfgang Schröder-Preikschat,et al.  CiAO: An Aspect-Oriented Operating-System Family for Resource-Constrained Embedded Systems , 2009, USENIX Annual Technical Conference.

[17]  Daniel Lohmann,et al.  Aspect-awareness in the development of configurable system software , 2008 .

[18]  Mehmet Aksit,et al.  Transactions on Aspect-Oriented Software Development I , 2006, Trans. Aspect-Oriented Software Development I.

[19]  Simon L. Peyton Jones,et al.  Aspect-Oriented Compilers , 1999, GCSE.

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

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

[22]  Jørgen Lindskov Knudsen ECOOP 2001 — Object-Oriented Programming , 2001, Lecture Notes in Computer Science.

[23]  Daniel P. Friedman,et al.  Aspect-Oriented Programming is Quantification and Obliviousness , 2000 .

[24]  Jeffrey G. Gray,et al.  Separation of concerns in compiler development using aspect-orientation , 2006, SAC.