Definition von visuellen Sprachen auf der Basis von Graphtransformation 27. November 2012 146
Überblick Die Syntax textueller Sprachen wird mit einer Grammatik definiert. Geht das auch für visuelle Sprachen? Die abstrakte Syntaxstruktur eines visuellen Modells kann gut durch einen Graphen beschrieben werden. Das visuelle Alphabet wird durch einen Typgraphen definiert. Die Syntax visueller Sprachen wird mit einer Graphgrammatik definiert. Unterschiede zwischen Metamodellen und Graphgrammatiken Taentzer Visuelle Sprachen 147
Beispiel: Einfache Aktivitätsdiagramme [product not available] notify client receive order check availiability [product available] calculate price send receipt Modellelemente: Verschiedene Typen von Aktivitäten: Startaktivitäten einfache Aktivitäten Entscheidungsaktivitäten Endaktivitäten Pfeile beschreiben Kontrollfluß können Bedingungen als Annotationen haben Bedingungen: genau eine Start- und eine Endaktivität wohldefinierte Entscheidungsstrukturen Taentzer Visuelle Sprachen 148
Genereller Ansatz receive order check availiability [product not available] [product available] notify client calculate price send receipt Taentzer Visuelle Sprachen 149
Abstrakte Syntaxdefinition von einfachen Aktivitätendiagrammen Typgraph: Taentzer Visuelle Sprachen 150
Formale Grundlage: Graphen und Graphmorphismen Instanzmodelle, Alphabete, Meta-Alphabet in konkreter und abstrakter Syntax Beziehungen zwischen Modellen Verhältnis zwischen konkreten und abstrakten Syntaxstrukturen Typisierung von Instanzen Graphen getypt und attributiert gerichtete Kanten mit Identität Graphmorphismen Abbildungen von Knoten und Kanten strukturverträglich typkonform Taentzer Visuelle Sprachen 151
Definition: Graph Ein gerichteter Graph G = (V G, E G, src G, tar G ) besteht aus einer Menge V G von Knoten, E G von Kanten und Abbildungen src G, tar G : E G V G, die jeder Kante einen Quellund Zielknoten zuweisen. Attributierung von Knoten und Kanten durch weitere Abbildungen: attrv:v G Datentyp attre:e G Datentyp n3:next inscr= t end a2:sactivity n = act2 begin s:startact a:sactivity n = act1 d:decision end begin begin n1:next end begin n2:next n4:next inscr= f end a3:sactivity n = act3 Taentzer Visuelle Sprachen 152
Typgraph mit Vererbung Abstrakte und konkrete Knotentypen: keine Instanzknoten zu abstrakten Knotentypen Knotenvererbung: clan(n) ={n N path n n} Vererbung ist azyklisch. Mehrfachvererbung ist möglich. StartAct begin Next inscr: String Activity end Decision SActivity n : String EndAct Taentzer Visuelle Sprachen 153
Getypte Graphen und Graphmorphismus Wir suchen einen Graphmorphismus, d.h. eine Knoten- und eine Kantenabbildung type GN : G N TG N und type GE : G E TG E mit type GN (src(e)) clan(src(type GE (e)) und type GN (tar(e)) clan(tar(type GE (e)) Next inscr: String s:startact begin n1:next begin end a:sactivity n = act1 end begin StartAct Activity Decision n3:next inscr= t end begin d:decision end begin n2:next n4:next inscr= f end SActivity n : String a2:sactivity n = act2 a3:sactivity n = act3 EndAct Taentzer Visuelle Sprachen 154
Syntaxdefinition visueller Sprachen Definitionsansatz Instanz von Eine visuelle Sprache Instanz von Sprachelement (AS) Meta-Metamodell Instanz von Metamodell Instanz von Modell Graphtransformation Instanz von Graphsprache Instanz von Graph Taentzer Visuelle Sprachen 155
Definition der abstrakten Syntax einer visuellen Sprache visuelles Alphabet Symboltypen Relationstypen Attributtypen visueller Satz (Graphik) Symbole Relationen visuelle Sprache Typgraph T Knotentypen Kantentypen Attributtypen Instanzgraph G T Knoten Kanten Graphsprache L {G G T} Startgraph S Graphregel p = (L R) P Graphgrammatik GG=(T,S,P) Taentzer Visuelle Sprachen 156
Sprache der Aktivitätendiagramme Eigenschaften: genau eine Start- und eine Endaktivität Jede einfache Aktivität hat genau eine eingehende und eine ausgehende Transition. Die Startaktivität hat keine eingehende, die Endaktivität keine ausgehende Transition. Jede Entscheidung hat zwei Alternativen, die später wieder vereinigt werden. [product not available] notify client receive order check availiability [product available] calculate price send receipt Entscheidungen haben eine eingehende und zwei ausgehende, oder zwei eingehende und eine ausgehende Transition. Taentzer Visuelle Sprachen 157
Beispiel: eine Syntaxgrammatik Taentzer Visuelle Sprachen 158
Beispiel: Graphgrammatik Startgraph: Regeln: Taentzer Visuelle Sprachen 159
Ein Graphtransformationsschritt insertsimpleactivity afterstart( firstact ) Taentzer Visuelle Sprachen 160
Graphregel: Graphtransformation Abstrakte Typen dürfen benutzt werden. Keine abstrakten Typen für neu erzeugte Knoten. Graphtransformationsschritt: Gegeben:eine Graphregel p = (L R) und ein Ansatz m:l G Ein Graphtransformationsschritt wendet die Regel p auf Graph G mit Ansatz m an: G p,m H. Graphtransformationssequenz: G p 1,m 1 G 1 p n,m n G n = G * G n Sprache einer Graphgrammatik: LL(GG)= { G S * G } L G m p R H Taentzer Visuelle Sprachen 161
Eine Transformationssequenz Startgraph:? Taentzer Visuelle Sprachen 162
Generierung der abstrakten Syntax eines Aktivitätendiagramms Ableitungssequenz: insertsimpleactivityafterstart("receive Order"); insertsequentialactivity (receiveorder, "check availability"); insertsequentialactivity (checkavailability, "Decision"); insertdecision(decision, "product not available", "product available", "notify client", "calculate price"); insertsequentialactivity (calculateprice, "send receipt"); receiveorder, checkavailibility, decision und calculateprice sind die Namen von Activity-Knoten. Taentzer Visuelle Sprachen 163
Anwendungsbedingungen für Graphtransformationsregeln Kann man in jedem Zustand jede Regel anwenden? Kann jede Graphtransformationsregel auf jeden Instanzgraphen angewandt werden? Erste Bedingung: Es muss ein Graphmorphismus von der linken Seite der Regel L in den Instanzgraphen G gefunden werden. L p R Problem: Es soll ein Knoten gelöscht werden, an dem Kanten hängen, die in der linken Seite nicht vorkommen. G m H Lösung 1: Regel wird in diesem Fall nicht angewandt. Dies führt zu einer weiteren Anwendungsbedingung: Lösch einen Knoten nur, wenn all seine hängenden Kanten in der linken Seite aufgeführt werden. Lösung 2: Hängende Kanten werden mitgelöscht. Taentzer Visuelle Sprachen 164
Negative Anwendungsbedingungen Eine negative Anwendungsbedingung N über L ist ein Obergraph N von L. N L Ein Ansatz m: L G erfüllt N, wenn es keinen Graphmorphismus q:n G gibt, sodass die Abbildung von N nach G mit der von L nach G verträglich ist, d.h. q L = m gilt. q G m Taentzer Visuelle Sprachen 165
Bedingte Anwendungsbedingungen Eine bedingte Anwendungsbedingung P C über L besteht aus zwei Obergraphen von L. Ein Ansatz m: L G erfüllt die Anwendungsbedingung P C, wenn es für alle Graphmorphismen p: P G mit p L = m einen Graphmorphismus c: C G mit c P = p gibt. C P c p L G m Taentzer Visuelle Sprachen 166
Chomsky-Grammatiken: Grammatiken über Strings Regel A aab als (kontextfreie) Graphgrammatik Regel: Symbole als Knoten oder Kanten in L? A 1: 4: a A b 1: 2: 3: 4: Anwendung auf das Spezifizieren und Parsieren von visuellen Sprachen Theorie der Graphgrammatik als formale Sprachen- theorie für mehrdimensionale Strukturen Hierarchie von Sprachklassen und Grammatiken Entscheidbarkeits- und Komplexitätsergebnisse Parsierungsalgorithmen Taentzer Visuelle Sprachen 167
Zusammenfassung Die abstrakte Syntaxstruktur von Graphiken wird durch Graphen dargestellt. Typgraph: abstrakte Syntax des Alphabets Instanzgraph: abstrakte Syntax einer Graphik Graphgrammatiken können als eine Verallgemeinerung von Stringgrammatiken betrachtet werden. Strings als spezielle Graphen Metamodelle definieren visuelle Sprachen deklarativ, während Graphgrammatiken konstruktiv vorgehen. Ausblick: Integration beider Paradigmen in einen Ansatz zur Definition von visuellen Sprachen Taentzer Visuelle Sprachen 168