TY - GEN
T1 - How Do Developers Refactor Code to Improve Code Reusability?
AU - AlOmar, Eman Abdullah
AU - Rodriguez, Philip T.
AU - Bowman, Jordan
AU - Wang, Tianjia
AU - Adepoju, Benjamin
AU - Lopez, Kevin
AU - Newman, Christian
AU - Ouni, Ali
AU - Mkaouer, Mohamed Wiem
N1 - Publisher Copyright:
© 2020, Springer Nature Switzerland AG.
PY - 2020
Y1 - 2020
N2 - Refactoring is the de-facto practice to optimize software health. While there has been several studies proposing refactoring strategies to optimize software design through applying design patterns and removing design defects, little is known about how developers actually refactor their code to improve its reuse. Therefore, we extract, from 1,828 open source projects, a set of refactorings which were intended to improve the software reusability. We analyze the impact of reusability refactorings on state-of-the-art reusability metrics, and we compare the distribution of reusability refactoring types, with the distribution of the remaining mainstream refactorings. Overall, we found that the distribution of refactoring types, applied in the context of reusability, is different from the distribution of refactoring types in mainstream development. In the refactorings performed to improve reusability, source files are subject to more design level types of refactorings. Reusability refactorings significantly impact, high-level code elements, such as packages, classes, and methods, while typical refactorings, impact all code elements, including identifiers, and parameters.
AB - Refactoring is the de-facto practice to optimize software health. While there has been several studies proposing refactoring strategies to optimize software design through applying design patterns and removing design defects, little is known about how developers actually refactor their code to improve its reuse. Therefore, we extract, from 1,828 open source projects, a set of refactorings which were intended to improve the software reusability. We analyze the impact of reusability refactorings on state-of-the-art reusability metrics, and we compare the distribution of reusability refactoring types, with the distribution of the remaining mainstream refactorings. Overall, we found that the distribution of refactoring types, applied in the context of reusability, is different from the distribution of refactoring types in mainstream development. In the refactorings performed to improve reusability, source files are subject to more design level types of refactorings. Reusability refactorings significantly impact, high-level code elements, such as packages, classes, and methods, while typical refactorings, impact all code elements, including identifiers, and parameters.
KW - Quality
KW - Refactoring
KW - Reusability
KW - Software metrics
UR - http://www.scopus.com/inward/record.url?scp=85095854721&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=85095854721&partnerID=8YFLogxK
U2 - 10.1007/978-3-030-64694-3_16
DO - 10.1007/978-3-030-64694-3_16
M3 - Conference contribution
AN - SCOPUS:85095854721
SN - 9783030646936
T3 - Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)
SP - 261
EP - 276
BT - Reuse in Emerging Software Engineering Practices - 19th International Conference on Software and Systems Reuse, ICSR 2020, Proceedings
A2 - Ben Sassi, Sihem
A2 - Ben Sassi, Sihem
A2 - Ducasse, Stéphane
A2 - Mili, Hafedh
T2 - 19th International Conference on Software and Systems Reuse, ICSR 2020
Y2 - 2 December 2020 through 4 December 2020
ER -