Graphgrammatiken Story Driven Modelling Storydiagramm Codegenerierung im Fujaba Wenfeng Ruan 1 Graphgrammatiken • Was ist Graphgrammatik? • Was können wir mit Graphgrammatik machen? • Einfache Beispiele Graphgrammatiken SDM Storydiagramm und Codegenerierung 2 Graph Grammatik Regel • beschreibt Graph Transformation :A :A :B :B ::= :C Graphgrammatiken SDM Storydiagramm und Codegenerierung 3 Anwendung einer Regel • Hostgraph :L :L :A :A :B :B :M :N :C :M Graphgrammatiken :N SDM Storydiagramm und Codegenerierung 4 Graphgrammatik • Weitere Funktionen von Graphgrammatik Knoten Kanten 1. Erzeugen 2. Löschen 3. Negativ 4. Optional 5. Attribute ändern 1. Erzeugen 2. Löschen 3. Negativ 4. Optional Graphgrammatiken SDM Storydiagramm und Codegenerierung 5 Wie programmiert man mit Graphgrammatiken ? • Programmzustand als Graph repräsentieren • Änderung eines Programmzustand ist eine Graphtransformation, die durch eine Graphgrammatik beschrieben wird Story Driven Modeling Graphgrammatiken SDM Storydiagramm und Codegenerierung 6 Story Driven Modeling Usecase Diagramm Story Board – Ein Überblick Klassen-Diagramm classA + attr1 classC + attr3 classB - attr2 Weitere SystemAnforderungen: GUI Fehlertoleranz … public classA{ ... ... } Code per Hand Generierte Code Graphgrammatiken SDM Story Diagramm Storydiagramm und Codegenerierung 7 Example: Elevator simulation Graphgrammatiken SDM Storydiagramm und Codegenerierung 8 A person enters Graphgrammatiken SDM Storydiagramm und Codegenerierung 9 Graphgrammatiken SDM Storydiagramm und Codegenerierung 10 Graphgrammatiken SDM Storydiagramm und Codegenerierung 11 Storydiagrammsyntax • Notationen im Fujaba <<create>> v:Type <<destroy>> v:Type v:Type Graphgrammatiken v:Type <<create>> v:Type <<destroy>> a = 3; v:Type SDM Storydiagramm und Codegenerierung 12 Generated Javapublic source code void personEnters() { boolean success = false; Iterator iter = null; Object tmp = null; Person person = null; Level level = null; try { success = false; // bind level: Level iter = this.iteratorOfLevels(); while (!(success) && iter.hasNext()) { try { tmp = iter.next(); SDM.ensure(tmp instanceof Level); level = (Level) tmp; // attribute condition SDM.ensure ((level.getNo() == 0)); Graphgrammatiken SDM Storydiagramm und Codegenerierung 13 Generated Java source code // create object person = new Person(); // create link level.addToPersons(person); // create link this.addToPersons(person); success = true; } catch (SDMException exception) {} } } catch (SDMException exception) { success = false; } return; } Graphgrammatiken SDM Storydiagramm und Codegenerierung 14 Praxis mit Fujaba Weitere Methoden dieses Beispiels Graphgrammatiken SDM Storydiagramm und Codegenerierung 15 Zusammenfassung :A :A :B :B ::= :C … { ... ... } 16 Vielen Dank. Wenfeng Ruan 17
© Copyright 2024 ExpyDoc