Modellgetriebene Softwareentwicklung (Model Driven Software Development - MDSD) SS 2014



Ähnliche Dokumente
Model Driven Development im Überblick

Vortrag von: Ilias Agorakis & Robert Roginer

Model Driven Architecture Praxisbeispiel

Current Workflow. formatted. Rules. Extensions. Rules. DOM processing with Meta API-calls. Code Generation (Smarty) XMLfile. Source code.

Model Driven Architecture (MDA)

Was ist EMF? Wie wird EMF eingesetzt? Was ist ecore? Das Generatormodell Fazit

Einführung in Generatives Programmieren. Bastian Molkenthin

Modellgetriebene Entwicklungsprozesse in der Praxis - eine Bestandsaufnahme. Tillmann Schall, anaptecs GmbH

Beispielhaft MDSD in der Praxis. Dr. Shota Okujava

Inhalt. Motivation Techniken des MDE. Fallbeispiele

Einführung in modellgetriebene Softwareentwicklung. 24. Oktober 2012

Model Driven Architecture

Generatives Programmieren

Systemdenken und Gestaltungsmethodik System-Modellierung

Themen. Software Design and Quality Group Institute for Program Structures and Data Organization

Ein Erfahrungsbericht beim Einsatz von generierenden Ansätzen im Vergleich zu generischen Lösungen

Comparing Software Factories and Software Product Lines

ActiveCharts. Verknüpfung von Modellen und Code bei der modellgetriebenen Softwareentwicklung mit UML 2.0

Ein hierarchischer, modellgetriebener Ansatz zur Codegenerierung. R. Gitzel, M. Schwind

SEA. Modellgetriebene Softwareentwicklung in der BA

Modell/Metamodell. Generated Source Code. Generator. Model. Fakultät für Informatik und Wirtschaftsinformatik MDSD - SS 2014

Modellgetriebene Service-Entwicklung

b+m Informatik AG Langlebige und zukunftsfähige modellgetriebene Softwaresysteme? Thomas Stahl b+m Informatik AG

Modellbasierte Softwareentwicklung

Model Driven Architecture

A Domain Specific Language for Project Execution Models

Einführung und Motivation

Entwicklung einer formalen Sprache zur Modelltransformation auf Basis von UML & XMI

Faktor-IPS. Modellgetriebene Softwareentwicklung mit Faktor-IPS. Faktor Zehn AG. Seite 1

Dr. Hanno Schauer Mons-Tabor-Gymnasium Montabaur. UML-Klassendiagramme als Werkzeug im Unterricht

SEW Übung EMFText. 1 Aufgabe. 2 Domänenbeschreibung. 3 Installation von Eclipse/EMFText. 4 Schritt-für-Schritt Anleitung. 4.

Agile Softwareentwicklung

Über den Unterschied zwischen Business Analysis und Requirements Engineering & Management

Die MID ModellierungsMethodik M³ ein Baukasten für Produktlinien. Andreas Ditze, MDD & PL 2009, Leipzig,

Vorgetragen von. Sanaz Mostowfi Anna Polovets Mandy Neumann

Software Projekt 2 / Gruppe Knauth Lernziele:

Language Workbench. Aktuelle Themen der Softwaretechnologie. Vortrag von: Arthur Rehm Steven Cardoso. Betreut von: Prof. Dr.

INNOVATOR im Entwicklungsprozess

Individuelle Erweiterung des generierten Codes. 16. Januar 2013

Eclipse Plugins für die komfortablere Verwendung von ibatis SQLMaps

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

WEBAPPLIKATIONEN MIT PHP. Wo gibt es Hilfe? Wie fang ich an?

Übungen zur Softwaretechnik

5. Business Rules Der Business Rules Ansatz. 5. Business Rules. Grundbegriffe um Umfeld von Business-Rule-Management-Systemen kennen und

Ein subjektiver Vergleich zwischen SSIS und Kettle mit Ausblick auf die Generierung von BI-Lösungen

MDA MDA mit mit Open-Source-Software Eine Eine Bestandsaufnahme

Software Factories SS Prof. Dr. Dirk Müller. 3 Modellgetriebene Softwareentwicklung

Product Line Engineering (PLE)

Seamless Model-based Engineering of a Reactive System

Naked-FHIR. Code-Generierung auf Basis von HL7 FHIR Andreas Schuler, MSc. Textmasterformate durch Klicken bearbeiten

Informationswirtschaft 2: Überblick

MDA-Praktikum, Einführung

Software-Architektur. Spektrum k_/takademischht VERLAG

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Die Softwareentwicklungsphasen!

UML-DSLs effizient eingesetzt. Insight 07, Klaus Weber

Qualitätsmanagement im Projekt

Das Metamodell der UML und in FUJABA. Vortrag von Alexander Geburzi

Benötigen wir einen Certified Maintainer?

Definition von domänenspezifischen Sprachen mit Xtext: Einführung. 19. November 2014

Institut für Telematik Universität zu Lübeck. Programmieren. Kapitel 0: Organisatorisches. Wintersemester 2008/2009. Prof. Dr.

Software-Qualität im Rahmen modellgetriebener Softwareentwicklung

Informationssystemanalyse Lebenszyklusmodelle 3 1. Lebenszyklusmodelle sollen hauptsächlich drei Aufgaben erfüllen:

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Software Engineering: Aktuelle Herausforderungen und Chancen

Java: Vererbung. Teil 3: super()

Informationssystemanalyse Problemstellung 2 1. Trotz aller Methoden, Techniken usw. zeigen Untersuchungen sehr negative Ergebnisse:

Aufgaben eines Codegenerators

Jochen Bauer

Neue Funktionen in Innovator 11 R5

Business Application Framework für SharePoint Der Kern aller PSC-Lösungen

Umfrage zum Informationsbedarf im Requirements Engineering

FRAGEBOGEN ANWENDUNG DES ECOPROWINE SELBSTBEWERTUNG-TOOLS

Dokumentation für die Software-Wartung

MDSD Einführung und Überblick

Übungsklausur vom 7. Dez. 2007

Der frühe Tester fängt den Bug

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016

Erfolgreiche Realisierung von grossen Softwareprojekten

Agile Software Development

Software Engineering II

Modellgetriebene Softwareentwicklung und deren Auswirkung auf die Entwicklungsmethodologie von Standardsoftware

Model-Driven Development in Scrum-Projekten

Anforderungen an die HIS

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

SERVICE SUCHE ZUR UNTERSTÜTZUNG

10 Jahre agile Softwareentwicklung Wie erwachsen sind wir geworden?

Einführung in Eclipse und Java

Code-Erzeugung aus UML-Klassendiagrammen

Innovator 11 classix. Erweiterter XMI-Export aus Innovator Business und Object classix. HowTo.

Predictive Modeling Markup Language. Thomas Morandell

Software Systems Engineering

Transkript:

Modellgetriebene Softwareentwicklung (Model Driven Software Development - MDSD) SS 2014 Wahlpflichtfach (2 SWS) für Bachelor Andreas Schmidt Einführung/Organisation 1/19

Ziele der Vorlesung Vorstellung der prinzipiellen Funktionsweise von Softwaregeneratoren Teilnehmer sollen danach in der Lage sein... existierende Generatoren einzusetzen...eigene Generatoren für ihre Bedürfnisse selbst zu entwickeln Andreas Schmidt Einführung/Organisation 2/19

MDSD - Was ist das? Model Driven Software Development (MDSD) Teilweise oder vollständige Generierung von Software aus Modellen Modelle repräsentieren/beschreiben den Problemraum Modelle werden durch Transformationen in weitere Modelle oder Quellcode umgewandelt wie sehen Modelle aus? abstrakte und formale Beschreibung (ohne implementationsspezifische Details) einer Problemstellung (Domäne) Repräsentiert durch: - Text - XML - graphische Repräsentation Ziel: Generierung von 20% - 80% des Quellcodes einer Anwendung Andreas Schmidt Einführung/Organisation 3/19

prinzipielle Funktionsweise bei der MDSD Interpreter Modell Generator Quellcode Compiler Templates/ Transformationsregeln lauffähiges Programm Andreas Schmidt Einführung/Organisation 4/19

