Definition komplexer Editieroperationen 4. Dezemer 2012 169
Üerlick Metamodellierung und Graphtransformation Was unterscheidet die Syntaxdefinition mit Graphgrammatiken von der üer Metamodelle? Wie kann man eide Welten gewinnringend vereinen? Wie kann man mit Hilfe von Graphtransformation komplexe Editieroperationen spezifizieren? Welche Editieroperationen werden enötigt? Wie können wir die Qualitätssicherung von visuellen Modellen unterstützen? Modellmetriken, Model-Smells Modell-Refactoring Taentzer Visuelle Sprachen 170
Sprachentwicklungsprozess Anforderungserfassung: Informell Sprachdesign Mit Metamodellierung Graphgrammatiken hilfreich Editordesign Grundeditor durch Metamodell Optimierung durch Graphtransformation Requirements elicitation Language elements and relations Visual alphaet Alphaet operations Language design Editor design constraints in natural language and/or patterns OCL constraints Complex edit operations Taentzer Visuelle Sprachen 171
Astrakte Syntaxdefinition von einfachen Aktivitätendiagrammen Metastrukturen/Typgraph: Taentzer Visuelle Sprachen 172
Wohlgeformtheitsregeln 1. Genau eine Start- und eine Endaktivität. context diagram inv: activities-> select( oclistypeof(startactivity)) -> size() = 1 and activities-> select( oclistypeof(endactivity)) -> size() = 1 2. Genaue Anzahl von einkommenden und ausgehenden Transitionen pro A.typ. context Next inv: not (egin.oclistypeof(endactivity)) egin.oclistypeof(startactivity) egin.oclistypeof(simpleactivity) egin.oclistypeof(decisionactivity) egin.oclistypeof(mergeactivity) not (end.oclistypeof(startactivity)) end.oclistypeof(endactivity) end.oclistypeof(simpleactivity) end.oclistypeof(decisionactivity) end.oclistypeof(mergeactivity) 3. Nur von Decision ausgehende Transitionen haen Texte. context Next inv: egin.oclistypeof(decisionactivity) implies inscr <> Taentzer Visuelle Sprachen 173
Beispiele: Graph Constraints (1) :StartActivity :StartActivity :StartActivity :EndActivity :EndActivity :EndActivity (2a) 1:StartActivity 1:StartActivity 1:StartActivity 1:StartActivity e (2) 1:Decision 1:Decision e 1:Decision Taentzer Visuelle Sprachen 174 e 1:Decision e
Beispiele: Graph Constraints (4) 1 1 2:Decision 2:Decision inscr<> 1 Inscr= 1 :StartActivity 1 :SimpleActivity 1 :Merge (5) e 1:SimpleActivity 1:SimpleActivity 1:SimpleActivity e 1:SimpleActivity e Taentzer Visuelle Sprachen 175
Graphgrammatik für Aktivitätendiagramme Startgraph: Regeln: Taentzer Visuelle Sprachen 176
Alphaetoperationen Für jedes knotenartige Symol: :StartActivity :Decision :EndActivity Für jedes kantenartige Symol: :Merge 1:Activity 1:Activity 2:Activity 2:Activity e Für jedes Attriut: 1 1 Inscr=x 1:SimpleActivity 1:SimpleActivity name=x Taentzer Visuelle Sprachen 177
Komplexe Editieroperationen Editierschritte können durch Graphtransformationsregeln spezifiziert werden. Graphgrammatikregeln geen Hinweise auf sinnvolle Editieroperationen. Einfachere Editieroperationen lassen flexiles Editieren zu, erlauen aer auch inkonsistente Diagramme. QuickFix- Operationen wären sinnvoll, um wieder zu konsistenten Diagrammen zu gelangen. Komplexere Editieroperationen können sinnvoll sein, um größere Änderungen (z.b. für Refactoring) in einem Schritt durchzuführen. Taentzer Visuelle Sprachen 178
Definition von Editoroperationen Definition einer Editiergrammatik GG E Die Menge der Syntaxregeln ist in der Menge der Editierregeln enthalten, d.h. P C P E Die Gleichheit der erzeugten Sprachen ist zu zeigen, d.h. L(GG E ) = L(GG C ) GG E = (T C, S C, P E ) GG C = (T C, S C, P C ) Taentzer Visuelle Sprachen 179
Syntaxgesteuertes Editieren von Aktivitätendiagrammen Einfügen: Einfügen von einfachen Aktivitäten nach der Startaktivität Einfügen von einfachen Aktivitäten nach einfachen Einfügen von Entscheidungsstrukturen Verändern: Umenennen von Aktivitäten und Bedingungen Löschen: inverse Einfügeregeln mit weniger Parametern Taentzer Visuelle Sprachen 180
Sprachgleichheit Nur syntaxgesteuertes Editieren: Grammatikregeln, inverse Regeln, renameactivity, renamecondition L(GG C ) L(GG E ):da P C P E L(GG E ) L(GG C ): Für jede Transformation mit GG E git es eine mit GG C. Einfügen: Graphgrammatikregeln für das Einfügen von Symolen Verändern: renameactivity ist nur anwendar, wenn vorher eine Aktivität erzeugt wurde. moveactivity verändert nur das Layout. Löschen: deletesimpleactivity kann nur angewendet werden, wenn vorher insertsequentialactivity angewendet wurde. Das Resultat ist wie vor dieser Sequenz. ähnlich für Decision und SimpleActivityAfterStart Taentzer Visuelle Sprachen 181
Weitere Editieroperationen Komplexe Operationen: Zusammengesetzt aus den Grundoperationen Verändert die editierte Sprache nicht Kürzt Editierprozesse a Implementiert Modellierungskonventionen QuickFix-Operationen: Stellt korrekte Syntax her Können aus den Grammatikregeln hergeleitet werden: Einettung von (kominierten) Grundregeln in Syntaxregeln Bestimmung aller möglichen Restregeln Diese spezifizieren Quick- Fixes. Taentzer Visuelle Sprachen 182
Beispiel: Komplexe Editieroperation Komination der Regeln insertsimpleactivityafterstart und insertdecision Taentzer Visuelle Sprachen 183
Beispiel: Quick-Fix-Operation Nach dem Einfügen einer simplen Aktivität muss diese in den vorhandenen Kontrollfluss integriert werden. Taentzer Visuelle Sprachen 184
Nach Mohagheghi et.al.: Modellqualität Korrektheit: Die richtigen Elemente und Relationen Die richtigen Aussagen üer die Domäne Keine Regel- und Konventionsverletzungen Vollständigkeit: Alle relevanten und notwendigen Informationen Detailliert genug für den Modellierungszweck Konsistenz: Keine Widersprüchlichkeiten Verständlichkeit: für die intendierten Benutzer verständlich Beschränktheit: Relevante Informationen auf der richtige Astraktionseene Veränderarkeit: Schnelle und kontinuierliche Modelländerungen werden ermöglicht. Taentzer Visuelle Sprachen 185
Modellqualitätssicherung Modellmetriken: Modellmetriken messen quantifizierare Modellaspekte. Modellierungskonventionen: Standardisierung der Modelle Best Practices Vermeidung von Fehlern Model Smells: Model Smells zeigen verdächtige Modellteile auf. Modell-Refactoring: Refactorings können Model Smells eliminieren (aer auch neue erzeugen). Taentzer Visuelle Sprachen 186
Beispiele für Modellmetriken Größe eines Modells: Anzahl der Modellelemente Halstead-Metrik: Anzahl der Verzweigungen im Kontrollfluss Wie komplex ist ein Aktivitätendiagramm? Hierarchietiefe ei hierarchischen Aktivitäten Anzahl der Aktivitäten in einer Aktivität Anzahl der Aktivitäten in einem Zweig Spezifikation von Modellmetriken: OCL Graph Patterns Taentzer Visuelle Sprachen 187
Genügt das Modell den Modellierungskonventionen? Namenskonventionen Z.B: Es kommt ein Ver vor. Z.B: Kleingeschrieen, CamelCase Kommentare Größe eines Diagramms Anzahl der Modellelemente Hierarchietiefe Layoutkonventionen Z.B.: Von oen nach unten oder von links nach rechts laufender Kontrollfluss spezielle Modellierungspraktiken Z.B. Bedingungen an einer Decision: Bedingung und sonst Modell Konventionenchecker Liste der Konventionsverletzungen Taentzer Visuelle Sprachen 188
Kann die Modellstruktur optimiert werden? Modell Model Smell Verdächtiges Modellmuster wird erkannt. Quick Fix Modellveresserung wird vorgeschlagen Modell-Refactoring Optimierung der Modellstruktur ohne Semantikänderung Definition von Modellmustern Modelloptimierer Liste von Warnungen Bad Model Smell + Quick Fix restrukturiertes Modell Taentzer Visuelle Sprachen 189
Beispiele: Refactoring von Aktivitätendiagrammen Vereinigen: Hat eine Entscheidung zwei gleiche Anfänge, werden diese vereinigt und hochgezogen. (Pull out) Implizite Entscheidung (Implizites Zusammenführen): Zwei aus einer Aktivität ausgehende Transitionen mit Bedingungen werden durch das Einfügen einer Entscheidungsaktivität explizit gemacht. Entscheidung ohne späteres Zusammenführen: Zwei aus einer Entscheidung ausgehende Transitionspfade werden mit einem Merge zusammengeführt. Einkapseln (Entkapseln): Modellelemente in einem Zweig werden in eine neue Aktivität gekapselt. Taentzer Visuelle Sprachen 190
Beispiel: Refactoring von Aktivitätendiagrammen Taentzer Visuelle Sprachen 191
Zusammenfassung Aus Metamodellen ageleitet: Alphaetoperationen: Grundoperationen zum Einfügen, Löschen und Verändern von Modellelementen und -relationen Aus Graphgrammatiken ageleitet: Editieroperationen zum syntaxgesteuerten Editieren Die aus einer Grammatik ageleiteten Editieroperationen verändern die durch die Grammatik definierte Sprache nicht. Weitere Editieroperationen lassen sich eenfalls durch Graphregeln spezifizieren. Komplexere Editieroperationen fassen mehrere Editierschritte zu größeren zusammen. Quick-Fix-Operationen stellen die syntaktische Konsistenz von Modellen wieder her. Taentzer Visuelle Sprachen 192