Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 09 / 10 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 09 / 10 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Geiger, Software."—  Präsentation transkript:

1 Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 09 / 10 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 15-18 Uhr Raum 1340 (4SWS) m Prüfung: Projektarbeit (wir basteln uns ein Engineering C Tool)

3 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

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

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

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

9 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 9 Meta Object Facility – MOF m yet another meta model for class diagrams m UML notation + klare Semantik + standard Implementierung (z.B. JMI Repository) + standard Austauschformate (XMI) m Akademische Initiative m Open source m oft als Austauschformat zwischen Tools benutzt

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

11 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 -beide Dimensionen gleichberechtigt?

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

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

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

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

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

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

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

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

20 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 20 4. Commands Aufgabe m Klasse EngineeringCEditior bauen m eclipse GMF plugin m erwartete Operationen / GUI Elemente: l Load / Save l Undo / Redo l Create / Delete Block l Create / Delete Wire l refactorSubCircuitsToBlockDecl l startDobs l Unparsing später, wir schauen uns das im Dobs an

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

Ähnliche Präsentationen


Google-Anzeigen