Refactoring Clustering in Java Software Networks

We present a study on the refactoring activities performed during the evolution of 7 popular Java open source software systems, using a complex network approach. We find that classes affected by refactorings are more likely to be interlinked than others, forming connected subgraphs. Our results show that in a software network, classes linked to refactored classes are likely to be refactored themselves. This result is meaningful because knowing how refactored classes are arranged inside a network could be useful to support developers in maintenance and refactoring activities.

[1]  Jun Hu,et al.  Complex Network Thinking in Software Engineering , 2008, 2008 International Conference on Computer Science and Software Engineering.

[2]  Michele Marchesi,et al.  Refactoring and its Relationship with Fan-in and Fan-out: An Empirical Study , 2012, 2012 16th European Conference on Software Maintenance and Reengineering.

[3]  Michele Marchesi,et al.  Entropy of the degree distribution and object-oriented software quality , 2012, 2012 3rd International Workshop on Emerging Trends in Software Metrics (WETSoM).

[4]  Maurizio Morisio,et al.  Reuse of Off-the-Shelf Components, 9th International Conference on Software Reuse, ICSR 2006, Turin, Italy, June 12-15, 2006, Proceedings , 2006, ICSR.

[5]  Jing Li,et al.  The Qualitas Corpus: A Curated Collection of Java Code for Empirical Studies , 2010, 2010 Asia Pacific Software Engineering Conference.

[6]  Christopher R. Myers,et al.  Software systems as complex networks: structure, function, and evolvability of software collaboration graphs , 2003, Physical review. E, Statistical, nonlinear, and soft matter physics.

[7]  George Loizou,et al.  Code smell eradication and associated refactoring , 2008 .

[8]  Takeo Imai,et al.  A quantitative evaluation of maintainability enhancement by refactoring , 2002, International Conference on Software Maintenance, 2002. Proceedings..

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

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

[11]  G. A. Kohring,et al.  Complex Dependencies in Large Software Systems , 2009, Adv. Complex Syst..

[12]  Marko Bajec,et al.  Community structure of complex software systems: Analysis and applications , 2011, ArXiv.

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

[14]  Lian Wen,et al.  Software Systems as Complex Networks , 2007, 6th IEEE International Conference on Cognitive Informatics.

[15]  Michele Marchesi,et al.  Two Case Studies on Clusterization of Refactored Classes , 2013 .

[16]  Giulio Concas,et al.  Are Refactoring Practices Related to Clusters in Java Software? , 2014, XP.

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

[18]  Alberto Sillitti,et al.  Does Refactoring Improve Reusability? , 2006, ICSR.

[19]  Audris Mockus,et al.  Refactoring for changeability: a way to go? , 2005, 11th IEEE International Software Metrics Symposium (METRICS'05).

[20]  Miryung Kim,et al.  Ref-Finder: a refactoring reconstruction tool based on logic query templates , 2010, FSE '10.

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

[22]  William C. Wake,et al.  Refactoring Workbook , 2003 .

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

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

[25]  Yann-Gaël Guéhéneuc,et al.  DECOR: A Method for the Specification and Detection of Code and Design Smells , 2010, IEEE Transactions on Software Engineering.

[26]  Acm Sigsoft Proceedings of the 5th International Workshop on Software Quality , 2007 .

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

[28]  Tibor Gyimóthy,et al.  Empirical validation of object-oriented metrics on open source software for fault prediction , 2005, IEEE Transactions on Software Engineering.

[29]  Helen Sharp,et al.  Agile Processes, in Software Engineering, and Extreme Programming , 2016, Lecture Notes in Business Information Processing.

[30]  R. Ferrer i Cancho,et al.  Scale-free networks from optimal design , 2002, cond-mat/0204344.