TY - GEN
T1 - Automating Source Code Refactoring in the Classroom
AU - Alomar, Eman Abdullah
AU - Mkaouer, Mohamed Wiem
AU - Ouni, Ali
N1 - Publisher Copyright:
© 2024 ACM.
PY - 2024/3/7
Y1 - 2024/3/7
N2 - Refactoring is the practice of improving software quality without altering its external behavior. Developers intuitively refactor their code for multiple purposes, such as improving program comprehension, reducing code complexity, dealing with technical debt, and removing code smells. However, no prior studies have exposed the students to an experience of the process of antipatterns detection and refactoring correction, and provided students with toolset to practice it. To understand and increase the awareness of refactoring concepts, in this paper, we aim to reflect on our experience with teaching refactoring and how it helps students become more aware of bad programming practices and the importance of correcting them via refactoring. This paper discusses the results of an experiment in the classroom that involved carrying out various refactoring activities for the purpose of removing antipatterns using JDeodorant, an IDE plugin that supports antipatterns detection and refactoring. The results of the quantitative and qualitative analysis with 171 students show that students tend to appreciate the idea of learning refactoring and are satisfied with various aspects of the JDeodorant plugin's operation. Through this experiment, refactoring can turn into a vital part of the computing educational plan. We envision our findings enabling educators to support students with refactoring tools tuned towards safer and trustworthy refactoring.
AB - Refactoring is the practice of improving software quality without altering its external behavior. Developers intuitively refactor their code for multiple purposes, such as improving program comprehension, reducing code complexity, dealing with technical debt, and removing code smells. However, no prior studies have exposed the students to an experience of the process of antipatterns detection and refactoring correction, and provided students with toolset to practice it. To understand and increase the awareness of refactoring concepts, in this paper, we aim to reflect on our experience with teaching refactoring and how it helps students become more aware of bad programming practices and the importance of correcting them via refactoring. This paper discusses the results of an experiment in the classroom that involved carrying out various refactoring activities for the purpose of removing antipatterns using JDeodorant, an IDE plugin that supports antipatterns detection and refactoring. The results of the quantitative and qualitative analysis with 171 students show that students tend to appreciate the idea of learning refactoring and are satisfied with various aspects of the JDeodorant plugin's operation. Through this experiment, refactoring can turn into a vital part of the computing educational plan. We envision our findings enabling educators to support students with refactoring tools tuned towards safer and trustworthy refactoring.
KW - antipattern
KW - education
KW - quality
KW - Refactoring
KW - software engineering
UR - http://www.scopus.com/inward/record.url?scp=85189330905&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=85189330905&partnerID=8YFLogxK
U2 - 10.1145/3626252.3630787
DO - 10.1145/3626252.3630787
M3 - Conference contribution
AN - SCOPUS:85189330905
T3 - SIGCSE 2024 - Proceedings of the 55th ACM Technical Symposium on Computer Science Education
SP - 60
EP - 66
BT - SIGCSE 2024 - Proceedings of the 55th ACM Technical Symposium on Computer Science Education
T2 - 55th ACM Technical Symposium on Computer Science Education, SIGCSE 2024
Y2 - 20 March 2024 through 23 March 2024
ER -