title: A Graph-Based Source Code Multi-Diff Visualization
Creators: name: Pilz, Mario
Publisher: name: TU Wien
Year: 2024
Subjects: subject: Software Visualization
subject: Visualization of Code Evolution
subject: History Graph
subject: Multi-Branch Software Development
subject: Visualization Systems and Tools
subject: Software Engineering
subject: Software Configuration Management and Version Control Systems

description: Softwareentwickler verwenden Versionskontrollsysteme (VCSs) zur Verwaltung von Versionen und Koordination der Entwicklung. Um Einblicke in die Evolution des Source Codes eines Projektes zu erhalten, wurden Werkzeuge entwickelt: Mining Software Repositories (MSR)-Werkzeuge extrahieren Information aus dem Projektrepositorium und Visualisierungen machen diese Information für Menschen leichter verständlich. Seit Mitte der 2000er-Jahre sind verteilte Versionskontrollsysteme (DVCSs) vorherrschend geworden. Aufgrund der guten Unterstützung von Verzweigungen und Zusammenführung dieser Systeme haben sich Entwicklungsprozesse etabliert, welche sich auf diese Fähigkeiten verlassen. Der Großteil der Forschung auf den Gebieten von MSR und Visualisierungen konzentriert sich jedoch nach wie vor auf rein lineare Historien. In dieser Diplomarbeit wird eine dreidimensionale Visualisierung der Historie einer einzelnen Datei in einem VCS-Repositorium vorgestellt. Das Ziel ist es, einen Prototypen zu entwickeln um die Machbarkeit einer solchen Visualisierung zu demonstrieren und ihren Nutzen beim Verstehen von Codeevolution mit verzweigter Historie zu evaluieren. Um den Stand der Technik in den Gebieten von MSR und Softwarevisualisierung und seine Mängel im Kontext von verzweigten Historien zu ermitteln, wurde eine Literatur- und Toolrecherche durchgeführt. Aufgrund der Ergebnisse und der persönlichen Erfahrung des Autors mit solchen Werkzeugen, wurde ein Visualisierungskonzept entwickelt und eine Liste von Features vorgeschlagen. Das Konzept wurde durch semistrukturierte Interviews mit Entwicklern evaluiert, wobei Mockups zur Erklärung verwendet wurden. Mit den Ergebnissen wurden die Features für die Entwicklung des Prototypen priorisiert, welcher in einer zweiten Runde von Interviews evaluiert wurde. Die vorgestellte Visualisierung wurde als nützlich für das Verstehen von Codeevolution in einer verzweigten Historie befunden. Auch die einzelnen Features wurden von den Interviewteilnehmern als nützlich bewertet. Für weitere Entwicklungen wurde mehr Interaktivität gefordert, als der gezeigte Prototyp bot. Integration mit existierenden Entwicklungsumgebungen und Projektmanagementwerkzeugen wird als notwendig erachtet. Desweiteren konnte gezeigt werden, dass eine Umsetzung als Web-Anwendung, ohne Einsatz spezieller Technologien für dreidimensionale Grafik, machbar ist.
description: Software developers have been using Version Control Systems (VCSs) for the purposes of version management and development coordination. To get insights about the evolution of a project’s source code, tools have been developed: Mining Software Repositories (MSR) tools extract information from a project’s repository and visualizations are used to make the information easier to understand for humans. Since the mid-2000s, Distributed Version Control Systems (DVCSs) have become dominant. Due to their good support for branching and merging, development processes relying on these features have become common. However, the fields of MSR and software visualizations have not yet caught up; most research still focuses on purely linear history. To address this issue, a three-dimensional visualization of the history of one file in a VCS repository is proposed in this thesis. The objective is to develop a prototype to demonstrate the feasibility of such a visualization and evaluate its usefulness for understanding of code evolution in the context of branched history. A literature and tool research was performed to determine how the state of the art in the fields of MSR and software visualization is inadequate for dealing with branched VCS histories. Based on the results and the author’s own experience of working with such tools, the visualization concept was developed, including a list of proposed features. The concept was then evaluated in semi-structured interviews with developers, using mockups for explanation. The results were used to prioritize the features for the following prototype development. The prototype was then evaluated in a second set of interviews. The obtained findings indicate that the proposed visualization is purposeful for understanding the evolution of code in a branched history. The individual features were generally rated purposeful by the interview participants. For future developments, the interviewees requested more interactivity than the prototype provided. Integration with existing Integrated Development Environments (IDEs) and project management tools was deemed necessary. Implementing the proposed visualization as a Web application without dedicated technologies for three-dimensional graphics was demonstrated to be feasible.