On the Detection of High-Impact Refactoring Opportunities in Programs

We present a novel approach to detect refactoring opportunities by measuring the participation of references between types in instances of patterns representing design flaws. This technique is validated using an experiment where we analyse a set of 95 open-source Java programs for instances of four patterns representing modularisation problems. It turns out that our algorithm can detect high impact refactorings opportunities - a small number of references such that the removal of those references removes the majority of patterns from the program.

[1]  David Hovemeyer,et al.  Finding bugs is easy , 2004, SIGP.

[2]  Daniel Jackson,et al.  Using dependency models to manage software architecture , 2005, OOPSLA '05.

[3]  Markku Sakkinen,et al.  Disciplined Inheritance , 1989, ECOOP.

[4]  Ewan D. Tempero,et al.  Understanding the shape of Java software , 2006, OOPSLA '06.

[5]  J. Davenport Editor , 1960 .

[6]  Ewan D. Tempero,et al.  An empirical study of cycles among classes in Java , 2007, Empirical Software Engineering.

[7]  Grzegorz Rozenberg,et al.  Handbook of Graph Grammars and Computing by Graph Transformations, Volume 1: Foundations , 1997 .

[8]  Nenad Medvidovic,et al.  Identifying Architectural Bad Smells , 2009, 2009 13th European Conference on Software Maintenance and Reengineering.

[9]  Arthur J. Riel,et al.  Object-Oriented Design Heuristics , 1996 .

[10]  Jens Dietrich,et al.  Barriers to Modularity - An Empirical Study to Assess the Potential for Modularisation of Java Programs , 2010, QoSA.

[11]  David Lorge Parnas,et al.  Review of David L. Parnas' "Designing Software for Ease of Extension and Contraction" , 2004 .

[12]  Dirk Beyer,et al.  Efficient relational calculation for software analysis , 2005, IEEE Transactions on Software Engineering.

[13]  S. Shen-Orr,et al.  Networks Network Motifs : Simple Building Blocks of Complex , 2002 .

[14]  Ewan D. Tempero An Empirical Study of Unused Design Decisions in Open Source Java Software , 2008, 2008 15th Asia-Pacific Software Engineering Conference.

[15]  Tom Mens,et al.  Analysing refactoring dependencies using graph transformation , 2007, Software & Systems Modeling.

[16]  Ewan D. Tempero,et al.  How Do Java Programs Use Inheritance? An Empirical Study of Inheritance in Java Software , 2008, ECOOP.

[17]  Andrew Koenig,et al.  Patterns and Antipatterns , 1998, J. Object Oriented Program..

[18]  Toufik Taibi Design Pattern Formalization Techniques , 2007 .

[19]  Walter R. Bischofberger,et al.  Sotograph - A Pragmatic Approach to Source Code Architecture Conformance Checking , 2004, EWSA.

[20]  Ghan Bir Singh,et al.  Single versus multiple inheritance in object oriented programming , 1995, OOPS.

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

[22]  Kevin Lano,et al.  Design Patterns Formalization Techniques , 2007 .

[23]  Rudolf K. Keller,et al.  High-impact Refactoring Based on Architecture Violations , 2007, 11th European Conference on Software Maintenance and Reengineering (CSMR'07).

[24]  Jens Dietrich,et al.  Cluster analysis of Java dependency graphs , 2008, SoftVis '08.

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

[26]  M E J Newman,et al.  Community structure in social and biological networks , 2001, Proceedings of the National Academy of Sciences of the United States of America.

[27]  Itay Maman,et al.  Micro patterns in Java code , 2005, OOPSLA '05.

[28]  Martin Fowler,et al.  Patterns of Enterprise Application Architecture , 2002 .

[29]  Ewan D. Tempero,et al.  Multiple dispatch in practice , 2008, OOPSLA.

[30]  Glenford J. Myers,et al.  Structured Design , 1974, IBM Syst. J..

[31]  Gavin Brown,et al.  Fundamental Nano-Patterns to Characterize and Classify Java Methods , 2010, LDTA.

[32]  S. Shen-Orr,et al.  Network motifs: simple building blocks of complex networks. , 2002, Science.

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