Automated refactoring of object oriented code into aspects

This paper presents a human-guided automated approach to refactoring object oriented programs to the aspect oriented paradigm. The approach is based upon the iterative application of four steps: discovery, enabling, selection, and refactoring. After discovering potentially applicable refactorings, the enabling step transforms the code to improve refactorability. During the selection phase the particular refactorings to apply are chosen. Finally, the refactoring phase transforms the code by moving the selected code to a new aspect. This paper presents the results of an evaluation in which one of the crosscutting concerns of a 40,000 LoC program (JHotDraw) is refactored.

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

[2]  Mariano Ceccato,et al.  A qualitative comparison of three aspect mining techniques , 2005, 13th International Workshop on Program Comprehension (IWPC'05).

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

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

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

[6]  Chris Verhoef,et al.  9210: The Zip Code of Another IT-Soap , 2004, Software Quality Journal.

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

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

[9]  João M. Fernandes,et al.  Towards a catalog of aspect-oriented refactorings , 2005, AOSD '05.

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

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

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

[13]  Martin P. Ward Assembler to C migration using the FermaT transformation system , 1999, Proceedings IEEE International Conference on Software Maintenance - 1999 (ICSM'99). 'Software Maintenance for Business Change' (Cat. No.99CB36360).

[14]  Ivan Kiselev,et al.  Aspect-Oriented Programming with AspectJ , 2002 .

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

[16]  Mark Harman,et al.  Syntax-Directed Amorphous Slicing , 2004, Automated Software Engineering.

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

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

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

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

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

[22]  Mark Harman,et al.  Amorphous program slicing , 2003, J. Syst. Softw..

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

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

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

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

[27]  Aniello Cimitile,et al.  Decomposing legacy programs: a first step towards migrating to client-server platforms , 1998, Proceedings. 6th International Workshop on Program Comprehension. IWPC'98 (Cat. No.98TB100242).