SoftwareDynamics2: Feingranulare Evolution von Programmverhalten
SoftwareDynamics2: Fine-Grained Evolution of Software Behavior
DACH: Österreich - Deutschland - Schweiz
Wissenschaftsdisziplinen
Informatik (100%)
Keywords
-
Software Evolution,
Mining Software Repositories,
Dynamic Analysis,
Change Impact Analysis,
Software Visualization
Softwaresysteme werden ständig weiter entwickelt. Während die Änderungen von statischen Eigenschaften von Softwaresystemen, wie zum Beispiel durch Softwaremetriken, Codeklonen und statischen Abhängigkeiten ausgedrückt, bereits detailliert erforscht wurden, wurden Änderungen von dynamischen Eigenschaften nur auf makroskopischer Ebene untersucht. Grundlegende Fragen, wie zum Beispiel, was sind die Auswirkungen einer bestimmten Änderung im Quellcode auf die Ausführung eines Softwaresystems, oder, welche Änderungen verursachten eine Verschlechterung der Laufzeit, können momentan von Softwareentwicklern und Forschern nicht leicht beantwortet werden. Das Ziel dieses gemeinsamen Forschungsprojekts zwischen Fabian Beck von der Universität Stuttgart und Martin Pinzger von der Alpen-Adria Universität Klagenfurt ist es, das Zusammenspiel zwischen Evolution und Ausführung von Softwaresystemen zu erforschen. Zu diesem Zweck beabsichtigen wir die Erforschung neuartiger Methoden und Techniken, um den Einfluss bestimmter Änderungen im Quellcode auf das dynamische Verhalten einer Software zu analysieren und zu visualisieren, sowie um die Ursachen bestimmter Abweichungen im Programmverhalten zu finden. Im Unterschied zu bisheriger Forschung soll die Evolution genauso wie die Ausführung der Softwaresysteme auf der Ebene von Anweisungen in Programmen analysiert werden. Wir planen die Evaluierung unserer Methoden und Techniken in zahlreichen empirischen Studien mit diversen Softwaresystemen und in Benutzerstudien mit Softwareentwicklern. Darüber hinaus werden wir die Methoden in neuartige Vorhersage- und Empfehlungstechniken integrieren, die Softwareentwickler bei der Optimierung von Performanzmetriken, wie Rechenzeit oder Speicherverbrauch, unterstützen. Eine große Herausforderung des Projekts ist die korrekte Abbildung einzelner Änderungen im Source Code auf die dazugehörigen Änderungen im Programmverhalten. Zudem müssen die entwickelten Methoden skalieren und verschiedene Detailierungsgrade unterstützen, um die feingranularen Daten für Softwareentwickler und Forscher zugänglich und verständlich zu machen. Die systematische und genaue Analyse der beiden Zeitdimensionen stellt eine einzigartige Gelegenheit für die Forschung dar, die bisher noch nicht untersucht worden ist. Die in Aussicht gestellten Resultate des Vorhabens umfassen Methoden, die es Forscher erlauben, ein besseres Verständnis der Evolution von Software zu entwickeln, das über die Berücksichtigung von statischen Eigenschaften hinausgeht. Zudem werden unsere Methoden die Entwickler in der Wartung und Weiterentwicklung von Softwaresystemen unterstützen, insbesondere bei der Optimierung des Programmverhaltens.
Das Ziel dieses gemeinsamen Forschungsprojekts war es, Methoden und Techniken zu untersuchen und zu entwickeln, die Entwickler bei der Analyse und dem Verständnis der Auswirkungen von Codeänderungen auf das dynamische Verhalten eines Softwaresystems unterstützen und umgekehrt, um Ursachen für ein bestimmtes dynamisches Verhalten zu finden. Das Projekt wurde gemeinsam mit der Forschungsgruppe für Visualisierung der Universität Duisburg-Essen, Deutschland, durchgeführt. Im österreichischen Teilprojekt haben wir uns darauf konzentriert, den Stand der Technik bei der Extraktion von detaillierten Informationen über Änderungen im Quellcode von Softwaresystemen zu verbessern. Als eines der Hauptergebnisse unserer Forschungsarbeit entwickelten wir einen Ansatz zur Extraktion von detaillierten Informationen über Codeänderungen aus Java-Quellcode und deren Klassifizierung, den wir IJM nannten. Im Vergleich zu bestehenden Ansätzen generiert IJM Edit-Skripte, die einfacher zu verstehen sind und die Absicht des ursprünglichen Entwicklers besser widerspiegeln. Von IJM profitieren nicht nur Softwareentwickler, sondern alle Ansätze, die detaillierte Informationen über Code-Änderungen als Input benötigen. Bekannte Beispiele für solche Ansätze sind Ansätze zur Analyse der Auswirkungen von Änderungen und Ansätze zur Auswahl von Regressionstests. Parallel zu IJM haben wir DiffViz entwickelt, ein Werkzeug zur Navigation und Analyse von Codeänderungen. Es liest zwei Versionen einer Quelldatei ein, führt die Extraktion der Code-Änderungen durch und präsentiert dem Benutzer die Änderungen im Quellcode. Im Vergleich zu bestehenden diff-ähnlichen Visualisierungstools bietet DiffViz mehrere zusätzliche Funktionen, die es Entwicklern ermöglichen, Änderungen im Quellcode schneller zu navigieren und zu analysieren. Beide Ansätze wurden ausgiebig mit Open-Source-Projekten und Software-Entwicklern evaluiert. Die Ergebnisse wurden veröffentlicht und auf einer führenden internationalen Software-Engineering-Konferenz vorgestellt. Der Quellcode sowohl von IJM als auch von DiffViz ist auf GitHub öffentlich verfügbar.
- Universität Klagenfurt - 100%
- Beck Fabian, Universität Stuttgart - Deutschland
- Stephan Diehl, Universität Trier - Deutschland
- Andy Zaidman, Delft University of Technology - Niederlande
- Harald Gall, University of Zurich - Schweiz
Research Output
- 39 Zitationen
- 2 Publikationen
-
2018
Titel DiffViz: A Diff Algorithm Independent Visualization Tool for Edit Scripts DOI 10.1109/icsme.2018.00081 Typ Conference Proceeding Abstract Autor Frick V Seiten 705-709 -
2018
Titel Generating Accurate and Compact Edit Scripts using Tree Differencing DOI 10.1109/icsme.2018.00036 Typ Conference Proceeding Abstract Autor Frick V Seiten 264-274