Many of the seventy-two refactorings originally proposed by Fowler have the aim of reducing coupling in classes and thereby aiding programmer maintainability. While we might assume that classes with high levels of coupling would be the targets for refactoring more often than any other type of class, no empirical evidence exists to support this assumption. In this paper, we explore that open question through the extraction of fifty-two of Fowler's catalog of refactorings drawn from versions of four open-source systems. We compare the coupling characteristics of each set of refactored classes with the corresponding set of non-refactored classes (those for which no refactorings were applied across versions), we seek to inform one overriding research question: is there a significant difference between these two sets of classes in terms of their level of coupling? Results showed that highly-coupled classes were more prone to refactoring, particularly through a set of 'core' refactorings. However, wide variations were found across systems for our measures of coupling namely, fan-in and fan-out. Specific individual refactorings were also explored to gain an understanding of why these differences may have occurred.
Refactoring and its relationship with fan-in and fan-out: An empirical study
TONELLI, ROBERTO;MARCHESI, MICHELE;
2012-01-01
Abstract
Many of the seventy-two refactorings originally proposed by Fowler have the aim of reducing coupling in classes and thereby aiding programmer maintainability. While we might assume that classes with high levels of coupling would be the targets for refactoring more often than any other type of class, no empirical evidence exists to support this assumption. In this paper, we explore that open question through the extraction of fifty-two of Fowler's catalog of refactorings drawn from versions of four open-source systems. We compare the coupling characteristics of each set of refactored classes with the corresponding set of non-refactored classes (those for which no refactorings were applied across versions), we seek to inform one overriding research question: is there a significant difference between these two sets of classes in terms of their level of coupling? Results showed that highly-coupled classes were more prone to refactoring, particularly through a set of 'core' refactorings. However, wide variations were found across systems for our measures of coupling namely, fan-in and fan-out. Specific individual refactorings were also explored to gain an understanding of why these differences may have occurred.I documenti in IRIS sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.