Research Projects

Augmented Reality in Software Engineering

Linked Code Views in AR

We developed a novel AR-based user interface to enhance code understanding. As a next step we intend to leverage AR to enable novel usage scenarios where code views are linked to objects in the real world.

Glyph-based Visualizations for Debugging Concurrent Java Programs

glyph-based-vis-teaser

Due to non-deterministic behavior and thread interleaving of concurrent programs, the debugging of concurrency and performance issues is a rather difficult and often tedious task. The way source code is visually presented in traditional source-code editors does not convey much information on whether the code is executed concurrently or in parallel in the first place. The main goal of this research project is to develop debugging approaches to facilitate the understanding of concurrent programs. In particular, the project focuses on the design and empirical evaluation of interactive, glyph-based visualizations embedded in the program text next to the related source-code artifact. The debugging approaches are implemented in tools that are integrated as plugins into widely used IDEs. For this purpose, a framework called CodeSparks was developed, which makes the creation of such plugins very simple.

LivelySketches: Supporting the Analog and Digital Lifecycle of Sketches

Sketching is an important activity for understanding, designing and communicating different aspects of software systems such as their requirements or architecture. Often, sketches start on paper or whiteboards, are revised, and may finally evolve into a digital version. During this lifecycle, previous revisions and context information may get lost. Moreover, sketches are not isolated but may be related to other sketches or documents. In this paper, we present LivelySketches, a tool that supports the lifecycle of sketches by enabling users to capture both analog and digital sketches as well as relevant context information. In addition, the tool allows to link sketches to each other or other related documents.

VisualCues: Visually Explaining Source Code in Computer Science Education

Humans are very efficient in processing and remembering visual information. That is why metaphors and visual representations are important in education. Because of their high visual expressiveness, presentation tools like Microsoft PowerPoint are very popular for teaching in classrooms. However, representing source code with such tools is tedious and cumbersome, while alternatives like source code editors lack visual expression. Moreover, modifying prepared content, e.g. while responding to questions, is not well supported. In this paper, we introduce VisualCues, an approach with the goal of combining the flexibility of source code editors with the visual expressiveness of classical slide-based presentation tools. A key concept of VisualCues is linking visual artifacts to specific elements of source code. The main advantage is that when changing the underlying source code, the positions of linked visual artifacts are changed simultaneously. We implemented a first prototype and evaluated it in two undergraduate computer science courses.

SketchLink - Linking Sketches and Diagrams to Source Code Artifacts

Sketches and diagrams play an important role in the daily work of software developers. If they are archived, they are often detached from the source code they document, because there is no adequate tool support to assist developers in capturing, archiving, and retrieving sketches related to certain source code artifacts. We implemented SketchLink to increasing the value of sketches and diagrams created during software development by supporting developers in these tasks. Our prototype implementation provides a web application that employs the camera of smartphones and tablets to capture analog sketches, but can also be used on desktop computers to upload, for instance, computer-generated diagrams. We also implemented a plugin that embeds the links in Javadoc comments and visualizes them in situ in the source code editor as graphical icons for the IntelliJ Java IDE. Besides being a useful software documentation tool, SketchLink also enables developers to navigate through their source code using the linked sketches and diagrams.

Modellfusion - Interaktives Zusammenführen graph-basierter, visueller Modelle

Die meisten Softwaresysteme werden in Teamarbeit geplant und entwickelt. Speziell während der Analyse- und Entwurfsphase entstehen Modellvarianten, die später wieder zusammengeführt werden müssen. Aufgrund semantischer Abhängigkeiten, widersprüchlicher Änderungen und fehlender Informationen in den Modellen lässt sich das Problem der Zusammenführung nur teilweise automatisieren. Die Entwickler müssen manuell Konflikte lösen und nehmen auch häufig weitere Modelländerungen oder -erweiterungen während des Zusammenführens vor. Wir bezeichnen dieses über das reine Modellvereinigen hinausgehende Vorgehen als Modellfusion.
Das Ziel dieses DFG-Projekts besteht darin, besser zu verstehen, wie Entwickler Graph-basierte, visuelle Modelle, insbesondere solche mit großen semantischen Unterschieden, zusammenführen und darauf aufbauend Werkzeuge zu entwickeln, die mit Hilfe geeigneter Visualisierungs- und Interaktionstechniken die Entwickler beim Vergleich und der Fusion von Modellen unterstützen.

Mehrdimensionale Kopplungsanalyse

Ein Software-System kann als ein komplexes Netz von Quelltext-Stücken betrachtet werden. Kopplungen zwischen den Teilen repräsentieren die Referenzierungen, Aufrufe, Abhängigkeiten und Ähnlichkeiten des Systems. Zusammen formen sie ein mehrdimensionales Modell der Software. Das Ziel dieses Forschungsprojektes ist es, die mehrdimensionale Strukturen von Software-Systemen zu analysieren und in Anwendungen zu nutzen. Im Gegensatz zu verwandter Forschung liegt hier der Fokus vor allem auf den vielfältigen Kopplungs-Konzepten und weniger darauf eine einzelne Art von Kopplung in einer speziellen Anwendung zu untersuchen.

JCCD

Ein Kodeklon ist ein Kodefragment, das identisch oder ähnlich zu einem anderen ist. JCCD (Java Code Clone Detection API) ermöglicht die Erstellung von Kodeklone-Detektoren, die Kodeklone nach benutzerdefinierten Kriterien erkennen können. Solche selbst erstellten Detektoren können einfach in eigene Java-Anwendungen eingebunden und so u.a. für fortführende Quelltextanalysen verwendet werden. JCCD basiert auf einem generischen Pipeline-Modell, welches das Zusammenspiel aller erforderlichen Schritte in dem Erkennungsprozess von Kodeklonen koordiniert. Ausnahmslos jeder Schritt kann durch eigene Ansätze erweitert oder ersetzt werden. Damit wird eine stark konfigurierbare und erweiterbare Kodeklonerkennung ermöglicht.

