Integration of aspect-oriented approach means in object-oriented programming language
DOI:
https://doi.org/10.15587/1729-4061.2016.63717Keywords:
aspect-oriented programming, AOP, aspect integration, cross-cutting concern, software architecture, aspect, advice, join point, pointcutAbstract
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.References
- Floyd, R. W. (1979). The paradigms of programming. Commun. ACM, 22 (8), 455–460. doi: 10.1145/359138.359140
- Badd, T. (1997). An Introduction to Object-Oriented Programming. SPb.: «Pyter», 464.
- Hamma, E., Khelm, R., Dzhonson, R., Vlissides, D. (2014). Design Patterns: Elements of Reusable Object-Oriented Software. SPb.: Pyter, 372.
- Miles, R. (2012). AspectJ Cookbook. O'Reilly Media, 356.
- 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.
- 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
- Yang, H. (2012). Software Reuse in the Emerging Cloud Computing Era. Information Science Reference, 54. doi: 10.4018/978-1-4666-0897-9
- Sells, C. (2011). Essential.NET: The common language runtime. Addison-Wesley Professional.
- 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
- 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
- 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
- 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
- Fowler, M. (2012). Patterns of Enterprise Application Architectur. Addison Wesley.
Downloads
Published
How to Cite
Issue
Section
License
Copyright (c) 2016 Bohdan Hukivskyi, Valentina Medvedeva
This work is licensed under a Creative Commons Attribution 4.0 International License.
The consolidation and conditions for the transfer of copyright (identification of authorship) is carried out in the License Agreement. In particular, the authors reserve the right to the authorship of their manuscript and transfer the first publication of this work to the journal under the terms of the Creative Commons CC BY license. At the same time, they have the right to conclude on their own additional agreements concerning the non-exclusive distribution of the work in the form in which it was published by this journal, but provided that the link to the first publication of the article in this journal is preserved.
A license agreement is a document in which the author warrants that he/she owns all copyright for the work (manuscript, article, etc.).
The authors, signing the License Agreement with TECHNOLOGY CENTER PC, have all rights to the further use of their work, provided that they link to our edition in which the work was published.
According to the terms of the License Agreement, the Publisher TECHNOLOGY CENTER PC does not take away your copyrights and receives permission from the authors to use and dissemination of the publication through the world's scientific resources (own electronic resources, scientometric databases, repositories, libraries, etc.).
In the absence of a signed License Agreement or in the absence of this agreement of identifiers allowing to identify the identity of the author, the editors have no right to work with the manuscript.
It is important to remember that there is another type of agreement between authors and publishers – when copyright is transferred from the authors to the publisher. In this case, the authors lose ownership of their work and may not use it in any way.