Lexikon

Softwarevisualisierung

Die erste internationale Konferenz zum Thema Softwarevisualierung fand diesen Sommer im kalifornischen San Diego statt (für Details zu ACM SOFTVIS 2003 siehe www.softvis.org). Grund genug einmal zu betrachten, worum es in diesem zunehmend an Bedeutung gewinnenden neuen alten Forschungsgebiet geht.

Softwarevisualisierung entwickelt und untersucht Methoden und Einsatz von computergrafischen Darstellungen unterschiedlicher Aspekte von Software wie z.B.

  • ihrer statischen Struktur,
  • ihrer konkreten oder abstrakten Ausführung,
  • ihrer Evolution.

Im Gegensatz zur visuellen Programmierung und Diagrammtechniken zum Softwareentwurf liegt dabei die Zielsetzung nicht in der Konstruktion, sondern in der Analyse von Programmen und deren Entstehungsprozess.

Die Softwarevisualisierung kombiniert Techniken aus den Gebieten Softwaretechnik, Programmiersprachen, Data Mining, Computergrafik, Informationsvisualisierung und Mensch-Maschine-Kommunikation.

Visualisierung heißt Daten bzw. Information sichtbar zu machen. Schon Aristoteles sagte 350 v. Chr., dass „Denken ohne Bilder unmöglich sei", Emanuel Kant meinte 1781:

„Der Verstand vermag nichts anzuschauen und die Sinne nichts zu denken. Nur daraus, dass sie sich vereinigen, kann Erkenntnis entspringen."

Und René Descartes stellte 1637 fest:

„Imagination oder Visualisierung und besonders die Benutzung von Diagrammen haben einen entscheidenden Anteil an der wissenschaftlichen Forschung."

In der heutigen Zeit bedient man sich gerne des Mediums Computer, um abstrakte Zusammenhänge bildlich darzustellen. Für Frederick Brooks gehört Visualisierung zu den Schlüsseltechnologien, die „Intelligence Amplification "ermöglichen. Der Computer soll dem Menschen also nicht das Denken abnehmen, sondern menschliche Intelligenzleistungen verstärken.

Visualisierungen werden im Maschinenbau, in der Chemie, Physik und Medizin verstärkt eingesetzt. Informatiker haben anspruchsvolle Systeme entwickelt, um für diese Disziplinen Visualisierungen zu erzeugen. Erstaunlicherweise machen Informatiker aber nur wenig Gebrauch von Visualisierungswerkzeugen, wenn es um Entwurf, Implementierung oder Wartung von Software geht.

Theoretiker schätzen häufig Visualisierung gering, dabei stammt das Wort „Theorie " vom griechischen Verb theorein ,also „schauen ".Die frühen Pythagoräer stützten ihre Theoreme nicht auf Beweise, sondern die Anschauung. Und die Praktiker, insbesondere die Programmierer, scheinen sich dem Darstellungsniveau des Computers anzupassen, anstatt dieses ihrer eigenen Wahrnehmung.

Dennoch ist die Begriffswelt der Informatik voller Metaphern. So reden wir beispielsweise von Maschinen, Automaten, Bändern, Knoten und Kanten, Archiven, Ordnern oder Fenstern. Eine Turingmaschine z.B. ist ein mathematisches Modell, das aus Mengen, Funktionen und Relationen besteht. Die Analogie zu Maschinen lässt uns Aspekte aus der physikalischen auf die mathematische Welt übertragen.

Das Ziel der Softwarevisualisierung besteht nicht darin, schöne, bunte Grafiken zu erzeugen, sondern solche, die mentale Bilder auslösen und so das Verstehen von Software erleichtern. (Allerdings sind die psychologischen Indizien für die Existenz und das Wesen mentaler Bilder zugegebenermaßen widersprüchlich.) Dazu müssen geeignete, visuelle Metaphern gefunden werden. Solche Metaphern verbessern nicht nur die Visualisierung, sondern auch die Art und Weise, wie wir über Softwaresysteme reden.

Beispiele

Im Folgenden wollen wir einen Einblick in die Forschungsgebiete der Softwarevisualisierung anhand von Beispielen zu jedem der am Anfang genannten Aspekte von Software geben.

Statische Struktur

