Skip to main content
Log in

An approach to implementation of aspect-oriented programming for C

  • Published:
Programming and Computer Software Aims and scope Submit manuscript

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.

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

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  1. Parnas, D.L., On the criteria to be used in decomposing systems into modules, Comm. ACM, 1972, vol. 15, no. 12, pp. 1053–1058.

    Article  Google Scholar 

  2. Fuksman, A.L., Technological Aspects of Software Construction Moscow: Statistika, 1979.

    Google Scholar 

  3. Definitions of aspect-oriented programming concepts. http://www.aosd.net/wiki/index.php?title-Glossary

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

    Google Scholar 

  5. AspectJ: an aspect-oriented extension to Java. http://www.eclipse.org/aspectj/doc/released/progguide/language.html

  6. Introduction to AspectJ. http://eclipse.org/aspectj/doc/released/progguide/starting-aspectj.html

  7. ajc: a compiler of Java and its extension AspectJ. http://www.eclipse.org/aspectj/doc/released/devguide/ajc-ref.html

  8. Spinczyk, O., Lohmann, D., and Urban, M., AspectC++: an AOP extension for C++, Software Dev. J., 2005, no. 5, pp. 68–76.

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

  14. Gong, M., Zhang, C., and Jacobsen, H.-A., AspeCtoriented C. Technology showcase, Proc. of CASCON 2007, Markahm, Ontario, 2007.

    Google Scholar 

  15. Gong, W. and Jacobsen, H.-A., AspeCt-oriented C language specification version 0.8, Univ. of Toronto, 2008.

    Google Scholar 

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

    Chapter  Google Scholar 

  17. GCC plugins. http://gcc.gnu.org/wiki/plugins

  18. Ball, T. and Rajamani S.K., SLIC: a specification language for interface checking (of C), Tech. Rep. MSR-TR-2001-21, Microsoft Research, 2002.

    Google Scholar 

  19. CIF: an implementation of aspect-oriented programming for C. http://forge.ispras.ru/projects/cif

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

    Google Scholar 

  21. GNU compiler collection 4.6.1. http://gcc.gnu.org/onlinedocs/gcc-4.6.1/gcc/

  22. Fix of the error in the USB driver of the Gadget class. http://marc.info/?l=linuxusbm=129649764609408

  23. Linux operating system kernel. http://kernel.org

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

    Article  Google Scholar 

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

    Google Scholar 

  26. List of Linux operating system driver errors detected within the LDV project. http://linuxtesting.org/results/ldv

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to E. M. Novikov.

Additional information

Original Russian Text © E.M. Novikov, 2013, published in Programmirovanie, 2013, Vol. 39, No. 4.

Rights and permissions

Reprints 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

Download citation

  • Received:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1134/S0361768813040051

Keywords

Navigation