An Initial Investigation into Change-Based Reconstruction of Floss-Refactorings

Today, it is widely accepted that if refactoring is applied in practice, it is mainly interweaved with normal software development - so called "floss refactoring". Unfortunately, the current state-of-the-art is poorly equipped to mine floss refactoring from version histories, mainly because they infer refactorings by comparing two snapshots of a system and making educated guesses about the precise edit operations applied in between. In this paper we propose a solution that reconstructs refactorings not on snapshots of a system but using the actual changes as they are performed in an integrated development environment. We compare our solution against RefFinder and demonstrate that on a small yet representative program (the well-known "Video Rental system") our approach is more accurate in identifying occurrences of the "Move Method" and "Rename Method" refactorings.

[1]  Serge Demeyer,et al.  Studying the Effect of Refactorings: A Complexity Metrics Perspective , 2010, 2010 Seventh International Conference on the Quality of Information and Communications Technology.

[2]  Ralph E. Johnson,et al.  Automated Detection of Refactorings in Evolving Components , 2006, ECOOP.

[3]  Arend Rensink The GROOVE Simulator: A Tool for State Space Generation , 2003, AGTIVE.

[4]  Romain Robbes,et al.  SpyWare: a change-aware development toolset , 2008, ICSE '08.

[5]  Serge Demeyer,et al.  FAMIX 2. 1-the FAMOOS information exchange model , 1999 .

[6]  Miryung Kim,et al.  Template-based reconstruction of complex refactorings , 2010, 2010 IEEE International Conference on Software Maintenance.

[7]  Zhendong Niu,et al.  An Initial Study on Refactoring Tactics , 2012, 2012 IEEE 36th Annual Computer Software and Applications Conference.

[8]  Serge Demeyer,et al.  ChEOPSJ: Change-Based Test Optimization , 2012, 2012 16th European Conference on Software Maintenance and Reengineering.

[9]  Michele Lanza,et al.  Syde: a tool for collaborative software development , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[10]  Diomidis Spinellis,et al.  Refactoring--Does It Improve Software Quality? , 2007, Fifth International Workshop on Software Quality (WoSQ'07: ICSE Workshops 2007).

[11]  Miryung Kim,et al.  An empirical investigation into the impact of refactoring on regression testing , 2012, 2012 28th IEEE International Conference on Software Maintenance (ICSM).

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

[13]  J. Henkel,et al.  CatchUp! Capturing and replaying refactorings to support API evolution , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[14]  Katsuhisa Maruyama,et al.  A change-aware development environment by recording editing operations of source code , 2008, MSR '08.

[15]  Andy Zaidman,et al.  Change-Based Test Selection in the Presence of Developer Tests , 2013, 2013 17th European Conference on Software Maintenance and Reengineering.

[16]  Serge Demeyer,et al.  Reconstruction of successful software evolution using clone detection , 2003, Sixth International Workshop on Principles of Software Evolution, 2003. Proceedings..

[17]  Michele Marchesi,et al.  Parameter-Based Refactoring and the Relationship with Fan-in/Fan-out Coupling , 2011, 2011 IEEE Fourth International Conference on Software Testing, Verification and Validation Workshops.

[18]  E. Murphy-Hill,et al.  Refactoring Tools: Fitness for Purpose , 2006, IEEE Software.

[19]  Andrew P. Black,et al.  How we refactor, and how we know it , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[20]  Stephan Diehl,et al.  Are refactorings less error-prone than other changes? , 2006, MSR '06.

[21]  Theo D'Hondt,et al.  Change-oriented software engineering , 2007, ICDL '07.

[22]  Eleni Stroulia,et al.  Digging the Development Dust for Refactorings , 2006, 14th IEEE International Conference on Program Comprehension (ICPC'06).