Finding needles in a haystack: Leveraging co-change dependencies to recommend refactorings
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...
Saved in:
Main Authors: | , , , , |
---|---|
Format: | text |
Language: | English |
Published: |
Institutional Knowledge at Singapore Management University
2019
|
Subjects: | |
Online Access: | https://ink.library.smu.edu.sg/sis_research/4470 https://ink.library.smu.edu.sg/context/sis_research/article/5473/viewcontent/Needle_in_haystack_JSS_2019_sv.pdf |
Tags: |
Add Tag
No Tags, Be the first to tag this record!
|
Institution: | Singapore Management University |
Language: | English |
id |
sg-smu-ink.sis_research-5473 |
---|---|
record_format |
dspace |
spelling |
sg-smu-ink.sis_research-54732020-04-28T06:08:40Z Finding needles in a haystack: Leveraging co-change dependencies to recommend refactorings DE OLIVEIRA, Marcos César FREITAS, Davi BONIFACIO, Rodrigo PINTO, Gustavo LO, David 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. 2019-12-01T08:00:00Z text application/pdf https://ink.library.smu.edu.sg/sis_research/4470 info:doi/10.1016/j.jss.2019.110420 https://ink.library.smu.edu.sg/context/sis_research/article/5473/viewcontent/Needle_in_haystack_JSS_2019_sv.pdf http://creativecommons.org/licenses/by-nc-nd/4.0/ Research Collection School Of Computing and Information Systems eng Institutional Knowledge at Singapore Management University Remodularization Software clustering Design quality Refactoring Co-change dependencies Computer Engineering Software Engineering |
institution |
Singapore Management University |
building |
SMU Libraries |
continent |
Asia |
country |
Singapore Singapore |
content_provider |
SMU Libraries |
collection |
InK@SMU |
language |
English |
topic |
Remodularization Software clustering Design quality Refactoring Co-change dependencies Computer Engineering Software Engineering |
spellingShingle |
Remodularization Software clustering Design quality Refactoring Co-change dependencies Computer Engineering Software Engineering DE OLIVEIRA, Marcos César FREITAS, Davi BONIFACIO, Rodrigo PINTO, Gustavo LO, David Finding needles in a haystack: Leveraging co-change dependencies to recommend refactorings |
description |
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. |
format |
text |
author |
DE OLIVEIRA, Marcos César FREITAS, Davi BONIFACIO, Rodrigo PINTO, Gustavo LO, David |
author_facet |
DE OLIVEIRA, Marcos César FREITAS, Davi BONIFACIO, Rodrigo PINTO, Gustavo LO, David |
author_sort |
DE OLIVEIRA, Marcos César |
title |
Finding needles in a haystack: Leveraging co-change dependencies to recommend refactorings |
title_short |
Finding needles in a haystack: Leveraging co-change dependencies to recommend refactorings |
title_full |
Finding needles in a haystack: Leveraging co-change dependencies to recommend refactorings |
title_fullStr |
Finding needles in a haystack: Leveraging co-change dependencies to recommend refactorings |
title_full_unstemmed |
Finding needles in a haystack: Leveraging co-change dependencies to recommend refactorings |
title_sort |
finding needles in a haystack: leveraging co-change dependencies to recommend refactorings |
publisher |
Institutional Knowledge at Singapore Management University |
publishDate |
2019 |
url |
https://ink.library.smu.edu.sg/sis_research/4470 https://ink.library.smu.edu.sg/context/sis_research/article/5473/viewcontent/Needle_in_haystack_JSS_2019_sv.pdf |
_version_ |
1770574848762839040 |