http://jccd.sourceforge.net/

Kollaborative Anforderungsanalyse

Anforderungen von Kunden an eine zu entwickelnde Software sind oft ungenau und nur selten vollständig. Sogenannte CRC Sitzungen sollen hier Abhilfe schaffen und das Modellieren eines groben Entwurfs des Softwaresystems erleichtern. Dazu findet sich eine Gruppe bestehend aus Entwicklern und Fachexperten an einem Ort zusammen und erstellt und evaluiert unter Verwendung von CRC Karten ein objektorientiertes Modell der Software.
Um diesen Vorgang zu erleichtern, entwickelten wir CREWW und CREWSpace. Beide Anwendungen ermöglichen eine kollaborative Anforderungsanalyse mit digitalen CRC Karten, unterscheiden sich aber vor allem in der Art verwendeten Eingabegeräte. Während CREWW mit Hilfe von Wii-Remotes Benutzern eine simultane Steuerung zu ermöglicht, greift CREWSpace auf mobile Geräte wie Smartphones oder Tablets zurück. Letzteres bietet den Benutzern darüber hinaus einen privaten Arbeitsbereich.

 

TimeRadarTrees

Die Evolution von Abhängigkeiten in Informationshierarchien kann als Folge von speziellen Graphen, sogenannten compound digraphs, modelliert werden. Solche Folgen können entweder mittels konventioneller, animierten Graphdarstellungen in Form von Knoten-Kanten-Diagrammen dargestellt werden oder mit unserem neuen Ansatz -- den TimeRadarTrees. Die TimeRadarTree-Visualisierungstechnik verwendet radiales Baumlayout zur Darstellung der Hierarchie und Kreisbögen oder Sektoren zur Darstellung der Kanten. Kanten können bzgl. eines gegebenen Maßes gewichtet sein. Das Kantengewicht wird durch einen Farbkode dargestellt. Eine Reihe verschiedener Interaktions- und Navigationstechniken helfen bei der Analyse von Daten.

ChartFlight

Bei ChartFlight handelt es sich um einen Webservice, welche Blender, eine 3D Modellierungs- und Animationssoftware, und deren Schnittstelle zur Programmiersprache Python zur Erzeugung von dreidimensionalen Datenrundflügen verwendet.
Benutzer hinterlegen zunächst eine Karte oder eine beliebige Grafik, eine Menge von Punkten auf dieser Karte, welche angeben, wo genau Daten visualisiert werden sollen und schließlich für jeden einzelnen Punkt die darzustellenden Daten. Unter Verwendung eines Python Scripts kombiniert ChartFlight nun alle Informationen und erzeugt einen animierten Rundflug über die Karte, auf welcher die Daten nacheinander in Form von dreidimensionalen Diagrammen präsentiert werden. Um dem Benutzer möglichst viele Freiheiten zur Verwendung eines solchen Rundflugs zu geben, stellt ChartFlight diesen als Video zum Download für den jeweiligen Benutzer bereit.

Refactoring Detection

Refactoring Detection

In diesem Projekt beschäftigen wir uns mit der automatischen Rekonstruktion von Refactorings - einem Problem, das in der Evolutionen eines Software Systems auftritt. Solche Analysen können dabei helfen den Prozess der Software-Entwicklung zu verbessern. Zum Beispiel, unterstützen die erkannten Refactorings Programmierer, die eine Weile nicht an der Software entwickelt haben, beim Nachvollziehen und Verstehen der Änderungen des Programm-Codes. Refactorings können auch zur Fehlersuche eingesetzt werden. Ferner liefern sie neue Erkenntnisse über die Evolution von Software-Projekten.

 

Software-Evolution

In unserem Projekt "Software-Evolution" untersuchen wir, wie sich Softwaresysteme, also Computerprogramme, im Laufe der Zeit entwickeln. Mit den gewonnen Erkenntnissen wollen wir den Entwicklern helfen, ihr System besser zu verstehen, so dass sie effizienter arbeiten können und weniger Fehler machen. Zum Beispiel können wir zeigen, welche Programmteile an eine andere Stelle verschoben wurden oder einfach umbenannt wurden. Außerdem versuchen wir, aus der Vergangenheit zu lernen: Wenn etwa bestimmte Programmteile häufig gemeinsam geändert wurden, so ist es auch in Zukunft mit großer Wahrscheinlichkeit nötig, diese Programmteile immer gemeinsam zu ändern. 

Dynamic Graph Drawing (DGD)

Die Dynamik eines Netzwerkes kann manchmal mehr aussagen, als das Netzwerk an sich. Diese Erkenntnis allein bringt jedoch recht wenig, wenn die nötigen Analysewerkzeuge fehlen, die die Entwicklung auch (be)greifbar machen. Im DGD-Projekt beschäftigen wir uns genau mit dieser Problematik. Wir entwickeln ein Werkzeug mit dem es möglich ist, die Dynamik von Netzwerken visuell aufzubereiten und detaillierte Analysen durchzuführen. Weitere Informationen unter:

 

Crater

Bisher waren Lehrer, Dozenten und interessierte Laien auf fragwürdige Quellen aus der Hollywood-Produktion und reißerischen Dokumentarfilmen angewiesen, um sich ein anschauliches Bild von den Vorgängen bei einem Meteoritenseinschlag zu machen. Die Crater-Webseite versucht, mit Hintergrundinformationen und einer auf mathematisch-naturwissenschaftlichen Erkenntnissen basierenden Computersimulation einen fundierten Einblick in die Thematik zu verschaffen.