Author: Lazar Najdenov
Academic Year: 2021/2022
Defense Date: 15 June 2022
Institution: UniversitĂ della Svizzera italiana
Faculty: Faculty of Informatics
Program: Master of Science in Software & Data Engineering

Author: Lazar Najdenov
Academic Year: 2021/2022
Defense Date: 15 June 2022
Institution: UniversitĂ della Svizzera italiana
Faculty: Faculty of Informatics
Program: Master of Science in Software & Data Engineering
Program comprehension is one of the fundamental activities of software development. Despite advances in software engineering research and practice, how to properly support program comprehension is essentially an open problem, especially when it involves tasks in the large, e.g., getting a grasp of the architecture of a software system, or understanding complex domain models. Moreover, for such tasks, the support given by modern IDEs is relatively limited. Like many other complex and poorly supported software engineering activities, program comprehension can impair the motivation of developers, ultimately causing a significant loss of engagement. To overcome this negative effect, recent research has investigated the use of Gamification, i.e., the use of game elements and game design techniques to address non-game problems. However, this often resorts to merely adding points and badges as rewards, which is known to have limited effectiveness because of a fast degradation of engagement. Instead, we believe that the complex relationships typical of software systems, that are thus involved in program comprehension tasks, require equally complex game design techniques that are typical of more complex games.
In this thesis, we designed and implemented a framework to gamify certain program comprehension tasks by encoding them as small but full-fledged Role Play Games (RPGs). The framework supports the design of adequate metaphors mapping concepts of the software engineering domain to specific game elements, e.g., world elements, non-playing characters, and quests, in a semi-automated fashion. Indeed, an experienced developer is able to construct a small RPG encoding a program comprehension task for an unexperienced developer in an onboarding setting. As a preliminary evaluation of our framework, we tested the scalability of the world generation approach on a set of popular kotlin libraries. Furthermore, with the help of a senior developer, we encoded a set of quests representing the program comprehension tasks of a target software system, e.g., understanding the software’s structure, its domain model, and its architecture.


UniversitĂ della Svizzera italiana, Switzerland