A Meta-analysis Approach to Refactoring and XP

The mechanics of seventy-two different Java refactorings are described fully in Fowler's text. In the same text, Fowler describes seven categories of refactoring, into which each of the seventy-two refactorings can be placed. A current research problem in the refactoring and XP community is assessing the likely time and testing effort for each refactoring, since any single refactoring may use any number of other refactorings as part of its mechanics and, in turn, can be used by many other refactorings. In this paper, we draw on a dependency analysis carried out as part of our research in which we identify the 'Use' and 'Used By' relationships of refactorings in all seven categories. We offer reasons why refactorings in the 'Dealing with Generalisation' category seem to embrace two distinct refactoring sub-categories and how refactorings in the 'Moving Features between Objects' category also exhibit specific characteristics. In a wider sense, our meta-analysis provides a developer with concrete guidelines on which refactorings, due to their explicit dependencies, will prove problematic from an effort and testing perspective.

[1]  Emilia Mendes,et al.  Architectural level hypothesis testing through reverse engineering of object-oriented software , 2000, Proceedings IWPC 2000. 8th International Workshop on Program Comprehension.

[2]  Emilia Mendes,et al.  Trends in Java code changes: the key to identification of refactorings? , 2003, PPPJ.

[3]  George Loizou,et al.  The role of constructors in the context of refactoring object-oriented systems , 2003, Seventh European Conference onSoftware Maintenance and Reengineering, 2003. Proceedings..

[5]  William F. Opdyke,et al.  Refactoring object-oriented frameworks , 1992 .

[6]  Patrick Nixon,et al.  Composite Refactorings for Java Programs , 2000 .

[7]  Michael D. Ernst,et al.  Automatic test factoring for java , 2005, ASE '05.

[8]  Tom Mens,et al.  A survey of software refactoring , 2004, IEEE Transactions on Software Engineering.

[9]  Steve Counsell,et al.  Extracting refactoring trends from open-source software and a possible solution to the 'related refactoring' conundrum , 2006, SAC '06.

[10]  Lionel C. Briand,et al.  A measurement framework for object-oriented software testability , 2005, Inf. Softw. Technol..

[11]  Brian Foote,et al.  Designing Reusable Classes , 2001 .

[12]  Giancarlo Succi,et al.  Extreme Programming Perspectives , 2002 .

[13]  Arie van Deursen,et al.  The Video Store Revisited – Thoughts on Refactoring and Testing , 2002 .

[14]  Arie van Deursen,et al.  Refactoring: Emerging Trends and Open Problems , 2003 .

[15]  Oscar Nierstrasz,et al.  Finding refactorings via change metrics , 2000, OOPSLA '00.

[16]  Arie van Deursen,et al.  An empirical study into class testability , 2006, J. Syst. Softw..

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

[18]  Rachel Harrison,et al.  Experimental assessment of the effect of inheritance on the maintainability of object-oriented systems , 2000, J. Syst. Softw..

[19]  Lionel C. Briand,et al.  A Controlled Experiment for Evaluating Quality Guidelines on the Maintainability of Object-Oriented Designs , 2001, IEEE Trans. Software Eng..

[20]  William F. Opdyke,et al.  Lifecycle and refactoring patterns that support evolution and reuse , 1995 .

[21]  Arie van Deursen,et al.  Refactoring test code , 2001 .

[22]  Tom Mens,et al.  Identifying refactoring opportunities using logic meta programming , 2003, Seventh European Conference onSoftware Maintenance and Reengineering, 2003. Proceedings..

[23]  Kent L. Beck,et al.  Extreme programming explained - embrace change , 1990 .

[24]  J. Herbsleb,et al.  Two case studies of open source software development: Apache and Mozilla , 2002, TSEM.

[25]  James M. Bieman,et al.  Open source software development: a case study of FreeBSD , 2004, 10th International Symposium on Software Metrics, 2004. Proceedings..

[26]  Robert M. Hierons,et al.  The Effectiveness of Refactoring, Based on a Compatibility Testing Taxonomy and a Dependency Graph , 2006, Testing: Academic & Industrial Conference - Practice And Research Techniques (TAIC PART'06).