660 likes | 767 Views
WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software Engineering. Software Engineering 2 – Konstruktion interaktiver (CASE) Tools. Administratives. Vorlesung: Montags 15-18 Uhr Raum 1340 (4 SWS)
E N D
WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software Engineering Software Engineering 2 – Konstruktion interaktiver (CASE) Tools
Administratives • Vorlesung: Montags 15-18 Uhr Raum 1340 (4 SWS) • Prüfung: Projektarbeit (wir basteln uns ein Objekt Diagramm Tool) SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
Überblick • Referenzarchitektur • Meta-Modell • Unparsing • Commands • Repository • Austauschformate • Checking • Code Generierung SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
Repository Meta Model GUI(Commands) Generators / Interpreters QVT Import/ Export GUI(Unparsing) 1. Referenzarchitektur SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
2. Meta-modell • abstrakter Syntaxgraph (ASG) • logische Datenstruktur hinter der Darstellung am Bildschirm • speichert Editoreingaben • beschrieben durch Klassendiagramm X File Edit Tools SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
2. Meta-modell • abstrakter Syntaxgraph (ASG) • logische Datenstruktur hinter der Darstellung am Bildschirm • speichert Editoreingaben • beschrieben durch Klassendiagramm X File Edit Tools SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
2. Meta-modell • abstrakter Syntaxgraph (ASG) • logische Datenstruktur hinter der Darstellung am Bildschirm • speichert Editoreingaben • beschrieben durch Klassendiagramm X File Edit Tools SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
2. Meta-modell SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
Meta Meta Meta SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
Time Levels library development time tool development time development time runtime SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
Repository Meta Model GUI(Commands) Generators / Interpreters QVT Import/ Export GUI(Unparsing) 1. Referenzarchitektur SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
The Object Diagram Model WS 12/13 Software Engineering 2 Albert Zündorf, University of Kassel
The Object Diagram Model WS 12/13 Software Engineering 2 Albert Zündorf, University of Kassel
3. 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 2007 Software Engineering 2 Albert Zündorf, University of Kassel
Bildschirmdarstellung vs. interne Struktur Model Update Action GUI View SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
… The GMF Way (1) Model 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 2007 Software Engineering 2 Albert Zündorf, University of Kassel
View-Update: Model-View-Controller Model • Model • weiß nichts über View • Notification Mechanism • View • weiß nichts über Model • Controller • Bringt beides zusammen… setName(„myPlace“) firePropertyChange(…) Interface c2:Controller c1:Controller Controller setGraphicalPropertyX() … Interface setText(„myPlace“) View SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
Interface Interface … The GMF Way (2) Model z.B. EMF 1:1 create() Action ControllerGEF „1:1“ create() setGraphicalPropertyX() … Draw2DFigures View SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
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 2007 Software Engineering 2 Albert Zündorf, University of Kassel
GMF Übersicht SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
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 2007 Software Engineering 2 Albert Zündorf, University of Kassel
Tooling Definition • Toolbar • Menüs • … SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
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 2007 Software Engineering 2 Albert Zündorf, University of Kassel
Eugenia • GMF ist immer noch zu kompliziert • Eugenia: • Annotation des Klassendiagramm • Generierung der GMF Konfigurationen Siehe Übung SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
Unparsing Summary SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
Repository Meta Model GUI(Commands) Generators / Interpreters QVT Import/ Export GUI(Unparsing) 1. Referenzarchitektur SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
4. Commands • Operationen auf der logischen Objektstruktur (EMF Modell) • Konsistenzanalysen • Refactorings • komplexe Editor Kommandos • Code Generierung • Aktionen hinter Menüpunkten und Buttons • Viele Buttons/Menüpunkte für ein Kommando denkbar • Undo/Redo Einheiten SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
4. Commands Aufgabe • Konsistenzanalysen: • Name ist Java Identifier • Genau ein Start • jede Aktion von Start aus erreichbar • Refactorings: • Start to Task • Task to Start • Split Task to Task – Flow – Task • Split Fow to Flow – Task – Flow • Join Task – Flow – Task to Task • Join Flow – Task – Flow to Flow SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
Repository Meta Model GUI(Commands) Generators / Interpreters QVT Import/ Export GUI(Unparsing) 1. Referenzarchitektur SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
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 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
3. Repository XML-Formate • generische Lade-/Speicher Routinen per Java Reflection • bestimmen aller Objekte die gespeichert werden sollen( Composite Struktur) • JDom / Xerces Basistechnologie(beherschbar) SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
3. Repository Relationale Datenbanken • Objekte und Beziehungen werden als Tupel in Datenbanktabellen gespeichert • Zugriff per ODBC • Middleware (z.B. JPA) • Multi-User Betrieb durch Datenbank Sperrkonzepte und Transaktionen • pessimistische Sperren • Caching schwierig SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
3. Repository Coobra2: 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 SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
3. Repository SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
Repository Meta Model GUI(Commands) Generators / Interpreters QVT Import/ Export GUI(Unparsing) 1. Referenzarchitektur SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
Simulation / Interpreter SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
Simulation SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
Simulation SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
Repository Meta Model GUI(Commands) Generators / Interpreters QVT Import/ Export GUI(Unparsing) 1. Referenzarchitektur SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
Beispiel Petri Net: Uni-Party Idea OrgaTeam Date Bands corePlanning go start findPeople Room increment teamParty Advertising Equipment DrinkingFood. wrapUP PartyTeam FireDep. celebrate party entry setUp closeIt begin open prepare detailing SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
Nebenläufigkeit: corePlanning OrgaTeam planing DatePlan BandPlan RoomPlan [failure] dateNegos bandNegos roomNegos DateFixed BandFixed RoomFixed Date [success] [success] Bands reviewing [success] Room SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
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 einerIn 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 2007 Software Engineering 2 Albert Zündorf, University of Kassel
Repository Meta Model GUI(Commands) Generators / Interpreters QVT Import/ Export GUI(Unparsing) 1. Referenzarchitektur SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
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 2007 Software Engineering 2 Albert Zündorf, University of Kassel
elementare Konsistenzanalysen: • Stellen und Transitionen eindeutig benannt • jede Transition hat mind. eine In und eine Out Stelle • jede Stelle hat mindestens eine Transition SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
inhaltliche Konsistenzanalysen: • jede Input Stelle trägt zu mind. einer Output stelle bei • jede Output Stelle wird von mind. einer Input Stelle versorgt SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel
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 2007 Software Engineering 2 Albert Zündorf, University of Kassel
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 2007 Software Engineering 2 Albert Zündorf, University of Kassel
Refactorings: merge Places • fasse zwei Stellen zu einer zusammen • Name der ersten • Transitionen von beiden SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel