Abstract
In aspect-oriented software, code contained in special constructs called pieces of advice is used to define cross-cutting functionalities. This code is separated from more purpose-specific code (base code) and applies to it at specified program execution points called join-points. Such mechanism of composing a program imposes new requirements for finding changes between two versions of aspect-oriented software. This particularly refers to finding changes in advice applications at join-points as these applications are rather implict due to the absence of syntactical dependence of the base code to pieces of advice. In our previous work, we proposed and evaluated a novel approach for finding changes in advice applications. In this paper, we overview that approach, provide more details about how it works and additional results of manual verification analysis. We also compare the state-of-the-art approaches for finding and use of changes between two aspect-oriented software versions, including our previous work. Finally, we introduce the implementation of the graphical user interface for presenenting the changes found with our approach. We discuss its perspective usage and other potential applications of our approach.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
Notes
- 1.
The CFG of a method m CFG = (N, E, s, e) is a directed graph that represents all possible paths traversed though the method [1]. Nodes (set N) represent statements, and edges (set E) represent flow of control between statements. There are single entry node s and a single exit node e.
- 2.
- 3.
- 4.
References
Aho, A.V., Lam, M.S., Sethi, R., Ullman, J.D.: Compilers: Principles, Techniques, and Tools, 2nd edn. Addison-Wesley Longman Publishing Co., Inc., USA (2006)
Apiwattanapong, T., Orso, A., Harrold, M.J.: JDiff: a differencing technique and tool for object-oriented programs. Autom. Softw. Eng. 14(1), 3–36 (2007)
Avgustinov, P., et al.: ABC: an extensible AspectJ compiler. In: Proceedings of the 4th International Conference on Aspect-Oriented Software Development, AOSD 2005, pp. 87–98. Association for Computing Machinery, New York (2005)
Coady, Y., Kiczales, G., Feeley, M., Smolyn, G.: Using AspectC to improve the modularity of path-specific customization in operating system code. In: Proceedings of the 8th European Software Engineering Conference Held Jointly with 9th ACM SIGSOFT International Symposium on Foundations of Software Engineering, ESEC/FSE-9, pp. 88–98. Association for Computing Machinery, New York (2001)
Ferrante, J., Ottenstein, K.J., Warren, J.D.: The program dependence graph and its use in optimization. ACM Trans. Program. Lang. Syst. 9(3), 319–349 (1987)
Filman, R.E., Friedman, D.P.: Aspect-oriented programming is quantification and obliviousness. Technical report, RIACS (2000)
Fluri, B., Gall, H.C.: Classifying change types for qualifying change couplings. In: 14th IEEE International Conference on Program Comprehension (ICPC 2006), pp. 35–45 (2006)
Fluri, B., Wursch, M., PInzger, M., Gall, H.: Change distilling: tree differencing for fine-grained source code change extraction. IEEE Trans. Softw. Eng. 33(11), 725–743 (2007)
Fowler, M.: Refactoring: improving the design of existing code. In: Wells, D., Williams, L. (eds.) XP/Agile Universe 2002. LNCS, vol. 2418, p. 256. Springer, Heidelberg (2002). https://doi.org/10.1007/3-540-45672-4_31
Görg, M.T., Zhao, J.: Identifying semantic differences in AspectJ programs. In: Proceedings of the Eighteenth International Symposium on Software Testing and Analysis, ISSTA 2009, pp. 25–36. Association for Computing Machinery, New York (2009)
Harrold, M.J., et al.: Regression test selection for java software. In: Proceedings of the 16th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2001, pp. 312–326. Association for Computing Machinery, New York (2001)
Katic, M.: Dynamic evolution of aspect oriented software. PhD thesis, University of Zagreb, Croatia (2013)
Katic, M.: Hammock-based identification of changes in advice applications between aspect-oriented programs. In: Proceedings of the 14th International Conference on Evaluation of Novel Approaches to Software Engineering, ENASE 2019, pp. 442–451. SCITEPRESS - Science and Technology Publications, Lda (2019)
Katic, M., Fertalj, K.: Identification of differences between aspect-oriented programs. Bern, Switzerland (2013)
Khatchadourian, R., Greenwood, P., Rashid, A., Xu, G.: Pointcut rejuvenation: recovering pointcut expressions in evolving aspect-oriented software. IEEE Trans. Softw. Eng. 38(3), 642–657 (2012)
Khatchadourian, R., Rashid, A., Masuhara, H., Watanabe, T.: Detecting broken pointcuts using structural commonality and degree of interest. Sci. Comput. Program. 150, 56–74 (2017)
Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., Griswold, W.G.: An overview of AspectJ. In: Knudsen, J.L. (ed.) ECOOP 2001. LNCS, vol. 2072, pp. 327–354. Springer, Heidelberg (2001). https://doi.org/10.1007/3-540-45337-7_18
Kiczales, G., et al.: Aspect-oriented programming. In: Akşit, M., Matsuoka, S. (eds.) ECOOP 1997. LNCS, vol. 1241, pp. 220–242. Springer, Heidelberg (1997). https://doi.org/10.1007/BFb0053381
Koppen, C., Storzer, M.: PCDiff : attacking the fragile pointcut problem (2004)
Laddad, R.: Aspectj in Action: Enterprise AOP with Spring Applications. 2 edn. Manning Publications (2009)
Laski, J., Szermer, W.: Identification of program modifications and its applications in software maintenance. In: Proceedings Conference on Software Maintenance 1992, pp. 282–290 (1992)
Mens, T., Demeyer, S.: Software Evolution, 1st edn. Springer, Heidelberg (2008). https://doi.org/10.1007/978-3-540-76440-3
Przybyłek, A.: An empirical study on the impact of AspectJ on software evolvability. Empir. Softw. Eng. 23(4), 2018–2050 (2018)
Rinard, M., Salcianu, A., Bugrara, S.: A classification system and analysis for aspect-oriented programs. In: Proceedings of the 12th ACM SIGSOFT Twelfth International Symposium on Foundations of Software Engineering, SIGSOFT 2004/FSE-12, pp. 147–158. Association for Computing Machinery, New York (2004)
Ryder, B.G., Tip, F.: Change impact analysis for object-oriented programs. In: Proceedings of the 2001 ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering, pp. 46–53. PASTE 2001. Association for Computing Machinery, New York (2001)
Stoerzer, M., Graf, J.: Using pointcut delta analysis to support evolution of aspect-oriented software. In: 21st IEEE International Conference on Software Maintenance (ICSM2005), pp. 653–656 (2005)
Storzer, M., Forster, F.: Detecting precedence-related advice interference. In: Proceedings. 21st IEEE International Conference on Automated Software Engineering, pp. 317–322. IEEE Computer Society, Los Alamitos, September 2006
Tao, Y., Dang, Y., Xie, T., Zhang, D., Kim, S.: How do software engineers understand code changes? An exploratory study in industry. In: Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering, FSE 2012. Association for Computing Machinery, New York (2012)
Tourwe, T., Brichau, J., Gybels, K.: On the existence of the AOSD-evolution paradox (2003)
Vallee-Rai, R., Hendren, L.J.: Jimple: simplifying java bytecode for analyses and transformations (1998)
Vallée-Rai, R. Co, P., Gagnon, E., Hendren, L., Lam, P., Sundaresan, V.: Soot - a java bytecode optimization framework. In: Proceedings of the 1999 Conference of the Centre for Advanced Studies on Collaborative Research, CASCON 1999, p. 13. IBM Press, Mississauga (1999)
Xu, B., Qian, J., Zhang, X., Wu, Z., Chen, L.: A brief survey of program slicing. SIGSOFT Softw. Eng. Notes 30(2), 1–36 (2005)
Xu, G., Rountev, A.: Regression test selection for AspectJ software. In: 29th International Conference on Software Engineering (ICSE 2007), pp. 65–74 (2007)
Xu, G., Rountev, A.: AJANA: a general framework for source-code-level interprocedural dataflow analysis of AspectJ software. In: Proceedings of the 7th International Conference on Aspect-Oriented Software Development, AOSD 2008, pp. 36–47. Association for Computing Machinery, New York (2008)
Yang, W.: Identifying syntactic differences between two programs. Softw.: Pract. Exp. 21(7), 739–755 (1991)
Zhang, S., Gu, Z., Lin, Y., Zhao, J.: Change impact analysis for AspectJ programs. In: 2008 IEEE International Conference on Software Maintenance, pp. 87–96 (2008)
Zhang, S., Gu, Z., Lin, Y., Zhao, J.: Celadon: a change impact analysis tool for aspect-oriented programs. In: Companion of the 30th International Conference on Software Engineering, pp. 913–914. Association for Computing Machinery, New York (2008)
Zhang, S., Zhao, J.: Locating faults in AspectJ programs (2007)
Zhang, T., Song, M., Kim, M.: Critics: an interactive code review tool for searching and inspecting systematic changes. In: Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering, FSE 2014, pp. 755–758. Association for Computing Machinery, New York (2014)
Acknowledgements
I am grateful to Professor Kresimir Fertalj who provided me with the environment to work on this research under the project grant 036-0361983-2022 funded by the Ministry of Science, Education, and Sport, Republic of Croatia, as well as for valuable pieces of advice from Professor Fertalj.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2021 Springer Nature Switzerland AG
About this paper
Cite this paper
Katic, M. (2021). Finding and Use of Source Code Changes for Aspect-Oriented Software. In: Ali, R., Kaindl, H., Maciaszek, L.A. (eds) Evaluation of Novel Approaches to Software Engineering. ENASE 2020. Communications in Computer and Information Science, vol 1375. Springer, Cham. https://doi.org/10.1007/978-3-030-70006-5_19
Download citation
DOI: https://doi.org/10.1007/978-3-030-70006-5_19
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-70005-8
Online ISBN: 978-3-030-70006-5
eBook Packages: Computer ScienceComputer Science (R0)