A Model to Identify Refactoring Effort during Maintenance by Mining Source Code Repositories

The use of refactoring as a way to continuously improve the design and quality of software and prevent its aging is mostly limited to Agile Methodologies and to a lower amount to software reengineering. In these communities refactoring is supposed to improve in the long-term the structure of existing code in order to make it easier to modify and maintain. To sustain such claims and analyze the impact of refactoring on maintenance we need to know how much refactoring developers do. In few cases such information is directly available for example from CVS log messages. In this study we propose a model on how to mine software repositories in order to obtain information of refactoring effort throughout the evolution of a software system. Moreover, we have developed a prototype that implements our model and validate our approach with two small case studies.

[1]  Jan Verelst,et al.  Refactoring - improving coupling and cohesion of existing code , 2004, 11th Working Conference on Reverse Engineering.

[2]  Eleni Stroulia,et al.  Metrics of Refactoring-based Development: An Experience Report , 2001, OOIS.

[3]  Alan Bundy,et al.  Constructing Induction Rules for Deductive Synthesis Proofs , 2006, CLASE.

[4]  Chris F. Kemerer,et al.  A Metrics Suite for Object Oriented Design , 2015, IEEE Trans. Software Eng..

[5]  Harald C. Gall,et al.  EvoLens: lens-view visualizations of evolution data , 2005, Eighth International Workshop on Principles of Software Evolution (IWPSE'05).

[6]  Anas N. Al-Rabadi,et al.  A comparison of modified reconstructability analysis and Ashenhurst‐Curtis decomposition of Boolean functions , 2004 .

[7]  Harald C. Gall,et al.  Improving evolvability through refactoring , 2005, ACM SIGSOFT Softw. Eng. Notes.

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

[9]  Leon Moonen,et al.  Java quality assurance by detecting code smells , 2002, Ninth Working Conference on Reverse Engineering, 2002. Proceedings..

[10]  Pekka Abrahamsson,et al.  Mobile-D: an agile approach for mobile application development , 2004, OOPSLA '04.

[11]  Claus Lewerentz,et al.  Metrics Based Refactoring , 2001, CSMR.

[12]  Tom Mens,et al.  Refactoring: Current Research and Future Trends , 2003, LDTA@ETAPS.

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

[14]  Alberto Sillitti,et al.  Collecting, integrating and analyzing software metrics and personal software process data , 2003, 2003 Proceedings 29th Euromicro Conference.

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

[16]  Philip M. Johnson,et al.  Investigating data quality problems in the PSP , 1998, SIGSOFT '98/FSE-6.

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

[18]  Witold Pedrycz,et al.  A Case Study on the Impact of Refactoring on Quality and Productivity in an Agile Team , 2008, CEE-SET.

[19]  Bart Du Bois,et al.  Describing the impact of refactoring on internal program quality , 2003 .

[20]  Markus Pizka,et al.  Straightening Spaghetti-Code with Refactoring? , 2004, Software Engineering Research and Practice.