Скачать презентацию Software Engineering 2 Konstruktion interaktiver CASE Tools Скачать презентацию Software Engineering 2 Konstruktion interaktiver CASE Tools

a5741931586e68682775ff9ed3e6a9a1.ppt

  • Количество слайдов: 61

Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 10 / 11 Vorlesung: Albert Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 10 / 11 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Geiger, Software Engineering

Administratives m Vorlesung: Montags 15 -18 Uhr Raum 1340 (4 SWS) m Prüfung: Projektarbeit Administratives m Vorlesung: Montags 15 -18 Uhr Raum 1340 (4 SWS) m Prüfung: Projektarbeit (wir basteln uns ein Smart. IO Tool) SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 2

Überblick 1. Referenzarchitektur 2. Meta-Modell 3. Unparsing 4. Commands 5. Repository 6. Austauschformate 7. Überblick 1. Referenzarchitektur 2. Meta-Modell 3. Unparsing 4. Commands 5. Repository 6. Austauschformate 7. Checking 8. Code Generierung SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 3

1. Referenzarchitektur QVT Generators / Interpreters GUI (Commands) Meta Model GUI (Unparsing) Import/ Export 1. Referenzarchitektur QVT Generators / Interpreters GUI (Commands) Meta Model GUI (Unparsing) Import/ Export Repository SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 4

2. Meta-modell m abstrakter Syntaxgraph (ASG) m logische Datenstruktur hinter der Darstellung am Bildschirm 2. Meta-modell m abstrakter Syntaxgraph (ASG) m logische Datenstruktur hinter der Darstellung am Bildschirm m speichert Editoreingaben m beschrieben durch Klassendiagramm SS 2007 Software Engineering 2 File Edit Tools X Albert Zündorf, University of Kassel 5

2. Meta-modell m abstrakter Syntaxgraph (ASG) m logische Datenstruktur hinter der Darstellung am Bildschirm 2. Meta-modell m abstrakter Syntaxgraph (ASG) m logische Datenstruktur hinter der Darstellung am Bildschirm m speichert Editoreingaben m beschrieben durch Klassendiagramm SS 2007 Software Engineering 2 File Edit Tools X Albert Zündorf, University of Kassel 6

2. Meta-modell m abstrakter Syntaxgraph (ASG) m logische Datenstruktur hinter der Darstellung am Bildschirm 2. Meta-modell m abstrakter Syntaxgraph (ASG) m logische Datenstruktur hinter der Darstellung am Bildschirm m speichert Editoreingaben m beschrieben durch Klassendiagramm SS 2007 Software Engineering 2 File Edit Tools X Albert Zündorf, University of Kassel 7

2. Meta-modell SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 8 2. Meta-modell SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 8

Meta SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 9 Meta SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 9

Time Levels library development time tool development time runtime SS 2007 Software Engineering 2 Time Levels library development time tool development time runtime SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 10

1. Referenzarchitektur QVT Generators / Interpreters GUI (Commands) Meta Model GUI (Unparsing) Import/ Export 1. Referenzarchitektur QVT Generators / Interpreters GUI (Commands) Meta Model GUI (Unparsing) Import/ Export Repository SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 11

3. Unparsing ? m Metamodell: interne Speicherung z. B. für Code Generierung m GUI: 3. Unparsing ? m Metamodell: interne Speicherung z. B. für Code Generierung m GUI: Darstellung am Bildschirm z. B. mit GEF (oder Swing) m Unparsing: Erzeugung der Darstellung aus dem Metamodell m 2 Teilprobleme: 1. Erzeugung von Darstellungselementen für Modell 2. Synchronisation bei Änderungen SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 12

Bildschirmdarstellung vs. interne Struktur Model Update Action GUI View SS 2007 Software Engineering 2 Bildschirmdarstellung vs. interne Struktur Model Update Action GUI View SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 13

… The GMF Way (1) Model Update Action m MVC 3 Probleme: GUI 1. … The GMF Way (1) Model Update Action m MVC 3 Probleme: GUI 1. Initiales Unparsing 2. Update des Views bei Änderung am Model 3. Umsetzen von Nutzeraktionen in Modelländerungen Create/Update Paint View SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 14

