Skip to main content

Finding and Use of Source Code Changes for Aspect-Oriented Software

  • Conference paper
  • First Online:
Evaluation of Novel Approaches to Software Engineering (ENASE 2020)

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.

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

Access this chapter

Subscribe and save

Springer+ Basic
$34.99 /Month
  • Get 10 units per month
  • Download Article/Chapter or eBook
  • 1 Unit = 1 Article or 1 Chapter
  • Cancel anytime
Subscribe now

Buy Now

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Similar content being viewed by others

Notes

  1. 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. 2.

    https://www.eclipse.org/egit/.

  3. 3.

    https://www.eclipse.org/ajdt/.

  4. 4.

    https://neo4j.com.

References

  1. 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)

    MATH  Google Scholar 

  2. 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)

    Article  Google Scholar 

  3. 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)

    Google Scholar 

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

    Google Scholar 

  5. 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)

    Article  Google Scholar 

  6. Filman, R.E., Friedman, D.P.: Aspect-oriented programming is quantification and obliviousness. Technical report, RIACS (2000)

    Google Scholar 

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

    Google Scholar 

  8. 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)

    Article  Google Scholar 

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

    Chapter  Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

  12. Katic, M.: Dynamic evolution of aspect oriented software. PhD thesis, University of Zagreb, Croatia (2013)

    Google Scholar 

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

    Google Scholar 

  14. Katic, M., Fertalj, K.: Identification of differences between aspect-oriented programs. Bern, Switzerland (2013)

    Google Scholar 

  15. 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)

    Article  Google Scholar 

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

    Article  Google Scholar 

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

    Chapter  Google Scholar 

  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

    Chapter  Google Scholar 

  19. Koppen, C., Storzer, M.: PCDiff : attacking the fragile pointcut problem (2004)

    Google Scholar 

  20. Laddad, R.: Aspectj in Action: Enterprise AOP with Spring Applications. 2 edn. Manning Publications (2009)

    Google Scholar 

  21. 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)

    Google Scholar 

  22. Mens, T., Demeyer, S.: Software Evolution, 1st edn. Springer, Heidelberg (2008). https://doi.org/10.1007/978-3-540-76440-3

    Book  MATH  Google Scholar 

  23. Przybyłek, A.: An empirical study on the impact of AspectJ on software evolvability. Empir. Softw. Eng. 23(4), 2018–2050 (2018)

    Article  Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

  26. 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)

    Google Scholar 

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

    Google Scholar 

  28. 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)

    Google Scholar 

  29. Tourwe, T., Brichau, J., Gybels, K.: On the existence of the AOSD-evolution paradox (2003)

    Google Scholar 

  30. Vallee-Rai, R., Hendren, L.J.: Jimple: simplifying java bytecode for analyses and transformations (1998)

    Google Scholar 

  31. 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)

    Google Scholar 

  32. 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)

    Article  Google Scholar 

  33. Xu, G., Rountev, A.: Regression test selection for AspectJ software. In: 29th International Conference on Software Engineering (ICSE 2007), pp. 65–74 (2007)

    Google Scholar 

  34. 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)

    Google Scholar 

  35. Yang, W.: Identifying syntactic differences between two programs. Softw.: Pract. Exp. 21(7), 739–755 (1991)

    Google Scholar 

  36. 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)

    Google Scholar 

  37. 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)

    Google Scholar 

  38. Zhang, S., Zhao, J.: Locating faults in AspectJ programs (2007)

    Google Scholar 

  39. 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)

    Google Scholar 

Download references

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

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2021 Springer Nature Switzerland AG

About this paper

Check for updates. Verify currency and authenticity via CrossMark

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)

Publish with us

Policies and ethics