Vorteile der Generierung von Software Höhere Produktivität langweilige Teile der Anwendung können generiert werden Geringere Reaktionszeit bei Designänderungen oder Change Requirements Höhere Qualität Die Transformationsregeln bestimmen die Qualität des Quellcodes Meist bessere Architektur als bei von Hand entwickelten Anwendungen Architektur ebenfalls in den Abbildungsregeln definiert Automatische Transformationen (keine Flüchtigkeitsfehler) liegt ein Fehler in den Abbbildungsregeln so tritt dieser an allen Stellen auf an denen die Abbildungsregel eingesetzt wird Andreas Schmidt Einführung/Organisation 5/19

Vorteile der Generierung von Software Höhere Abstraktion Model stellt eine abstrakte Beschreibung der Anwendung dar Bessere Integration von Fachexperten Einfacher Übergang zu neuer Technologie (Ändern der Transformationsregeln) Wiederverwendung von eimal erstellten Transformationsregeln (software factories) Einfacherer Umgang mit der Komplexität (Reduktion aufs wesentliche) Trennung von fachlichen und technischen Aspekten Konsistenz der Anwendung Code der aufgrund von Transformationsregeln generiert wurde ist in sich sehr konsistent (in Bezug auf Aufrufkonventionen, Benamung, Parameterübergabe) und damit einfach zu verstehen / zu benutzen Querschnittsfunktionalität wird an zentraler Stelle definiert (analog wie bei Aspektorientierter Programmierung) Andreas Schmidt Einführung/Organisation 6/19

... und was ist dann MDA? Initiative der OMG im Umfeld MDSD Schwerpunkt bei der MDA liegt auf der Standardisierung und Interoperabilität Verwendete Standards: Modelle basieren auf UML als Modellierungssprache (inkl. UML-Profile) PIM: Platform independent model PSM: platform specific model XMI (XML Metadata Interchange) stellt Austauschformat von Modellen dar MDA setzt auf mehrstufige Transformationen (PIM -> PSM ->Code) MDA versucht Transformationssprache zu standardisieren (QVT) sehr aufgeblasene Spezifikation momentan keine vollständige Implementierung verfügbar Andreas Schmidt Einführung/Organisation 7/19

... und so sieht es die OMG bei der MDA Transformation mittels Query View Transformation (QVT) PIM T 1 PSM T 2 Code plattformunabhängiger Code plattformabhängiger Code Quellcode (z.b. Java) Konzepte PIM: Konto, Überweisung, Kredit,... Konzepte PSM: Tabellen, Attribute, Primärschlüssel, Fremdschlüssel,... Andreas Schmidt Einführung/Organisation 8/19

Nachteile der MDSD Nachteile: Erlernen neuer Technologien notwendig erhöhter (einmaliger) Aufwand für Entwicklung/Bereitstellung der Infrastruktur für modellegtriebene Softwareentwicklung Entwicklung der Transformationsregeln, Templates zur Codegenerierung eventuell Entwicklung einer Domänensprache (DSL) für das konkrete Anwendungsfeld ( --> Softwarefamilie) Andreas Schmidt Einführung/Organisation 9/19

was kann alles generiert werden? Datenbankschemata Zugriffsschichten für Datenbanken Benutzerschnittstellen Teile der Applikationslogik Dokumentation Konfigurationen (z.b. im Zusammmenspiel mit Frameworks wie Struts, Spring, Hibernate,...) Tests (Unit-Tests, Constraint-Tests, Generierung von Mockobjekten, Lasttests,...) Wrapper Import/Export Module... Andreas Schmidt Einführung/Organisation 10/19

MDSD: Abstraktionsebene Maschinenesprache Assembler 3GL-Sprachen (C++/Java,...) MDSD / Domänenspezifische Sprachen (DSL) Abstraktion Konkretisierung Andreas Schmidt Einführung/Organisation 11/19

