Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 08 / 09 Vorlesung: Albert...

58
Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 08 / 09 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Aschenbrenner, Software Engineering

Transcript of Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 08 / 09 Vorlesung: Albert...

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

Software Engineering 2 – Konstruktion interaktiver (CASE) Tools

WS 08 / 09

Vorlesung: Albert Zündorf, Software Engineering

Übungen: Nina Aschenbrenner, Software Engineering

Page 2: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 08 / 09 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Aschenbrenner,

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

2

Administratives

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

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

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

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

3

Überblick

1. Referenzarchitektur

2. Meta-Modell

3. Repository

4. Austauschformate

5. Unparsing

6. Checking

7. Code Generierung

Page 4: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 08 / 09 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Aschenbrenner,

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 08 / 09 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Aschenbrenner,

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 08 / 09 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Aschenbrenner,

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

6

2. Meta-modell

Page 7: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 08 / 09 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Aschenbrenner,

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

7

A more complete Example

BPMN_Poster

Page 8: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 08 / 09 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Aschenbrenner,

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 08 / 09 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Aschenbrenner,

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 08 / 09 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Aschenbrenner,

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

10

Meta Object Facility – MOF

yet another meta model for class diagrams

UML notation

+ klare Semantik

+ standard Implementierung(z.B. JMI Repository)

+ standard Austauschformate(XMI)

Akademische Initiative

Open source

oft als Austauschformat zwischen Tools benutzt

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

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

11

Nach Atkinson Kühne: Model-Driven Development:A Metamodeling Foundation; IEEE Software

• linguistic instance-of

• ontological instance-of

- M3: Werkzeugbausteine

- M2: Programmbausteine

- M1: Laufzeitdaten

- M0: reale Welt

Page 12: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 08 / 09 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Aschenbrenner,

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

12

Nach Atkinson Kühne: Model-Driven Development:A Metamodeling Foundation; IEEE Software

• linguistic instance-of

• ontological instance-of

- beide Dimensionen gleichberechtigt?

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

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

13

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

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

14

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

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

15

3. Repository

Relationale Datenbanken

Objekte und Beziehungen werden als Tupel in Datenbanktabellen gespeichert

Zugriff per ODBC

Middleware (z.B. Hibernate)

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

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

16

3. Repository

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

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

17

3. Repository

Anforderungen Serialisierung XML - Formate

Datenbanken Coobra

Speichern und Laden + + + +

Einfachheit ++ + - ++

Tool-Kopplung O + + +

Multi-User Support - - + ++

Versionierung -- -- - ++

Schema-Evolution ? + + +

Scaling O - ++ -

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

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

18

4. Commands

Aktionen hinter Menüpunkten und Buttons

Viele Buttons/Menüpunkte für ein Kommando denkbar

Undo/Redo Einheiten

API Operationen

Macros

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

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

19

4. Commands

Normalerweise ein Objekt/eine Klasse pro Command

Aufwändige Protokolle für's Undo/Redo

API getrennt

Bei uns Undo/Redo per Coobra

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

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

20

4. Commands

Aufgabe

Klasse BPMNEditior bauen

eclipse GMF plugin

erwartete Operationen / GUI Elemente: Load / Save Undo / Redo Create / Delete State Create / Delete Transition refineTaskToComplexSubProcess startDobs Unparsing später, wir schauen uns das im Dobs an

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

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

21

1. Referenzarchitektur

Repository

Meta Model

GUI(Commands)

Generators / Interpreters

QVT

Import/ Export

GUI(Unparsing)

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

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

22

Simulation

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

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

23

Simulation

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

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

24

Simulation

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

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

25

Simulation

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

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

26

5. 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 27: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 08 / 09 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Aschenbrenner,

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

27

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 28: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 08 / 09 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Aschenbrenner,

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

28

… The GEF 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 29: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 08 / 09 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Aschenbrenner,

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

29

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

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

30

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

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

31

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

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

32

GMF Übersicht

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

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

33

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 34: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 08 / 09 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Aschenbrenner,

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

34

Tooling Definition

Toolbar

Menüs

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

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

35

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 36: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 08 / 09 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Aschenbrenner,

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

36

Unparsing Summary

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

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

37

1. Referenzarchitektur

Repository

Meta Model

GUI(Commands)

Generators / Interpreters

QVT

Import/ Export

GUI(Unparsing)

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

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

38

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 39: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 08 / 09 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Aschenbrenner,

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

39

Nebenläufigkeit: corePlanning

OrgaTeam

Date

Bands

Room

planing

DatePlan BandPlan RoomPlan

dateNegos bandNegos roomNegos

DateFixed BandFixed RoomFixed

reviewing

[failure]

[success]

[success]

[success]

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

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

40

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 41: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 08 / 09 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Aschenbrenner,

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 08 / 09 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Aschenbrenner,

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

42

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

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

43

elementare Konsistenzanalysen:

Stellen und Transitionen eindeutig benannt

jede Transition hat mind. eine In und eine Out Stelle

jede Stelle hat mindestens eine Transition

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

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

44

inhaltliche Konsistenzanalysen:

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

jede Output Stelle wird von mind. einer Input Stelle versorgt

Page 45: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 08 / 09 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Aschenbrenner,

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

45

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 46: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 08 / 09 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Aschenbrenner,

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

46

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

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

47

Refactorings: merge Places

fasse zwei Stellen zu einer zusammen

Name der ersten

Transitionen von beiden

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

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

48

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 49: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 08 / 09 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Aschenbrenner,

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

49

1. Referenzarchitektur

Repository

Meta Model

GUI(Commands)

Generators / Interpreters

QVT

Import/ Export

GUI(Unparsing)

Page 50: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 08 / 09 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Aschenbrenner,

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

50

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

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

51

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 52: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 08 / 09 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Aschenbrenner,

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

52

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

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

53

class Ampel

Ampel

red : Booleanyellow : Booleangreen : Boolean

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

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

54

1. Referenzarchitektur

Repository

Meta Model

GUI(Commands)

Generators / Interpreters

QVT

Import/ Export

GUI(Unparsing)

Page 55: Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 08 / 09 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Aschenbrenner,

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

55

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

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

56

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

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

57

Empfohlene Template Engine

google for Velocity

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

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

58

Zusammenfassung

Repository

Meta Model

GUI(Commands)

Generators / Interpreters

QVT

Import/ Export

GUI(Unparsing)