Integration of aspect-oriented approach means in object-oriented programming language

Authors

  • Valentina Medvedeva National Technical University of Ukraine "Kyiv Polytechnic Institute" 37 Pobedy ave., Kyiv, Ukraine, 03056, Ukraine
  • Bohdan Hukivskyi National Technical University of Ukraine "Kyiv Polytechnic Institute" 37 Pobedy ave., Kyiv, Ukraine, 03056, Ukraine

DOI:

https://doi.org/10.15587/1729-4061.2016.63717

Keywords:

aspect-oriented programming, AOP, aspect integration, cross-cutting concern, software architecture, aspect, advice, join point, pointcut

Abstract

The problem of complexity of developing and supporting the software cross-cutting concern and its solution using the aspect-oriented approach is examined. The complexity of aspect-oriented programming application in object-oriented programming languages is described. The problem of dependency of the declaration syntax of aspects and the method of their integration is investigated. The architecture that will provide the independence of the syntax of declaration and introduction of aspects in object-oriented programs is proposed. For separation, an urban design pattern that unites declaration of the aspect and its integration method is used. The system displays the classical entities of AOP in the object structure, which facilitates syntax mastering. Three methods for declaring aspects are developed, namely declaration using inheritance from a base class, template class generalization and flexible aspect creation at run time. For integration at compile time, a special integration module and the Roslyn compiler modification, which ensures implementation of the aspect configuration system and introduces advice invocation points in a code are developed. For integration at run time without using the dependency injection container, helper methods for creating proxy classes are designed. Also, modules for popular dependency injection containers, which allow integration by means of these containers are developed. Testing of the developed system, which showed a significant reduction in the size of a source code is carried out. The most pronounced reduction was in large enterprise-level systems. When using introduction at compile time, performance drop of programs is not observed. When using integration at run time, performance losses do not exceed those when using a similar proxy class.

Author Biographies

Valentina Medvedeva, National Technical University of Ukraine "Kyiv Polytechnic Institute" 37 Pobedy ave., Kyiv, Ukraine, 03056

PhD, Associate professor

Department of design automation of energy processes and systems

Bohdan Hukivskyi, National Technical University of Ukraine "Kyiv Polytechnic Institute" 37 Pobedy ave., Kyiv, Ukraine, 03056

Department of design automation of energy processes and systems

References

  1. Floyd, R. W. (1979). The paradigms of programming. Commun. ACM, 22 (8), 455–460. doi: 10.1145/359138.359140
  2. Badd, T. (1997). An Introduction to Object-Oriented Programming. SPb.: «Pyter», 464.
  3. Hamma, E., Khelm, R., Dzhonson, R., Vlissides, D. (2014). Design Patterns: Elements of Reusable Object-Oriented Software. SPb.: Pyter, 372.
  4. Miles, R. (2012). AspectJ Cookbook. O'Reilly Media, 356.
  5. Neyhel, K., Yv'en, B., Hlynn, D., Uot·son, K., Skynner M. (2013). S# 4.0 y platforma .NET 4 dlya professyonalov. Moscow: OOO "Y.D. Vyl'yamc", 1543.
  6. Gael, F. (2015). PostSharp Roadmap and Support Policies Published. PostSharp Blog. Available at: http://www.postsharp.net/blog/post/PostSharp-Roadmap-and-Support-Policies-Published
  7. Yang, H. (2012). Software Reuse in the Emerging Cloud Computing Era. Information Science Reference, 54. doi: 10.4018/978-1-4666-0897-9
  8. Sells, C. (2011). Essential.NET: The common language runtime. Addison-Wesley Professional.
  9. Gael, F. (2013). Dino Esposito, Cutting Edge – Aspect-Oriented Programming, Interception and Unity 2.0. MSDN Magazine. Available at: https://msdn.microsoft.com/en-us/magazine/gg490353.aspx
  10. Rossi, J. (2015). Introduction to AOP With Castle. Castle Project Blog. Available at: http://docs.castleproject.org/Default.aspx?Page=Introduction-to-AOP-With-Castle&NS=Windsor&AspxAutoDetectCookieSupport=1
  11. Win, B., Vanhaute, B. (2002). De DeckerSecurity through aspect-oriented programming. In Advances in Network and Distributed Systems Security, 125–138. doi: 10.1007/0-306-46958-8_9
  12. Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C. J., Loingtier, M., Irwin, J. (1997). Aspect-oriented programming. ECOOP'97. Proceedings of the 11th European Conference on Object-Oriented Programming, 220–242. doi: 10.1007/BFb0053381
  13. Fowler, M. (2012). Patterns of Enterprise Application Architectur. Addison Wesley.

Published

2016-04-22

How to Cite

Medvedeva, V., & Hukivskyi, B. (2016). Integration of aspect-oriented approach means in object-oriented programming language. Eastern-European Journal of Enterprise Technologies, 2(2(80), 19–28. https://doi.org/10.15587/1729-4061.2016.63717