Mit dem in Saarbrücken entwickelten aiCall (s. Abb.1) lassen sich Kontrollflussgraphen von Programmen samt den zugehörigen Analyseergebnissen grafisch darstellen und interaktiv durchmustern. So kann der Entwickler sehen, wie viel Stackzellen ein Programm an einem beistimmten Programmpunkt benötigt, um so Stack-Overflows frühzeitig zu erkennen und zu beseitigen. Visualisierungen auf höherer Ebene werden benutzt, um die Architektur von Softwaresystemen darzustellen. Geons (geometric icons)zeigen ähnlich einem UML-Diagramm Abhängigkeiten von Objekten. Diese werden als vereinfachte symbolhafte dreidimensionale Objekte dargestellt. Insbesondere bei der Aggregation werden die aggregierten Objekte zusätzlich verkleinert innerhalb des aggregierenden Objekts dargestellt. Ziel ist die bessere Strukturierung und die damit verbundene verbesserte Lesbarkeit des Diagramms, was Zeit sparen und Fehler vermeiden helfen soll.

Der Aufwand des wiederholten Dekodierens der Zeichenfolgen von Bezeichnungen entfällt also, die Objekte sind grafisch dargestellt und können so schneller erfasst und wiedererkannt werden. Diese Vorteile werden auch durch Studien belegt.

Konkrete und abstrakte Ausführung

Lange Zeit stand die Visualisierung und insbesondere Animation von Algorithmen im Mittelpunkt der Softwarevisualisierung. Mit klassischen Algo-rithmenanimationssystemen lassen sich beispielsweise Animationen von Suchgraphen, Listen, dem n-Damen-Problem, Binpacking oder Sortieralgorithmen erstellen. Es ist möglich, gleichzeitig mehrere Sichten auf den Zustand des Algorithmus zu benutzen, etwa ein Balkendiagramm und einen Baum zur Darstellung der zu sortierenden Daten bei HeapSort. Abbildung 2 zeigt einen Screenshot der Animation des HeapSort-Algorithmus, die mit einem aktuelleren System namens GANIMAL erstellt wurde.

Neuere Arbeiten beschäftigen sich auch mit der visuellen Ausführung von Algorithmen mit abstrakten Eingabedaten wie abstrakten Shapegraphen oder Baumfragmenten.

Evolution von Software

SeeSoft ist ein Programm zur Quellcodeverwaltung. Es stellt die einzelnen Zeilen einer Datei als Pixel in einer Box dar, die die dazugehörige Datei repräsentiert. Man kann hereinzoomen, sodass eine Quellcodezeile als eine Linie dargestellt wird bis hin zu der tatsächlichen Textzeile. Die dargestellten Textzeilen können unterschiedlich eingefärbt werden.

Man kann verschiedene Metriken mit dem Farbspektrum assoziieren, etwa den Zeitpunkt der letzten Änderung einer Programmzeile. So kann man direkt sehen, an welcher Stelle in einer Datei erst kürzlich gearbeitet wurde (rot)und welche schon lange unverändert geblieben sind (blau).
SeeSoft kann nicht nur eine Vielzahl von Dateien gleichzeitig darstellen, sondern mit Hilfe eines Schiebereglers kann der Betrachter zwischen Dateiversionen wechseln und sozusagen eine Zeitreise durch die Entwicklungsgeschichte des Systems machen. In Tarantula wurde der Ansatz erweitert, um Textzeilen hervorzuheben, die vermutlich fehlerhaft sind. Hierzu werden dynamische Slices, d.h. Mengen von tatsächlich ausgeführten Programmpunkten, von erfolgreichen und fehlerhaften Testläufen analysiert.

Zunehmende Bedeutung der Softwarevisualisierung

Die zunehmende Bedeutung, die Softwarevisualisierung im Software-Engineering und insbesondere im Reengineering spielt, wird durch zwei aktuelle Studien belegt. Bassil und Keller untersuchten in einer Umfrage, was sich Entwickler in der Industrie von Softwarevisualisierung versprechen oder wünschen. Als Vorteile wurden aufgezählt: Einsparung von Zeit und Geld, besseres Verständnis der Software, Erhöhung der Produktivität und Qualität, Management der Komplexität sowie verbesserte Fehlersuche. Vor allem wünschten sich die Befragten die Integration von SV-Werkzeugen in andere Werkzeuge (third party) und besseren Import und Export von Daten und Visualisierungen. Laut Koschkes Studie glauben 40% der über 100 befragten Forscher auf den Gebieten Software Maintenance, Reverse Engineering und Reengineering, dass Softwarevisualisierung absolut notwendig ist, weitere 42% halten sie für wichtig, aber nicht kritisch.

