SEMar 10, 2020

Refactoring Graphs: Assessing Refactoring over Time

arXiv:2003.04666v14 citationsHas Code
AI Analysis

This work addresses the need for better tools to study refactoring patterns over time for software developers and researchers, though it is incremental as it builds on existing refactoring concepts with a new graph-based representation.

The paper tackles the problem of understanding refactoring activities over time in software evolution by introducing refactoring graphs and an algorithm to build them, analyzing 1,150 graphs from 10 Java projects to provide quantitative data on size, commits, age, composition, and developers.

Refactoring is an essential activity during software evolution. Frequently, practitioners rely on such transformations to improve source code maintainability and quality. As a consequence, this process may produce new source code entities or change the structure of existing ones. Sometimes, the transformations are atomic, i.e., performed in a single commit. In other cases, they generate sequences of modifications performed over time. To study and reason about refactorings over time, in this paper, we propose a novel concept called refactoring graphs and provide an algorithm to build such graphs. Then, we investigate the history of 10 popular open-source Java-based projects. After eliminating trivial graphs, we characterize a large sample of 1,150 refactoring graphs, providing quantitative data on their size, commits, age, refactoring composition, and developers. We conclude by discussing applications and implications of refactoring graphs, for example, to improve code comprehension, detect refactoring patterns, and support software evolution studies.

Foundations

The foundational work for this paper's niche, ranked by how specifically the neighbourhood builds on it — not by global fame.

Your Notes