Standard

An Exploratory Study on the Relationship between Changes and Refactoring. / Palomba, Fabio; Zaidman, Andy; Oliveto, Rocco; De Lucia, Andrea.

Proceedings - 2017 IEEE 25th International Conference on Program Comprehension, ICPC 2017. Los Alamitos, CA : IEEE Computer Society, 2017. p. 176-185.

Research output: Scientific - peer-reviewConference contribution

Harvard

Palomba, F, Zaidman, A, Oliveto, R & De Lucia, A 2017, An Exploratory Study on the Relationship between Changes and Refactoring. in Proceedings - 2017 IEEE 25th International Conference on Program Comprehension, ICPC 2017. IEEE Computer Society, Los Alamitos, CA, pp. 176-185, ICPC 2017, Buenos Aires, Argentina, 22/05/17. DOI: 10.1109/ICPC.2017.38

APA

Palomba, F., Zaidman, A., Oliveto, R., & De Lucia, A. (2017). An Exploratory Study on the Relationship between Changes and Refactoring. In Proceedings - 2017 IEEE 25th International Conference on Program Comprehension, ICPC 2017 (pp. 176-185). Los Alamitos, CA: IEEE Computer Society. DOI: 10.1109/ICPC.2017.38

Vancouver

Palomba F, Zaidman A, Oliveto R, De Lucia A. An Exploratory Study on the Relationship between Changes and Refactoring. In Proceedings - 2017 IEEE 25th International Conference on Program Comprehension, ICPC 2017. Los Alamitos, CA: IEEE Computer Society. 2017. p. 176-185. Available from, DOI: 10.1109/ICPC.2017.38

Author

Palomba, Fabio ; Zaidman, Andy ; Oliveto, Rocco ; De Lucia, Andrea. / An Exploratory Study on the Relationship between Changes and Refactoring. Proceedings - 2017 IEEE 25th International Conference on Program Comprehension, ICPC 2017. Los Alamitos, CA : IEEE Computer Society, 2017. pp. 176-185

BibTeX

@inbook{40d9eb0041a344d7959980cf563ad3de,
title = "An Exploratory Study on the Relationship between Changes and Refactoring",
abstract = "Refactoring aims at improving the internal structure of a software system without changing its external behavior. Previous studies empirically assessed, on the one hand, the benefits of refactoring in terms of code quality and developers’productivity, and on the other hand, the underlying reasons that push programmers to apply refactoring. Results achieved in the latter investigations indicate that besides personal motivation such as the responsibility concerned with code authorship, refactoring is mainly performed as a consequence of changes in the requirements rather than driven by software quality. However,these findings have been derived by surveying developers, and therefore no software repository study has been carried out to corroborate the achieved findings. To bridge this gap, we provide a quantitative investigation on the relationship between different types of code changes (i.e., Fault Repairing Modification, Feature Introduction Modification, and General Maintenance Modification) and 28 different refactoring types coming from 3 open source projects. Results showed that developers tend to apply a higher number of refactoring operations aimed at improving maintainability and comprehensibility of the source code when fixing bugs. Instead, when new features are implemented, more complex refactoring operations are performed to improve code cohesion. Most of the times, the underlying reasons behind the application of such refactoring operations are represented by the presence of duplicate code or previously introduced self-admitted technical debts.",
keywords = "Refactoring, Code Changes, Empirical Studies",
author = "Fabio Palomba and Andy Zaidman and Rocco Oliveto and {De Lucia}, Andrea",
year = "2017",
doi = "10.1109/ICPC.2017.38",
pages = "176--185",
booktitle = "Proceedings - 2017 IEEE 25th International Conference on Program Comprehension, ICPC 2017",
publisher = "IEEE Computer Society",
address = "United States",

}

RIS

TY - CHAP

T1 - An Exploratory Study on the Relationship between Changes and Refactoring

AU - Palomba,Fabio

AU - Zaidman,Andy

AU - Oliveto,Rocco

AU - De Lucia,Andrea

PY - 2017

Y1 - 2017

N2 - Refactoring aims at improving the internal structure of a software system without changing its external behavior. Previous studies empirically assessed, on the one hand, the benefits of refactoring in terms of code quality and developers’productivity, and on the other hand, the underlying reasons that push programmers to apply refactoring. Results achieved in the latter investigations indicate that besides personal motivation such as the responsibility concerned with code authorship, refactoring is mainly performed as a consequence of changes in the requirements rather than driven by software quality. However,these findings have been derived by surveying developers, and therefore no software repository study has been carried out to corroborate the achieved findings. To bridge this gap, we provide a quantitative investigation on the relationship between different types of code changes (i.e., Fault Repairing Modification, Feature Introduction Modification, and General Maintenance Modification) and 28 different refactoring types coming from 3 open source projects. Results showed that developers tend to apply a higher number of refactoring operations aimed at improving maintainability and comprehensibility of the source code when fixing bugs. Instead, when new features are implemented, more complex refactoring operations are performed to improve code cohesion. Most of the times, the underlying reasons behind the application of such refactoring operations are represented by the presence of duplicate code or previously introduced self-admitted technical debts.

AB - Refactoring aims at improving the internal structure of a software system without changing its external behavior. Previous studies empirically assessed, on the one hand, the benefits of refactoring in terms of code quality and developers’productivity, and on the other hand, the underlying reasons that push programmers to apply refactoring. Results achieved in the latter investigations indicate that besides personal motivation such as the responsibility concerned with code authorship, refactoring is mainly performed as a consequence of changes in the requirements rather than driven by software quality. However,these findings have been derived by surveying developers, and therefore no software repository study has been carried out to corroborate the achieved findings. To bridge this gap, we provide a quantitative investigation on the relationship between different types of code changes (i.e., Fault Repairing Modification, Feature Introduction Modification, and General Maintenance Modification) and 28 different refactoring types coming from 3 open source projects. Results showed that developers tend to apply a higher number of refactoring operations aimed at improving maintainability and comprehensibility of the source code when fixing bugs. Instead, when new features are implemented, more complex refactoring operations are performed to improve code cohesion. Most of the times, the underlying reasons behind the application of such refactoring operations are represented by the presence of duplicate code or previously introduced self-admitted technical debts.

KW - Refactoring

KW - Code Changes

KW - Empirical Studies

UR - http://resolver.tudelft.nl/uuid:40d9eb00-41a3-44d7-9599-80cf563ad3de

U2 - 10.1109/ICPC.2017.38

DO - 10.1109/ICPC.2017.38

M3 - Conference contribution

SP - 176

EP - 185

BT - Proceedings - 2017 IEEE 25th International Conference on Program Comprehension, ICPC 2017

PB - IEEE Computer Society

ER -

ID: 32869333