View-Update: Model-View-Controller Model m m m Model l weiß nichts über View l Notification View-Update: Model-View-Controller Model m m m Model l weiß nichts über View l Notification Mechanism View l weiß nichts über Model set. Name(„my. Place“) fire. Property. Change(…) Controller l Bringt beides zusammen… Interface c 2: Controller c 1: Controller set. Graphical. Property. X() … Interface set. Text(„my. Place“) View SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 15

… The GMF Way (2) Model z. B. EMF 1: 1 Interface create() Action … The GMF Way (2) Model z. B. EMF 1: 1 Interface create() Action Controller GEF „ 1: 1“ create() set. Graphical. Property. X() … Interface Draw 2 D Figures View SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 16

EMF + GEF = GMF m GEF ist schön und gut, aber … m EMF + GEF = GMF m GEF ist schön und gut, aber … m … immer noch viel zu kompliziert und aufwändig m … nicht model-driven (Java-Hacken) Ø GMF (Graphical Modeling Framework) m Führt EMF und GEF zusammen m Spezifizieren statt Programmieren m … alles viel schöner, einfacher, schneller, besser !? m Sehr spezifische Anforderungen an das Modell (1: 1 Umsetzung): Da gibt‘s noch was zu tun… SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 17

GMF Übersicht SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 18 GMF Übersicht SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 18

Graphical Definition Model m Definiert die Diagrammelemente m Figure-Gallery enthält graphische Primitive m Nodes, Graphical Definition Model m Definiert die Diagrammelemente m Figure-Gallery enthält graphische Primitive m Nodes, Connections… binden Figures an logische Diagrammelemente Ø Graphical Definition Model = Visual Language SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 19

Tooling Definition m Toolbar m Menüs m … SS 2007 Software Engineering 2 Albert Tooling Definition m Toolbar m Menüs m … SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 20

Mapping Model / Notation Model m Bildet das Domain Model auf das Graphical Definition Mapping Model / Notation Model m Bildet das Domain Model auf das Graphical Definition Model ab l Im Wesentlichen 1: 1 l Kanten aus Objekten oder Links l braucht Komposition im Modell … l Etwas komplexere Mappings über OCL-Bedingungen möglich l In Zukunft (vielleicht) mal flexibler durch „echtes“ Model-Mapping mit QVT l Mapping Model + Graphical Definition Model = Notation Model m Ordnet Tools aus Tooling Definition zu SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 21

Eugenia m GMF ist immer noch zu kompliziert m Eugenia: l Annotation des Klassendiagramm Eugenia m GMF ist immer noch zu kompliziert m Eugenia: l Annotation des Klassendiagramm l Generierung der GMF Konfigurationen Siehe Übung SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 22

Unparsing Summary m SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 23 Unparsing Summary m SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 23

1. Referenzarchitektur QVT Generators / Interpreters GUI (Commands) Meta Model GUI (Unparsing) Import/ Export 1. Referenzarchitektur QVT Generators / Interpreters GUI (Commands) Meta Model GUI (Unparsing) Import/ Export Repository SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 24

4. Commands m Aktionen hinter Menüpunkten und Buttons m Viele Buttons/Menüpunkte für ein Kommando 4. Commands m Aktionen hinter Menüpunkten und Buttons m Viele Buttons/Menüpunkte für ein Kommando denkbar m Undo/Redo Einheiten m API Operationen m Macros SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 25

4. Commands m Normalerweise ein Objekt/eine Klasse pro Command m Aufwändige Protokolle für's Undo/Redo 4. Commands m Normalerweise ein Objekt/eine Klasse pro Command m Aufwändige Protokolle für's Undo/Redo m API getrennt m Bei uns Undo/Redo per EMF? SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 26

4. Commands Aufgabe m Klasse Smart. IO Editor bauen m eclipse GMF plugin m 4. Commands Aufgabe m Klasse Smart. IO Editor bauen m eclipse GMF plugin m erwartete Operationen / GUI Elemente: l Load / Save l Undo / Redo l Create / Delete Component l Create / Delete Channel l replace. Component. By. XY l Insert Log. Component into Channel l Add Log. Component to all components l start. Dobs SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 27

