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

  • Matthias Urban
  • Daniel Lohmann
  • Olaf Spinczyk
Part of the Lecture Notes in Computer Science book series (LNCS, volume 6580)


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.


Software Product Line Syntax Tree Grammar Rule Error Handling Static Assertion 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Akers, R.L., Baxter, I.D., Mehlich, M., Ellis, B.J., Luecke, K.R.: Reengineering C++ component models via automatic program transformation. In: WCRE 2005: Proceedings of the 12th Working Conference on Reverse Engineering, pp. 13–22. IEEE Computer Society, Washington, DC, USA (2005)Google Scholar
  2. 2.
    Baxter, I.D.: Design maintenance systems. Communications of the ACM 35(4), 73–89 (1992)CrossRefGoogle Scholar
  3. 3.
    Czarnecki, K., Eisenecker, U.W.: Generative Programming. Methods, Tools and Applications. Addison-Wesley, Reading (2000)Google Scholar
  4. 4.
    Duvall, P., Matyas, S., Glover, A.: Continuous integration: improving software quality and reducing risk. Addison-Wesley Professional, Reading (2007)Google Scholar
  5. 5.
    Filman, R.E., Friedman, D.P.: Aspect-oriented programming is quantification and obliviousness. In: Workshop on Advanced SoC (OOPSLA 2000) (October 2000)Google Scholar
  6. 6.
    Gal, A., Schröder-Preikschat, W., Spinczyk, O.: AspectC++: Language proposal and prototype implementation. In: Proceedings of the OOPSLA 2001 Workshop on Advanced Separation of Concerns in Object-Oriented Systems, Tampa, Florida (October 2001)Google Scholar
  7. 7.
    Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading (1995)zbMATHGoogle Scholar
  8. 8.
    Hedin, G., Magnusson, E.: Jastadd: an aspect-oriented compiler construction system. Science of Computer Programming 47(1), 37–58 (2003)CrossRefzbMATHGoogle Scholar
  9. 9.
    The British Standards Institute. The C++ Standard (Incorporating Technical Corrigendum No. 1), 2 edn. John Wiley & Sons, Inc., Chichester (2003); Printed version of the ISO/IEC 14882:2003 standardGoogle Scholar
  10. 10.
    ISO. The ANSI C standard (C99). Technical Report WG14 N1124, ISO/IEC (1999)Google Scholar
  11. 11.
    Johnson, S.C., Sethi, R.: Yacc: a parser generator. pp. 347–374 (1990)Google Scholar
  12. 12.
    Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., Griswold, W.G.: An Overview of AspectJ. In: Lindskov Knudsen, J. (ed.) ECOOP 2001. LNCS, vol. 2072, pp. 327–353. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  13. 13.
    Klarer, R., Maddock, J., Dawes, B., Hinnant, H.: Proposal to add static assertions to the core language (revision 3). Technical Report SC22/WG21/N1720, ISO/IEC (October 2004)Google Scholar
  14. 14.
    Lohmann, D.: Aspect Awareness in the Development of Configurable System Software. PhD thesis, Friedrich-Alexander University Erlangen-Nuremberg (2009)Google Scholar
  15. 15.
    Lohmann, D., Blaschke, G., Spinczyk, O.: Generic Advice: On the Combination of AOP with Generative Programming in AspectC++. In: Karsai, G., Visser, E. (eds.) GPCE 2004. LNCS, vol. 3286, pp. 55–74. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  16. 16.
    Lohmann, D., Hofer, W., Schröder-Preikschat, W., Streicher, J., Spinczyk, O.: CiAO: An aspect-oriented operating-system family for resource-constrained embedded systems. In: Proceedings of the 2009 USENIX Annual Technical Conference, pp. 215–228. USENIX Association, Berkeley (2009)Google Scholar
  17. 17.
    Lohmann, D., Scheler, F., Tartler, R., Spinczyk, O., Schröder-Preikschat, W.: A quantitative analysis of aspects in the eCos kernel. In: Proceedings of the EuroSys 2006 Conference (EuroSys 2006), pp. 191–204. ACM Press, New York (2006)CrossRefGoogle Scholar
  18. 18.
    Lohmann, D., Spinczyk, O., Schröder-Preikschat, W.: Lean and Efficient System Software Product Lines: Where Aspects Beat Objects. In: Rashid, A., Liu, Y. (eds.) Transactions on Aspect-Oriented Software Development II. LNCS, vol. 4242, pp. 227–255. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  19. 19.
    Mahrenholz, D., Spinczyk, O., Gal, A., Schröder-Preikschat, W.: An aspect-orientied implementation of interrupt synchronization in the PURE operating system family. In: Proceedings of the 5th ECOOP Workshop on Object Orientation and Operating Systems (ECOOP-OOOSWS 2002), Malaga, Spanien, pp. 49–54 (June 2002)Google Scholar
  20. 20.
    de Moor, O., Peyton-Jones, S., Van Wyk, E.: Aspect-Oriented Compilers. In: Busch, C. (ed.) GCSE 1999. LNCS, vol. 1799, pp. 121–133. Springer, Heidelberg (2000)CrossRefGoogle Scholar
  21. 21.
    Parr, T.: The Definitive ANTLR Reference: Building Domain-Specific Languages. Pragmatic Bookshelf (2007)Google Scholar
  22. 22.
    Spinczyk, O., Lohmann, D.: The design and implementation of AspectC++. Knowledge-Based Systems, Special Issue on Techniques to Produce Intelligent Secure Software 20(7), 636–651 (2007)Google Scholar
  23. 23.
    Steimann, F.: The paradoxical success of aspect-oriented programming. In: Proceedings of the 21st ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA 2006), pp. 481–497. ACM Press, New York (2006)CrossRefGoogle Scholar
  24. 24.
    Tartler, R., Lohmann, D., Schröder-Preikschat, W., Spinczyk, O.: Dynamic AspectC++: Generic advice at any time. In: Fujita, H., Marík, V. (eds.) The 8th International Conference on Software Methodologies, Tools and Techniques, Frontiers in Artificial Intelligence and Applications, Prag, Czech Republic, pp. 165–186. IOS Press, Amsterdam (2009)Google Scholar
  25. 25.
    The Design Automation Standards Committee of the IEEE Computer Society. IEEE Standard 1666-2005: SystemC. IEEE (2005)Google Scholar
  26. 26.
    Wu, X., Bryant, B.R., Gray, J., Roychoudhury, S., Mernik, M.: Separation of concerns in compiler development using aspect-orientation. In: SAC 2006: Proceedings of the 2006 ACM Symposium on Applied Computing, pp. 1585–1590. ACM, New York (2006)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2011

Authors and Affiliations

  • Matthias Urban
    • 1
  • Daniel Lohmann
    • 2
  • Olaf Spinczyk
    • 3
  1. 1.Pure-Systems GmbHMagdeburgGermany
  2. 2.Computer Science 4 – Distributed Systems and Operating SystemsFriedrich-Alexander-University ErlangenNurembergGermany
  3. 3.Computer Science 12 – Embedded System SoftwareTechnische UniversitätDortmundGermany

Personalised recommendations