630 likes | 992 Views
Visualisierung von UML-Diagrammen. Christian M. Meyer christian.meyer@stud.tu-darmstadt.de. Visualisierung von UML-Diagrammen » Einleitung. Einleitung. Vorstellung des GoVisual -Algorithmus Artikel von Gutwenger, Jünger, Klein, Kupke, Leipert und Mutzel:.
E N D
Visualisierung von UML-Diagrammen Christian M. Meyer christian.meyer@stud.tu-darmstadt.de
Visualisierung von UML-Diagrammen » Einleitung Einleitung • Vorstellung des GoVisual-Algorithmus • Artikel von Gutwenger, Jünger, Klein, Kupke, Leipert und Mutzel: „A New Approach for Visualizing UML Class Diagrams“
Visualisierung von UML-Diagrammen » Agenda Agenda • Einleitung • Grundlagen • Motivation • Ziele • GoVisual Algorithmus • Zusammenfassung • Software und Links
Visualisierung von UML-Diagrammen » Agenda Agenda • Einleitung • Grundlagen • Motivation • Ziele • GoVisual Algorithmus • Zusammenfassung • Software und Links
Visualisierung von UML-Diagrammen » Grundlagen » Graphen Graph • Graph G = (V, E) mit • VKnotenmenge • EKantenmenge gerichteter Graph ungerichteter Graph
Visualisierung von UML-Diagrammen » Grundlagen » Graphen Einbettung, Planarität • Einbettung: Darstellung eines Graphen in der Ebene • Knoten sind Punkte • Kanten sind Verbindungslinien • Planar: Der Graph kann ohne Kreuzungen in der Ebene eingebettet werden
Visualisierung von UML-Diagrammen » Grundlagen » UML UML • UML = Unified Modeling Language • Modellierungssprache für Software • Standardisiert von der OMG (Object Management Group)
Visualisierung von UML-Diagrammen » Grundlagen » UML Entwicklung der UML 1991 Coad/Yourdan: OOA/OOD Rumbaugh: OMT 1994 Jacobsen: OOSE Booch: OOAD 1995 Unified Method 0.8 Oracle Microsoft Hewlett Packard 1996 Unified Modeling Language 0.9 Unified Modeling Language 1.0 und 1.1 1997 (von der OMG zum Standard erklärt) 2003 Unified Modeling Language 2.0
Visualisierung von UML-Diagrammen » Grundlagen » UML Warum UML? • Abstrakter als Programmiersprache • Einheitliche Beschreibungen im Projekt • Sprachenunabhängig • Verschiedene Sichten: statisch, dynamisch • Verständigung zwischen Entwicklern, Architekten, Designer, Auftraggeber,… • Dokumentation
Visualisierung von UML-Diagrammen » Grundlagen » UML Diagramme • Graphische Interpretation der Modelle: Use-Case-Diagramm Klassendiagramm Interaktionsdiagramm Zustandsdiagramm Sequenzdiagramm Deploymentdiagramm Komponentendiagramm Timingdiagramm
Visualisierung von UML-Diagrammen » Grundlagen » UML Klassendiagramm • Beliebtestes Diagramm • Statische Struktur der Software • Klassen • Beziehungen
Visualisierung von UML-Diagrammen » Grundlagen » UML Klassen • Datentyp • Attribute und Methoden Klassenname ClassName Attribute Methoden Modifier – private # protected + public
Visualisierung von UML-Diagrammen » Grundlagen » UML Beziehungen (1) • Generalisierung • Attribute und Methoden werden „geerbt“ Oberklasse SuperClass Generalisierung, Vererbung SubClass Subklasse,Kindklasse
Visualisierung von UML-Diagrammen » Grundlagen » UML Class1 Class2 Class1 Class2 Class1 Class3 Beziehungen (2) • Assoziation • Beziehung zwischen 2 oder mehr Typen • Navigierbarkeit, Multiplizität • Einfache Assoziation: • Aggregation: • Komposition:
Visualisierung von UML-Diagrammen » Grundlagen » UML Klassendiagramm als Graph • Generalisierungen sind gerichtet • Assoziationsrichtung für automatische Layoutalgorithmen unwichtig • Daher: semi-gerichteter GraphG = (V, A, E) mit • V Klassenmenge • A Gerichtete Generalisierungskanten • E Ungerichtete Assoziationskanten
Visualisierung von UML-Diagrammen » Agenda Agenda • Einleitung • Grundlagen • Motivation • Ziele • GoVisual Algorithmus • Zusammenfassung • Software und Links
Visualisierung von UML-Diagrammen » Motivation Motivation (1) • UML-Diagramme sind groß • Layout von Hand ist aufwändig • Automatisches Layout für MDA notwendig • Viele Tools für automatisches Graphenlayout • Anbindung an führende Case-Tools: • Rational Rose • Together • Microsoft Visio
Visualisierung von UML-Diagrammen » Motivation Motivation (2) • Aber: Tools haben viele Nachteile • Hierarchische Vererbungsstrukturenwerden nicht behandelt • Übersicht ist oft unzureichend • Ästhetische Mängel • Spezielle Algorithmen für UML-Diagramme sinnvoll
Visualisierung von UML-Diagrammen » Probleme Probleme (1) Viele Kreuzungen Unnötige Knicke Nicht orthogonal Einzelne Vererbungspfeile Überlappung Assoziation-Klasse
Visualisierung von UML-Diagrammen » Probleme Probleme (2) Richtung der Vererbungspfeile Fehlende Hierarchie
Visualisierung von UML-Diagrammen » Probleme Probleme (3) Verschachtelte Hierarchien
Visualisierung von UML-Diagrammen » Ziele Ziele • Kriterien für ästhetische UML-Diagramme: • Minimale Kreuzungen • Minimale Knicke • Einheitliche Richtung in Hierarchien • Keine verschachtelten Hierarchien • Beziehungen je nach Semantik betrachten • Orthogonales Layout • Kombinierte Vererbungspfeile • Gut lesbare Kantenbeschriftungen
Visualisierung von UML-Diagrammen » Agenda Agenda • Einleitung • Grundlagen • Motivation • Ziele • GoVisual Algorithmus • Zusammenfassung • Software und Links
Visualisierung von UML-Diagrammen » Algorithmus » Übersicht Algorithmus
Visualisierung von UML-Diagrammen » Algorithmus » Vorberechnung v v w1 w2 w3 w1 w2 w3 Vorberechnung (1) • Generalisierungen sollen verbunden werden • Dadurch ergeben sich u.U. neue Kreuzungen • Bleiben bei Planarisierung unerkannt
Visualisierung von UML-Diagrammen » Algorithmus » Vorberechnung v v dv w1 w2 w3 w1 w2 w3 Vorberechnung (2) • Lösung: Zwischenknoten einfügen
Visualisierung von UML-Diagrammen » Algorithmus » Vorberechnung v dv w1 w2 w3 Vorberechnung (3) O(|V|)
Visualisierung von UML-Diagrammen » Algorithmus » Übersicht Algorithmus
Visualisierung von UML-Diagrammen » Algorithmus » Hierarchien Hierarchie • Generalisierungen bilden Hierarchien • Zusammenhängende Subgraphen von(V, A) • Tiefensuche,O(|V|+|A|)
Visualisierung von UML-Diagrammen » Algorithmus » Übersicht Algorithmus
Visualisierung von UML-Diagrammen » Algorithmus » Gleichrichten und Planarisieren SuperClass1 SuperClass2 Class1 Class3 SubClass Class2 Gleichgerichtete Graphen • Alle Kanten zeigen in die gleiche Richtung
Visualisierung von UML-Diagrammen » Algorithmus » Gleichrichten und Planarisieren SuperClass1 SuperClass2 Class1 SuperClass1 SuperClass2 Class3 SubClass Class3 Class1 Class2 Class2 SubClass Gleichgerichtete Graphen • Alle Kanten zeigen in die gleiche Richtung
Visualisierung von UML-Diagrammen » Algorithmus » Gleichrichten und Planarisieren Hierarchien gleichrichten • Hierarchien werden gleichgerichtet • bessere Übersicht • Hierarchiensofort erkennbar
Visualisierung von UML-Diagrammen » Algorithmus » Gleichrichten und Planarisieren Planar, aber nicht gleichgerichtet planar Planarisieren • Planare gleichgerichtete Einbettung finden • Aber: Nicht immer möglich
Visualisierung von UML-Diagrammen » Algorithmus » Gleichrichten und Planarisieren Algorithmen • G ist gleichgerichtet planar und G hat genau eine Senke: • Algorithmus vonBertolazzi (1998)O(|VH|), Algorithmus gibt Einbettung zurück • Mehrere Senken: Supersenke verwenden • sonst: NP-schwer, Kreuzungen durch Dummy-Knoten ersetzen, Algorithmen von Sugiyama oder Eades/Kelly,…
Visualisierung von UML-Diagrammen » Algorithmus » Übersicht Algorithmus
Visualisierung von UML-Diagrammen » Algorithmus » ST-Graph ST-Graph (1) • Quelle: Knoten s, nur ausgehende Kanten • Senke: Knoten t, nur eingehende Kanten • ST-Graph: Graph mit genau einer Quelle s, einer Senke t und einer Kante (s, t) s t
Visualisierung von UML-Diagrammen » Algorithmus » ST-Graph SuperClass1 SubClass1 SubClass1 SuperClass2 SubClass2 SubClass2 Class ST-Graph (2) • Graph mit mehreren Quellen/Senken kann in ST-Graph umgewandelt werden: Sink SuperClass1 SuperClass2 Class Source
Visualisierung von UML-Diagrammen » Algorithmus » ST-Graph Sink SubClass1 SubClass2 SuperClass1 SuperClass2 Class Source ST-Graph (3) O(|V|)
Visualisierung von UML-Diagrammen » Algorithmus » Übersicht Algorithmus
Visualisierung von UML-Diagrammen » Algorithmus » Assoziationen einfügen Component Leaf Leaf Composite Composite Source Assoziationen einfügen • Assoziationen innerhalb der Hierarchie H einfügen, Beispiel Composite-Pattern: • Kantenmenge:{(u, v) E | u VH v VH} • Algorithmen von Battista oder Gutwenger Component Source
Visualisierung von UML-Diagrammen » Algorithmus » Übersicht Algorithmus
Visualisierung von UML-Diagrammen » Algorithmus » Cluster-Graph erstellen v5 v1 v3 v4 v6 v2 v3 v6 v5 v4 v2 v1 c3 c1 c4 c2 Cluster-Graph • Cluster-Graph: C = (G, T) mit G = (V, E) Graph und T = (VT, ET) gerichteter Baum • Cluster: C(v) = (G(v), T(v)) • T definiert Inklusionsrelation auf G G T
Visualisierung von UML-Diagrammen » Algorithmus » Cluster-Graph erstellen Clusterhierarchien • Jede VererbungshierarchieH bildet Cluster • Gleichgerichtet planare Einbettungin PH vorhanden • Gesucht: Planare Einbettung des gesamten Graphen, Cluster sollen beachtet werden
Visualisierung von UML-Diagrammen » Algorithmus » Cluster-Graph erstellen v1 v4 v2 v3 v7 v6 v5 Facetten • Facette: Flächen, die von Kanten eingeschlossen werden innere Facette äußere Facette
Visualisierung von UML-Diagrammen » Algorithmus » Cluster-Graph erstellen v1 v4 v2 v3 c v5 Wheel-Graph • Wheel-Graph: Äußere Knoten bilden einen Kreis, Zentrum c ist mit allen äußeren Knoten verbunden.
Visualisierung von UML-Diagrammen » Algorithmus » Cluster-Graph erstellen c1 v1 v4 v2 v3 c v5 v3 v4 v5 v2 v1 c2 Wheel-Graph bilden • Knoten der äußeren Facette von PH bilden den Kreis des Wheel-Graphen
Visualisierung von UML-Diagrammen » Algorithmus » Cluster-Graph erstellen u3 v3 v3 u3 c2 v1 v4 v2 c1 v5 u1 u2 v1 v4 v2 c1 v5 u2 u1 c2 Planarisierung • Assoziationen zu anderen Wheel-Graphen • Planare Einbettung eines Subgraphen finden • Außenknoten des Wheel-Graphen verändert
Visualisierung von UML-Diagrammen » Algorithmus » Cluster-Graph erstellen v1 v1 v2 v2 v3 v5 v3 v3 v4 v5 v1 v4 v2 v3 v2 c v1 c v4 v4 v5 v5 Cluster-Eingänge • Wheel-Graph gibt Eingangsreihenfolge vor: