Specifying and identifying widely used crosscutting concerns

To ensure quality of code in large software systems, refactoring operations are the norm. With this goal in mind, it is helpful to direct preventive maintenance of large object-oriented legacy systems towards the more advanced aspect-oriented paradigm. However, manually identifying crosscutting concerns, candidate to be rendered as aspects, in large legacy systems can be an overwhelming task. We propose an approach and provide a tool to identify crosscutting concerns embedded in an object-oriented system. Our approach analyses the implementation of classes and their relationships and looks for specific user-defined schemata. We discuss how to build schemata and provide some general ones, devised in accordance with current aspect-oriented programming practices.Compared to existing approaches, our solution is flexible and achieves higher precision in detecting crosscutting concerns. Moreover, it provides the developer with an accurate identification of snippets of code which can be removed from classes and embedded into aspects. The proposed solution has been validated by applying it to a case study, i.e., a large extant software system, suitably selected to assess the quality attained by the aspect-oriented version produced with the assistance of our tool, in comparison with a design performed by expert human developers.

[1]  Vasant Honavar,et al.  Semi-supervised prediction of protein subcellular localization using abstraction augmented Markov models , 2010, BMC Bioinformatics.

[2]  Gregor Kiczales,et al.  Design pattern implementation in Java and aspectJ , 2002, OOPSLA '02.

[3]  Rafael Serapilha Durelli,et al.  A combined approach for concern identification in KDM models , 2015, Journal of the Brazilian Computer Society.

[4]  Mark Harman,et al.  Tool-Supported Refactoring of Existing Object-Oriented Code into Aspects , 2006, IEEE Transactions on Software Engineering.

[5]  Jianzhong Li,et al.  Graph pattern matching , 2010, Proc. VLDB Endow..

[6]  Jing Yang,et al.  Aspect Mining Using Link Analysis , 2010, 2010 Fifth International Conference on Frontier of Computer Science and Technology.

[7]  Kim Mens,et al.  Mining aspectual views using formal concept analysis , 2004 .

[8]  Arie van Deursen,et al.  Identifying aspects using fan-in analysis , 2004, 11th Working Conference on Reverse Engineering.

[9]  Alexander Chatzigeorgiou,et al.  Identification of Move Method Refactoring Opportunities , 2009, IEEE Transactions on Software Engineering.

[10]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[11]  Emiliano Tramontana Automatically Characterising Components with Concerns and Reducing Tangling , 2013, 2013 IEEE 37th Annual Computer Software and Applications Conference Workshops.

[12]  João M. Fernandes,et al.  Towards a Catalogue of Refactorings and Code Smells for AspectJ , 2006, LNCS Trans. Aspect Oriented Softw. Dev..

[13]  Yongtao Sun,et al.  Design pattern detection by template matching , 2008, SAC '08.

[14]  Alexander Chatzigeorgiou,et al.  Design Pattern Detection Using Similarity Scoring , 2006, IEEE Transactions on Software Engineering.

[15]  Steffen Becker,et al.  Combining clustering and pattern detection for the reengineering of component-based software systems , 2011, QoSA-ISARCS '11.

[16]  G.S. Cojocar,et al.  On clustering based aspect mining , 2008, 2008 4th International Conference on Intelligent Computer Communication and Processing.

[17]  Mariano Ceccato,et al.  Aspect mining through the formal concept analysis of execution traces , 2004, 11th Working Conference on Reverse Engineering.

[18]  Hans-Arno Jacobsen,et al.  Efficiently mining crosscutting concerns through random walks , 2007, AOSD.

[19]  Martin P. Robillard,et al.  Concern graphs: finding and describing concerns using structural program dependencies , 2002, Proceedings of the 24th International Conference on Software Engineering. ICSE 2002.

[20]  Hironori Washizaki,et al.  Dynamic hierarchical undo facility in a fine-grained component environment , 2002 .

[21]  Emily Hill,et al.  Design and Evaluation of an Automated Aspect Mining Tool , 2004, Software Engineering Research and Practice.

[22]  Gregor Kiczales,et al.  Aspect-oriented programming , 1996, CSUR.

[23]  Letha H. Etzkorn,et al.  Configuring latent Dirichlet allocation based feature location , 2014, Empirical Software Engineering.

