Skip to main content
Article
Finding needles in a haystack: Leveraging co-change dependencies to recommend refactorings
Journal of Systems and Software
  • Marcos César DE OLIVEIRA, University of Brasilia
  • Davi FREITAS, University of Brasilia
  • Rodrigo BONIFACIO, University of Brasilia
  • Gustavo PINTO, Federal University of Parana, Brazil
  • David LO, Singapore Management University
Publication Type
Journal Article
Version
submittedVersion
Publication Date
12-2019
Abstract

A fine-grained co-change dependency arises when two fine-grained source-code entities, e.g., a method,change frequently together. This kind of dependency is relevant when considering remodularization efforts (e.g., to keep methods that change together in the same class). However, existing approaches forrecommending refactorings that change software decomposition (such as a move method) do not explorethe use of fine-grained co-change dependencies. In this paper we present a novel approach for recommending move method and move field refactorings, which removes co-change dependencies and evolutionary smells, a particular type of dependency that arise when fine-grained entities that belong to different classes frequently change together. First we evaluate our approach using 49 open-source Java projects,finding 610 evolutionary smells. Our approach automatically computes 56 refactoring recommendationsthat remove these evolutionary smells, without introducing new static dependencies. We also evaluateour approach by submitting pull-requests with the recommendations of our technique, in the contextof one large and two medium size proprietary Java systems. Quantitative results show that our approachoutperforms existing approaches for recommending refactorings when dealing with co-change dependencies. Qualitative results show that our approach is promising, not only for recommending refactorings butalso to reveal opportunities of design improvements.

Keywords
  • Remodularization,
  • Software clustering,
  • Design quality,
  • Refactoring,
  • Co-change dependencies
Identifier
10.1016/j.jss.2019.110420
Publisher
Elsevier
Copyright Owner and License
Authors
Creative Commons License
Creative Commons Attribution-NonCommercial-No Derivative Works 4.0 International
Additional URL
https://doi.org/10.1016/j.jss.2019.110420
Citation Information
Marcos César DE OLIVEIRA, Davi FREITAS, Rodrigo BONIFACIO, Gustavo PINTO, et al.. "Finding needles in a haystack: Leveraging co-change dependencies to recommend refactorings" Journal of Systems and Software Vol. 158 (2019) p. 1 - 19 ISSN: 0164-1212
Available at: http://works.bepress.com/david_lo/258/