1. Referenzarchitektur QVT Generators / Interpreters GUI (Commands) Meta Model GUI (Unparsing) Import/ Export 1. Referenzarchitektur QVT Generators / Interpreters GUI (Commands) Meta Model GUI (Unparsing) Import/ Export Repository SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 28

3. Repository Man will ja auch mal abspeichern und wieder laden: Anforderungen Serialisierung Binäre 3. Repository Man will ja auch mal abspeichern und wieder laden: Anforderungen Serialisierung Binäre File-Formate / Java Serialisierung Speichern und Laden + Einfachheit ++ Tool-Kopplung O Multi-User Support - Versionierung -- Schema-Evolution ? Scaling O m class C implements Serializable m bestimmen aller Objekte die gespeichert werden sollen ( Composite Struktur) m transiente Attribute werden ausgeklammert SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 29

3. Repository Anforderungen m bestimmen aller Objekte die gespeichert werden sollen ( Composite Struktur) 3. Repository Anforderungen m bestimmen aller Objekte die gespeichert werden sollen ( Composite Struktur) m JDom / Xerces Basistechnologie (beherschbar) SS 2007 Software Engineering 2 + Einfachheit + Tool-Kopplung + Multi-User Support -+ Scaling generische Lade-/Speicher Routinen per Java Reflection Speichern und Laden Schema-Evolution m XML Formate Versionierung XML-Formate - Albert Zündorf, University of Kassel 30

3. Repository Anforderungen m Zugriff per ODBC m Middleware (z. B. JPA) m Multi-User 3. Repository Anforderungen m Zugriff per ODBC m Middleware (z. B. JPA) m Multi-User Betrieb durch Datenbank Sperrkonzepte und Transaktionen l pessimistische Sperren l Caching schwierig SS 2007 Software Engineering 2 + Einfachheit + Multi-User Support + Versionierung + Scaling m Speichern und Laden Schema-Evolution Objekte und Beziehungen werden als Tupel in Datenbanktabellen gespeichert Datenbanken Tool-Kopplung Relationale Datenbanken ++ Albert Zündorf, University of Kassel 31

3. Repository Coobra 2: COmmon Object Replication fr. Amework Anforderungen Coobra m Basismechanismus von 3. Repository Coobra 2: COmmon Object Replication fr. Amework Anforderungen Coobra m Basismechanismus von Fujaba Speichern und Laden + m Protokollierung aller Attributzugriffe als Deltas per Listener Einfachheit ++ m Undo / Redo Tool-Kopplung + m Deltas Checkin / Checkout in Repository Multi-User Support ++ m optimistisches Locking / Merging Versionierung ++ m Integriert in Fujaba Code Generierung Schema-Evolution + m manuelle Implementierung möglich Scaling - SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 32

3. Repository Anforderungen Serialisierung XML Formate Datenbanken Coobra Speichern und Laden + + Einfachheit 3. Repository Anforderungen Serialisierung XML Formate Datenbanken Coobra Speichern und Laden + + Einfachheit ++ + - ++ Tool-Kopplung O + + + Multi-User Support - - + ++ Versionierung -- -- - ++ Schema-Evolution ? + + + Scaling O - ++ - SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 33

1. Referenzarchitektur QVT Generators / Interpreters GUI (Commands) Meta Model GUI (Unparsing) Import/ Export 1. Referenzarchitektur QVT Generators / Interpreters GUI (Commands) Meta Model GUI (Unparsing) Import/ Export Repository SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 34

Simulation SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 35 Simulation SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 35

Simulation SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 36 Simulation SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 36

Simulation SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 37 Simulation SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 37

1. Referenzarchitektur QVT Generators / Interpreters GUI (Commands) Meta Model GUI (Unparsing) Import/ Export 1. Referenzarchitektur QVT Generators / Interpreters GUI (Commands) Meta Model GUI (Unparsing) Import/ Export Repository SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 38

Beispiel Petri Net: Uni-Party Orga Team Idea Date core. Planning start go Bands find. Beispiel Petri Net: Uni-Party Orga Team Idea Date core. Planning start go Bands find. People Room increment team. Party Advertising celebrate wrap. UP party close. It SS 2007 Party. Team entry begin Equipment Drinking. Food. Fire. Dep. set. Up open Software Engineering 2 prepare detailing Albert Zündorf, University of Kassel 39

