MDSD – Model Driven Software Development

Slides:



Advertisements
Ähnliche Präsentationen
Software Engeniering II
Advertisements

Forschungszentrum Informatik
Programmieren im Großen von Markus Schmidt und Benno Kröger.
Vortrag im Rahmen des Seminars Modellgetriebene Softwareentwicklung
Softwareentwicklung für Android
DI Christian Donner cd (at) donners.com
Übung 5 Mehrstufige Client/Server-Systeme mit Enterprise Java Beans
WS06/07Prof. Dr. Andreas Schmietendorf1 Programmierung von Client/Server- Anwendungen Übersicht zur Vorlesung.
Imperative Programmierung -Entwicklungswerkzeuge
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Vorstellung von PaderWAVE Generierung von Web-Anwendungen aus visuellen Spezifikationen Projektgruppe aus der Arbeitsgruppe Programmiersprachen & Übersetzer.
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
Java: Programmierung grafischer Oberflächen
Einführung in die Programmierung von 3D-Grafiken Basis ist Java3D
Java: Grundlagen der Sprache
DOM (Document Object Model)
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Christian Kästner Modellgetriebene Softwareentwicklung Eclipse Modelling Framework.
Seminar Modellgetriebene Softwareentwicklung Einführung Seminar modellgetriebene Softwareentwicklung WS 05/06 Dipl.-Inf. Nadine Fröhlich Prof. Dr.-Ing.
XDoclet ETIS SS05.
AWT – Detailbetrachtung Java 3D – Seminar im Wintersemester 2002/2003 Christian Schneider.
Programmieren mit JAVA
Introducing the .NET Framework
Software Engineering Seminar Metamodellierung
Remote Methode Invocation (RMI)
DVG1 - Applets1 Applets. DVG1 - Applets2 Die Klasse Applet n Applets sind Grafikobjekte, die unter Steuerung eines anderen Programms (z.B. eines Browsers,
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
© 2005 Pohlig GK Informatik K Zum JFrame Step by step by step by step by step by step by step by step by.
Web-Anwendungsentwicklung à la MVC. Übersicht Über Georg Heeg Ein industrielles Beispiel Web-Anwendungen aus Smalltalker-Sicht MVC für das Web Programmierdemo.
Systementwicklungsprojekt:
UML Begleitdokumentation des Projekts
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 7 Sitzung 7: User Interfaces in Java.
Coccon das Web-XML-Publishing System Thomas Haller.
Präsentation einer Codegenerator Softwarelösung objectiF.
University of Applied Sciences Übung Objektorientierte Programmierung II Dipl.-Inf. (FH) Markus Vogler.
Applets Java für’s Web.
Web Services Die Zukunft netzbasierter Applikationen iternum GmbH Alexanderstraße Frankfurt/Main
Letzter Tag Spaeter Zeitpunkt letzte Lied hoert man weiter.
Einführung / Geschichte Einführung / Geschichte Motivation Motivation Beispiel Beispiel Architektur / Komponenten Architektur / Komponenten Konfiguration.
CuP - Java Elfte Vorlesung Montag, 11. November 2002.
Einführung Modellgetriebene Softwareentwicklung, Metamodellierung Stephan Hildebrandt.
Hauptseminar Web Engineering – Semantic Web Dominik Pretzsch.
Übersicht Was ist cocoon? Separation of Concerns Pipeline Modell
Enterprise Achitect (Sparx Systems) Marius Rudolf
Eclipse Modeling Framework (EMF)
XML (Extensible Markup Language)
Von UML 1.4 zu UML 2.0 InfoPoint vom Mittwoch
22. Oktober 2007Martin Feldmann, 1 Bachelor-Thesis Entwicklung einer automatisierten Dokumentation von LabVIEW Quellcode für das Rahmenwerk.
Untersuchungen zur Erstellung eines
Generative Softwareentwicklung in der Praxis Olaf Kaus, „Java User Group“, Hannover 6.Oktober 2003.
Lightning Talk von Andreas Güntzel Model Driven Software Development CODE GENERIERUNG MIT ANY.
Web und Mobile Apps Programmieren Marco Jakob Kurzvortrag OSS an Schulen
Vortrag - Diplomarbeiten (HS I)
Java-Kurs Übung Benutzeroberflächen und Graphik Frames (Fenster)
Datenbanken im Web 1.
Java-Applets und URLs APP Philip Graf, Andreas Bößl.
Java Server Pages 2 und Benutzerdefinierte Tags Strahil Yordanov.
Seminar Modellgetriebene Softwareentwicklung XMI - XML Metadata Interchange Vortrag im Rahmen des Seminar Modellgetriebene Softwareentwicklung Mirko Otto.
XUML - executable UML Vortrag im Rahmen des Seminars zum Thema Modellgetriebene Softwareentwicklung René Heilmann.
Seminar Modellgetriebene Softwareentwicklung Thema 3: Metamodelle – MOF Michél Rieser Prof. Dr.-Ing. habil. Georg Paul
J2EE-Motivation(I) Anforderungen an heutige Software u.a.:
MDA – Model Driven Architecture
Java 2 Enterprise Edition (J2EE) Sascha Baumeister Software Architect Specification Lead JSR086 IBM Deutschland Entwicklung GmbH
Objektorientierte (OO) Programmierung
GUI Programmierung in Java Branimir Djordjevic. GUI - Wichtige Begriffe -  Die Swing-Bibliothek in Java stellt zum Beispiel die folgenden Windows zur.
Technische Universität München, Informatik XI Angewandte Informatik / Kooperative Systeme Verteilte Anwendungen: Entwurf Dr. Wolfgang Wörndl
Java-Kurs Übung Klassen und Objekte: Vererbung (Fortsetzung)
Methodische Grundlagen des Software-Engineering
 Präsentation transkript:

MDSD – Model Driven Software Development Vortrag im Rahmen des Seminars Modellgetriebene Softwareentwicklung Tobias Tischler

Inhalt Motivation Was ist MDSD? Aufbau der MDSD Ablauf Unterschiede zu MDA Zusammenfassung Ausblick Tobias Tischler Model Driven Software Development

Motivation am Beispiel „Hello World“ I In BASIC Print “Hello World!“ In PASCAL program HelloWorld(output); begin writeln('Hello World!'); end. Tobias Tischler Model Driven Software Development

Motivation am Beispiel „Hello World“ II In JAVA import java.awt.*; import java.awt.event.*; public class HelloWorldApp extends Frame { public static void main(String args[ ]) { HelloWorldApp app = new HelloWorldApp(); } public HelloWorldApp() { super("HelloWorld!"); setSize(200,200); addWindowListener(new HelloWorldApp.WindowEventHandler()); show(); public void paint(Graphics g) { g.drawString("Hello World!",60,90); classWindowEventHandler extendsWindowAdapter { public void windowClosing(WindowEvent e) { System.exit(0); Tobias Tischler Model Driven Software Development

Motivation am Beispiel „Hello World“ III Als J2EE/EJB-Anwendung Präsentationsschicht Anwendungs- Schicht Daten- Schicht Client- Schicht Web- Schicht Daten- bank Web- Client Web-Container EJB-Container Hello World JSP EJB Anwen- dungs- Client Servlet Daten- bank EJB Tobias Tischler Model Driven Software Development

Motivation am Beispiel „Hello World“ IV Als J2EE/EJB-Anwendung • Installation der EJB-Infrastruktur • Erzeugung der Bean Klasse • Erzeugung der EJB-Schnittstellen • Erzeugung der Meta-Informationen • Kompilierung der EJB • Packen der EJB • Installation der EJB • Erzeugung der Client-Applikation • Kompilierung der Client-Applikation • Starten der Anwendung Anwendungsschicht Client-Schicht Tobias Tischler Model Driven Software Development

Motivation am Beispiel „Hello World“ V Assembler Höhere Programmiersprachen Modellierungssprachen nicht objektorientiert objektorientiert/ fensterbasiert komponenten- orientiert MDSD/MDA- basiert Intel 4004 Intel 8080 Zilog Z80 etc. BASIC PASCAL C etc. JAVA C++ C# etc. J2EE/EJB CORBA .NET etc. UML CWM DSL etc. einige Hundert 1-5 15-20 einige Hundert einige wenige Programmzeilen Modellierungselemente Tobias Tischler Model Driven Software Development

Motivation VI Software ist kritischer Bestandteil vieler technologie- und servicebasierter Unternehmen  Software muss produktiver entwickelt werden Anwendungsarchitektur: konsistent und offen Abhängigkeiten: besseres Management nötig Zeitmanagement ändern (Dokus, Systemfamilien) „Modellbasiert“ gibt nur mittelbaren Nutzen (sehr sorgfältige Dokumentation und Interpretation nötig) Tobias Tischler Model Driven Software Development

Was ist MDSD? I Software wird teilweise oder vollständig aus Modellen generiert  Modell = Code wiederholte Generierung möglich  kein Code-Wizard bzw. Pattern-Expander iterative Entwicklung durch Trennung von Infrastruktur und Anwendungslogik Entwicklungsteam legt Sprache und Übersetzer fest: es werden auch „Software-Fabriken“ entwickelt (Infrastrukturen, um SW zu entwickeln) Tobias Tischler Model Driven Software Development

Was ist MDSD? II Ziele: Verringerung der Entwicklungszeit durch Automation Wiederverwendbarkeit erhöhen durch Bereitstellung praktisch einsetzbarer Bausteine für Softwareentwicklungs-prozess Wartbarkeit und Softwarequalität steigern Separation of Concerns Handhabbarkeit von Komplexität durch Abstraktion gewährleisten Tobias Tischler Model Driven Software Development

Aufbau der MDSD I für modellgetriebene Softwareentwicklung werden benötigt: formale, abstrakte Modelle und Domänen Plattform(en) Transformationen manuelle Ergänzungen Wie Schritt von Assembler zu prozeduralen Sprachen Tobias Tischler Model Driven Software Development

Aufbau der MDSD II Domäne und Modell beschreibt den Problemraum (begrenztes Interessen- / Wissensgebiet) kann technisch und fachlich motiviert sein unterteilbar in Subdomänen (z.B.: GUI-Layout, Persistenz) und Partitionen (z.B.: Nutzerverwaltung, Wissens-DB) beschrieben durch Domain-Specific Language (DSL) Abstrakte Syntax: Metamodell Konkrete Syntax: textuell, grafisch, tabellarisch, … Semantik: transformationell definiert (Abbildung auf 3GL) Erstellung durch UML-Profile Neuaufbau anhand des Metamodells Tobias Tischler Model Driven Software Development

<<abstract>> Aufbau der MDSD III Plattform stützt den Lösungsraum erleichtert die Transformationen stellt Dienste und Bausteine zur Verfügung DSL ermöglicht deren richtige und effiziente Verwendung unterstützt Domäne Plattform 0..* basiert auf <<abstract>> Baustein Middleware Bibliothek Framework Komponente Aspekt Tobias Tischler Model Driven Software Development

Aufbau der MDSD IV Transformationen Modell-zu-Modell-Transformation müssen oft alle Aspekte des Systems berücksichtigen  bei mehreren DSLs ein gemeinsames Metamodell nötig können in mehreren Schritten erfolgen es gibt 2 Arten Modell-zu-Modell-Transformation beschreibt Abbildung der Konstrukte eines Quell-Metamodells auf ein Ziel-Metamodell Modell-zu-Plattform(bzw. Code)-Transformation generiert Artefakte, die sich auf Plattform stützen (z.B.: Quellcode) Ziel-Metamodell nicht nötig, da meist Makroexpansionen (z.B. durch Templates) Tobias Tischler Model Driven Software Development

Aufbau der MDSD V manuelle Ergänzungen wenn Modellierung zu aufwendig bzw. nicht durch DSL ausdrückbar um performanceoptimierten Code zu erzeugen manuell erzeugter Code ist von generiertem zu trennen geschützte Bereiche generiertes Interfaces wird manuell implementiert generierte abstrakte Klassen werden manuell erweitert am besten auch technische Trennung (speichern in anderen Dateien oder Verzeichnisbäumen) Lesbarkeit gewährleisten (Pretty Printer / Beautifier) Tobias Tischler Model Driven Software Development

Aufbau der MDSD V Abstrakte Klassen geschützte Bereiche public abstract class Account { int balance; public final void increase( int amount ) { int balance_atPre = balance; // postcondition increase_internal( amount ); assert( balance >= balance_atPre + amount ); // postcond. } protected abstract void increase_internal( int amount ); geschützte Bereiche public void increase( int amount) { int balance_atPre = balance; // postcondition // --- protected area begin 001 --- // insert your code here // --- protected area end 001 --- assert( balance >= balance_atPre + amount ); // postcondition Tobias Tischler Model Driven Software Development

Ablauf Domäne festlegen / bestimmen und evtl. aufteilen DSL entwickeln Modell entwickeln (Applikationsfunktionalität und nicht programmiersprachliche Abstraktionen) Templates schreiben für die Code-Generierung Modell in maschinenlesbares Format transformieren (XMI) Quellcode erzeugen Anwendungslogik ergänzen Iteration der Schritte Tobias Tischler Model Driven Software Development

Unterschiede zu MDA MDA ist „eine Standardisierungsinitiative der OMG zum Thema MDSD“ Metamodell ist MOF DSL muss mit MOF definiert werden Präzisierung von Modellen mittels OCL (Object Constraint Language) bzw. Action Semantics (seit UML 2.0) Transformationssprachen werden durch QVT-RFP (Query / Views / Transformations) festgelegt MDA: Interoperabilität und Portabilität MDSD: praktisch einsetzbare Bausteine Tobias Tischler Model Driven Software Development

Zusammenfassung Einführung ist zeit- und kostenintensiv Erstellung eines neuen Projektes ist aufwändiger erzeugter Code ist gleichmäßig strukturiert Wiederverwendbarkeit von Komponenten amortisiert dies (System-Familien) Trennung der Aufgabenbereiche fördert Expertenwissen schnelle Validation durch Kunden möglich Technologiewechsel werden vereinfacht Tobias Tischler Model Driven Software Development

Ausblick Werkzeuge zur Modell-Verwaltung entwickeln Erstellung der DSLs noch nicht praktikabel Modelltransformations- und Templatesprachen müssen ihre Toolbindung aufheben Ob QVT-RFP befriedigende Resultate liefert, weiß niemand Debugger auf Modellebene wünschenswert Mentalität der Entwickler und Programmierer muss sich noch ändern Tobias Tischler Model Driven Software Development

Quellen Stahl, T., Völter, M.: Modellgetriebene Software-entwicklung. dpunkt.verlag, 1. Auflage 2005 http://www.voelter.de/services/mdsd.html http://www.bptrends.com/publicationfiles/04-04 COL MDSD Frankel - Bettin - Cook.pdf http://www.sigs.de/publications/os/2004/MDD/bettin_MDD_2004.pdf www.voelter.de/data/articles/MDSD.pdf http://www.microtool.de/mt/pdf/company/49/mdd_objektspektrum_2005.pdf http://www.irf.uni-karlsruhe.de/esys-sw/seiten/skript/esys-sw_v9.pdf Tobias Tischler Model Driven Software Development

Vielen Dank Tobias Tischler Model Driven Software Development