software engineering 2 – konstruktion interaktiver (case) tools ws 10 / 11 vorlesung: albert...

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

Upload: ivonette-dunker

Post on 05-Apr-2015

107 views

Category:

Documents


1 download

TRANSCRIPT

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

Software Engineering 2 – Konstruktion interaktiver (CASE) Tools

WS 10 / 11

Vorlesung: Albert Zündorf, Software Engineering

Übungen: Nina Geiger, Software Engineering

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

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

2

Administratives

Vorlesung: Montags 15-18 Uhr Raum 1340 (4SWS)

Prüfung: Projektarbeit (wir basteln uns ein SmartIO Tool)

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

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 10 / 11 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Geiger, Software

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 10 / 11 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Geiger, Software

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 10 / 11 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Geiger, Software

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 10 / 11 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Geiger, Software

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 10 / 11 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Geiger, Software

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 10 / 11 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Geiger, Software

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 10 / 11 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Geiger, Software

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 10 / 11 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Geiger, Software

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 10 / 11 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Geiger, Software

SS 2007 Software Engineering 2 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:

1. Erzeugung von Darstellungselementen für Modell

2. Synchronisation bei Änderungen

?p1:Place t1:Transition

a1:Arc

pn:PetriNet

p2:Place

a2:Arc

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

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

13

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 14: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 10 / 11 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Geiger, Software

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

14

… 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 15: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 10 / 11 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Geiger, Software

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

15

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 16: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 10 / 11 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Geiger, Software

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

16

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 17: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 10 / 11 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Geiger, Software

SS 2007 Software Engineering 2 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…

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

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

18

GMF Übersicht

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

SS 2007 Software Engineering 2 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

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

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

20

Tooling Definition

Toolbar

Menüs

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

SS 2007 Software Engineering 2 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

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

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

22

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

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

23

Unparsing Summary

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

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

24

1. Referenzarchitektur

Repository

Meta Model

GUI(Commands)

Generators / Interpreters

QVT

Import/ Export

GUI(Unparsing)

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

SS 2007 Software Engineering 2 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

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

SS 2007 Software Engineering 2 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?

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

SS 2007 Software Engineering 2 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

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

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

28

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 29: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 10 / 11 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Geiger, Software

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

29

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 30: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 10 / 11 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Geiger, Software

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

30

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 31: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 10 / 11 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Geiger, Software

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

31

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 32: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 10 / 11 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Geiger, Software

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

32

3. Repository

Anforderungen Serialisierung XML - Formate

Datenbanken Coobra

Speichern und Laden + + + +

Einfachheit ++ + - ++

Tool-Kopplung O + + +

Multi-User Support - - + ++

Versionierung -- -- - ++

Schema-Evolution ? + + +

Scaling O - ++ -

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

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

33

1. Referenzarchitektur

Repository

Meta Model

GUI(Commands)

Generators / Interpreters

QVT

Import/ Export

GUI(Unparsing)

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

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

34

Simulation

store b

9 b

Sum1to10

gen

start

stop

i

store a

1 a

compute

xsum

sum = x + y

y

store sum

0 sumsum

b

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

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

35

Simulation

store b

9 b

Sum1to10

gen

start

stop

i

store a

1 a

compute

xsum

sum = x + y

y

store sum

0 sumsum

b

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

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

36

Simulation

store b

9 b

Sum1to10

gen

start

stop

i

store a

1 a

compute

xsum

sum = x + y

y

store sum

0 sumsum

b

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

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

37

Simulation

store b

9 b

Sum1to10

gen

start

stop

i

store a

1 a

compute

xsum

sum = x + y

y

store sum

0 sumsum

b

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

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

38

Simulation, Text parts:

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

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

39

Simulation

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

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

40

Simulation

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

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

41

1. Referenzarchitektur

Repository

Meta Model

GUI(Commands)

Generators / Interpreters

QVT

Import/ Export

GUI(Unparsing)

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

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

42

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 43: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 10 / 11 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Geiger, Software

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

43

Nebenläufigkeit: corePlanning

OrgaTeam

Date

Bands

Room

planing

DatePlan BandPlan RoomPlan

dateNegos bandNegos roomNegos

DateFixed BandFixed RoomFixed

reviewing

[failure]

[success]

[success]

[success]

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

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

44

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 45: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 10 / 11 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Geiger, Software

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

45

1. Referenzarchitektur

Repository

Meta Model

GUI(Commands)

Generators / Interpreters

QVT

Import/ Export

GUI(Unparsing)

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

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

46

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 47: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 10 / 11 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Geiger, Software

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

47

elementare Konsistenzanalysen:

Stellen und Transitionen eindeutig benannt

jede Transition hat mind. eine In und eine Out Stelle

jede Stelle hat mindestens eine Transition

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

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

48

inhaltliche Konsistenzanalysen:

jede Input Stelle trägt zu mind. einer Output stelle bei

jede Output Stelle wird von mind. einer Input Stelle versorgt

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

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

49

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 50: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 10 / 11 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Geiger, Software

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

50

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 51: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 10 / 11 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Geiger, Software

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

51

Refactorings: merge Places

fasse zwei Stellen zu einer zusammen

Name der ersten

Transitionen von beiden

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

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

52

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 53: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 10 / 11 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Geiger, Software

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

53

1. Referenzarchitektur

Repository

Meta Model

GUI(Commands)

Generators / Interpreters

QVT

Import/ Export

GUI(Unparsing)

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

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

54

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 55: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 10 / 11 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Geiger, Software

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

55

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 56: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 10 / 11 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Geiger, Software

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

56

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 57: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 10 / 11 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Geiger, Software

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

57

class Ampel

Ampel

red : Booleanyellow : Booleangreen : Boolean

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

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

58

1. Referenzarchitektur

Repository

Meta Model

GUI(Commands)

Generators / Interpreters

QVT

Import/ Export

GUI(Unparsing)

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

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

59

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 60: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 10 / 11 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Geiger, Software

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

60

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 61: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 10 / 11 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Geiger, Software

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

61

Empfohlene Template Engine

google for Velocity

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

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

62

Zusammenfassung

Repository

Meta Model

GUI(Commands)

Generators / Interpreters

QVT

Import/ Export

GUI(Unparsing)

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

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

63

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 64: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 10 / 11 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Geiger, Software

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

64

Tool Demo Anforderungen

Graphischer Editor

Speichern und Laden

Undo / Redo

Interpreter

Code Generator

Sprachfeatures: BlockDecl BlockAppl Comp If / While Gen Rekursion?