1 / 22

MDSD – Model Driven Software Development

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. Motivation am Beispiel „Hello World“ I. In BASIC

Albert_Lan
Download Presentation

MDSD – Model Driven Software Development

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Inhalt • Motivation • Was ist MDSD? • Aufbau der MDSD • Ablauf • Unterschiede zu MDA • Zusammenfassung • Ausblick Tobias Tischler

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

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

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

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

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

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

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

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

  11. Aufbau der MDSD I • für modellgetriebene Softwareentwicklung werden benötigt: • formale, abstrakte Modelle und Domänen • Plattform(en) • Transformationen • manuelle Ergänzungen Tobias Tischler

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

  13. 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 Plattform Domäne 0..* basiert auf <<abstract>> Baustein Middleware Bibliothek Framework Komponente Aspekt Tobias Tischler

  14. Aufbau der MDSD IV • Transformationen • 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

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

  16. Aufbau der MDSD V • Abstrakte Klassen 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

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

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

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

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

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

  22. Vielen Dank Tobias Tischler

More Related