3 2 Software Visualisierung In diesem Kapitel wird die Terminologie und die Struktur der Software Visualisierung vorgestellt. Die in den folgenden Abschnitten angegebenen Begriffe wurden von PRICE, BAECKER und SMALL erstmals in [PBS93] veröffentlicht. Neben dieser Taxonomie gibt es auch andere. Der interessierte Leser sei hier beispielsweise auf [Mye88, Mye90] verwiesen. Bevor im nächsten Abschitt die Software Visualisierung genauer untersucht wird, erscheint es sinnvoll den Begriff Visualisierung allgemein zu erläutern. Visualisierung Eine Gemeinsamkeit aller Visualisierungen ist: Informationen unter einem bestimmten Gesichtspunkt zu transformieren, um sie in einer geeigneten Sicht dem Anwender in einer möglichst nützlichen Form zu präsentieren. Die Transformation beinhaltet hierbei oft das geschickte Sichtbarmachen von nicht sichtbaren Vorgängen, Ereignissen oder Zuständen. FENK unterscheidet hier im wesentlichen drei Arten von Visualisierungen: die Visualisierung als Verschriftlichung, die Visualisierung als Übersetzung ins Nonverbal-Optische und schließlich die Visualisierung als Illustration. PRICE, BAECKER und SMALL geben in [PBS93] eine weitere Interpretation des Begriffs an: In the Oxford English Dictionary [Simpson 89] there are seven definitions of the word visual; [ ] The seventh definition suggests the formation of a mental image which is not necessarily related to something in one s visual field. It is this later definition that visualization takes its meaning. [PBS93] Wie sich im Verlauf noch zeigen wird, ist die Bildung eines mentalen Modells das Ziel jeder Visualisierung. Im folgenden Satz wird diese Aussage in Bezug auf die SV und ihren Methoden noch einmal zusammengefasst. 2.1 Struktur und Ziele Das Ziel der Software Visualisierung besteht im allgemeinen darin, den Verstehensprozess für die Arbeitsweise von Software zu erleichtern. Um dieses Ziel zu erreichen, werden häufig Techniken aus der Typographie und der Kinematographie angewandt und mit modernen Methoden der Mensch-Computer-Interaktion gekoppelt [SDBP98]. Die SV lässt sich, wie bereits erwähnt, in verschiedene Teilbereiche gliedern, die in der folgenden Abbildung dargestellt sind:
4 2 Software Visualisierung Algorithmen-Visualisierung Programm-Visualisierung statische Algorithmen- Visualisierung dynamische Daten- Visualisierung statische Daten- Visualisierung dynamische statische dynamische Algorithmen- Code- Code- Visualisierung Visualisierung Visualisierung Abbildung 2.1: Die Teilgebiete der Software Visualisierung [PBS93]. Die Visualisierung von Algorithmen beinhaltet hierbei die Beschreibung von Software auf einem hohen Abstraktionsgrad, d.h. dass im wesentlichen nur strukturelle Ähnlichkeiten zwischen den Darstellungselementen und dem implementierten Verfahren bei Vertretern dieses Visualisierungstyps zu finden sind. Das Teilgebiet lässt sich weiter in statische- und dynamische Algorithmen-Visualisierung untergliedern, wobei letzterer Visualisierungstyp auch als Algorithmen-Animation bezeichnet wird. Das Video Sorting Out Sorting von BAECKER vorgestellt in [Bae81] gilt als eines der ersten Vertreter von Algorithmen- Animationen. In diesem Video wird die Arbeitsweise verschiedener Sortierverfahren mit Hilfe einfacher animierter Darstellungen erläutert. Ein einfaches Beispiel für eine statische Algorithmen-Visualisierung ist ein Programmablaufplan. Im Sinne des Begriffes Abstraktion werden in der Regel nur wesentliche Verfahrensschritte in statischer Form unter Verwendung einer grafischen Symbolik dargestellt. Jeder Bezug auf eine konkrete Programmiersprache oder Implementierungsvariante wird dadurch vermieden. In Lehrbüchern findet dieser Visualisierungstyp oft Anwendung. Auf der rechten Seite in der Abbildung 2.1 ist das zweite Teilgebiet der SV dargestellt, die Programm-Visualisierung. Der Unterschied zwischen den beiden Visualisierungstypen soll durch eine Definition des Begriffes Algorithmus verdeutlicht werden: Algorithmen sind exakt formulierte Rechenvorschriften, die auf Computern als ausführbare Programme implementiert und auf diese Art für die Lösung von Aufgaben angewandt werden können. Ein Algorithmus besteht somit aus einer wohldefinierten endlichen Folge von elementaren Rechenoperationen und Entscheidungen, um aus einer bestimmten Menge von Eingabegrößen [ ] das gewünschte Resultat [ ] zu erzeugen. [Zei96] Programme sind hiernach nichts anderes als Implementierungsvarianten von Algorithmen. Im Vordergrund einer Programm-Visualisierung steht somit die Darstellung einer konkreten Implementierung eines Algorithmus. Das wesentliche Unterscheidungsmerkmal zwischen beiden Visualisierungstypen ist deshalb der Abstraktionsgrad, der bei einer Programm-Visualisierung in der Regel geringer ist als bei einer Algorithmen- Visualisierung. Die Untergliederung des Teilgebietes in Code- und Daten-Visualisierung weist zusätzlich auf die Techniken der Programm-Visualisierung hin. Die Einteilung erscheint sinnvoll, da zur Verwaltung und Berechnung von Daten oft charakteristische Datenstrukturen im Programm verwendet werden, deren Arbeitsweise in gesonderten Darstellungen die Vermittlung der Grundidee einer konkreten Implementierung unterstützen können.
2.2 Personen 5 Daten-Visualisierungen sind sehr vielfältig. So kann beispielsweise eine Liste durch Rechtecke dargestellt werden, wobei die Verkettung der Listenelemente intuitiv durch Pfeile erfolgt. Werden zwei Elemente in einem Verfahrensschritt vertauscht, animiert die dynamische Daten-Visualisierung diesen Austausch durch einen graduellen Vorgang. 2 3 7 10 9 Abbildung 2.2: Eine mögliche Darstellung einer einfach-verketteten Liste. Was ist nun eine Code-Visualisierung? Ein einfaches Beispiel für eine statische Code- Visualisierung ist die Darstellung des Programmtextes. Das kontinuierliche Hervorheben des gerade aktiven Programmteils kann als Code-Animation interpretiert werden. Auch die Darstellung eines Rekursionsbaumes bei einem rekursiven Verfahren kann als ein Vertreter dieses Visualisierungstyps aufgefasst werden. Abschließend sei noch daraufhingewiesen, dass in der Praxis bei vielen existierenden Animationen keine klare Zuordnung zu einem der Teilgebiete vorgenommen werden kann, da viele Visualisierungen sowohl stark abstrahierende, als auch sehr an der Implementierung orientierte Darstellungselemente besitzen. 2.2 Personen Um mit vertretbarem Aufwand eine Software Visualisierung erstellen zu können, erscheint es sinnvoll, ein System zur Verfügung zu haben, das es ermöglicht diese Aufgabe zu lösen. Das Design, die Konstruktion und die Wartung eines derartigen Systems sind im wesentlichen die Aufgaben des SV-System Entwicklers. Diese Person implementiert grundlegende Werkzeuge, die für eine Visualisierung nötig sind. Ist ein SV-System verfügbar, nutzt der Entwickler dieses System. Die Zielperson der Visualisierung ist der Anwender. Je nach Transformation ist er in der Lage, mit der Visualisierung zu interagieren und für sich einen Nutzen aus der Anwendung zu ziehen. 2.3 Kriterien für die Charakterisierung eines SV-Systems In diesem Abschnitt werden einige Kriterien für eine Charakterisierung eines SV-Systems betrachtet. Die Gliederung in Abbildung 2.3 wurde anhand der charakteristischen Eigenschaften bestehender SV-Systeme 1 erstellt. In Abbildung 2.3 ist ein -närer Baum dargestellt. Damit ist die Möglichkeit einer Erweiterung der Struktur um neue Unterscheidungskriterien jederzeit möglich. Alle Verzweigungen der Hauptkriterien in Unterkriterien werden im folgenden kurz, durch die Formulierung von Fragen, erläutert. Im einzelnen sind es BALSA, Zeus, Tango, ANIM, Pascal Genie, UWPI, SEE, TPM, Pavane, LogoMedia und CenterLine Object.
6 2 Software Visualisierung SV-System A: Bereich B: Inhalt C: Form D: Methode E: Interaktion F: Effektivität?! Abbildung 2.3: Die Hauptkriterien zur Charakterisierung eines SV-Systems [SDBP98]. Kategorie A: Bereich Die Unterteilung der Kategorie A ist in Abbildung 2.4 zu sehen. A.1.1 Hardware A.1 Allgemeines A.1.2 Software A.1.3 Sprache A.1.3.1 nebenläufige Programme A: Bereich A.1.4 Anwendung A.1.4.1 Spezialitäten A.2 Skalierbarkeit A.2.1 Programm A.2.2 Eingabedaten Abbildung 2.4: Der komplette Baum der Kategorie A aus [SDBP98]. A: Für welche Software ist das SV-System geeignet? A.1 Kann das System jede Software visualisieren, oder ist es auf bestimmte Beispiele beschränkt? A.1.1 Welche Hardware wird benötigt? A.1.2 Welches Betriebssystem wird benötigt? A.1.3 In welcher Programmiersprache muss der Anwender seine Programme schreiben? A.1.3.1 Unterstützt die Implementierungssprache die Programmierung von nebenläufigen Programmen und kann das SV-System diese Programme visualisieren? A.1.4 Gibt es Einschränkungen bzgl. des Anwendungsgebietes? A.1.4.1 Welche Art von Programmen sind besonders geeignet für eine Visualisierung? A.2 Wie gut ist das System skalierbar? A.2.1 Beschränkt das System die Größe des Programmes? A.2.2 Beschränkt das System die Größe der Eingabedaten?
2.3 Kriterien für die Charakterisierung eines SV-Systems 7 Diese Kategorie versucht in erster Linie die Programme zu klassifizieren, die von einem konkreten SV-System verarbeitet werden können. Kategorie B: Inhalt Die Unterteilung der Kategorie B ist in Abbildung 2.5 zu sehen. B.1 Programm B.1.1 Code B.1.2 Daten B.1.1.1 Kontrollfluss B.1.2.1 Datenfluss B: Inhalt B.2 Algorithmus B.2.1 Anweisungen B.2.2 Daten B.2.1.1 Kontrollfluss B.2.2.1 Datenfluss B.3 Genauigkeit Vollständigkeit B.3.1 Beständigkeit des Systems bei nebenläufigen Prog. B.4 Datensammelzeit B.4.1 zeitliche Kontrollabbildung B.4.2 Generierungszeit für die Visualisg. Abbildung 2.5: Der komplette Baum der Kategorie B aus [SDBP98]. B: Welche Informationen der Software werden vom SV-System dargestellt? B.1 In welchem Umfang visualisiert das SV-System das implementierte Programm? B.1.1 In welchem Umfang visualisiert das System Befehle aus dem Programmtext? B.1.1.1 In welchem Umfang visualisiert das System den Kontrollfluss? B.1.2 In welchem Umfang visualisiert das System die Datenstrukturen? B.1.2.1 In welchem Umfang visualisiert das System den Datenfluss? B.2 In welchem Umfang visualisiert das SV-System einen Algorithmus? B.2.1 In welchem Umfang visualisiert das System die Anweisungen im Algorithmus? B.2.1.1 In welchem Umfang visualisiert das System den Kontrollfluss der Anweisungen im Algorithmus? B.2.2 In welchem Umfang visualisiert das System die Datenstrukturen des Verfahrens?
8 2 Software Visualisierung B.2.2.1 In welchem Umfang visualisiert das System den Datenfluss im Algorithmus? Auf den Unterschied zwischen Programm- und Algorithmen-Visualisierung wurde bereits hingewiesen. Die resultierenden Darstellungen in den Punkten B.2.1 und B.2.2 unterscheiden sich gegenüber den Darstellungen der Punkte B.1.1 und B.1.2 im wesentlichen durch ihren Abstraktionsgrad. B.3 Zeigen die Darstellungen das wirkliche Verhalten des Programmes? B.3.1 Wenn das SV-System nebenläufige Programme visualisieren kann, unterbricht es dabei die Ausführung, um gesammelte Informationen in einer Visualisierung zu verarbeiten? Das Unterbrechen der Ausführung eines nebenläufigen Programmes sollte vermieden werden, da damit das Verhalten des Programmes beeinflusst wird. So könnten beispielsweise bei der Ausführung einer Visualisierung andere Laufzeiteigenschaften beobachtet werden, die bei der normalen Ausführung nicht auftreten. B.4 Müssen die zu visualisierenden Daten zur Übersetzungszeit oder erst zur Laufzeit bekannt sein? B.4.1 Wie ist die Verbindung zwischen Programm- und Visualisierungzeit? B.4.2 Wird die Visualisierung vor dem Programmstart erzeugt oder dynamisch während der Ausführung des Programmes? Es werden die folgenden Arten von Programm- und Visualisierungszeit unterschieden: statisch-zu-statisch An einem Punkt im Programm generiert das System eine statische Visualisierung, eine sogenannte Momentaufnahme. statisch-zu-dynamisch Die durch das SV-System an einem Punkt im Programm generierte Visualisierung ist animiert. dynamisch-zu-statisch Über eine feste Zeitspanne während der Ausführung des Programmes werden Informationen gesammelt, die anschließend in einer einzigen Visualisierung verarbeitet werden. dynamisch-zu-dynamisch Die Ausführungszeit des Programmes wird in Intervalle zerlegt, in denen Informationen gesammtelt werden. Am Ende eines Zeitintervalls werden die gesammelten Informationen in einer Animation verarbeitet. Es ist offensichtlich, dass die Art der Generierung von Visualisierungen während der Programmausführung einen großen Einfluss auf den Interaktionsgrad hat. Kategorie C: Form Die Unterteilung der Kategorie C ist in Abbildung 2.6 zu sehen.
2.3 Kriterien für die Charakterisierung eines SV-Systems 9 C.1 Medium C.2.1 grafische Umgebung C.2.1.1 Farben C.2.1.2 Dimensionen C.2 Präsentation C.2.2 Animation C: Form C.2.3 akustische Signale C.3 Granularität C.3.1 Abstraktion C.4 mehrfache Sichten C.5 Programmsynchronistation Abbildung 2.6: Der komplette Baum der Kategorie C aus [SDBP98]. C: Was sind die charakteristischen Aufgaben des Systems? C.1 Welches Medium benutzt das System? C.2 Wie lassen sich die Darstellungen allgemein beschreiben? C.2.1 Welche grafischen Elemente werden vom SV-System für eine Visualisierung benutzt? C.2.1.1 Benutzt das System Farben? C.2.1.2 Benutzt das System zusätzliche Dimensionen? C.2.2 Gibt es Animationssequenzen in einer Visualisierung? C.2.3 Werden akustische Signale verwendet, um zusätzliche Informationen zu übertragen? C.3 Ist die Granularität einer Visualisierung beeinflussbar? C.3.1 Wie leicht können einzelne Informationen ausgeblendet werden? C.4 In welchem Umfang unterstützt das SV-System verschiedene synchronisierte Darstellungen? Um die Arbeitsweise von Software aus verschiedenen Perspektiven betrachten zu können, ist die Unterstützung verschiedener (synchronisierter) Darstellungen wichtig. C.5 Sind synchrone Visualisierungen verschiedener Programme erzeugbar?
10 2 Software Visualisierung Viele SV-Systeme unterstützen die synchrone Ausführung unabhängiger Visualisierungen, um zum Beispiel die Arbeitsweise verschiedener Verfahren, die jeweils ein gleiches Problem bearbeiten, miteinander zu vergleichen. Kategorie D: Methode Die Unterteilung der Kategorie D ist in Abbildung 2.7 zu sehen. D: Methode D.1 Art der Visualisierungsspezifikation D.1.1 Intelligenz D.1.2 Anpassbarkeit D.1.2.1 individuelle Sprache D.2 Verbindungstechnik D.2.1 Kenntnis über Programmtext D.2.2 System-Code- Verbindung Abbildung 2.7: Der komplette Baum der Kategorie D aus [SDBP98]. D: Wie wird eine Visualisierung spezifiziert? D.1 Welche Art der Spezifikation von Visualisierungen wird verwendet? D.1.1 Wie intelligent ist das System bei der automatischen Erzeugung von Visualisierungen? D.1.2 Kann der Benutzer die Visualisierung anpassen? D.1.2.1 Mit welchen Möglichkeiten können die Anpassung vorgenommen werden? D.2 Wie wird die Verbindung zwischen Visualisierung und Programm hergestellt? D.2.1 Die Visualisierung wird nicht automatisch erzeugt. Wieviel Wissen über den Programmtext wird benötigt, um eine Visualisierung zu erstellen? D.2.2 Wie stark ist die Bindung zwischen Visualisierung und Programmtext? Einige Systeme benutzen Prä-Prozessoren, um den Programmtext vor der Übersetzung mit zusätzlichen Kommandos zu versehen (vgl. Kapitel 3). Es gibt Systeme (TMP, UWPI), die durch eine spezielle Syntaxanalyse Visualisierungen automatisch erzeugen können, so dass eine Veränderung des Programmtextes nicht mehr nötig ist. Diese Systeme verwenden spezielle Interpreter bzw. Übersetzer.
2.3 Kriterien für die Charakterisierung eines SV-Systems 11 Kategorie E: Interaktion Die Unterteilung der Kategorie E ist in Abbildung 2.8 zu sehen. E.1 Stil E.2.2 zeitliche Kontrolle E: Interaktion Geschwindigkeit E.2 Navigation E.2.1 Abstraktionskontrolle E.2.2.1 Richtung E.2.2.2 E.3 Aufzeichnungsmöglichkeit Abbildung 2.8: Der komplette Baum der Kategorie E aus [SDBP98]. E: Wie interagiert der Benutzer mit dem SV-System? E.1 Auf welche Art kann der Benutzer Anweisungen an das System geben? E.2 Wie navigiert der Nutzer durch die Visualisierung? E.2.1 Hat der Benutzer die Möglichkeit Details zu unterdrücken? E.2.2 Erlaubt das System dem Nutzer zeitliche Aspekte zu kontrollieren? E.2.2.1 Hat der Nutzer die Möglichkeit die Visualisierung schrittweise rückwärts laufen zu lassen? E.2.2.2 Kann der Nutzer die Geschwindigkeit beeinflussen? E.3 Unterstützt das System die Möglichkeit der Aufnahme bzw. des Abspielens von Teilen der Visualisierung? Der Grad an Interaktivität hat einen großen Einfluss auf die Verwendbarkeit der Visualisierung als Lern-/Lehrsoftware. Kategorie F: Effektivität Die Unterteilung der Kategorie F ist in Abbildung 2.9 zu sehen. F: Wie gut kann das System dem Nutzer Wissen vermitteln? F.1 Für welchen Zweck ist das System geeignet? F.2 Wie gut können die automatisch erstellten Visualisierungen dem Nutzer Wissen vermitteln? F.3 Wurde das System in der Praxis getestet und was sagen die Ergebnisse aus? F.4 Wird das System verwendet?
12 2 Software Visualisierung F.1 Zweck F.2 Eignung und Klarheit F: Effektivität F.3 empirische Evaluation F.4 Gebrauch Abbildung 2.9: Der komplette Baum der Kategorie F aus [SDBP98]. In der Einleitung wurde daraufhingewiesen, dass es zur Bewertung von SV-Systemen eine Vielzahl von Arbeiten gibt, auf die an dieser Stelle nicht näher eingegangen wird. Das vorliegende Modell zur Charakterisierung eines SV-Systems dient im Kapitel 5 als Orientierung für die Entwicklung eines Systems auf der Basis von LEDA. Das folgende Kapitel wird zuvor noch einige ausgewählte SV-Systeme kurz vorstellen.