[24]  Peng Peng,et al.  Answering subgraph queries over massive disk resident graphs , 2014, World Wide Web.

[25]  Mark Harman,et al.  Automated refactoring of object oriented code into aspects , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

[26]  Giuseppe Pappalardo,et al.  Suggesting Extract Class Refactoring Opportunities by Measuring Strength of Method Interactions , 2013, 2013 20th Asia-Pacific Software Engineering Conference (APSEC).

[27]  Gregor Kiczales,et al.  Discussing aspects of AOP , 2001, CACM.

[28]  Leandro Antonelli,et al.  Early identification of crosscutting concerns with the Language Extended Lexicon , 2013, Requirements Engineering.

[29]  Mario Vento,et al.  A (sub)graph isomorphism algorithm for matching large graphs , 2004, IEEE Transactions on Pattern Analysis and Machine Intelligence.

[30]  Sushil Krishna Bajracharya,et al.  A theory of aspects as latent topics , 2008, OOPSLA.

[31]  Arie van Deursen,et al.  On the use of clone detection for identifying crosscutting concern code , 2005, IEEE Transactions on Software Engineering.

[32]  Nelson Neto,et al.  An open-source rule-based syllabification tool for Brazilian Portuguese , 2015, Journal of the Brazilian Computer Society.

[33]  Danfeng Zhang,et al.  Automated Aspect Recommendation through Clustering-Based Fan-in Analysis , 2008, 2008 23rd IEEE/ACM International Conference on Automated Software Engineering.

[34]  Jens Krinke,et al.  Aspect mining using event traces , 2004 .

[35]  Dennis Shasha,et al.  SING: Subgraph search In Non-homogeneous Graphs , 2010, BMC Bioinformatics.

[36]  Mourad Badri,et al.  Toward a new aspect-mining approach for multi-agent systems , 2014, J. Syst. Softw..

[37]  Christian Napoli,et al.  Using Modularity Metrics to Assist Move Method Refactoring of Large Systems , 2013, 2013 Seventh International Conference on Complex, Intelligent, and Software Intensive Systems.

[38]  Joshua Kerievsky,et al.  Refactoring to Patterns , 2004, XP/Agile Universe.

[39]  Paolo Tonella,et al.  A Survey of Automated Code-Level Aspect Mining Techniques , 2007, LNCS Trans. Aspect Oriented Softw. Dev..

[40]  Thomas Zimmermann,et al.  Mining Aspects from Version History , 2006, 21st IEEE/ACM International Conference on Automated Software Engineering (ASE'06).

[41]  Grigoreta Sofia Cojocar On top-down aspect Mining for monitoring techniques implementation , 2016, 2016 IEEE 11th International Symposium on Applied Computational Intelligence and Informatics (SACI).

[42]  Giuseppe Pappalardo,et al.  Superimposing roles for design patterns into application classes by means of aspects , 2012, SAC '12.

[43]  Andrew P. Black,et al.  Patterns of Aspect-Oriented Design , 2007, EuroPLoP.

[44]  Jens Krinke,et al.  Mining Control Flow Graphs for Crosscutting Concerns , 2006, 2006 13th Working Conference on Reverse Engineering.

[45]  Sushil Krishna Bajracharya,et al.  Sourcerer: An infrastructure for large-scale collection and analysis of open-source code , 2014, Sci. Comput. Program..

[46]  Sushil Krishna Bajracharya,et al.  Sourcerer: mining and searching internet-scale software repositories , 2008, Data Mining and Knowledge Discovery.

[47]  Mario Vento,et al.  Graph Matching and Learning in Pattern Recognition in the Last 10 Years , 2014, Int. J. Pattern Recognit. Artif. Intell..

[48]  Dongjin Yu,et al.  Towards the Identification of Cross-Cutting Concerns: A Comprehensive Dynamic Approach Based on Execution Relations , 2014, IEICE Trans. Inf. Syst..

[49]  Giuseppe Pappalardo,et al.  AODP: refactoring code to provide advanced aspect-oriented modularization of design patterns , 2012, SAC '12.

[50]  Martin Fowler,et al.  Refactoring - Improving the Design of Existing Code , 1999, Addison Wesley object technology series.

[51]  Ramnivas Laddad,et al.  AspectJ in Action: Enterprise AOP with Spring Applications , 2009 .