Software Engineering 2 – Konstruktion interaktiver (CASE) Tools

Slides:



Advertisements
Ähnliche Präsentationen
Object Relational Mapping
Advertisements

1 Gerardo Navarro Suarez BPM Suite. 2 Quelle: camunda Services GmbH Das Warum hinter Activiti Problem bestehender BPMS: Starker Fokus auf das Business.
Software Engineering 2 Übung – Konstruktion interaktiver (CASE) Tools SS 2007 Leif Geiger, Carsten Reckord, Software Engineering.
Modellgetriebene Softwareentwicklung
Ruby on Rails im Überblick
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
Java: Grundlagen der Sprache
XINDICE The Apache XML Project Name: Jacqueline Langhorst
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 6 Model-View-Controler als Grundlage für Nutzerschnittstellen Sommersemester 2003 Lars Bernard.
XForms Von Matthias Keck.
Christian Kästner Modellgetriebene Softwareentwicklung Eclipse Modelling Framework.
XDoclet ETIS SS05.
Explizite und editierbare Metainformationen für Software Muster.
3. Klassendiagramme in Java implementieren
Projekt Web Engineering
Software Engineering 2 – Konstruktion interaktiver (CASE) Tools SS 2006 Albert Zündorf, Software Engineering.
Software Engineering 2 – Konstruktion interaktiver (CASE) Tools
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 6. Story Driven Modeling Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Software Engineering Seminar Metamodellierung
Software Engineering 2 – Konstruktion interaktiver (CASE) Tools SS 2007 Albert Zündorf, Software Engineering.
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
1 Reverse Engineering WS 07 / 08 A. Zündorf. Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University 2 Organisatorisches.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 09 / 10 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Geiger, Software.
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Test Summary: m ein Fehler pro Tag m Test First m Funktionstests.
Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 10 / 11 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Geiger, Software.
Software Engineering 2 – Konstruktion interaktiver (CASE) Tools
Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 13 / 14 Vorlesung: Albert Zündorf, Software Engineering Übungen: Andreas Scharf, Software.
Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 10 / 11 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Geiger, Software.
Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt.
CRM Editor auf der Basis von Qt (Beispiel von Ubi erat Lupa)
UML Begleitdokumentation des Projekts
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 6 Sitzung 6: Model-View-Controller als Grundlage.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 7 Sitzung 7: User Interfaces in Java.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Client Architecture Data Model GUI KI Socket Connection.
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Test Summary: m ein Fehler pro Tag m Test First m Funktionstests.
Software Engineering 2 – Konstruktion interaktiver (CASE) Tools WS 10 / 11 Vorlesung: Albert Zündorf, Software Engineering Übungen: Nina Geiger, Software.
Erweiterung von EMF Refactor um Update Funktionalität in grafischen Editoren Thorsten Arendt, AG Taentzer, SWT FoPra-Vorstellung, 19. April 2012.
Wir bauen uns eine Webapplikation!
Letzter Tag Spaeter Zeitpunkt letzte Lied hoert man weiter.
MDA – Framework AndroMDA
Einführung / Geschichte Einführung / Geschichte Motivation Motivation Beispiel Beispiel Architektur / Komponenten Architektur / Komponenten Konfiguration.
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 9 Folie 2 ADO.NET (1) Klassen für Zugriffe.
Sesame Florian Mayrhuber
Einführung Modellgetriebene Softwareentwicklung, Metamodellierung Stephan Hildebrandt.
Getting Started Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Eclipse Modeling Framework (EMF)
Von UML 1.4 zu UML 2.0 InfoPoint vom Mittwoch
Generative Softwareentwicklung in der Praxis Olaf Kaus, „Java User Group“, Hannover 6.Oktober 2003.
Visual Age und Rational Rose Daniel Faensen. 2 Übersicht  Integration Rational Rose und VisualAge (Forward / Reverse Engineering)  Team-Unterstützung.
Seminar Modellgetriebene Softwareentwicklung XMI - XML Metadata Interchange Vortrag im Rahmen des Seminar Modellgetriebene Softwareentwicklung Mirko Otto.
Seminar Modellgetriebene Softwareentwicklung Thema 3: Metamodelle – MOF Michél Rieser Prof. Dr.-Ing. habil. Georg Paul
Neukonzeptionierung des SVNCheckers > Malte Legenhausen > DLR > Folie 1 Observer - Pattern Malte Legenhausen, Robert Werschnitzke Asea Brown.
Oracle ADF FacesSeite 1 Oracle ADF Faces OPITZ CONSULTING Oracles Implementierung der JavaServer Faces Spezifikation.
Anforderungen an die neue Datenstruktur
6. Story Driven Modeling Gliederung: Einführung
Schlange und Stapel.
Dynamisches Laden von Klassen
Vorlesung #4 Überführung des ER-Modells in das relationale Modell
7th German CDISC User Group Basel, 11. März 2010
Raphael Fischer Informatik II - Übung 06 Raphael Fischer
SS 04 Christiane Rauh Christian Hellinger
Methodische Grundlagen des Software-Engineering
1. Die rekursive Datenstruktur Liste 1
Datenstrukturen und Softwareentwicklung
Test Summary: ein Fehler pro Tag Test First
Informatik Softwareentwicklung – 4.3 Entwurfsmuster
Schmock Mutter nicht ausreichend versorgt  fast verhungert Mutter bei Geburt verstorben Schmock mit Flasche aufgezogen.
 Präsentation transkript:

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

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

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

Generators / Interpreters 1. Referenzarchitektur QVT Generators / Interpreters GUI (Commands) Meta Model GUI (Unparsing) Import/ Export Repository 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 File Edit Tools X 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

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

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

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

linguistic instance-of ontological instance-of Nach Atkinson Kühne: Model-Driven Development: A Metamodeling Foundation; IEEE Software linguistic instance-of ontological instance-of beide Dimensionen gleichberechtigt? 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 Anforderungen Serialisierung Speichern und Laden + Einfachheit ++ Tool-Kopplung O Multi-User Support - Versionierung -- Schema-Evolution ? Scaling 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) Anforderungen XML - Formate Speichern und Laden + Einfachheit Tool-Kopplung Multi-User Support - Versionierung -- Schema-Evolution Scaling 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 Anforderungen Datenbanken Speichern und Laden + Einfachheit - Tool-Kopplung Multi-User Support Versionierung Schema-Evolution Scaling ++ 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 Anforderungen Coobra Speichern und Laden + Einfachheit ++ Tool-Kopplung Multi-User Support Versionierung Schema-Evolution Scaling - SS 2007 Software Engineering 2 Albert Zündorf, University of Kassel

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Nebenläufigkeit: corePlanning Orga Team planing DatePlan BandPlan RoomPlan [failure] dateNegos bandNegos roomNegos DateFixed BandFixed RoomFixed Date [success] [success] reviewing Bands [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 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 2007 Software Engineering 2 Albert Zündorf, University of Kassel

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

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

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

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

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

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

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

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

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

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

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

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