Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

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

Ähnliche Präsentationen


Präsentation zum Thema: "Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 10 / 11 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Geiger, Software."—  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 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 2 Administratives m Vorlesung: Montags Uhr Raum 1340 (4SWS) m Prüfung: Projektarbeit (wir basteln uns ein SmartIO Tool)

3 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

4 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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

32 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel Repository AnforderungenSerialisierungXML - Formate DatenbankenCoobra Speichern und Laden++++ Einfachheit+++- Tool-KopplungO+++ Multi-User Support--+++ Versionierung Schema-Evolution?+++ ScalingO-++-

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

34 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 x sum sum = x + y y store sum 0 sum b

35 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 x sum sum = x + y y store sum 0 sum b

36 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 x sum sum = x + y y store sum 0 sum b

37 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 x sum sum = x + y y store sum 0 sum b

38 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 38 Simulation, Text parts:

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

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

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

42 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 42 setUp Beispiel Petri Net: Uni-Party Idea Orga Team start findPeople Date Bands Room corePlanninggo Advertising PartyTeam Equipment FireDep. DrinkingFood. detailing prepareopen entryparty begin closeIt wrapUP teamParty celebrate increment

43 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 43 Nebenläufigkeit: corePlanning Orga Team Date Bands Room planing DatePlanBandPlanRoomPlan dateNegosbandNegosroomNegos DateFixedBandFixedRoomFixed reviewing [failure] [success]

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

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

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

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

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

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

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

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

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

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

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

55 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 55 Action Language m Action Language Bean-Shell 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");

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

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

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

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

60 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 }}

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

62 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)

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

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


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

Ähnliche Präsentationen


Google-Anzeigen