Logo - Fakultät für Mathematik und InformatikIllustration

Seminar 1917, Themenliste

*

Die hier aufgeführte Literatur soll den Einstieg in die Thematik erleichtern. Darüber hinaus ist eigenständig Literatur zu recherchieren, beachten Sie hierfür die Recherchehinweise. Die angegebenen kurzen Absätze zum Thema sollen einen Einstieg ermöglichen, bei Fragen zu den Themen klären Sie diese bitte rechtzeitig mit dem Betreuer ab.

Einleitung

Das Seminar soll sich mit Visualisierung im Software Engineering beschäftigen. Dabei ist einmal die Frage interessant ist, welche speziellen Techniken des Software Engineerings im Bereich Visualisierung angewendet werden, andererseits ist zu fragen wie Software und Entwicklungsartefakte selbst dargestellt werden können.

In dem einen Fall wird also die Visualisierung die Anwendungsdomäne des Software Engineering, im anderen Fall ist es gerade umgekehrt. Entsprechend sind die einzelnen Themen des Seminars zweigeteilt: Zunächst soll untersucht werden, welche Techniken im Bereich der Visualisierung eingesetzt werden und diese aus Sicht des Software Engineerings kritisch beleuchtet werden. Im weiteren werden dann ausgewählte Anwendung der Visualisierung im Bereich Software und Software Engineering vorgestellt.

Zu den jeweiligen Themen sind bereits ein paar Literaturhinweise angegeben, die als Startpunkt dienen können. Besonders hervorzuheben ist dabei das Buch von Stephan Diehl [Diehl07a], welches sich wie ein roter Faden insbesondere durch den zweiten Teil des Seminar zieht und im Prinzip für alle Teilnehmer von Interesse ist. ([Diehl03a] ist mehr oder weniger eine gekürzte Version der Einleitung von [Diehl07a]). Weitere Sammelbände zum Thema Softwarevisualisierung sind [Stasko98a] und [Diehl01a]. Daneben sind die Beiträge zu einschlägigen Konferenzen und Workshops als Literatur heranzuziehen. Wichtigste Veranstaltungen sind hier:

  • ACM Symposium on Software Engineering, kurz Softvis (siehe "http://www.softvis.org")
  • \item IEEE International Workshop on Visualizing Software for Understanding and Analysis, kurz VISSOFT
Daneben finde sich auch in Publikationen zu Programmverständnis (Comprehension), Human-Computer-Interaction (HCI), Informationsvisualisierung und Software Engineering im Allgemeinen entsprechende Beiträge.

Software Engineering und Visualisierung

In diesem ersten Bereich gehen wir der Frage nach, wie Visualisierungen technisch realisiert werden können. Dabei fokussieren wir auf Softwarevisualisierungen, also Darstellung von Software oder Entwicklungsartefakten, wie sie im zweiten Teil ausführlicher besprochen werden. Unser Blick wird dabei von Verfahren wie der modellgetriebenen Softwareentwicklung gelenkt, bei denen Modelle (etwa in Form von UML-Modellen) in den Mittelpunkt des Entwicklungsprozesses gerückt werden und dabei dargestellt (und editiert) werden müssen. Als Axiome nehmen wir also an, dass die Darstellung nicht losgelöst von der Semantik ist und dass das die Darstellungen nicht nur rein deskriptiven Charakter haben, sondern konstruktiv eingesetzt werden.

Wir interessieren uns hierbei weniger für spezielle bildgebende Verfahren, wie sie etwa in den Kursen zur Computergrafik [Straser02a] [Straser02b] vorgestellt werden, sondern beschränken uns auf Techniken, die Modelle aus dem Entwicklungsprozess, i.A. graphische Strukturen, darstellen und editierbar machen. Ebenso wenig behandeln wir explizit spezielle Frameworks für Visualisierung, teilweise können aber Beispiele mit eben solchen Werkzeugen umgesetzt werden.

Thema 1: Datenstrukturen

Grundlage für die folgenden Themen sind die verwendeten Datenstrukturen -- sowohl der grafischen Elemente wie der zugrunde liegenden Modelle. Die meisten eingesetzten Frameworks, wie etwa GEF, setzen dabei das Model-View-Control-Muster (MVC) um. Da die dargestellten (semantischen) Modelle als Entwicklungsartefakte meist keine graphischen Informationen enthalten, werden dafür sogenannte Notationsmodelle eingesetzt. Interessant ist hierbei, wie die beiden Modelle (Notationsmodell und semantisches Modell) miteinander in Beziehung gesetzt werden und welche Muster beim Zugriff auf die Modelle Verwendung finden. Zum Vergleich soll eine an der Darstellung orientierte Datenstruktur dienen: sogenannte Szenegraphen, wie sie etwa bei Java3D zum Einsatz kommen.

Mit "Diagram Interchange" hat die OMG ein Standardnotationsmodell vorgeschlagen. Das Eclipse Graphical Modeling Framework (GMF) bringt sein eigenes Notationsmodell mit. Vergleichen Sie die Modelle aus Sicht des Software Engineering: Welche Vor- und Nachteile haben die Modelle, welche Überlegungen stecken dahinter. Wie können Notationsmodelle in das MVC integriert werden, welcher Aufwand entsteht dabei? Vielleicht können Sie die Diskussion anhand eigener Beispiele (mit GEF) veranschaulichen.

[Straser02a]
Straßer W. and C. Unger: Computergrafik (Graphische Datenverarbeitung) I. Kurs No. 1278/1692, FernUniversität in Hagen, Hagen, Germany, 2002
[Java3D]
Java3D Project Page (https://java3d.dev.java.net/). URL: https://java3d.dev.java.net/
[OMG06b]
OMG: Diagram Interchange Specification. In: Diagram Interchange Specification, Needham, MA, April, 2006, URL: http://www.omg.org/cgi-bin/doc?formal/06-04-04
[OMG07c]
OMG: XML Metadata Interchange (XMI) Specification. Needham, MA, Dezember, 2007, URL: http://www.omg.org/spec/XMI/2.1.1/
[EMF]
Eclipse Modeling Framework (EMF), Project Website (www.eclipse.org/emf). URL: http://www.eclipse.org/emf/
[GEF]
Graphical Editing Framework (GEF), Project Website (www.eclipse.org/gef). URL: http://www.eclipse.org/gef
[GMF]
Graphical Modeling Framework (GMF), Project Website (www.eclipse.org/gmf). URL: http://www.eclipse.org/gmf
[Muller03b]
Stefan Müller and Jens Fransson: UML-Diagramme - Austausch und Interaktion. Universität Hamburg, Fachbereich Informatik, Verteilte Systeme und Informationssysteme, Juli, 2003, URL: http://vsis-www.informatik.uni-hamburg.de/getDoc.php/thesis/38/DiplomarbeitFranssonMueller.pdf

Thema 2: Graphen und Layoutalgorithmen

Die meisten Modelle, die bei der Softwareentwicklung verwendet werden, sind Graphen bzw. können als Graph interpretiert und dargestellt werden. Damit wird das Problem der Darstellung von Modellen auf die Darstellung von Graphen verallgemeinert. Kernproblem ist dabei die Knoten des Graphen so anzuordnen, dass bestimmte Optimierungskriterien erfüllt werden, etwa möglichst wenig sich überschneidende Kanten. Insbesondere bei zweidimensionalen Darstellungen sind hierbei eine ganze Reihe von Algorithmen bekannt, daneben soll auch auf spezielle Probleme eingegangen werden, wie die Darstellung in 3D oder dynamischer Modelle (wenn also Modellelemente hinzugefügt oder gelöscht werden).

Bei der Beschreibung der Algorithmen sind Kenntnisse aus dem Bereich der Graphentheorie unabdingbar. Gehen Sie allerdings bei der Ausarbeitung und im Vortrag nur so kurz wie möglich darauf ein. Geben Sie einen Überblick der bekannten Algorithmen und beschreiben Sie ein paar ausgewählte Verfahren im Detail. Vielleicht versuchen Sie, ein paar Algorithmen selbst zu demonstrieren oder gar zu implementieren (mit GEF und Zest) und beschreiben Sie, auf welche Probleme Sie dabei gestoßen sind.

[Brandstadt92a]
Andreas Brandstädt: Effiziente Graphenalgorithmen. Kurs No. 1685, FernUniversität in Hagen, Hagen, Germany, 1992
[Battista99a]
Giuseppe Di Battista and Peter Eades and Roberto Tamassia and Ioannis G. Tollis: Graph Drawing: Algorithms for the Visualization of Graphs. Prentice Hall, 1999, ISBN 0-13-301615-3
[Dwyer01a]
Tim Dwyer: Three dimensional UML using force directed layout. In: APVis '01: Proceedings of the 2001 Asia-Pacific symposium on Information visualisation, pp 77--85, Australian Computer Society, Inc., Darlinghurst, Australia, Australia, 2001, ISBN 0-909925-87-9, URL: http://portal.acm.org/citation.cfm?id=564050
[Zest]
Zest, Project Website (www.eclipse.org/zest). URL: http://www.eclipse.org/zest

Thema 3: Generierung graphischer Editoren: GMF, DiaGen/DiaMeta

Die Erstellung graphischer Editoren mit Frameworks wie Eclipse GEF erfolgt meist sehr kanonisch. Damit bietet sich die automatische Generierung graphischer Editoren an. Mit dem Eclipse Graphical Modeling Framework (GMF) existiert ein Tool, welches GEF erweitert und Tools zur Generierung eigener Editoren bietet. Dabei müssen die dargestellten Modelle mittels des Eclipse Modeling Framework umgesetzt sein. DiaGen und DiaMeta sind konkurrierende Ansätze.

Beschreiben Sie die Ansätze von GMF und DiaGen/DiaMeta im Vergleich. Beachten Sie dabei, dass zu Notationsmodellen ein eigenes Themen vergeben wird. Vielleicht können Sie anhand eines kleinen Beispieleditors selbst beide Tools evaluieren und dabei Probleme untersuchen. Wie können erstellte Editoren erweitert werden, welche Features bieten die Tools und welche Einschränkungen. Da das Thema sehr komplex ist, ist hier Gruppenarbeit möglich.

[Budinsky03a]
Frank Budinsky and David Steinberg and Ed Merks and Raymond Ellersick and Timothy J. Grose: Eclipse Modeling Framework (The Eclipse Series). The Eclipse Series, Addison-Wesley, 2003
[EMF]
Eclipse Modeling Framework (EMF), Project Website (www.eclipse.org/emf). URL: http://www.eclipse.org/emf/
[GEF]
Graphical Editing Framework (GEF), Project Website (www.eclipse.org/gef). URL: http://www.eclipse.org/gef
[GMF]
Graphical Modeling Framework (GMF), Project Website (www.eclipse.org/gmf). URL: http://www.eclipse.org/gmf
[DiaGen]
DiaGen/DiaMeta, Project Website (www.unibw.de/inf2/DiaGen). URL: http://www.unibw.de/inf2/DiaGen

Thema 4: Textuelle Notationen

Die Darstellung von Modellen muss nicht zwangsläufig graphisch sein. Häufig sind textuelle Darstellungen ausreichend oder sogar besser geeignet. Die dabei eingesetzten Techniken sind aus dem Compilerbau hinlänglich bekannt. Gerade in den letzten Jahren wurden etliche Tools erstellt, die automatisch Parser und Editoren, inklusive Features wie Syntaxhighlighting oder Content-Assist, auf Grundlage von Grammatiken oder Modellen generieren. Im Rahmen von openArchitectureWare ist hierbei etwa xText zu nennen, dass auf Grundlage einer annotierten Grammatik entsprechende Editoren als Eclipse-Plugins generieren kann.

Beschreiben Sie kurz die notwendigen Grundlagen zum Bau von Parsern. Geben Sie einen Überblick über die Tools und gehen Sie dann näher auf ein Tool (xText) ein. Entwickeln Sie selbst eine kleine Demonstration mit xText und diskutieren Sie Features und Probleme von xText.

[Goldschmidt08a]
Thomas Goldschmidt and Steffen Becker and Axel Uhl: Classification of Concrete Textual Syntax Mapping Approaches. In: Schieferdecker, Ina and Hartman, Alan (ed.): Model Driven Architecture --- Foundations and Applications. 4th European Conference, ECMDA-FA 2008, Berlin, Germany, June 9-13, Proceedings, Lecture Notes in Computer Science Vol. 5095, pp 169--184, Springer-Verlag, Juni, 2008, ISBN 978-3-540-69095-5, ISSN 1611-3349, URL: http://dx.doi.org/10.1007/978-3-540-69100-6_12
[oAW]
openArchitectureWare, Project Website (openarchitectureware.org). URL: http://www.openarchitectureware.org/
[Efftinge08a]
Sven Efftinge and Peter Friese and Arno Haase and Dennis Hübner and Clemens Kadura and Bernd Kolb and Jan Köhnlein and Dieter Moroff and Karsten Thoms and Markus Völter and Patrick Schönbach and Moritz Eysholdt: openArchitectureWare User Guide. In: openArchitectureWare User Guide, April, 2008, URL: http://www.eclipse.org/gmt/oaw/doc/4.3/openArchitectureWare-4.3-Reference.pdf
[Aho88a]
Alfred V. Aho and Ravi Sethi and Jeffrey D. Ullmann: Compilerbau. Vol. 1, Addison-Wesley, 1988

Softwarevisualisierung

Im zweiten Teil wollen wir nun umgekehrt untersuchen, wie Software und Entwickungsartefakte visualisiert werden können -- Software Engineering wird nun also zur Anwendungsdomäne der Visualisierung. Im Gegensatz zur visuellen Programmierung ist die Softwarevisualsierung analytisch. D.h. gegebene Artefakte werden untersucht und dargestellt. Wir wollen diese Trennung hier nicht konsequent aufrecht erhalten. Ein UML-Diagramm kann sowohl der Analyse eines Systems dienen, aber natürlich kann auch ausgehend von einem Diagramm Code erstellt werden. Die folgenden Themen orientieren sich teilweise an den Titeln verschiedener Sessions der Softvis der letzte Jahre, wobei auch in anderen Bereichen entsprechende Beiträge vorkommen können.

Die im folgenden angegebenen Literaturhinweise sind bewusst knapp angegeben, die eigene Recherche ist hier wesentlicher Teil der Aufgabenstellung. Die Beiträge sollen verschiedene Lösungen vorstellen und vergleichen. Vielleicht können Sie das ein oder andere Tool selbst testen und entsprechend eigene Visualisierungen erstellen. Diskutieren Sie die Lösungen kritisch, dabei können Ihnen die ein oder anderen Ergebnisse aus dem Bereich der Evaluierung [Diehl07a, Chapter 6: Evaluation] helfen.

Thema 5: Statische Visualisierung und Programmverständnis

Die Visualisierung der Struktur von Programmen zu Analyse- und Verständniszwecken ist wohl die häufigste Art der Softwarevisualisierung, man denke hier nur an UML-Klassendiagramme. Allerdings stoßen diese Diagramme häufig an ihre Grenzen, die Lesbarkeit etwa von Aktivitätsdiagrammen mit Objektflüssen, größerer Sequenzdiagramme oder hierarchischer Zustandsdiagramme lässt häufig zu wünschen übrig. Daneben finden sich Lösungen für spezielle Probleme, wie die Visualisierung von Software Architekturen, Exceptions oder Entwurfsmustern.

[Diehl07a]
Stephan Diehl: Software Visualization: Visualizing the Structure, Behaviour, and Evolution of Software. Chapter 3: Static Program Visualization. Springer, 5, 2007, ISBN 978-3-540-46504-1

Thema 6: Ausführung, Testen und Debuggen

Gerade bei der Suche nach Fehlern können gute Visualisierungen gute Dienste leisten. Das Thema soll sich, neben der Visualisierung zum Zwecke des Testens, Debuggens oder der Fehlersuche, auf die Visualisierung der Ausführung konzentrieren. Mögliche Anwendungen sind also visuelles Debuggen, die Lokalisierung von Fehlern oder "Code Smells", die Darstellung von Execution Traces oder die Animation von Algorithmen und Programmen.

[Diehl07a]
Stephan Diehl: Software Visualization: Visualizing the Structure, Behaviour, and Evolution of Software. Chapter 4: Dynamic Program Visualization. Springer, 5, 2007, ISBN 978-3-540-46504-1

Thema 7: Softwareentwicklungsprozess, Evolution und Metriken

Die Visualisierung der Evolution von Systemen wurde bislang eher weniger untersucht. Häufig wird "Software Evolution" mit Entwicklungsprozess gleichgesetzt, die Veränderung in Bezug auf die Artefakte während der Entwicklung eines Systems betrachtet. Ein verwandtes Thema ist die Darstellung von Metriken: Die Veränderung etwa von bestehenden Systemen führt häufig zu veränderter Produktqualität, die dann wiederum mittels der Visualisierung von Metriken dargestellt werden kann.

[Diehl07a]
Stephan Diehl: Software Visualization: Visualizing the Structure, Behaviour, and Evolution of Software. Chapter 5: Visualizing the Evolution of Software Systems. Springer, 5, 2007, ISBN 978-3-540-46504-1
Letzte Änderung: 2008-08-12 (Jens von Pilgrim)
FernUni-Logo FernUniversität in Hagen, Lehrgebiet Software Engineering, D-58084 Hagen, Telefon: +49 (2331) 987-2964