RefacTutor: An Interactive Tutoring System for Software Refactoring

Thorsten Händler, Gustaf Neumann, Fiodor Smirnov

Publication: Chapter in book/Conference proceedingChapter in edited volume


While software refactoring is considered important to manage software complexity, it is often perceived as difficult and risky by software developers and thus neglected in practice. In this article, we present RefacTutor, an interactive tutoring system for promoting software developers’ practical competences in software refactoring. The tutoring system provides immediate feedback to the users regarding the quality of the software design and the functional correctness of the (modified) source code. In particular, after each code modification (refactoring step), the user can review the results of run-time regression tests and compare the actual software design (as-is) with the targeted design (to-be) in order to check quality improvement. For this purpose, structural and behavioral diagrams of the Unified Modeling Language (UML2) representing the as-is software design are automatically reverse-engineered from source code. The to-be UML design diagrams can be pre-specified by the instructor. To demonstrate the technical feasibility of the approach, we provide a browser-based software prototype in Java accompanied by a collection of exercise examples. Moreover, we specify a viewpoint model for software refactoring, allocate exercises to competence levels and describe an exemplary path for teaching and training.
Original languageEnglish
Title of host publicationComputer Supported Education, Revised Selected Papers of CSEDU 2019. Communications in Computer and Information Science (CCIS)
Editors Lane H.C., Zvacek S., Uhomoibhi J.
Pages236 - 260
Publication statusPublished - 2020

Austrian Classification of Fields of Science and Technology (ÖFOS)

  • 102022 Software development
  • 102
  • 102015 Information systems
  • 102013 Human-computer interaction
  • 502050 Business informatics

Cite this