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...

Full description

Saved in:
Bibliographic Details
Main Authors: DE OLIVEIRA, Marcos César, FREITAS, Davi, BONIFACIO, Rodrigo, PINTO, Gustavo, LO, David
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