![Page 1: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/1.jpg)
Software Engineering 2 – Konstruktion interaktiver (CASE) Tools
WS 13 / 14
Vorlesung: Albert Zündorf, Software Engineering
Übungen: Andreas Scharf, Software Engineering
![Page 2: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/2.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 2
Administratives
Vorlesung: Montags 15-18 Uhr Raum 1340 (4 SWS)
Prüfung: Projektarbeit (wir basteln uns ein Objekt Diagramm Tool)
![Page 3: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/3.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 3
Überblick
1. Referenzarchitektur
2. Meta-Modell
3. Unparsing
4. Commands
5. Repository
6. Austauschformate
7. Checking
8. Code Generierung
![Page 4: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/4.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 4
1. Referenzarchitektur
Repository
Meta Model
GUI(Commands)
Generators / Interpreters
QVT
Import/ Export
GUI(Unparsing)
![Page 5: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/5.jpg)
SS 2007 Software Engineering 2 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
![Page 6: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/6.jpg)
SS 2007 Software Engineering 2 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
![Page 7: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/7.jpg)
SS 2007 Software Engineering 2 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
![Page 8: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/8.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 8
2. Meta-modell
![Page 9: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/9.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 9
Meta Meta Meta
![Page 10: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/10.jpg)
Time Levels
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 10
runtime
development time
tool development time
library development time
![Page 11: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/11.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 11
1. Referenzarchitektur
Repository
Meta Model
GUI(Commands)
Generators / Interpreters
QVT
Import/ Export
GUI(Unparsing)
![Page 12: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/12.jpg)
The Object Diagram Model
WS 12/13 Software Engineering 2 Albert Zündorf, University of Kassel
12
![Page 13: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/13.jpg)
The Object Diagram Model
WS 12/13 Software Engineering 2 Albert Zündorf, University of Kassel
13
![Page 14: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/14.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 14
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:
1. Erzeugung von Darstellungselementen für Modell
2. Synchronisation bei Änderungen
?p1:Place t1:Transition
a1:Arc
pn:PetriNet
p2:Place
a2:Arc
![Page 15: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/15.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 15
Bildschirmdarstellung vs. interne Struktur
p1:Place t1:Transition
a1:Arc
pn:PetriNet
p2:Place
a2:Arc
c:Canvas
c1:Circle r1:Rectangle c1:Circle
l1:Label cn1:Connection cn2:Connection l2:Label
Model
View
GUI
Action Update
![Page 16: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/16.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 16
… The GMF Way (1)
p1:Place t1:Transition
a1:Arc
pn:PetriNet
p2:Place
a2:Arc
c:Canvas
c1:Circle r1:Rectangle c1:Circle
l1:Label cn1:Connection cn2:Connection l2:Label
Model
View
GUI
Update
Create/Update
Paint
Action
3 Probleme:
1. Initiales Unparsing
2. Update des Views bei Änderung am Model
3. Umsetzen von Nutzeraktionen in Modelländerungen
MVC
![Page 17: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/17.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 17
View-Update: Model-View-Controller
p1:Place t1:Transition
a1:Arc
pn:PetriNet
p2:Place
a2:Arc
c:Canvas
c1:Circle r1:Rectangle c1:Circle
l1:Label cn1:Connection cn2:Connection l2:Label
Model
View
Interface
Model weiß nichts über View Notification Mechanism
View weiß nichts über Model
Controller Bringt beides zusammen…
Interface
l1:Listener l2:Listener...
setGraphicalPropertyX()
…
setName(„myPlace“)
firePropertyChange(…)
setText(„myPlace“)
Controllerc1:Controller c2:Controller
![Page 18: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/18.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 18
p1:Place t1:Transition
a1:Arc
pn:PetriNet
p2:Place
a2:Arc
Interface
c:Canvas
c1:Circle r1:Rectangle c1:Circle
l1:Label cn1:Connection cn2:Connection l2:Label
Interface
… The GMF Way (2)
Model
View
create()setGraphicalPropertyX()
…
ControllerGEF
Action
ep1:EditPart ep2:EditPart...epf:EditPartFactory
c1:Command
ep1:EditPolicy
z.B. EMF
Draw2DFigures
„1:1“
1:1
create()
![Page 19: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/19.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 19
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…
![Page 20: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/20.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 20
GMF Übersicht
![Page 21: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/21.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 21
Graphical Definition Model
Definiert die Diagrammelemente
Figure-Gallery enthält graphische Primitive
Nodes, Connections… binden Figures an logische Diagrammelemente
Graphical Definition Model =Visual Language
![Page 22: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/22.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 22
Tooling Definition
Toolbar
Menüs
…
![Page 23: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/23.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 23
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
![Page 24: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/24.jpg)
Eugenia
GMF ist immer noch zu kompliziert
Eugenia: Annotation des Klassendiagramm Generierung der GMF Konfigurationen
Siehe Übung
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 24
![Page 25: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/25.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 25
Unparsing Summary
![Page 26: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/26.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 26
1. Referenzarchitektur
Repository
Meta Model
GUI(Commands)
Generators / Interpreters
QVT
Import/ Export
GUI(Unparsing)
![Page 27: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/27.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 27
4. Commands
Operationen auf der logischen Objektstruktur (EMF Modell)
Konsistenzanalysen
Refactorings
komplexe Editor Kommandos
Code Generierung
Aktionen hinter Menüpunkten und Buttons
Viele Buttons/Menüpunkte für ein Kommando denkbar
Undo/Redo Einheiten
![Page 28: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/28.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 28
4. Commands
Aufgabe
Konsistenzanalysen: Name ist Java Identifier Genau ein Start jede Aktion von Start aus erreichbar
Refactorings: Start to Task Task to Start Split Task to Task – Flow – Task Split Fow to Flow – Task – Flow Join Task – Flow – Task to Task Join Flow – Task – Flow to Flow
![Page 29: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/29.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
29
![Page 30: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/30.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 30
1. Referenzarchitektur
Repository
Meta Model
GUI(Commands)
Generators / Interpreters
QVT
Import/ Export
GUI(Unparsing)
![Page 31: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/31.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 31
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 O
![Page 32: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/32.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 32
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 -
![Page 33: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/33.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 33
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 ++
![Page 34: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/34.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 34
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 -
![Page 35: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/35.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 35
3. Repository
Anforderungen Serialisierung XML - Formate
Datenbanken Coobra
Speichern und Laden + + + +
Einfachheit ++ + - ++
Tool-Kopplung O + + +
Multi-User Support - - + ++
Versionierung -- -- - ++
Schema-Evolution ? + + +
Scaling O - ++ -
![Page 36: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/36.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 36
1. Referenzarchitektur
Repository
Meta Model
GUI(Commands)
Generators / Interpreters
QVT
Import/ Export
GUI(Unparsing)
![Page 37: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/37.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 37
Simulation / Interpreter
![Page 38: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/38.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 38
Simulation
![Page 39: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/39.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 39
Simulation
![Page 40: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/40.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 40
1. Referenzarchitektur
Repository
Meta Model
GUI(Commands)
Generators / Interpreters
QVT
Import/ Export
GUI(Unparsing)
![Page 41: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/41.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 41
setUp
Beispiel Petri Net: Uni-Party
Idea OrgaTeam
start
findPeople
Date
Bands
Room
corePlanning go
Advertising
PartyTeam
Equipment
FireDep.
DrinkingFood.
detailingprepareopen
entryparty
begincloseIt
wrapUP
teamParty
celebrate
increment
![Page 42: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/42.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 42
Nebenläufigkeit: corePlanning
OrgaTeam
Date
Bands
Room
planing
DatePlan BandPlan RoomPlan
dateNegos bandNegos roomNegos
DateFixed BandFixed RoomFixed
reviewing
[failure]
[success]
[success]
[success]
![Page 43: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/43.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 43
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 einerIn 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
t
b c
d e
![Page 44: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/44.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 44
1. Referenzarchitektur
Repository
Meta Model
GUI(Commands)
Generators / Interpreters
QVT
Import/ Export
GUI(Unparsing)
![Page 45: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/45.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 45
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
![Page 46: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/46.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 46
elementare Konsistenzanalysen:
Stellen und Transitionen eindeutig benannt
jede Transition hat mind. eine In und eine Out Stelle
jede Stelle hat mindestens eine Transition
![Page 47: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/47.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 47
inhaltliche Konsistenzanalysen:
jede Input Stelle trägt zu mind. einer Output stelle bei
jede Output Stelle wird von mind. einer Input Stelle versorgt
![Page 48: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/48.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 48
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
![Page 49: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/49.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 49
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
![Page 50: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/50.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 50
Refactorings: merge Places
fasse zwei Stellen zu einer zusammen
Name der ersten
Transitionen von beiden
![Page 51: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/51.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 51
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
![Page 52: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/52.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 52
1. Referenzarchitektur
Repository
Meta Model
GUI(Commands)
Generators / Interpreters
QVT
Import/ Export
GUI(Unparsing)
![Page 53: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/53.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 53
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
![Page 54: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/54.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 54
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");
![Page 55: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/55.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 55
Ampel Beispiel:
red_yellow
ry
green
yellow
yggy
yr
red
Token t = red.getFirstFromTokens();if (t != null) {
// firered.removeFromTokens (t);t.getDocument.setYellow(true);red_yellow.addToTokens (t);
}
![Page 56: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/56.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 56
class Ampel
Ampel
red : Booleanyellow : Booleangreen : Boolean
![Page 57: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/57.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 57
1. Referenzarchitektur
Repository
Meta Model
GUI(Commands)
Generators / Interpreters
QVT
Import/ Export
GUI(Unparsing)
![Page 58: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/58.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 58
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
![Page 59: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/59.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 59
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} }
![Page 60: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/60.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 60
Empfohlene Template Engine
Open architecture ware xpand
![Page 61: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/61.jpg)
Codegenerierung
Klasse für das Board
Init Methode baut Schaltung
View Methode baut Bedienfenster
Main Methode startet Applikation
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
61
switch1 switch2
light_a light_b
switch1
switch2
light1
light2
![Page 62: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/62.jpg)
Codegenerierung
class Board1 { public void init () {
switch1 = new Switch();switch2 = new Switch();light_a = new Light();ligth_b = new Light();switch1.withSucc(light_a);switch2.withSucc(light_a)
.withSucc(light_b); this.withCont(switch1)
.withCont(switch2) .withCont(light_a) .withCont(light_b);
}
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
62
switch1 switch2
light_a light_b
switch1
switch2
light1
light2
![Page 63: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/63.jpg)
Codegenerierung
class Board1 {…
public void view() {frame = new JFrame();jpane = frame.getRootPane();
jpane.setLayout(…);switch1Button = new Jbutton();switch1Button.addActionListener(
new ActionListener() {public void actionPerformed(){
switch1.receiveMessage(on);}
}jpane.add(switch1Button);
…
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
63
switch1 switch2
light_a light_b
switch1
switch2
light1
light2
![Page 64: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/64.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 64
Zusammenfassung
Repository
Meta Model
GUI(Commands)
Generators / Interpreters
QVT
Import/ Export
GUI(Unparsing)
![Page 65: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/65.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 65
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 Fujaba – UML Lab Kopplung
Andreas: Model Transformation in konkreter Syntax / Model Refactorings Fujaba – UML Lab Kopplung
Albert: Fujaba für verteilte Systeme Verifikation & Model Checking
![Page 66: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software](https://reader035.vdokument.com/reader035/viewer/2022081502/55204d6749795902118bce2c/html5/thumbnails/66.jpg)
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 66
Tool Demo Anforderungen
Graphischer Editor
Speichern und Laden
Undo / Redo
Interpreter
Code Generator
Sprachfeatures: BlockDecl BlockAppl Comp If / While Gen Rekursion?