Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software.

Ähnliche Präsentationen


Präsentation zum Thema: "Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software."—  Präsentation transkript:

1 Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software Engineering

2 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 2 Administratives m Vorlesung: Montags Uhr Raum 1340 (4 SWS) m Prüfung: Projektarbeit (wir basteln uns ein Objekt Diagramm 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 The Object Diagram Model WS 12/13 Software Engineering 2 Albert Zündorf, University of Kassel 12

13 The Object Diagram Model WS 12/13 Software Engineering 2 Albert Zündorf, University of Kassel 13

14 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 ?

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

16 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 16 … 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

17 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 17 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

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

19 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 19 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…

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

21 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 21 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

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

23 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 23 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

24 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 24

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

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

27 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel Commands m Operationen auf der logischen Objektstruktur (EMF Modell) m Konsistenzanalysen m Refactorings m komplexe Editor Kommandos m Code Generierung m Aktionen hinter Menüpunkten und Buttons m Viele Buttons/Menüpunkte für ein Kommando denkbar m Undo/Redo Einheiten

28 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel Commands Aufgabe m Konsistenzanalysen: l Name ist Java Identifier l Genau ein Start l jede Aktion von Start aus erreichbar m Refactorings: l Start to Task l Task to Start l Split Task to Task – Flow – Task l Split Fow to Flow – Task – Flow l Join Task – Flow – Task to Task l Join Flow – Task – Flow to Flow

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

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

31 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

32 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-

33 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++

34 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-

35 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-++-

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

37 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 37 Simulation / Interpreter

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

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 Referenzarchitektur Repository Meta Model GUI (Commands) Generators / Interpreters QVT Import/ Export GUI (Unparsing)

41 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 41 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

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

43 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 43 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

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

45 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 45 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

46 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 46 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

47 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 47 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

48 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 48 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

49 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 49 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

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

51 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 51 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

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

53 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 53 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

54 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 54 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");

55 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 55 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); }

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

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

58 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 58 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

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

60 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 60 Empfohlene Template Engine m Open architecture ware xpand

61 Codegenerierung m Klasse für das Board m Init Methode baut Schaltung m View Methode baut Bedienfenster m 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

62 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

63 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

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

65 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 65 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

66 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 66 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 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software."

Ähnliche Präsentationen


Google-Anzeigen