Skip to main content

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

  • Chapter
Book cover Transactions on Aspect-Oriented Software Development VIII

Part of the book series: Lecture Notes in Computer Science ((TAOSD,volume 6580))

Abstract

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.

This work was partly supported by the German Research Council (DFG) under grant no. SCHR 603/4, SP 968/2-1, and SP 968/4-1.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  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. Baxter, I.D.: Design maintenance systems. Communications of the ACM 35(4), 73–89 (1992)

    Article  Google Scholar 

  3. Czarnecki, K., Eisenecker, U.W.: Generative Programming. Methods, Tools and Applications. Addison-Wesley, Reading (2000)

    Google Scholar 

  4. Duvall, P., Matyas, S., Glover, A.: Continuous integration: improving software quality and reducing risk. Addison-Wesley Professional, Reading (2007)

    Google Scholar 

  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. 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. Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading (1995)

    MATH  Google Scholar 

  8. Hedin, G., Magnusson, E.: Jastadd: an aspect-oriented compiler construction system. Science of Computer Programming 47(1), 37–58 (2003)

    Article  MATH  Google Scholar 

  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 standard

    Google Scholar 

  10. ISO. The ANSI C standard (C99). Technical Report WG14 N1124, ISO/IEC (1999)

    Google Scholar 

  11. Johnson, S.C., Sethi, R.: Yacc: a parser generator. pp. 347–374 (1990)

    Google Scholar 

  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)

    Chapter  Google Scholar 

  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. Lohmann, D.: Aspect Awareness in the Development of Configurable System Software. PhD thesis, Friedrich-Alexander University Erlangen-Nuremberg (2009)

    Google Scholar 

  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)

    Chapter  Google Scholar 

  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. 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)

    Chapter  Google Scholar 

  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)

    Chapter  Google Scholar 

  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. 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)

    Chapter  Google Scholar 

  21. Parr, T.: The Definitive ANTLR Reference: Building Domain-Specific Languages. Pragmatic Bookshelf (2007)

    Google Scholar 

  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. 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)

    Chapter  Google Scholar 

  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. The Design Automation Standards Committee of the IEEE Computer Society. IEEE Standard 1666-2005: SystemC. IEEE (2005)

    Google Scholar 

  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 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2011 Springer-Verlag Berlin Heidelberg

About this chapter

Cite this chapter

Urban, M., Lohmann, D., Spinczyk, O. (2011). Puma: An Aspect-Oriented Code Analysis and Manipulation Framework for C and C++. In: Katz, S., Mezini, M., Schwanninger, C., Joosen, W. (eds) Transactions on Aspect-Oriented Software Development VIII. Lecture Notes in Computer Science, vol 6580. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-22031-9_5

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-22031-9_5

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-22030-2

  • Online ISBN: 978-3-642-22031-9

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics