Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Software Engineering 2 – Konstruktion interaktiver (CASE) Tools

Ähnliche Präsentationen


Präsentation zum Thema: "Software Engineering 2 – Konstruktion interaktiver (CASE) Tools"—  Präsentation transkript:

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

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

3 Überblick Referenzarchitektur Meta-Modell Unparsing Commands
Repository Austauschformate Checking Code Generierung SS Software Engineering Albert Zündorf, University of Kassel

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

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

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

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

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

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

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

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

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

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

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

15 View-Update: Model-View-Controller
weiß nichts über View Notification Mechanism View weiß nichts über Model Controller Bringt beides zusammen… setName(„myPlace“) firePropertyChange(…) Interface c1:Controller c2:Controller Controller setGraphicalPropertyX() Interface setText(„myPlace“) View SS Software Engineering Albert Zündorf, University of Kassel

16 … The GMF Way (2) Model z.B. EMF Controller GEF Draw2D Figures View
Interface Model z.B. EMF 1:1 create() Action Controller GEF „1:1“ create() setGraphicalPropertyX() Interface Draw2D Figures View SS Software Engineering Albert Zündorf, University of Kassel

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

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

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

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

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

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

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

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

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

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

27 4. Commands Aufgabe Klasse SmartIO Editor bauen eclipse GMF plugin
erwartete Operationen / GUI Elemente: Load / Save Undo / Redo Create / Delete Component Create / Delete Channel replaceComponentByXY Insert LogComponent into Channel Add LogComponent to all components startDobs SS Software Engineering Albert Zündorf, University of Kassel

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

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

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

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

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

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

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

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

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

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

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

39 Beispiel Petri Net: Uni-Party
Idea Orga Team Date Bands start corePlanning go findPeople Room increment teamParty Advertising Equipment DrinkingFood. wrapUP PartyTeam FireDep. celebrate party entry setUp closeIt begin open prepare detailing SS Software Engineering Albert Zündorf, University of Kassel

40 Nebenläufigkeit: corePlanning
Orga Team planing DatePlan BandPlan RoomPlan [failure] dateNegos bandNegos roomNegos DateFixed BandFixed RoomFixed Date [success] [success] reviewing Bands [success] Room SS Software Engineering Albert Zündorf, University of Kassel

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

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

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

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

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

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

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

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

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

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

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

52 Action Language 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 Software Engineering Albert Zündorf, University of Kassel

53 Ampel Beispiel: Token t = red.getFirstFromTokens(); if (t != null) { // fire red.removeFromTokens (t); t.getDocument.setYellow(true); red_yellow.addToTokens (t); } red yr ry yellow red_ yellow gy yg green SS Software Engineering Albert Zündorf, University of Kassel

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

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

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

57 Template basierte Code Generierung
class $owner.name { public void initPetriNet () { #foreach ( $place in $net.places) Place $place = new Place (); $place.setName ("$place"); #end #foreach ( $trans in $net.transitions) Transition $trans = new Transition (); #foreach ( $src in $trans.preplaces ) $trans.addToPreplaces ($src); #end #end } } SS Software Engineering Albert Zündorf, University of Kassel

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

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

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

61 Tool Demo Anforderungen
Graphischer Editor Speichern und Laden Undo / Redo Interpreter Code Generator Sprachfeatures: BlockDecl BlockAppl Comp If / While Gen Rekursion? SS Software Engineering Albert Zündorf, University of Kassel


Herunterladen ppt "Software Engineering 2 – Konstruktion interaktiver (CASE) Tools"

Ähnliche Präsentationen


Google-Anzeigen