Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Software Engineering 2 – Konstruktion interaktiver (CASE) Tools

Ähnliche Präsentationen


Präsentation zum Thema: "Software Engineering 2 – Konstruktion interaktiver (CASE) Tools"—  Präsentation transkript:

1 Software Engineering 2 – Konstruktion interaktiver (CASE) Tools
SS 2007 Albert Zündorf, Software Engineering

2 Administratives Vorlesung: Montags 15-18 Uhr Raum 1342 (4SWS)
Prüfung: Projektarbeit (wir basteln uns ein (Petri-Netz) Tool) SS Software Engineering Albert Zündorf, University of Kassel

3 Überblick Referenzarchitektur Meta-Modell Repository Austauschformate
Unparsing Checking Code Generierung SS Software Engineering Albert Zündorf, University of Kassel

4 Generators / Interpreters
1. Referenzarchitektur QVT Generators / Interpreters GUI (Commands) Meta Model GUI (Unparsing) Import/ Export Repository SS Software Engineering 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 out = f (in); [out.x > 10] [out.x < 20] out.x = in.x + 1; SS Software Engineering Albert Zündorf, University of Kassel

6 Beispiel aus http://www.daimi.au.dk/CPnets/intro/
SS Software Engineering Albert Zündorf, University of Kassel

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

8 Meta Meta Meta M0: Objekte / Instanzen zur Laufzeit (Jim, GET-Vorlesung) M1: Modell Diagramme die der Benuzter eingibt (Student, Vorlesung, ...) (oft UML) M2: Meta-Modell: Klassendiagramm, dass Benuterzdiagramm beschreibt / Tool Ebene (mit UML oder MOF) M3: Wer beschreibt das Meta-Modell?  Meta-Meta Modell (meist MOF, MOF ist selbstbeschreibend  Mn+1 = Mn) SS Software Engineering Albert Zündorf, University of Kassel

9 Sicht des Tool-Bauers Meta Modelle sind auch nur Modelle
Modellierungsebene beeinflusst Modellierungssprache nur wenig Oft mehrere Ebenen betroffen Meta Meta ist Quatsch nur wenn man einen Knoten im Hirn braucht nur zur Verwirrung der Leute M3 C A S E T O O L . . . M2 UMLClass UMLAssoc M1 Student Course M0 Albert SE II Jim SS Software Engineering 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 SS Software Engineering Albert Zündorf, University of Kassel

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

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

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

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

15 3. Repository Anforderungen Serialisierung XML - Formate Datenbanken
Coobra Speichern und Laden + Einfachheit ++ - Tool-Kopplung O Multi-User Support Versionierung -- Schema-Evolution ? Scaling SS Software Engineering Albert Zündorf, University of Kassel

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

17 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 FWT  direkter Aufruf von Operationen  Operationen beliebig gruppierbar (z.B. in Klasse StatechartEditor)  FWT Elemente benutzen direkt die API SS Software Engineering Albert Zündorf, University of Kassel

18 4. Commands Aufgabe Klasse StatechartEditor bauen
main Methode baut eine Instanz initGUI Methode baut Hauptfenster aus FWT Elementen erwartete Operationen / GUI Elemente: Load / Save Undo / Redo Create / Delete State Create / Delete Transition startDobs Unparsing später, wir schauen uns das im Dobs an SS Software Engineering Albert Zündorf, University of Kassel

19 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: Erzeugung von Darstellungselementen für Modell Synchronisation bei Änderungen SS Software Engineering Albert Zündorf, University of Kassel

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

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

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

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

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

25 GMF Übersicht SS Software Engineering Albert Zündorf, University of Kassel

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

27 Tooling Definition Toolbar Menüs …
SS Software Engineering Albert Zündorf, University of Kassel

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

29 Unparsing Summary SS Software Engineering Albert Zündorf, University of Kassel

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

31 Beispiel Petri Net: Uni-Party
Idea Orga Team Date Bands start corePlanning go findPeople Room increment teamParty Advertising Equipment DrinkingFood. wrapUP PartyTeam FireDep. celebrate party entry setUp closeIt begin open prepare detailing SS Software Engineering Albert Zündorf, University of Kassel

32 Nebenläufigkeit: corePlanning
Orga Team planing DatePlan BandPlan RoomPlan [failure] dateNegos bandNegos roomNegos DateFixed BandFixed RoomFixed Date [success] [success] reviewing Bands [success] Room SS Software Engineering Albert Zündorf, University of Kassel

33 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 einer In 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 b c t d e SS Software Engineering Albert Zündorf, University of Kassel

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

50 Empfohlene Template Engine
google for Velocity SS Software Engineering Albert Zündorf, University of Kassel

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


Herunterladen ppt "Software Engineering 2 – Konstruktion interaktiver (CASE) Tools"

Ähnliche Präsentationen


Google-Anzeigen