Abstract
This paper describes an approach to implementation of aspect-oriented programming (AOP) frameworks for C, outlines traditional AOP facilities for different programming languages, and shows how specific features of C and a build process of C programs affect AOP implementations. Next, we consider additional requirements imposed by a practical application of AOP implementations for C programs. Existing solutions are described and possibility of their use is analyzed. The paper describes a new AOP tool for C that implements the proposed approach and demonstrates its capabilities.
Similar content being viewed by others
References
Parnas, D.L., On the criteria to be used in decomposing systems into modules, Comm. ACM, 1972, vol. 15, no. 12, pp. 1053–1058.
Fuksman, A.L., Technological Aspects of Software Construction Moscow: Statistika, 1979.
Definitions of aspect-oriented programming concepts. http://www.aosd.net/wiki/index.php?title-Glossary
Kiezales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., and Griswold, W.G., An overview of AspectJ, Proc. of the 15th European Conf. on Object-Oriented Programming (ECOOP’01), 2001, pp. 327–353.
AspectJ: an aspect-oriented extension to Java. http://www.eclipse.org/aspectj/doc/released/progguide/language.html
Introduction to AspectJ. http://eclipse.org/aspectj/doc/released/progguide/starting-aspectj.html
ajc: a compiler of Java and its extension AspectJ. http://www.eclipse.org/aspectj/doc/released/devguide/ajc-ref.html
Spinczyk, O., Lohmann, D., and Urban, M., AspectC++: an AOP extension for C++, Software Dev. J., 2005, no. 5, pp. 68–76.
Safonov, V.O., Aspect.NET—An aspect-oriented programming tool for the development of reliable and safe programs, Comput. Tools Education, 2007, no. 5, pp. 3–13.
Khoroshilov, A., Mutilin, V., Sheherbina, V., Strikov, O., Vinogradov, S., and Zakharov, V., How to cook an automated system for Linux driver verification. Proc. of the 2nd Spring Young Researchers’ Colloquium on Software Engineering, St. Petersburg, 2008, vol. 2, pp. 10–14.
Khoroshilov, A., Mutilin, V., Petrenko, A., and Zakharov, V., Establishing Linux driver verification process. Proc. of the Int. Andrei Ershov Memorial Conf. “Perspectives of Systems Informatics”, Novosibirsk, 2009, Lect. Notes Comput. Sci., 2010, vol. 5947, pp. 165–176.
Mutilin, V.S., Novikov, E.M., Strakh, A.V., Khoroshilov, A.V., and Shved, P.E., Linux Driver Verification architecture, Tr. Inst. Syst. Prog., 2011, vol. 20, pp. 163–187.
Khoroshilov, A., Mutilin, V., Novikov, E., Shved, P., and Strakh, A. Towards an open framework for C verification tools benchmarking, Proc. of the Int. Andrei Ershov Memorial Conf. “Perspectives of Systems Informatics”, 2011, pp. 82–91.
Gong, M., Zhang, C., and Jacobsen, H.-A., AspeCtoriented C. Technology showcase, Proc. of CASCON 2007, Markahm, Ontario, 2007.
Gong, W. and Jacobsen, H.-A., AspeCt-oriented C language specification version 0.8, Univ. of Toronto, 2008.
Seyster, J., Dixit, K., Huang, X., Grosu, R., Havelund, K., Smolka, S.A., Stoller, S.D., and Zadok, E., Aspect-oriented instrumentation with GCC, Proc. of the First Int. Conf. on Runtime Verification, Malta, 2010, Lect. Notes Comput. Sci., vol. 6418, pp. 405–420.
GCC plugins. http://gcc.gnu.org/wiki/plugins
Ball, T. and Rajamani S.K., SLIC: a specification language for interface checking (of C), Tech. Rep. MSR-TR-2001-21, Microsoft Research, 2002.
CIF: an implementation of aspect-oriented programming for C. http://forge.ispras.ru/projects/cif
Novikov, E., One approach to aspect-oriented programming implementation for the C programming language, Proc. of the 5th Spring/Summer Young Researchers’ Colloquium on Software Engineering, Yekaterinburg, 2011, pp. 74–81.
GNU compiler collection 4.6.1. http://gcc.gnu.org/onlinedocs/gcc-4.6.1/gcc/
Fix of the error in the USB driver of the Gadget class. http://marc.info/?l=linuxusbm=129649764609408
Linux operating system kernel. http://kernel.org
Beyer, D., Henzinger, T.A., Jhala, R., and Majumdar, R., The software model checker Blast: Applications to software engineering, Int. J. Software Tools Technol. Transfer, 2007, vol. 9, no. 5, pp. 505–525.
Beyer, D. and Keremoglu, M.E., CPAchecker: a tool for configurable software verification, Proc. of CAV 2011 Gopalakrishnan, G. and Qfideer, S. (eds.), Heidelberg: Springer, 2011; Lect. Notes Comput. Sci., vol. 6806, pp. 184–190.
List of Linux operating system driver errors detected within the LDV project. http://linuxtesting.org/results/ldv
Author information
Authors and Affiliations
Corresponding author
Additional information
Original Russian Text © E.M. Novikov, 2013, published in Programmirovanie, 2013, Vol. 39, No. 4.
Rights and permissions
About this article
Cite this article
Novikov, E.M. An approach to implementation of aspect-oriented programming for C. Program Comput Soft 39, 194–206 (2013). https://doi.org/10.1134/S0361768813040051
Received:
Published:
Issue Date:
DOI: https://doi.org/10.1134/S0361768813040051