TY - CHAP TI - RefacTutor: An Interactive Tutoring System for Software Refactoring AB - 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. AF - Computer Supported Education, Revised Selected Papers of CSEDU 2019. Communications in Computer and Information Science (CCIS) PP - - PB - Springer SP - 236 EP - 260 UR - https://doi.org/10.1007/978-3-030-58459-7_12 PY - 2020-01-01 AU - Händler, Thorsten AU - Neumann, Gustaf AU - Smirnov, Fiodor ER -