Visualisierung von Software-Historie in VR
This project is already completed.

Anwendung einer Insel-Metapher zur Darstellung der Evolution OSGi basierter Software-Architektur
Überblick
Im Laufe des Entwicklungs- und Wartungsprozesses von Software-Projekten ist es notwendig, den aktuellen Stand der Software-Architektur sowie vorausgegangene Änderungen und Designentscheidungen zu überblicken. Daraus ergeben sich eine aktuelle Dokumentation des Projekts sowie die Informationsgrundlage für die weitere Pflege der Software. Gerade bei großen Software-Projekten ist diese Übersichtlichkeit eine Herausforderung, da hier die Komplexität der Architektur im Laufe der Zeit stark zunimmt. Klassische Darstellungen (wie z.B. UML-Diagramme) können in diesem Fall und bei Berücksichtigung der zeitlichen Komponente unübersichtlich werden. Als eine alternative Darstellung visualisiert die Anwendung IslandViz Software-Architektur mittels einer Inselmetapher in einer VR-Umgebung: Die Komponenten einer Software-Architektur werden durch Elemente einer Inselwelt repräsentiert. Dies ermöglicht einen intuitiven Zugang zur Architektur. Momentan ermöglicht IslandViz nur die Darstellung der Architektur zu einem bestimmten Zeitpunkt.
Im Rahmen dieser Masterarbeit soll die Anwendung IslandViz erweitert werden, so dass auch die Darstellung der zeitlichen Veränderung von Software-Architektur während des Entwicklungs- und Wartungsprozesses (=Software-Evolution) unter Beibehaltung der Inselmetapher möglich ist. Hierzu wird eine nutzerzentrierte Anforderungsanalyse an die Erweiterung durchgeführt und darauf basierend ein Konzept für die technische Umsetzung der Visualisierungsaspekte und die Nutzerinteraktion erstellt und implementiert. Abschließend soll der so entstandene Prototyp qualitativ bewertet werden.
Motivation
Große Software-Projekte und solche mit langer Lebenszeit tendieren dazu im Laufe der Zeit eine zunehmend komplexe Architektur zu beinhalten [1]. Durch Erweiterungs- und Verbesserungszyklen kommt es oft vor, dass die initiale Spezifikation und Dokumentation nicht mehr zutrifft und nur schwierig weiter gepflegt werden kann.
Trotzdem sind übersichtliche Zugänge zum Verständnis der Software-Architektur notwendig. Diese können einerseits neuen Entwicklern die Einarbeitung in das Projekt erleichtern. Andererseits können Kontext und Abhängigkeiten von Modulen dargestellt werden. Dies ist besonders für Refactoring-Prozesse essentiell, um „Bad Smells“ wie zu hohe Kopplung, Module mit zu vielen Funktionalitäten oder Abhängigkeiten etc. zu entdecken und beheben zu können.
Klassische Darstellungen von Software-Architektur (z.B. UML-Diagramme) können bei komplexen Projekten unübersichtlich werden. Verschiedene Arbeiten beschäftigen sich daher mit alternativen Möglichkeiten zur Visualisierung. Dabei werden auch dreidimensionale Darstellungen [2] und Darstellungen in Virtual Reality (VR) betrachtet, wobei oft Metaphern (z.B. Software als Stadt ( [3], [4]) zum Einsatz kommen, die intuitiveren Zugang und Navigation ermöglichen sollen.
Die meisten dieser Visualisierungen stellen die Software-Architektur nur zu einem bestimmten Zeitpunkt dar. Wenn auf Basis der Versionsverwaltung die Historie der Software-Architektur zusätzlich dargestellt werden könnte, wären die Entwicklungsschritte verständlich verfolgbar und dokumentiert [5]. So wäre ersichtlich, in welchen Projektphasen welche (architekturrelevanten) Änderungen vorgenommen oder Funktionalitäten hinzugefügt wurden. Damit könnten auch die Hintergründe auftretender technischer Schulden(+) betrachtet werden. Dabei handelt es sich um ungünstige Designentscheidungen, die die weitere Wartung der Software erschweren [6]. Im Zusammenhang mit Kommentaren aus der Versionsverwaltung kann so z.B. bestimmt werden, ob eine Änderung im Zuge einer eiligen Fehlerbehebung erfolgte und deshalb ungünstig ausgeführt wurde. In diesem Fall kann die Software-Architektur durch eine Überarbeitung verbessert und die technischen Schulden verringert werden.
Eine Visualisierung von Software-Historie soll Software-Entwicklern in mehrerer Hinsicht die Arbeit erleichtern: Einerseits kann durch Kenntnis der Entwicklung der Software eine effektivere Überarbeitung stattfinden, da Entscheidungen nachvollzogen werden können und bereits durchgeführte und verworfene Möglichkeiten nicht wieder ausprobiert werden müssen. Andererseits kann ein Überblick über die aktuelle Struktur und geeignete Entwicklungsschritte gerade neuen Kollegen helfen, weitere Funktionalitäten effizient zu integrieren. Auf höherem Level kann außerdem einem weiteren Personenkreis wie Projektverantwortlichen oder Kunden der Fortschritt des Projekts demonstriert werden.
(+) Der Begriff der Schulden am Software-Projekt (technische Schulden) wurde erstmals 1992 von W. Cunningham verwendet [14]
IslandViz
Die in der DLR-Einrichtung für Simulations- und Softwaretechnik entwickelte IslandViz stellt die Architektur OSGi-basierter(+), in Java geschriebener Software dar. Die darzustellenden Projekte gliedern sich hierarchisch in Bundles, Packages und Compilation-Units, wobei es sich bei letzterem u.a. um die einzelnen Klassen und Interfaces handelt. Weiterhin gibt es Services, die von verschiedenen Einheiten definiert, bereitgestellt und angefordert werden. Im Hinblick auf modulare Software-Architektur werden die Bundles als Module aufgefasst. Ihre Interfaces sind durch Listen von importierten und exportieren Packages explizit definiert. Hierdurch ergibt sich auch die Abhängigkeit zwischen den Bundles.
IslandViz basiert auf einer Inselmetapher. Die gesamte Architektur wird als eine Insellandschaft auf dem Meer dargestellt. Die einzelnen Bundles werden dabei durch Inseln repräsentiert. Ihre Fläche ist in Regionen aufgeteilt, was den im Bundle enthaltenen Packages entspricht. Die einzelnen Compilation-Units (Klassen, Interfaces…) sind verschiedenfarbige Gebäude, die sich in den entsprechenden Regionen befinden. Die Höhe der Gebäude ist dabei proportional zu den „Lines of Code“ der jeweiligen Einheit. (siehe Bild 1a-c).

Die import-/export- bedingte Abhängigkeit zwischen Bundles wird durch Pfeile dargestellt (Bild 2). Dabei dienen die, den Inseln vorgelagerten, Häfen (Bild 1d) als Angriffspunkte der Pfeile. Zusätzlich ergibt sich die Positionierung der Inseln auf dem Meer aus der Stärke der Abhängigkeiten: ein Bundle, das viele Elemente eines anderen importiert, ist auch in dessen Nähe positioniert.

Services werden durch ein weiteres Liniennetz (Bild 3 rechts) dargestellt. Dabei beinhaltet ein Service drei Aspekte: ein Service Interface, das die Verwendung definiert, Klassen, die den Service implementieren und Klassen, die den Service verwenden. Diese Aspekte werden durch Figuren, die über den Gebäuden schweben, gekennzeichnet (Bild 3, links).

Die Visualisierung erfolgt in Virtual Reality. Als Hardware werden dafür in der DLR-Einrichtung die Oculus Rift oder HTC Vive verwendet. Die virtuelle Umgebung besteht aus einem Raum mit unauffälligen Wänden und einem runden Tisch, auf dem die Inselwelt platziert ist. Die Navigation erfolgt durch „um den Tisch herumlaufen“, sowie zoomen, drehen und schieben der Ansicht auf dem Tisch. Außerdem können einzelne Elemente ausgewählt werden. Die dazu notwendigen Eingaben erfolgen über die zur Ausrüstung gehörenden Controller. In der Anwendung ist eine Informationsfläche integriert, die Informationen zu ausgewählten Elementen in Textform darstellen. Diese ist durch ein virtuelles Tablett realisiert, welches an der nicht dominanten Hand des Nutzers erscheint, wenn dieser den entsprechenden Controller zu sich umdreht (Bild 4). [7], [8].

Der momentane Stand von IslandViz ermöglicht die Darstellung der Softare-Architektur zu einem bestimmten Zeitpunkt. Diese Version der Anwendung wurde im Rahmen einer Masterarbeit [9] mit einer Darstellung als zwei dimensionale Webapplikation im Hinblick auf Usability verglichen. Ergebnis dieser Arbeit sind einige Erweiterungsvorschläge um effizienter mit IslandViz zu arbeiten (z.B. Hinzufügen einer Suchfunktion). Diese Verbesserungen sind jedoch noch nicht umgesetzt worden.
(+) OSGi (Open Service Gateway Initiative) ist ein Java Framework zur Entwicklung komponentenbasierter Software
Aufgabenbeschreibung
Ziel der Masterarbeit ist die Erweiterung von IslandViz, sodass die zeitliche Veränderung und Entwicklung der Architektur abgebildet werden kann. Die damit eingefügte zusätzliche Dimension soll ein besseres Verständnis der Software-Architektur und ihrer Entwicklung ermöglichen.
Die Arbeit realisiert dazu die zeitabhängige Positionierung der Inseln auf dem Meer sowie das zeitabhängige Layout der Regionen auf den Inseln. Außerdem werden die Möglichkeiten der Nutzerinteraktion entsprechend der Anforderungsanalyse so erweitert, dass eine Navigation entlang der Historie möglich wird. Mit der Versionsverwaltung verbundene, zusätzliche Daten (z.B. Autor der einzelnen Commits, Kommentare zu den Commits) sind im vorliegenden Testdatensatz nicht vorhanden und werden deshalb nur auf konzeptioneller Ebene einbezogen.
Die Anzeige der Services ist in der aktuellen Version von IslandViz so realisiert, dass die notwendigen Verbindungen nachträglich in das bestehende Layout eingeblendet werden. Dieser Ansatz wird im Rahmen der Arbeit für die Darstellung der Historie übernommen. Die Arbeit umfasst keine Verbesserungen der bestehenden Anwendung.
Aufgaben
- Nutzerzentrierte Anforderungsanalyse mittels Fokusgruppen-Gesprächen
- Konzeption
- Userinteraktion
- Datenhaltung
- Darstellungs-Algorithmen
- Implementierung
- Vorstudie
- Verbesserung anhand von Nutzerfeedback der Vorstudie
- Evaluation

Aufgabebeschreibung – Detaillierte Aspekte
Anforderungsanalyse
In Form von Fokusgruppengesprächen mit Mitarbeitern/Entwicklern der Abteilung, die die aktuelle Version von IslandViz kennen, soll herausgefunden werden, welche Anforderungen an die Erweiterung gestellt werden und wie diese genutzt werden soll.
Angedacht sind momentan zwei Fokusgruppen:
- Mitarbeiter, die sich nur mit der Entwicklung OSGi basierter Software beschäftigen
- Mitarbeiter mit Programmier-/Softwareentwicklungs- Erfahrung, die ihren Schwerpunkt auf Visualisierung und Nutzbarkeit legen
Sowie ein zusätzliches Einzelinterview mit dem Abteilungsleiter zu seinen Erwartungen an die Erweiterung
Fragestellungen sind unteranderem:
- Welche (zusätzlichen) Informationen (ggf. im Gegensatz zur ursprünglichen Version) in einer Darstellung der Software-Historie angezeigt werden sollen
- Welche Nutzerinteraktionen gewünscht werden
- Welche Anwendungsszenarien denkbar sind
Vorstudie & Verbesserung
Um eine Iteration des Usability-Engineering Lifecycles zu realisieren wird nach der Implementierung der notwendigen Funktionalitäten eine Vorstudie mit Mitarbeitern aus der DLR-Einrichtung durchgeführt. Dabei werden die Fragebögen und Aufgaben gestellt, die später auch in der Evaluation genutzt werden. Zusätzlich wird an dieser Stelle in freier Form nach Verbesserungsvorschlägen gefragt werden. Nach Auswertung dieser Ergebnisse werden ausgewählte Veränderungen vorgenommen.
Konzeption Darstellungsalgorithmen
Positionierung der Inseln
In der statischen Version von IslandViz werden die Positionen der Inseln (=Bundles) vor der Anzeige einmal durch einen force-directed graph layout algorithmus [12] berechnet. Die Positionierung muss nun zusätzlich ermöglichen, dass mit der Zeit Bundles und Dependencies hinzugefügt/gelöscht werden und dadurch Inseln entstehen/verschwinden und verschoben werden.
Layout der Inseln
Die Erstellung der Regionen (=Packages) auf den Inseln erfolgt bisher über zufälliges Auswählen zusammenhängender Zellen eines Voronoi-Diagramms [13]. Da die Größe der Regionen von der Anzahl der Klassen im Package abhängt, kann es notwendig sein Regionen zu vergrößern / verkleinern, wenn Klassen hinzukommen/gelöscht werden, bzw. ganze Regionen einer Insel hinzuzufügen / zu löschen, wenn Packages im Bundle hinzukommen / wegfallen. Die Platzierung und Form der Regionen muss dahingehend angepasst werden, dass bei Änderungen, nicht das gesamte Layout der Insel geändert werden muss bzw. die Insel „auseinander bricht“.
Evaluation
Es soll evaluiert werden, ob die erstellte Erweiterung besser geeignet ist, ein Verständnis für die Historie eines Software-Projekts zu entwickeln, als die ursprüngliche Anwendung. Dafür nutzen Probanden in einer Within-Evaluation die Systeme 1 und 2 (Beschreibung siehe unten) nacheinander.
Entsprechend der Ergebnisse der Anforderungsanalyse werden Aufgaben erarbeitet, die die Probanden in beiden Systemen ausführen.
Zur Bewertung von Effektivität und Effizienz werden dabei die Erfolgsquote bei der Durchführung und die benötigte Zeit gemessen. Weiterhin soll die Think Aloud Technik angewendet werden, um Anmerkungen und Probleme des Probanden direkt in der Situation aufzeichnen zu können.
Als Hintergrundinformation werden technische Daten wie Bildrate (fps) und die Zeit für die Übergänge der Anwendung zwischen Anzeigezeitpunkten / Commits aufgezeichnet.
Die Auswertung erfolgt mit Hilfe des T-Tests.
System 1:
- Hauptsächliches Artefakt des Implementierungsaufwands der Masterarbeit
- Auf Basis der Anforderungsanalyse und Konzeptionierung implementierte Erweiterung von IslandViz
- Möglichkeiten zur Nutzereingabe zur Navigation in der Historie
- Für Historiedarstellung optimierte Insel- und Regionspositionierung
- übrige Aspekte (z.B. Navigation und Exploration eines einzelnen Architekturstandes) wie im ursprünglichen IslandViz
System 2:
- „notdürftige“ Erweiterung von IslandViz
- Möglichkeiten zur Nutzereingabe zur Navigation in der Historie soweit möglich wie in System 1
- Positionierung von Inseln und Regionen für jeden Commit einzeln entsprechend des Algorithmus des ursprünglichen IslandViz
- Übrige Aspekte wie im ursprünglichen IslandViz
Fragebögen
- „Eckdaten“ (m/w/d, Alter, Ausbildung, derzeitige Tätigkeit, Vorkenntnisse Programmieren/Software-Architektur, VR-Erfahrung…)
- Simulator Sickness Questionaire
- Nasa TLX (Workload)
- Quesi
- AttrakDiff
- SUS [10] oder PSSUQ [11] für Usability
Literaturverzeichnis
- Lehman, M. M. Laws of software evolution revisited. Software Process Technology. 1996.
- Marcus, Andrian, Feng, Louis and Maletic, Jonathan I. 3D Representations for Software Visualization. Proceedings of the 2003 ACM Symposium on Software Visualization. 2003.
- Panas, Thomas, Berrigan, Rebecca and Grundy, John. A 3D Metaphor for Software Production Visualization. Proceedings on Seventh International Conference on Information Visualization, 2003. IV 2003. 2003, pp. 314-319.
- Wettel, Richard and Lanza, Michele. Visualizing Software Systems as Cities. VISSOFT 2007 - Proceedings of the 4th IEEE International Workshop on Visualizing Software for Understanding and Analysis. 2007.
- Beyer, Dirk and Hassan, Ahmed E. Animated Visualization of Software History using Evolution Storyboards. 13th Working Conference on Reverse Engineering. 2006.
- Lilienthal, Carola. Langlebige Software-Architekturen. 2. Heidelberg : dpunkt. 2017.
- Schreiber, Andreas, et al. Visualization of Software Architectures in Virtual Reality and Augmented Reality. IEEE Aerospace Conference Proceedings. 2019. https://elib.dlr.de/123314/1/
- Misiak, Martin. Immersive Exploration of OSGi Based Software Architectures in Virtual Reality. 2017.
- Schaller, Meike Barbara Anne. Visualisierung von OSGi-basierten Softwarearchitekturen - Eine vergleichende Evaluation der Usability in 2D und Virtual Reality. 2019.
- System Usability Scale (SUS). [Online] usability.gov. 2019. https://www.usability.gov/how-to-and-tools/methods/system-usability-scale.html.
- Lewis, J. R. Psychometric Evaluation of the Post-Study System Usability Questionnaire: The PSSUQ. Proceedings of the Human Factors and Ergonomics Society Annual Meeting. 1992.
- Eades, P. A heruistic for graph drawing. Congressus numerantium. 1984.
- Yang, M. and Biuk-Aghai, R. P. Enhanced hexagontiling algorithm for map-like information visualisation. Proceedings of the 8th International Symposium on Visual Information Communication and Interaction. 2015.
- Cunningham, Ward. The WyCash Portfolio Management System - Experience Report. [Online] March 26, 1992. [Cited: 07 12, 2019.] http://c2.com/doc/oopsla92.html.
Contact Persons at the University Würzburg
Dr. Martin Fischbach (Primary Contact Person)Mensch-Computer-Interaktion, Universität Würzburg
martin.fischbach@uni-wuerzburg.de
Lynn von Kurnatowski
Deutsches Zentrum für Luft- und Raumfahrt, Einrichtung Simulations- und Softwaretechnik
Lynn.Kurnatowski@dlr.de
Andreas Schreiber
Deutsches Zentrum für Luft- und Raumfahrt, Einrichtung Simulations- und Softwaretechnik
Andreas.Schreiber@dlr.de