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