Nebenläufigkeit: core. Planning Orga Team planing Date. Plan Band. Plan Room. Plan [failure] date. Nebenläufigkeit: core. Planning Orga Team planing Date. Plan Band. Plan Room. Plan [failure] date. Negos band. Negos Date. Fixed Band. Fixed room. Negos Room. Fixed Date [success] reviewing [success] Bands [success] Room SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 40

Semantikvorschlag: m Transitionen werden neu geschedult wenn sich an einer In oder Out Stelle Semantikvorschlag: m Transitionen werden neu geschedult wenn sich an einer In oder Out Stelle was ändert Transition entscheidet ob und welche Token konsumiert und produziert werden m wenn eine Transition etwas tut, wird sie neu geschedult m es gibt spezielle Input und Output stellen m Input Stellen können von außen befüllt werden m Output Stellen können von außen geleert werden m c In und Out Stellen sind Variablen (a bis e) vom Typ Stelle m b m m a ordne jeder Transition ein Java-Codefragment zu Initial Marking ist leer t d e SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 41

1. Referenzarchitektur QVT Generators / Interpreters GUI (Commands) Meta Model GUI (Unparsing) Import/ Export 1. Referenzarchitektur QVT Generators / Interpreters GUI (Commands) Meta Model GUI (Unparsing) Import/ Export Repository SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 42

Query – View – Transformation m Zentraler Teil der Model Driven Architecture (MDA) Initiative Query – View – Transformation m Zentraler Teil der Model Driven Architecture (MDA) Initiative m „man will auch mal mit den schönen Modellen rechnen“ m Konsistenzanalysen m Refactorings, … m Modell A in Modell B umbauen m Ausführung / Code Generierung SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 43

elementare Konsistenzanalysen: m Stellen und Transitionen eindeutig benannt m jede Transition hat mind. eine elementare Konsistenzanalysen: m Stellen und Transitionen eindeutig benannt m jede Transition hat mind. eine In und eine Out Stelle m jede Stelle hat mindestens eine Transition SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 44

inhaltliche Konsistenzanalysen: m jede Input Stelle trägt zu mind. einer Output stelle bei m inhaltliche Konsistenzanalysen: m jede Input Stelle trägt zu mind. einer Output stelle bei m jede Output Stelle wird von mind. einer Input Stelle versorgt SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 45

Konsistenzanalysen (2 cd) m Inkonsistenzen fallen meist bei Ausführung / Code-Generierung auf Einfache Strategie: Konsistenzanalysen (2 cd) m Inkonsistenzen fallen meist bei Ausführung / Code-Generierung auf Einfache Strategie: m Fehler-Management-Objekt einführen m pro Fehler: l fehler Markierungsobjekt erzeugen l fehlerhafte Stelle markieren l an Fehler-Management-Objekt anhängen l Fehlerliste anzeigen l vor jeder neuen Analyse / Ausführung / Code-Generierung alte Fehler löschen SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 46

Refactorings: merge Transitions m fasse zwei Transitionen zu einer zusammen m name der ersten Refactorings: merge Transitions m fasse zwei Transitionen zu einer zusammen m name der ersten m Java Code von beiden hintereinander m In Stellen von beiden m Out Stellen von beiden SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 47

Refactorings: merge Places m fasse zwei Stellen zu einer zusammen m Name der ersten Refactorings: merge Places m fasse zwei Stellen zu einer zusammen m Name der ersten m Transitionen von beiden SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 48

Refactorings: split Place m ersetze Stelle durch zwei Stellen mit Transition dazwischen m die Refactorings: split Place m ersetze Stelle durch zwei Stellen mit Transition dazwischen m die Transition liest und schreibt auf beiden neuen Stellen m Java Code kopiert alle Token vor und zurück SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 49

1. Referenzarchitektur QVT Generators / Interpreters GUI (Commands) Meta Model GUI (Unparsing) Import/ Export 1. Referenzarchitektur QVT Generators / Interpreters GUI (Commands) Meta Model GUI (Unparsing) Import/ Export Repository SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 50

