Entwurf und Implementierung eines Visualisierungs

Werbung
Entwurf und Implementierung
eines Visualisierungs- und
Explorationskonezptes für
multi-relationale Pseudographen
am Beispiel der
Software-Traceability
Studienarbeit im Fach Informatik
vorgelegt von
Peter Kranz
geb. 14.01.1987 in Ruda
angefertigt am 12.12.2013
Department Informatik
Lehrstuhl für Informatik 2
Programmiersysteme
Friedrich-Alexander-Universität Erlangen–Nürnberg
(Prof. Dr. M. Philippsen)
Betreuer: Norbert Tausch, [email protected]
Beginn der Arbeit: 12.04.2013
Abgabe der Arbeit: 12.12.2013
ii
Ich versichere, dass ich die Arbeit ohne fremde Hilfe und ohne Benutzung anderer als
der angegebenen Quellen angefertigt habe und dass die Arbeit in gleicher oder ähnlicher
Form noch keiner anderen Prüfungsbehörde vorgelegen hat und von dieser als Teil einer
Prüfungsleistung angenommen wurde. Alle Ausführungen, die wörtlich oder sinngemäß
übernommen wurden, sind als solche gekennzeichnet.
Der Universität Erlangen-Nürnberg, vertreten durch die Informatik 2 (Programmiersysteme), wird für Zwecke der Forschung und Lehre ein einfaches, kostenloses, zeitlich
und örtlich unbeschränktes Nutzungsrecht an den Arbeitsergebnissen der Studienarbeit
einschließlich etwaiger Schutzrechte und Urheberrechte eingeräumt.
Erlangen, den 12.12.2013
Peter Kranz
Studienarbeit
Thema:
Hintergrund:
Aufgabenstellung:
Meilensteine:
Literatur:
Betreuung:
Bearbeiter:
Abstract
Place your abstract here.
i
Inhaltsverzeichnis
1
Problemstellung
1.1
1.2
2
2.2
2.3
2.4
2.5
2.6
2.7
3
Beschreibung des Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Mindestanforderungen an Werkzeuge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2.1 aktive Weiterentwicklung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.2 Unterstützung verschiedener Rechnerumgebenunge . . . . . . . . . . . . . . . . . . 2
1.2.3 Lizenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.4 Interaktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.5 Neo4J . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.6 Layoutalgorithmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Werkzeuge
2.1
3
GUESS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1.1 Positive Aspekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.2 Negative Aspekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Gephi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2.1 Positive Punkte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2.2 Negative Punkte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
EVT ZEST. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6
GraphInsight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.4.1 Positive Aspekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.4.2 Negative Aspekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Cytoscape . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
JUNG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
GraphViz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Anforderungen
3.1
3.2
3.3
3.4
3.5
1
9
Ausblenden von Elementen anhand von Filterregeln . . . . . . . . . . . . . . . . . . . . . . 9
Darstellung in Abhängigkeit von Typ oder Eigenschaften . . . . . . . . . . . . . . . . . 9
Schrittweise Exploration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Entladen, Verbergen oder Löschen von Elementen . . . . . . . . . . . . . . . . . . . . . . . 10
Verschmelzen von Teilgraphen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
iii
Inhaltsverzeichnis
3.6
3.7
3.8
3.9
4
Zoom und Miniaturdarstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Darstellung von Daten in Elementvisualisierungen . . . . . . . . . . . . . . . . . . . . . . . 10
Hervorhebung von Elementen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Statistiken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Implementierung eines Prototypen
4.1
4.2
4.3
4.4
4.5
4.6
4.7
13
Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.1.1 Open Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Zeichenfläche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.2.1 Knoten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.2.2 Kanten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.2.3 Interaktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Schaltflächen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Layout Algorithmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Connected Nodes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16
5
Vergleich
19
6
Schluss
21
iv
Abbildungsverzeichnis
4.1
4.2
4.3
Bild des Layouting-Bereichs. . . . . . . . . . . . . . . . . . . . . . . . . .
Bild des Properties-Bereichs. . . . . . . . . . . . . . . . . . . . . . . . . .
Bild des Connected Nodes-Bereichs. . . . . . . . . . . . . . . . . . . . . .
14
17
17
v
Tabellenverzeichnis
5.1
[TODO: #table caption#] . . . . . . . . . . . . . . . . . . . . . . . . .
20
vii
List of Algorithms
ix
1 Problemstellung
1.1 Beschreibung des Problems
Software-Traceability beschäftigt sich mit der Gewinnung und Analyse von Zusammenhängen zwischen Softwareartefakten. Diese Daten werden aus verschiedenen Quellen,
wie zum Beispiel UML-Werkzeugen, Quelldateien, Metrikextraktoren, und vielen anderen, gewonnen und abschließend in einer gemeinsamen Datenbank zusammengeführt.
Dies erzeugt hochgradig vernetzte Graphen mit folgenden Eigenschaften:
multi-relational Sämtliche Elemente (Knoten und Kanten) werden nach Typ unterschieden. [TODO: #multirelational Beispiel#]
Pseudograph Zwischen zwei Knoten im Graph können sich mehrere parallel verlaufende
Kanten befinden. Ebenso kann der Graph Schlingen beinhalten, also Kanten, die
den selben Knoten als Quelle und Ziel aufweisen.
attributiert Elemente verfügen über Attribute, welche das repräsentierte Objekt näher
beschreiben.
nicht-planar Durch die hochgradige Vernetzung ergeben sich Graphen, die dichte Knotenumgebungen und überschneidende Kanten aufweisen.
Diese Eigenschaften machen die Visualisierung solcher Graphen sehr komplex, da viele
verschiedene Informationen dargestellt werden müssen. Weiterhin wird durch die hohe
Informationsdichte die manuelle Exploration erschwert. führen zu einer komplexen Visualisierung, welche viele darzustellende Informationen beinhaltet. Die manuelle Exploration solcher Graphen wird durch die Vielzahl der möglich darstellbaren Informationen
erschwert. Dies führt zu einer Erschwerung der Erforschung von neuen TraceabilityAnalysen.
1.2 Mindestanforderungen an Werkzeuge
Werkzeuge, welche die Erforschung von Traceability-Analysen erleichtern sollen, müssen
diverse Mindestvoraussetzungen erfüllen um sinnvoll eingesetzt werden zu können.
1
1 Problemstellung
1.2.1 aktive Weiterentwicklung
1.2.2 Unterstützung verschiedener Rechnerumgebenunge
1.2.3 Lizenz
1.2.4 Interaktion
1.2.5 Neo4J
1.2.6 Layoutalgorithmen
Um Gaphen möglichst übersichtlich darstellen zu können, gibt es diverse Layoutalgorithmen. Es gibt im wesentlichen zwei Arten, die ersten benötigen nur einen Schritt um
zum Ergebnis zu gelangen, zweitere benötigen eine größere Anzahl von Schritten und
nähern sich langsam einem optimalen Ergebnis an. Im folgenden wird je ein Algorithmus
beschrieben.
Layoutalgorithmus im Prototyp: Circular
Im Rahmen des Prototypen wurde ein simpler Algorithmus hinzugefügt, der sämtliche
sichtbaren Knoten in Kreisform anordnet. Der Algorithmus ermittelt zuerst die Größe
des größten Knotens. Diese wird verwendet um den Radius eines Kreises zu berechnen
auf dem alle Knoten gleichmäßig und überlappungsfrei angeordnet werden können. Abschließend werden die Knoten auf die einzelnen Positionen verteilt. Die Vorteile dieses
Algorithmus sind seine schnelle Ausführung [TODO: #mehr vorteile#].
Fruchterman Reingold
[4]
2
2 Werkzeuge
2.1 GUESS
Das Programm “The Graph Exploration System”kurz GUESS wurde von Eytan Adar
und Miryung Kim entwickelt [1] [2]. Die aktuellste erhältliche Version ist 1.0.3beta vom
13.08.2007. Die Software kann die Dateiformate GDF, GML und Pajek einlesen. Gespeichert werden kann jedoch nur GDF [TODO: #satz anders#].
Nachdem ein Graph geladen wurde, wird dieser zentriert in der Zeichenfläche dargestellt. Knoten werden standardmäßig als Kreisflächen visualisiert. Bei ersten Versuchen den Graph mit der Maus zu manipulieren wird klar, dass selektierte Knoten
vergrößert und zentriert angezeigt werden. Die voreingestellt Ansicht auf den Gesamtgraphen wird dabei verändert. Das Menü, das über einen Rechtsklick auf einen Knoten
erreicht werden kann, enthält grundlegende Funktionen wie das Entfernen dieses Knotens oder das Ändern der Farbe. Ebenso kann man die Form des Knotens verändern. Die
Auswahl erfolgt hierbei numerisch, zum Beispiel entspricht die Zahl 1 einem Rechteck.
Hinzufügen, Anzeigen oder Manipulieren von beliebigen Parametern ist nicht möglich.
Das Auswählen eines Knotens wird erst ermöglicht nachdem über eine kleine Schaltfläche am unteren Rand in den Manipulate Nodes“-Modus geschaltet wurde. Nachdem
”
ein Knoten angewählt wurde, kann dieser mit der Maus in Größe, Seitenverhältnis und
Position verändert werden. Die Funktion zum Verschieben des Graphen wird über die
linke Maustaste erreicht und verhält sich unüblich [TODO: #warum? eigentlich ganz
clever gelöst#] sobald einer der Ränder erreicht wird. Die Zoomfunktion wird über die
rechte Maustaste aktiviert und über eine Links- oder Rechtsbewegung relativ zum Punkt
an welchem geklickt wurde gesteuert. Dieses Verhalten ist unintuitiv zudem wird durch
Aktivieren der Funktion nicht ersichtlich in welche Richtung die Maus bewegt werden
muss.
Auf der linken Seite befindet sich ein Informationsfenster, das Informationen zu den
ausgewählten Knoten und Kanten anzeigt. Dort können auch Werte geändert werden.
[TODO: #welche Werte?#]
Kanten können gerichtet oder ungerichtet sein, wobei maximal drei Kanten zwischen
zwei Knoten existieren dürfen, eine ungerichtete und zwei gerichtete in gegensätzliche
Richtungen. Das Hinzufügen weiterer Kanten wird mit einer Fehlermeldung quittiert.
Aus der Darstellung ist nicht erkennbar, wieviele Kanten sich zwischen zwei Knoten
befinden. Befindet sich mehr als eine Kante zwischen zwei Knoten so kann jeweils nur
3
2 Werkzeuge
eine davon selektiert werden. Die Software erlaubt das Erstellen von Schlingen, wobei
die gleichen Limitierungen existieren wie zwischen zwei unterschiedlichen Knoten.
Es existieren diverse Layout Algorithmen um die Graphen übersichtlicher anzuordnen.
GUESS implementiert Standardalgorithmen wie Kamada-Kawai, Fruchterman-Reingold
und Circular. Die Algorithmen können nicht konfiguriert werden. Außerdem können sie
nicht abgebrochen werden nachdem sie gestartet wurden. Es wird lediglich nach einer
gewissen Zeitspanne gefragt ob der Algorithmus weitergeführt werden soll oder nicht.
[TODO: #Konsole#]
2.1.1 Positive Aspekte
• Diverse Layout-Algorithmen
• Konsole zur Manipulation von Knoten und Kanten
2.1.2 Negative Aspekte
• Unübliches und nicht intuitives Zoomverhalten
• Nicht intuites Verhalten beim Verschieben des Graphen sobald die Anzeigeränder
erreicht werden
• Layout-Algorithmen können nicht konfiguriert werden
• Layout-Algorithmen können nicht abgebrochen werden
2.2 Gephi
Gephi [3] ist eine Open-Source Software zur Netzwerk Analyse und Visualisierung. Die
letzte Version ist die Version 0.8.2beta welche am 03.01.2013 erschienen ist. Gephi wird
aktiv weiterentwickelt. Die Standardversion von Gephi kann Graphen in folgenden Dateiformaten einlesen: CSV, DL, GraphViz, GDF, GEXF, GML, sowie das eigene Format.
Ebenso wird der Export in eben diese Formate unterstützt sowie zusätzlich: GraphML,
NET und VNA. [TODO: #Dateiformate beschreiben#]. Weitere Dateiformate können
über Plugins hinzugefügt werden.
Die Oberfläche teilt sich in drei Modi, “Overview”, “Data Laboratory” und “Preview”.
Im Preview-Modus kann der Graph als Bild-Datei exportiert werden und hierzu diverse Darstellungseinstellungen wie Farben und Formen von Knoten und Kanten getroffen
werden. Im Data Laboratory-Modus können die Graphdaten tabellarisch dargestellt werden. Dabei wird zwischen Knoten und Kanten unterschieden. Es besteht die Möglichkeit
sämtliche Elemente zu bearbeiten und neue hinzuzufügen. Der Overview-Modus ist der
Hauptbearbeitungsmodus in Gephi. Es wird der Graph angezeigt, in dem man sämtliche
4
2.2 Gephi
Knoten und Kanten bearbeiten kann. Knoten und Kanten können über komplexe Funktionen in Form und Farbe angepasst werden. Hierbei können verschiedene Attribute
verwendet werden. Nachdem ein Graph geladen oder zufällig erzeugt wurde, kann dieser
mit der rechten Maustaste verschoben und mit dem Mausrad vergrößert beziehungsweise verkleinert werden. Irritierend ist, dass die Zeichenfläche um eine fünffach größere
Strecke bewegt als sie mit der Maus verschoben wurde. Dies führt dazu, dass sich das
Verschieben der Zeichenfläche nicht natürlich anfühlt und eine exakte Positionierung
nicht möglich ist. Die Zoomfunktion vergrößert die Stelle an welcher sich die Maus befindet und ermöglicht damit ein Hereinzoomen auf einen bestimmten Knoten ohne die
Zeichenfläche zusätzlich verschieben zu müssen.
Gephi unterstützt keine mehrfachen Kanten zwischen zwei Knoten. Zwei Knoten
können entweder mit einer ungerichteten Kante, einer gerichteten Kante oder zwei gerichteten Kanten in entgegengesetzten Richtungen verbunden sein. Knoten und Kanten
können beliebige Attribute beinhalten. Es ist nicht möglich Knoten auszuwählen um deren Attribute anzuzeigen. Stattdessen muss hier über das Rechtsklick-Kontextmenü die
Option “Select in data laboratory” angewählt werden, um diesen Knoten dann durch
einen Wechsel in den Data Laboratory-Modus zu betrachten. Diese Funktion ist bei
Kanten nicht verfügbar.
Gephi unterstützt eine Vielzahl von Layoutalgorithmen darunter zB. ForceAtlas, Fruchterman Reingold und Yifan Hu. Nachdem ein Algorithmus ausgewählt wurde, kann dieser über diverse Attribute konfiguriert werden. Algorithmen welche selbständig konvergieren oder nur einen Schritt benötigen beenden sich selbstständig. Algorithmen
wie Fruchterman Reingold müssen händisch abgebrochen werden, sobald der Graph
genügend ausgerichtet ist. Gephi unterstützt ebenso die Erstellung von Filtern um [TODO: #filter#]
2.2.1 Positive Punkte
• Erweiterbar durch Plugins
2.2.2 Negative Punkte
• Multikanten werden nicht unterstützt
• Einfaches Betrachten der Attribute von Elementen nicht möglich
• Irreführendes Scrollverhalten
5
2 Werkzeuge
2.3 EVT ZEST
2.4 GraphInsight
GraphInsighterlaubt es folgende Dateien zu öffnen: Pajek Network .net, Dimacs, CNF
Variable Interaction Graph und CNF Variable Resolution Graph. [TODO: #export dateien#]. hat 3D Darstellung. Interaktion mit Graphen in 3 Teile geteilt Database zeigt
Knoten an, keine Kanten, id und attribut, bei auswahl weitere eigentschaften Visualization graphlayout algorithmen, diverse vorhanden, koennen nicht abgebrochen oder konfiguriert werden, 2D und 3D, einfache Einstellungen zur Anzeige, Groesse von Knoten,
Farbe in abhaenigigkeit von vorgebenen Features, Edges dicke, farbe in abhaengigkeit
von vorgegebenen Features, directed, undirected, labels in abhaengigkeit vom Degree,
font size, Statistics Anzeigen diverser Statistiken zum Graph
Auswählen von Knoten moeglich, von Kanten nicht, keine multikanten, keine selfloops, kein expliziter 2D modus, verschieben der Zeichenflaeche schneller als mausbewegung, zoomen mit mausrad bezug auf die Mitte der Zeichenflaeche, verschieben mit
Strg+mausklick, verschieben von Knoten nicht moeglich
2.4.1 Positive Aspekte
• 3D-Darstellung von Graphen
2.4.2 Negative Aspekte
• Unübliches und nicht intuitives Zoomverhalten
• Nicht intuites Verhalten beim Verschieben des Graphen sobald die Anzeigeränder
erreicht werden
• Layout-Algorithmen können nicht konfiguriert werden
• Layout-Algorithmen können nicht abgebrochen werden
2.5 Cytoscape
[6] drei bereiche: Miniaturdarstellung, zeigt an wo man ist, kann verändert werden Tabellarische Daten, Tabelle beinhaltet sämtliche vorhandene Attribute, Spalten koennen hinzugefuegt/entfernt werden, Zugriff auf Knoten/Kanten/Network Control Panel, Wechsel
zwischen verschiedenen Graphen Vizmapper, voller zugriff auf Farben formen und aussehen von Knoten und Kanten Filters, mehrere Filter moeglich funktionieren auf attribute,
und und oder verknuepfung vorhanden, keine eigenschaften wie degree
6
2.6 JUNG
Zoom geht ueber die Mitte, mausrad irritierend rechte maustaste wobei gleichzeitig
ein kontextmenu geoeffnet wird Rechtsklick menu, erstellen von Elementen, auswaehlen
von bestimmten elementen, selektieren von Knoten und Kanten moeglich, multikanten
werden unterstuetzt, keine Hervorhebung von Knoten und Kanten
Kann Gruppieren/Verschmelzen von Knoten
Viele Layoutalgorithmen, kompliziert ueber Menu erreichbar, schwierig zu konfigurieren, keine konvergierenden Layout wie Fruchterman Reingold
2.6 JUNG
[5] Im Gegensatz zu den anderen Werkzeugen ist das “Java Universal Network/Graph
Framework”keine eigenständige Software sondern ist lediglich eine Bibliothek welche das
zeichnen von interaktiven Graphen unter Java unterstützt.
Multikanten werden unterstützt viele verschiedene Algorithmen
2.7 GraphViz
ist kein interaktives Tool
7
3 Anforderungen
Bei näherer Betrachtung der verschiedenen Werkzeuge fällt auf, dass die Visualisierung
von Graphen und deren Manipulation in vielen Fällen zufriedenstellend gelöst wurde.
Jedoch bietet keines der Werkzeuge sinnvolle Explorationsmöglichkeiten jenseits einer
Filterfunktion. Hieraus ergeben sich einerseits Anforderungen an eine erfolgreiche Visualisation, sowie an mögliche Ansätze zur sinnvollen Exploration eines Graphen. Diese
Anforderungen werden im Folgenden beschrieben.
3.1 Ausblenden von Elementen anhand von Filterregeln
Es hat sich als hilfreich erwiesen Elemente auszublenden, falls diese für die aktuelle
Analyse nicht benötigt werden. Die Filter sollten nach Möglichkeit flexibel konfigurierbar
sein und Zugriff auf diverse Eigenschaften bieten. Es sollte unterschieden werden, ob ein
Filter ausschließlich auf Knoten beziehungsweise Kanten angewendet werden kann oder
auf sämtliche Elemente anwendbar ist. Es sollte die Möglichkeit gegeben werden auf
Datenbankattribute wie zum Beispiel die ID des Objekts zuzugreifen, sowie auf Attribute
des Elements. Darüber hinaus kann es hilfreich sein Filter anhand von berechneten
Werten, zum Beispiel der Grad eines Knotens, zu erstellen.
3.2 Darstellung in Abhängigkeit von Typ oder
Eigenschaften
Ein weiterer Ansatz um eine schnelle Erfassung des Graphen zu ermöglichen, ist es
Knoten und Kanten abhängig von Typ oder Attributen verschieden darzustellen. Bei
Knoten bezieht sich dies auf Farbe, Form, Größe und ob in der Visualisierung Attribute
dargestellt werden. Bei Kanten hingegen die Farbe und Linienart. [TODO: #Bild von
verschieden gefärbten Knoten#]
3.3 Schrittweise Exploration
Da bei Analysen häufig ein Knoten mit besonderen Eigenschaften als Einstiegspunkt
gewählt wird, ist es nicht nötig den kompletten Graphen zu Laden. Stattdessen wird
9
3 Anforderungen
lediglich ein Knoten, beziehungsweise eine kleine Menge an Knoten, geladen. Diese Knoten können anschließend selektiert und bei Bedarf expandiert werden. Hierbei werden
alle Nachbarknoten nachgeladen und dargestellt. Alternativ sollte es möglich sein eine Teilauswahl zu treffen, und nur Nachbarknoten darstellen, welche zum Beispiel ein
bestimmte Attribute besitzen. Dies kann mit den neu dargestellten Knoten wiederholt
werden. [TODO: #letzter Satz doof#] [TODO: #filtern nach expandieren?#]
3.4 Entladen, Verbergen oder Löschen von Elementen
Eine weitere Vereinfachung des Graphen stellt das nachträgliche “entfernen” von Knoten dar. Dies kann auf verschiedene Arten geschehen. In der einfachsten Variante werden
Elemente verborgen. Diese können hierbei entladen werden, so dass sie beim nächsten Expandieren der Knoten wieder erscheinen. Alternativ können sie graphisch versteckt werden und werden durch Benutzeraktionen nicht nochmals angezeigt. Als dritte Möglichkeit
bietet sich ein dauerhaftes Löschen aus der Datenbank an, so dass diese Elemente auch
bei erneutem Laden der Datenbank nicht wieder erscheinen.
3.5 Verschmelzen von Teilgraphen
Als Alternative zum Ausblenden von Knoten bietet es sich an, mehrere Knoten zu einem
einzigen zu verschmelzen. Nachdem mindestens zwei Knoten ausgewählt wurden, werden
sämtliche Kanten, welche sich zwischen den zu verschmelzenden Knoten befinden aus
der Darstellung entfernt. Ebenso werden die Knoten durch einen einzigen ersetzt. Dieser
besitzt alle Kanten welche den Teilgraphen mit dem Rest verbinden. Dies erhöht die
Übersichtlichkeit, da Knoten- und Kantenanzahl reduziert werden. Ebenso ist es sinnvoll
mehrere parallel verlaufende Kanten verschmelzen zu können. [TODO: #Bild#]
3.6 Zoom und Miniaturdarstellung
Um eine Gesamtübersicht des Graphen zu ermöglichen sollte das Visualisierungsprogramm Zoom unterstützen. Um die Übersicht auch in hohen Zoomstufen zu gewährleisten,
bietet es sich an eine kleine Übersichtskarte einzublenden, welche den Teilausschnitt anzeigt. [TODO: #rephrase#]. [TODO: #Bild?#]
3.7 Darstellung von Daten in Elementvisualisierungen
Um eine schnelle Übersicht über bestimmte Elemente zu erhalten sollte es möglich sein
Daten immerhalb des Graphen darzustellen. [TODO: #bild#] [TODO: #genauer#]
10
3.8 Hervorhebung von Elementen
3.8 Hervorhebung von Elementen
Um die Relevanz eines Elements zu bewerten kann es nötig sein die Nachbarelemente zu
betrachten. Da diese in hochgradig vernetzten Graphen leicht übersehen werden können,
hilft es diese bei Interaktion hervorzuheben. Bei Knoten bietet es sich an sämtliche
Kanten sowie Nachbarknoten hervorzuheben. Bei Kanten hingegen die Kante selbst und
deren Quell- und Zielknoten. Die Hervorhebung kann entweder durch Veränderung der
betreffenden Knoten, zum Beispiel durch Ändern der Farbe, oder durch Ausblenden aller
nichtbeteiligten Elemente erfolgen.
3.9 Statistiken
[TODO: #bild#]
11
4 Implementierung eines Prototypen
4.1 Menu
Das Menü beinhaltet nur zwei Elemente. Einerseits “Close” was die Applikation beendet und andererseits “Load Database” womit eine Datenbank geladen werden kann.
Nach einem Klick öffnet sich ein weiteres Fenster in welchem man das Verzeichnis, in
welchem sich die Datenbank befinden, auswählen kann. Ebenso kann die Datenbankart ausgewählt werden. Der Prototyp nutzt “Tinkerpop Blueprints” als Abstraktionsebene, folglich können verschiedene Datenbanken als Quelle verwendet werden. In
der Dropdown-Liste werden alle im Classpath verfügbaren Implementationen angezeigt.
Nach einem Klick auf “next” können im nächsten Schritt gesetzt werden um nur Teile
der Datenbank zu laden. Dieses Filtersystem ist eine vereinfachte Variante der Filter
4.5, es fehlt lediglich der letzte Teil. [TODO: #anders#]. Es werden lediglich Knoten
geladen, auf welche diese Filter zutreffen. Kanten werden nicht betrachtet. Alternativ
besteht die Möglichkeit die komplette Datenbank zu Laden. Hierfür muss der Haken bei
“Load entire database” gesetzt sein.
4.1.1 Open Database
4.2 Zeichenfläche
Das Zentrum der Zeichenfläche wird durch ein Kreuz markiert. Knoten können auf dieser
Fläche beliebig platziert werden.
13
4 Implementierung eines Prototypen
4.2.1 Knoten
4.2.2 Kanten
4.2.3 Interaktion
Auswahl von Kanten und Knoten
verschieben von Kanten und Knoten
Zoom
Verschieben der Zeichenfläche
4.3 Schaltflächen
Zur Manipulation des Graphen gibt es mehrere Schaltflächen
4.4 Layout Algorithmen
Abbildung 4.1: Bild des Layouting-Bereichs.
Der Prototyp besitzt die Möglichkeit Graphen anzuordnen. Im Layouting-Bereich gibt
es diverse Einstellungsmöglichkeiten um die anzuwendenden Layoutalgorithmen zu konfigurieren. Zuerst wird der entsprechende Algorithmus über die Dropdown-Liste ausgewählt. Die verfügbaren Algorithmen werden bei Programmstart dynamisch ermittelt.
14
4.5 Filter
Dazu wird nach sämtlichen Klassen, welche das Interface net.myref.sa.graphgui.layout.Layout
implementieren, gesucht. Um den Suchaufwand im gesamten Classpath zu minimieren
werden diese Klassen ausschließlich im Package net.myref.sa.graphgui.layout gesucht. Dies ermöglicht dem Benutzer den Prototyp mit Layoutalgorithmen zu erweitern,
ohne den vorhandenen Code verändern zu müssen. [TODO: #Reflections weiter beschreiben?#]
Nachdem der gewünschte Algorithmus ausgewählt wurde, besteht die Möglichkeit Einstellungen über Schieberegler vorzunehmen. Der erste Schieberegler “Minimum Iteration Time (ms)” bestimmt welche Zeit ein Iterationsschritt des Algorithmus mindestens
benötigt. Dies ist sinnvoll falls man einzelne Schritte mitverfolgen möchte. Ist dies nicht
gewünscht kann der Regler auf 0 gestellt werden. Der Schieberegler “Number of Iterations” bestimmt wieviele Schritte abgelaufen werden sollen bevor automatisch abgebrochen wird. Der letzte Schieberegler “GUI Update Ratio” regelt wie oft die grafische Darstellung aktualisiert wird. 25 % bedeutet beispielsweise das innerhalb von 4
Iterationsschritten nur einmal die grafische Darstellung aktualisiert wird. Wird diese
Einstellung auf 0 % gesetzt, wird die Darstellung nur beim Beenden beziehungsweise
beim Abbrechen angepasst. Wird ein Algorithmus ausgewählt welcher nur einen Schritt
benötigt um zum Endergebnis zu gelangen, so sind diese Schieberegler deaktiviert.
Darunter befindet sich eine Tabelle in welcher die [TODO: #describe properties#]
Die letzten zwei Elemente sind Schaltflächen um den Algorithmus zu starten beziehungsweise diesen abzubrechen sobald er läuft. Der Fortschritt wird hierbei über eine
Fortschrittsbalken, welche sich oberhalb der Schaltflächen befindet, angezeigt.
4.5 Filter
Das Filterbereich besteht aus zwei Elementen. Zum Einen aus einem Textfeld, in welches
die Filter eingegeben werden könnenund zum Anderen aus einer Schaltfläche, mit der
die Filter neu eingelesen werden können. Filter haben einen festen Aufbau. Zuerst wird
der Typ angegeben, welcher angibt worauf sich der Filter bezieht.
nodes beschränkt diesen Filter auf Knoten
edges beschränkt diesen Filter auf Kanten
all wendet den Filter auf sämtliche Elemente an
Als nächstes kommt ein bool’scher Ausdruck umschlossen von runden Klammern.
[TODO: #beschreibung ausdruck#]
Als letztes Element, abgetrennt durch einen Punkt, folgt entweder eine Aktion oder eine Eigenschaftszuweisung. Aktionen bestehen aus einem Namen und runden Klammern.
Mögliche Aktionen sind:
hide Elemente, auf die dieser Filter zutrifft werden ausgeblendet.
15
4 Implementierung eines Prototypen
show Elemente, auf die dieser Filter zutrifft werden angezeigt.
expand Knoten, auf die dieser Filter zutrifft werden expandiert. Diese Aktion darf nur
mit dem Typ “nodes” angewendet werden.
select Elemente, auf die dieser Filter zutrifft werden zur Auswahl hinzugefügt.
unload Elemente, auf die dieser Filter zutrifft werden entladen.
Eigenschaftszuweisungen beginnen mit dem Namen der Eigenschaft gefolgt von einem
Gleichheitszeichen und dem neuen Wert der Eigenschaft. Mögliche Eigenschaften sind:
visible Diese Eigenschaft steuert die Sichtbarkeit der Elemente. Als Werte können true
oder false angegeben werden.
drawable Diese Eigenschaft bestimmt in welcher Art Knoten und Kanten gezeichnet
werden Bei Knoten können CircleDrawable und RectangleDrawable angegeben
werden. Bei Kanten gibt es nur EdgeDrawable
fill Diese Eigenschaft bestimmt die Hintergrundfarbe des Elements. Mögliche Werte sind
alle statischen Felder vom Typ Color der Klasse javafx.scene.paint.Color.
Groß- und Kleinschreibung wird hierbei nicht unterschieden zum Beispiel “GREEN”,
“BluE”, “hotPink”.
stroke Diese Eigenschaft bestimmt die Umrandungsfarbe des Elements. Es gelten die
gleichen Einschränkungen, wie bei der Hintergrundfarbe.
4.6 Properties
Im Properties-Bereich werden Attribute des Ausgewählten Elements angezeigt. Als erstes wird die ID des entsprechenden Datenbankobjekts angezeigt. Darauffolgend kommen sämtliche Attribute die an diesem Element gesetzt wurden. Abschließend folgt bei
Knoten die Angabe ihres Grades, welcher sich aus der Summe der eingehenden und
abgehenden Kanten bildet. [TODO: #Mehr Text?#]
4.7 Connected Nodes
Der letzte Bereich ist die “Connected NodesBaumansicht. Sobald ein Knoten angewählt
wurde, wird diese Ansicht mit Daten der benachbarten aber noch nicht geladenen Knoten
befüllt. Versteckte sowie bereits angezeigt Knoten werden hierbei ignoriert. Der Wurzelknoten beinhaltet die Information welcher Knoten ausgewählt ist, und in Klammern
dahinter wieviele benachbarte Knoten noch nicht geladen sind. Die nächste Ebene beinhaltet sämtliche Schlüsselwerte der Attribute von Nachbarknoten. In Klammern wird
16
4.7 Connected Nodes
Abbildung 4.2: Bild des Properties-Bereichs.
Abbildung 4.3: Bild des Connected Nodes-Bereichs.
die Anzahl an Knoten, welche dieses Attribut besitzen angezeigt. Die folgende Ebene
schlüsselt auf gleiche Weise die Werte des Attributs auf. Auf der letzten Ebene werden
die entsprechenden Knoten angezeigt. Durch Rechtsklick auf ein beliebiges Element im
Baum öffnet sich ein Kontextmenü über welches man durch Auswahl von “load all”,
alle Knoten Laden kann welche sich unterhalb dieses Elements befinden. Alternativ hat
17
4 Implementierung eines Prototypen
man die Möglichkeit, die ersten 5, 20, 50 oder 100 Knoten zu Laden. Dies ermöglicht
eine Schrittweise Exploration des Graphen und ein vorzeitiges setzen von Filtern um neu
hinzukommende Elemente auszublenden. /todomehr text?
18
5 Vergleich
19
GU
ES
Ge S
ph
i
EV
T
ZE
Gr
ST
ap
hIn
Cy
s
tos ight
cap
JU
NG e
Gr
ap
h
SA Viz
Gr
ap
hG
ui
5 Vergleich
Neo4J Unterstützung
3
Tinkerpop Unterstützung
3
3
Multikanten
Ausblenden von Elementen anhand von
Filterregeln
3
3
Darstellung in Abhängigkeit von Typ oder
Eigenschaften
3
3
3
3
3
3
3
3
3
3
Schrittweise Exploration
Entladen, Verbergen oder Löschen von
Elementen
3
3
3
3
3
Zoom
Daten
Hervorhebung von Elementen
3
3
3
3
Verschmelzen von Teilgraphen
in
3
3
3
3
3
3
Element3
3
3
Tabelle 5.1: [TODO: #table caption#]
20
3
3
Miniaturdarstellung
Darstellung von
visualisierungen
3
3
6 Schluss
21
Literaturverzeichnis
[1] E. Adar and Miryung Kim. Softguess: Visualization and exploration of code clones in
context. In Software Engineering, 2007. ICSE 2007. 29th International Conference
on, pages 762–766, 2007.
[2] Eytan Adar. Guess: A language and interface for graph exploration. In Proceedings
of the SIGCHI Conference on Human Factors in Computing Systems, CHI ’06, pages
791–800, New York, NY, USA, 2006. ACM.
[3] Mathieu Bastian, Sebastien Heymann, and Mathieu Jacomy. Gephi: An open source
software for exploring and manipulating networks, 2009.
[4] Thomas M. J. Fruchterman and Edward M. Reingold. Graph drawing by forcedirected placement. Software: Practice and Experience, 21(11):1129–1164, 1991.
[5] J. O’Madadhain, D. Fisher, S. White, and Y. Boey. The JUNG (Java Universal
Network/Graph) Framework. Technical report, UCI-ICS, October 2003.
[6] Paul Shannon, Andrew Markiel, Owen Ozier, Nitin S Baliga, Jonathan T Wang,
Daniel Ramage, Nada Amin, Benno Schwikowski, and Trey Ideker. Cytoscape: a
software environment for integrated models of biomolecular interaction networks.
Genome Res, 13(11):2498–504, Nov 2003. automatic medline import.
23
Herunterladen