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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
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)
Baxter, I.D.: Design maintenance systems. Communications of the ACM 35(4), 73–89 (1992)
Czarnecki, K., Eisenecker, U.W.: Generative Programming. Methods, Tools and Applications. Addison-Wesley, Reading (2000)
Duvall, P., Matyas, S., Glover, A.: Continuous integration: improving software quality and reducing risk. Addison-Wesley Professional, Reading (2007)
Filman, R.E., Friedman, D.P.: Aspect-oriented programming is quantification and obliviousness. In: Workshop on Advanced SoC (OOPSLA 2000) (October 2000)
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)
Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading (1995)
Hedin, G., Magnusson, E.: Jastadd: an aspect-oriented compiler construction system. Science of Computer Programming 47(1), 37–58 (2003)
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
ISO. The ANSI C standard (C99). Technical Report WG14 N1124, ISO/IEC (1999)
Johnson, S.C., Sethi, R.: Yacc: a parser generator. pp. 347–374 (1990)
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)
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)
Lohmann, D.: Aspect Awareness in the Development of Configurable System Software. PhD thesis, Friedrich-Alexander University Erlangen-Nuremberg (2009)
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)
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)
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)
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)
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)
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)
Parr, T.: The Definitive ANTLR Reference: Building Domain-Specific Languages. Pragmatic Bookshelf (2007)
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)
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)
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)
The Design Automation Standards Committee of the IEEE Computer Society. IEEE Standard 1666-2005: SystemC. IEEE (2005)
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)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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)