Interpreter 1. Stufe: m Metamodell um Ausführungsinformation erweitern: l Interpreter Objekt l Token mit Interpreter 1. Stufe: m Metamodell um Ausführungsinformation erweitern: l Interpreter Objekt l Token mit Zeigern auf Dokumente m Interpreter: l bei Stellen als Listener für Tokenänderungen subscriben l bei Tokenchange, benachbarte Transitionen in Todo-Queue l Transitionen aus Todo-Queue feuern, d. h. Java Code ausführen SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 51

Action Language m Action Language Bean-Shell www. beanshell. org import bsh. Interpreter; Interpreter i Action Language m Action Language Bean-Shell www. beanshell. org import bsh. Interpreter; Interpreter i = new Interpreter(); // Construct an interpreter i. set("foo", 5); // Set variables i. set("date", new Date() ); Date date = (Date)i. get("date"); // retrieve a value from a variable // Eval a statement and get the result i. eval("bar = foo*10"); System. out. println( i. get("bar") ); // Source an external script file i. source("somefile. bsh"); SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 52

Ampel Beispiel: Token t = red. get. First. From. Tokens(); if (t != null) Ampel Beispiel: Token t = red. get. First. From. Tokens(); if (t != null) { // fire red. remove. From. Tokens (t); t. get. Document. set. Yellow(true); red_yellow. add. Tokens (t); } red yr ry red_ yellow gy yg green SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 53

class Ampel red : Boolean yellow : Boolean green : Boolean SS 2007 Software class Ampel red : Boolean yellow : Boolean green : Boolean SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 54

1. Referenzarchitektur QVT Generators / Interpreters GUI (Commands) Meta Model GUI (Unparsing) Import/ Export 1. Referenzarchitektur QVT Generators / Interpreters GUI (Commands) Meta Model GUI (Unparsing) Import/ Export Repository SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 55

Code Generierung Mehrere Alternativen: m Visitor der das Metamodell durchläuft und Strings in eine Code Generierung Mehrere Alternativen: m Visitor der das Metamodell durchläuft und Strings in eine Datei schreibt. l hoher Aufwand l Indentieren und so ist doof Pretty Printer nehmen l nicht sehr Wartungsfreundlich m Template basierte Code Generierung l hat sich durchgesetzt SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 56

Template basierte Code Generierung class $owner. name { public void init. Petri. Net () Template basierte Code Generierung class $owner. name { public void init. Petri. Net () { #foreach ( $place in $net. places) Place $place = new Place (); $place. set. Name ("$place"); #end #foreach ( $trans in $net. transitions) Transition $trans = new Transition (); #foreach ( $src in $trans. preplaces ) $trans. add. To. Preplaces ($src); #end. . . #end } } SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 57

Empfohlene Template Engine m google for Velocity SS 2007 Software Engineering 2 Albert Zündorf, Empfohlene Template Engine m google for Velocity SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 58

Zusammenfassung QVT Generators / Interpreters GUI (Commands) Meta Model GUI (Unparsing) Import/ Export Repository Zusammenfassung QVT Generators / Interpreters GUI (Commands) Meta Model GUI (Unparsing) Import/ Export Repository SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 59

Diplomarbeiten am Fachgebiet m Johannes und Sys: Spieleprogrammierung m Ruben: l Lego Mindstorms / Diplomarbeiten am Fachgebiet m Johannes und Sys: Spieleprogrammierung m Ruben: l Lego Mindstorms / Chumbee l Ubiquitäre Systeme l Fujaba – UML Lab Kopplung m Nina: l GWT GUI Builder l Web Apps m Jörn: l Natural Text To Object / Android Apps l Fujaba – UML Lab Kopplung m Andreas: l Model Transformation in konkreter Syntax / Model Refactorings l Fujaba – UML Lab Kopplung m Albert: l Fujaba für verteilte Systeme l Verifikation & Model Checking SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 60

Tool Demo Anforderungen m Graphischer Editor m Speichern und Laden m Undo / Redo Tool Demo Anforderungen m Graphischer Editor m Speichern und Laden m Undo / Redo m Interpreter m Code Generator m Sprachfeatures: l Block. Decl l Block. Appl l Comp l If / While l Gen l Rekursion? SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 61