Ausblick

Leider muss man feststellen, dass es nur wenige Forscher gibt, die konsequent den Einsatz von Softwarevisualisierung in verschiedenen Bereichen untersuchen. Erwähnenswerte Ausnahme ist hier insbesondere John Stasko vom Georgia Institute of Technology. Viele wenden vorhandene Visualisierungstechniken mal eben schnell an und sind dann häufig enttäuscht über die erzielten Ergebnisse.

Die Erzeugung der grafischen Ausgabe ist nur der letzte Schritt in der „Visualisierungspipeline": Datenerfassung, Analyse und Visualisierung. Im Bereich wissenschaftlicher Visualisierung (scientific visualization) werden alle drei Phasen heftigst erforscht. In der Softwarevisualisierung wurden Analysemethoden mit dem Ziel, die Visualisierung (semi-)automatisch auf das Wesentliche zu fokussieren, bisher wenig untersucht, obwohl im Bereich der Programmanalyse theoretisch fundierte und praktisch relevante Theorien exisitieren. Erste Ergebnisse, diese für die Visualisierung von Programmmen zu verwenden, entstanden erst in jüngster Zeit.

Eine Studie über die veröffentlichten Arbeiten zeigt, dass die Visualisierung der statischen Struktur und der konkreten Ausführung von Programmen vielfach untersucht wurde, während die Visualisierung der abstrakten Ausführung von Programmen oder der Evolution von Programmen und Systemen fast vollkommen unerforscht ist.

Zu den Herausforderungen der nächsten Jahre zählen der Aufbau von umfassenden Web-Datenbanken mit fertigen oder konfigurierbaren Algorithmenanimationen für die Lehre, die Entwicklung und Integration skalierbarer, visueller Werkzeuge für Softwaretechnik und insbesondere Reengineering, die Visualisierung der Evolution von Softwaresystemen sowie in allen Bereichen die Entwicklung neuer grafischer Metaphern und die empirische Evaluation existierender und neuer Verfahren.

Einen Überblick zum Thema „Softwarevisualisierung" und insbesondere zu Systemen zur Programm- und Algorithmenanimation geben drei Sammelbände aus den Jahren 1996,1998 und 2002. Aktuelle Informationen bieten zudem die Webpages http://www.softvis.org und http://www.softwarevisualisierung.de. Letztere enthält Links zu im Bereich Softwarevisualisierung aktiven Forschungsgruppen in Deutschland.

Literatur

  1. Bassil, S., Keller, R. K.: Software visualization tools: survey and analysis. In: Proceedings of the Ninth International Workshop on Program Comprehension (IWPC2001), Toronto, Ontario, Canada, 2001
  2. Diehl, S. (ed.): Software visualization. LNCS, vol. 2269. Berlin Heidelberg New York: Springer 2002
  3. Diehl, S., Kerren, A.: Generierung interaktiver Visualisierungen von Berechnungsmodellen. Informatik-Forschung und Entwicklung, 2001
  4. Eades, P., Zhang, K. (eds.): Software visualization. Singapore: World Scientific Pub. 1996
  5. Irani, P. P., Ware, C., Tingley, M.: Using perceptual syntax to enhance semantic content in diagrams. IEEE Computer Graphics & Applications 21(5), 2001
  6. Jones, J. A., Harrold, M. J., Stasko, J.: Visualization of test information to assist fault localization. In: Proceedings of the 24th International Conference on Software Engineering ICSE02, Buenos Aires, 2002
  7. Stasko, J. T., Domingue, J., Brown, M. H., Price, B. A.: Software visualization. Cambridge/ MA: MIT Press 1998

Hinweis: Die URLs entsprechen dem Stand bei der Veröffentlichung des Artikels und werden nicht aktualisiert.

Autor und Copyright

Dr. S. Diehl 
FR 6.2 Informatik, 
Universität des Saarlandes, 
Postfach 151150, 
66041 Saarbrücken
diehl@cs.uni-sb.de

DOI 10.1007/s00287-003-0314-4
© 2003 Informatik Spektrum, Springer-Verlag Berlin Heidelberg