Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Software Engineering 2 – Konstruktion interaktiver (CASE) Tools SS 2007 Albert Zündorf, Software Engineering."—  Präsentation transkript:

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

2 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 2 Administratives m Vorlesung: Montags Uhr Raum 1342 (4SWS) m Prüfung: Projektarbeit (wir basteln uns ein (Petri-Netz) 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 out = f (in); [out.x < 20] [out.x > 10] out.x = in.x + 1;

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

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 m M0: Objekte / Instanzen zur Laufzeit (Jim, GET-Vorlesung) m M1: Modell Diagramme die der Benuzter eingibt (Student, Vorlesung,...) (oft UML) m M2: Meta-Modell: Klassendiagramm, dass Benuterzdiagramm beschreibt / Tool Ebene (mit UML oder MOF) m M3: Wer beschreibt das Meta-Modell? Meta-Meta Modell (meist MOF, MOF ist selbstbeschreibend M n+1 = M n ) aus Sicht des Tool-Bauers ist M3 Quatsch M3 braucht man nur um sich einen Knoten ins Hirn zu machen

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

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

12 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. Hibernate) 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++

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

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

15 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

16 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 Coobra FWT direkter Aufruf von Operationen Operationen beliebig gruppierbar (z.B. in Klasse StatechartEditor) FWT Elemente benutzen direkt die API

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

18 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 Swing Elementen m Unparsing: Erzeugung der Darstellung aus dem Metamodell

19 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 19 Bildschirmdarstellung vs. interne Struktur Model Controller View

20 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 20 Aufbau eines Beispiels

21 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 21 Erzeugen der Darstellung

22 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 22 Erzeugen der Darstellung

23 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 23 Erzeugen der Darstellung

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

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

26 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 26 Some Classes you may need...

27 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 27 Unparsing Summary m Suuuper aufwändig (da sollte mal jemand etwas tun...) und die Model-Change-Listener fehlen noch m Eclipse GEF: etwas komfortabler aber viel Einarbeitung m Fujaba FSA: beta aber generische Listener m FWT: pre-alpha m aktuelles Projekt: Trimos

28 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 28 Vorgehensweise 1. JUnit Test zur Erzeugung eines einfachen Statecharts 2. Fenster von letzter Woche öffnen 3. createUI Methode für States schreiben 4. Attribut-Updater schreiben 5. MouseListener schreiben 6. Model Change Listener schreiben 7. createUI Methode für States um Listener erweitern 8. JConnector von der Vorlesungsseite holen 9. createUI Methode für Transitions schreiben 10. Model Change Listener schreiben 11. JConnector um Pfeilspitze und JTextField erweitern 12. createUI Methode für Transitions um Listener erweitern 13. mich beeindruckt sehen

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

30 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 30 Interpreter 1. Stufe: m Metamodell um Ausführungsinformation erweitern: l Interpreter Objekt l Zeiger auf aktuellen Zustand l handleEvent-Methode: l Transition suchen l Guards prüfen l Zustand wechseln l Aktionen ausführen

31 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 31 Probleme m Statechart-Semantiken sucht euch eine aus

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

33 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 33 Asynchrone Nachrichten / mehrere Statecharts m state DialTone, dial (1) Event, call (1) geht an uns selbst, was passiert?

34 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 34 Asynchrone Nachrichten / mehrere Statecharts (cont.) Synchrone Eventverarbeitung: m Zustand bei re-entrant Transition-Aktionen oder Entry / Do Aktionen unklar m Zustand wird eventuell verlassen bevor Do Aktion ausführbar m... Asynchrone Eventverarbeitung: m Events werden in Queue abgelegt m Queue wird nebenläufig abgearbeitet

35 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 35 Asynchrone Nachrichten / mehrere Statecharts (cont. 2) m Zusätzliches Scheduler Objekt / Klasse m Scheduler hat viele Statechart-Interpreter m Jeder Statechart-Interpreter hat Event-Queue m Jeder Statechart-Interpreter hat event(e) Methode, die Events in die Queue ablegen m Scheduler ruft reihum die handleEvent Methode auf den Interpretern m Actions sollten Events nicht Broadcasten sondern gezielt ausliefern: statechart1.event("a")

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

38 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 38 Template basierte Code Generierung class $state.name extends $state.super.name { #foreach ( $trans in $state.exitTransitions) public void $trans.name () { // change to target state owner.setCurrentState ($trans.targetState); owner.getCurrent ().doAction(); }

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

40 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 40 Implementierung von Statecharts (schwierig) m switch case: public handleEvent(int e) { switch (currentState) { case ROT: switch (e) { case NEXT: currentState = ROTGELB; break;... } break; case ROTGELB:... rot grün gelbrotgelb next

41 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 41 Implementierung von Statecharts (leicht) m State Design Pattern: class Rot extends BasicState { public void next () { owner.setState(new RotGelb ()); owner.getState().doAction(); } } rot grün gelbrotgelb next

42 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 42 Implementierung von Statecharts (leicht) rot grün gelbrotgelb next BaseState next() Rot next() RotGelb next() Owner current owner

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

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

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

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

47 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel 47 Refactorings: flatten Statechart

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

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

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


Herunterladen ppt "Software Engineering 2 – Konstruktion interaktiver (CASE) Tools SS 2007 Albert Zündorf, Software Engineering."

Ähnliche Präsentationen


Google-Anzeigen