Hasso-Plattner-Institut
Hasso-Plattner-Institut
  
Login
 

Die Visualisierung von Programmabläufen und ihre Anwendung in der Software-Wartung

Die Wartung und Weiterentwicklung komplexer Softwaresysteme ist im Allgemeinen kostenintensiv, da die Beteiligten einen signifikanten Teil ihrer Zeit mit dem Verstehen der Struktur und des Verhaltens dieser Systeme verbringen müssen. Programmverstehen ist unter anderem deswegen zeitaufwendig, weil die Struktur komplexer Softwaresysteme und deren inneres Verhalten kaum intuitiv wahrnehmbar und damit nur beschränkt einsehbar sind. Die Visualisierung von Programmabläufen (Traces) stellt einen Ansatz dar, der hilft, die Struktur und das Verhalten eines komplexen Softwaresystems zu verstehen. Die Programmablaufvisualisierung protokolliert während der Systemausführung Sequenzen von Funktionsaufrufen, analysiert und abstrahiert diese Daten und generiert visuelle Darstellungen, die Einblicke in die Struktur und das Verhalten von Softwaresystemen erlauben. Das Ziel dieser Arbeit ist es, ein Konzept und ein Werkzeug zur Visualisierung von Programmabläufen zu entwickeln, welche die berechnungs- und kognitionsbedingten Herausforderungen überwinden, die bei Techniken zur Programmablaufvisualisierung wegen der typischerweise sehr großen Menge an protokollierten Programmablaufdaten vorhanden sind. Das in dieser Arbeit entwickelte Konzept enthält die folgenden Teilkonzepte:
(1) Ein Konzept zur skalierbaren Generierung von Programmablaufdaten aus C/C++ Softwaresystemen
(2) ein Konzept zur Reduktion von Programmablaufdaten, das automatisch rekursive, zeitliche Grenzlinien in den Daten identifiziert und es damit ermöglicht, Programmablaufdaten in einem "top-down" Ansatz zu explorieren;
(3) ein Rahmenwerk für Techniken zur Programmablaufvisualisierung, das Lösungen auf die Frage aufzeigt, wie Kerntechniken zur Darstellung von Programmablaufdaten implementiert werden können, sodass "top-down" und "bottom-up" Verstehensstrategien unterstützt werden
(4) ein Konzept zur Kombination von Programmablaufvisualisierung mit weiteren Werkzeugen und Systemen zum Erzeugen von höherwertigen Sichten auf Implementierungsartefakte eines Softwaresystems. Ein weiterer Beitrag dieser Arbeit ist die Validierung des Gesamtkonzepts durch eine Implementierung, Performanzmessungen und Fallstudien. Die Implementierung des vorgestellten Konzepts liegt als Rahmenwerk zur Erzeugung von Werkzeugen zur Programmablaufvisualisierung vor. Um Skalierbarkeit zu gewährleisten, wurden Performanzmessungen während der Anwendung des Werkzeugs auf große C/C++ Softwaresysteme durchgeführt. Weiterhin wurde das Werkzeug auf industriell erstellte Softwaresysteme angewendet, um Softwareentwickler bei dem Lösen von Wartungsproblemen zu unterstützen.