Spatialized Live Refactoring - Margarida Rocha Raposo de Oliveira (2024)
Over the years, software has become a crucial component for most organizations, either as a service or a tool used in everyday workflows. As new necessities, requirements, and development styles emerge, software becomes progressively more complex and challenging to develop, fix, assess, and ensure compliance with software specifications. As a result, software inspection and review plays a significant part in a software developer's work and time. Many tools, such as code models, document editors, integrated development environments (IDE), and visualization tools, have been created to aid in inspecting and reviewing both static codebases and systems in runtime. Still, they have yet to be widely adopted, presumably after overcoming their limitations and providing a better developer experience. This dissertation focuses on developing better ways of visualizing software systems using the city metaphor, a 3D software representation aiming to improve code understanding. The code city concept was first presented in 2008, and researchers have been iterating on this idea for the past couple of decades. Based on previous research on using code cities to enhance code comprehension, this dissertation aims to augment their liveness [3] by creating a toolset to help developers quickly capture different aspects of software systems, structural and behavioral, at static time and runtime. For example, while inspecting a software system, the developers may collaboratively navigate the city using Virtual Reality, both spatially and temporally, to find defects and aspects to improve. This will reduce cognitive effort and provide better usability and overall experience. In concrete, we aim to explore using spatial-temporal techniques to organize and visualize relevant information to improve software inspection and review. When incorporating such spatial or visual representations, we may convey information that can enhance the understanding and analysis of software artifacts, from code to architecture designs. Besides being useful while getting acquainted with new complex codebases and systems at runtime, the toolset will be helpful during the coding process of the system at hand to visualize change effects instantaneously. The toolset to prototype will reuse and integrate existing tools for software development and technologies to create immersive environments as much as possible. We plan to validate the toolset using case studies and controlled experiments.