Refactoring the aspectizable interfaces: an empirical assessment

Aspect oriented programming aims at addressing the problem of the crosscutting concerns, i.e., those functionalities that are scattered among several modules in a given system. Aspects can be defined to modularize such concerns. In this work, we focus on a specific kind of crosscutting concerns, the scattered implementation of methods declared by interfaces that do not belong to the principal decomposition. We call such interfaces aspectizable. All the aspectizable interfaces identified within a large number of classes from the Java Standard Library and from three Java applications have been automatically migrated to aspects. To assess the effects of the migration on the internal and external quality attributes of these systems, we collected a set of metrics and we conducted an empirical study, in which some maintenance tasks were executed on the two alternative versions (with and without aspects) of the same system. In this paper, we report the results of such a comparison.

[1]  Kevin A. Schneider,et al.  Source transformation in software engineering using the TXL transformation system , 2002, Inf. Softw. Technol..

[2]  Lionel C. Briand,et al.  A Unified Framework for Cohesion Measurement in Object-Oriented Systems , 2004, Empirical Software Engineering.

[3]  Gregor Kiczales,et al.  Role-based refactoring of crosscutting concerns , 2005, AOSD '05.

[4]  Sérgio Soares,et al.  Implementing distribution and persistence aspects with aspectJ , 2002, OOPSLA '02.

[5]  Paolo Tonella,et al.  Migrating interface implementations to aspects , 2004, 20th IEEE International Conference on Software Maintenance, 2004. Proceedings..

[6]  Lionel C. Briand,et al.  A Unified Framework for Coupling Measurement in Object-Oriented Systems , 1999, IEEE Trans. Software Eng..

[7]  Gail C. Murphy,et al.  Managing crosscutting concerns during software evolution tasks: an inquisitive study , 2002, AOSD '02.

[8]  Adrian M. Colyer,et al.  Aspect-oriented programming with AspectJ , 2005, IBM Syst. J..

[9]  Ruzanna Chitchyan,et al.  Persistence as an aspect , 2003, AOSD '03.

[10]  Arie van Deursen,et al.  An evaluation of clone detection techniques for crosscutting concerns , 2004, 20th IEEE International Conference on Software Maintenance, 2004. Proceedings..

[11]  Stefan Hanenberg,et al.  Concerning AOP and Inheritance , 2001 .

[12]  Andy Kellens,et al.  Inductively Generated Pointcuts to Support Refactoring to Aspects , 2004 .

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

[14]  Jens Krinke,et al.  Aspect mining using event traces , 2004, Proceedings. 19th International Conference on Automated Software Engineering, 2004..

[15]  Paulo Borba Refactoring and Code Generation Tools for AspectJ , 2002 .

[16]  Magiel Bruntink,et al.  Predicting class testability using object-oriented metrics , 2004 .

[17]  Gregor Kiczales,et al.  Overcoming the Prevalent Decomposition in Legacy Code , 2001 .

[18]  Stanley M. Sutton,et al.  N degrees of separation: multi-dimensional separation of concerns , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

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

[20]  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.

[21]  Bernd Bruegge,et al.  Object-Oriented Software Engineering: Using UML, Patterns and Java, Second Edition , 2003 .

[22]  Yun Yang,et al.  Towards a clone detection benchmark suite and results archive , 2003, 11th IEEE International Workshop on Program Comprehension, 2003..

[23]  Kris De Volder,et al.  Navigating and querying code without getting lost , 2003, AOSD '03.

[24]  Arie van Deursen,et al.  Aspect Mining and Refactoring , 2003 .

[25]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

[26]  Kim Mens,et al.  Mining aspectual views using formal concept analysis , 2004, Source Code Analysis and Manipulation, Fourth IEEE International Workshop on.

[27]  Marius Marin Refactoring JHOTDRAW’s Undo concern to ASPECTJ , 2005 .

[28]  N. Loughran,et al.  Mining Aspects , 2002 .

[29]  Stefan Hanenberg,et al.  Roles and Aspects: Similarities, Differences, and Synergetic Potential , 2002, OOIS.

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

[31]  Andy Kellens,et al.  An Experiment in Using Inductive Logic Programming to Uncover Pointcuts , 2004 .

[32]  Stefan Hanenberg,et al.  Refactoring of Aspect-Oriented Software , 2003 .

[33]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

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

[35]  William G. Griswold,et al.  Exploiting the map metaphor in a tool for software evolution , 2001, Proceedings of the 23rd International Conference on Software Engineering. ICSE 2001.

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

[37]  Ettore Merlo,et al.  Experiment on the automatic detection of function clones in a software system using metrics , 1996, 1996 Proceedings of International Conference on Software Maintenance.