Beispiel zur Abstraktion (Inline Code Expander) <?php <?php <class: Film (title, year, director) > <class: Person (surname, first_name, day_of_birth) > $p1 = new Person('Waits', 'Tom', '9.9.1949'); $f1 = new Film('Short Cuts', 1989, 'Jim Jarmusch'); echo "a little test:\n--------------\n"; echo $p1->get_surname()." ". $p1->get_first_name()." ". $p1->get_date_of_birth()."\n"; echo $f1->get_title()." ". $f1->get_year()."\n";?> } } class Film { private $title; private $year; private $director; function construct($title,$year,$director) { $this->title = $title; $this->year = $year; $this->director = $director; function get_title() { return $this->title; } function get_year() { return $this->year; } function get_director() { return $this->director; } Andreas Schmidt Einführung/Organisation 12/19

Inhalt der Vorlesung Theorieteil Vorstellung von verschiedene Arten von Softwaregeneratoren Funktionsweise/Architektur von Generatoren, Template-Systemen Modelle/Metamodelle XMI als Beispiel für ein Austauschformat von Metamodellen Modelltransformationen Extraktion von Metainformationen aus bestehenden Anwendungen Praxisteil Entwicklung eines einfachen Generators (Input XML, Output: Quellcode) Beschäftigung mit existierenden Generatorwerkzeugen (Auswahl) inkl. kleinem Vortrag Andreas Schmidt Einführung/Organisation 13/19

Ablauf der Vorlesung Einführung in die theoretischen Konzepte (siehe vorherige Seite) Parallel dazu eine praktische Aufgabe: Entwicklung eines eigenen minimalen Generators mit folgender Funktionalität: Codegenerierung mittels Template Engine Transformation in internes Generatormodell weitere Transformationen/Verifikationen des Modells Transformation in eigenes Modell (XML-basiert) Einlesen einer XMI-Datei (z.b. aus Poseidon UML) Auswahl eines existierenden Generatorwerkzeugs und Realisierung einer kleinen Anwendung damit Vortrag/Präsentation darüber Andreas Schmidt Einführung/Organisation 14/19

Bewertung Note setzt sich aus entwickeltem Generator und Vortrag zusammen 4-5 Übungsaufgaben pro Übung 3-4 Punkte wenn einwandfrei erledigt (siehe Hinweise Homepage) alle Punkte: 1.0,..., 0 Punkte: 5.0 Präsentation/Vortrag gibt ebenfalls Note Gewichtung: 50/50 Andreas Schmidt Einführung/Organisation 15/19

Termine Vorschlag: ca. 6-7 Wochen à 4 Stunden/Woche 2 Stunden Theorie 2 Stunden Praxis (Rechnerraum) 1-... Termine für Abschlusspräsentationen konkrete Termine/Zeiten (Stand 22.3.2013 - Änderungen möglich): Vorlesung: Freitag, 1. Block M303 (8:00 Uhr - 9.30 Uhr) Übungen/Abnahmen: Freitag, 2. Block, M303 Vorträge/Vorstellung Projekt:... Andreas Schmidt Einführung/Organisation 16/19

Literatur Kurshomepage: http://www.smiffy.de/mdsd/ Markus Völter, Thomas Stahl: Modellgetriebene Softwareentwicklung. Techniken, Engineering, Management. Dpunkt.Verlag GmbH, März 2005 - kartoniert - 410 Seiten Jack Herrington: Code Generation in Action. Manning Verlag, 2003, 350 Seiten, ISBN: 1930110979 Andreas Schmidt Einführung/Organisation 17/19

weitere Ressourcen Krzysztof Czarnecki, Ulrich Eisenecker: Generative Programming: Methods, Tools, and Applications, Addison-Wesley Professional; 1. Auflage, 2000 Homepage Markus Völter: http://www.voelter.de/services/mdsd.html Guter Einführungsartikel zu modellgetriebener Softwareentwicklung: http://www.voelter.de/data/articles/mdsd.pdf http://www.omg.org/mda/ Andreas Schmidt Einführung/Organisation 18/19

Generator Modell UML modeling tool XSLT Metamodel Metamodel Rules T1 Rules Rules T3 Stylesheet Extensions XMI XSLT XML- File DOM processing with Meta API-calls Model 1 T2 Model 2 Code Generation (Smarty) Source Code PP Formatted Source Code Stylesheet DTD V1 subclasses Templates Rules Andreas Schmidt Einführung/Organisation 19/19