Model Driven Development einige wichtige Grundprinzipien

Ähnliche Dokumente
Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

WhiteStarUML Tutorial

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Software Engineering Interaktionsdiagramme

Professionelle Seminare im Bereich MS-Office

Software Engineering Klassendiagramme Assoziationen

Internet Explorer Version 6

DAS PARETO PRINZIP DER SCHLÜSSEL ZUM ERFOLG

How to do? Projekte - Zeiterfassung

Model Driven Architecture Praxisbeispiel

Anleitung zum Extranet-Portal des BBZ Solothurn-Grenchen

teischl.com Software Design & Services e.u. office@teischl.com

Eine Anwendung mit InstantRails 1.7

Erfahrungen mit Hartz IV- Empfängern

Einführung in modellgetriebene Softwareentwicklung. 24. Oktober 2012

Copyright 2014 Delta Software Technology GmbH. All Rights reserved.

Was meinen die Leute eigentlich mit: Grexit?

Virtuelle Fotografie (CGI)

Zeichen bei Zahlen entschlüsseln

Car-Net über WLAN Aufbau einer Internet-Verbindung über WLAN zur Nutzung von Car-Net

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

Einführung in die Java- Programmierung

Konfigurationsbeispiel

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Vortrag von: Ilias Agorakis & Robert Roginer

Wie Sie mit Mastern arbeiten

Webalizer HOWTO. Stand:

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

Schnittstelle DIGI-Zeiterfassung

Statuten in leichter Sprache

Business Intelligence Praktikum 1

StuPro-Seminar Dokumentation in der Software-Wartung. StuPro-Seminar Probleme und Schwierigkeiten in der Software-Wartung.

Objektorientierte Programmierung OOP

Wärmebildkamera. Arbeitszeit: 15 Minuten

Reporting Services und SharePoint 2010 Teil 1

Softwaretechnologie -Wintersemester 2013/ Dr. Günter Kniesel

Car-Net über WLAN Aufbau einer Internet-Verbindung über WLAN zur Nutzung von Car-Net

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers

INDEX. Öffentliche Ordner erstellen Seite 2. Offline verfügbar einrichten Seite 3. Berechtigungen setzen Seite 7. Öffentliche Ordner Offline

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Kurzanleitung MAN E-Learning (WBT)

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Verwendung des IDS Backup Systems unter Windows 2000

Kurzanleitung OOVS. Reseller Interface. Allgemein

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

Professionelle Seminare im Bereich MS-Office

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Artikel Schnittstelle über CSV

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.

Kapitalerhöhung - Verbuchung

Stapelverarbeitung Teil 1

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

1 Mathematische Grundlagen

Gründe für fehlende Vorsorgemaßnahmen gegen Krankheit

Objektorientierte Programmierung

EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2

Design Pattern - Strukturmuster. CAS SWE - OOAD Marco Hunziker Klaus Imfeld Frédéric Bächler Marcel Lüthi

Java: Vererbung. Teil 3: super()

Code-Erzeugung aus UML-Klassendiagrammen

Objektorientierte Programmierung. Kapitel 12: Interfaces

~~ Swing Trading Strategie ~~

Objektorientierte Programmierung für Anfänger am Beispiel PHP

a) In der Aufgabenstellung war ein möglichst einfaches Klassendiagramm gefordert. Abb. 1 zeigt eine mögliche Lösung. * * * Aufbau 1..

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

Im Original veränderbare Word-Dateien

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

Software Engineering Klassendiagramme Einführung

SCHRITT 1: Öffnen des Bildes und Auswahl der Option»Drucken«im Menü»Datei«...2. SCHRITT 2: Angeben des Papierformat im Dialog»Drucklayout«...

Installation des Authorware Webplayers für den Internet Explorer unter Windows Vista

OP-LOG

Blumen-bienen-Bären Academy. Kurzanleitung für Google Keyword Planer + Google Trends

FORUM HANDREICHUNG (STAND: AUGUST 2013)

Weiterbildungen 2014/15

die wichtigsten online-tools für augenoptiker websites

Speicher in der Cloud

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

Was ist Sozial-Raum-Orientierung?

FIS: Projektdaten auf den Internetseiten ausgeben

Konzentration auf das. Wesentliche.

Die Industrie- und Handelskammer arbeitet dafür, dass Menschen überall mit machen können

MARKUS WASER THE POWER IS IN YOU FACT SHEET IHR WEG ZUM PERSÖNLICHEN ERFOLG

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

Anleitung zum erfassen von Last Minute Angeboten und Stellenangebote

Grundlagen von Python

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Model Driven Development im Überblick

macs Support Ticket System

Agile Software Development

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware

PowerPoint 2010 Mit Folienmastern arbeiten

Wir machen neue Politik für Baden-Württemberg

Übung 4. Musterlösungen

Source Code Konverter Online: (VB.net <-> C#) Kommerzielle Produkte (VB, C#, C++, Java) Code Nachbearbeitung in der Praxis...

Transkript:

Model Driven Development einige wichtige Grundprinzipien Johannes Scheier j@scheier software.ch Copyright by Scheier Software Engineering Seite 1

Inhalt Was ist Model Driven Development (MDD)? Was verspricht MDD? Was ist Abstraktion? Die Grundprinzipien Tool Demo Copyright by Scheier Software Engineering Seite 2

Was ist MDD? Model Driven Development Abstract Model MDD ist ein Konzept zur Entwicklung von Software Das System wird in einem abstrakten Modell beschrieben. Das abstrakte Modell wird durch automatische Transformation in Code transformiert. Low Abstraction Object Model Die Transformation kann in mehreren Schritten erfolgen. Das Modell am Schluss der Transformationskette ist die Implementation des Systems. Platform Specific J2SE Platform Specific J2ME Platform Specific.Net Copyright by Scheier Software Engineering Seite 3

Was verspricht MDD? Die Entwicklungszeit wird verkürzt Das Modell ist zeitlos Es altert mit der Domäne und nicht mit der Technologie Bessere Dokumentation Das Modell ist die bessere Dokumentation als der Code besser lesbar durch Generierung immer konsistent Das System ist besser anpassbar Konsequentere Umsetzung einer Softwarearchitektur Architektur kann nachträglich geändert werden Plattformunabhängigkeit Bessere Aufgabenteilung im Projekt Copyright by Scheier Software Engineering Seite 4

Was ist ein abstraktes Systemmodell? Abstraktion des wirklichen Systems System Beschreibt nur das Wesentliche Abstrahiert vom Unwesentlichen Customer Modellelemente sind Abstraktionen von Teilen des wirklichen Systems Order Product Copyright by Scheier Software Engineering Seite 5

Abstraktionsgrad switch(event) { case eventx: switch state case A:... case eventy: switch state case A:... } Geringe Abstraktion Modellelemente sind einfach semantisch arm viele Elemente werden kombiniert um etwas komplexes auszudrücken Hohe Abstraktion A Modellelemente sind semantisch reich ein einziges Element verbirgt schon eine Menge Komplexität Copyright by Scheier Software Engineering Seite 6

Die Grundprinzipien MDD ist nicht einfach Code Generierung aus Modellen. Nur wer die nachfolgenden Grundprinzipien beachtet, kann von den Vorteilen von MDD profitieren MDD Redundanz freiheit Mit Round Trip geht's nicht aufwärts Dekorieren statt verschmutzen Copyright by Scheier Software Engineering Seite 7

Redundanzfreiheit im Modell Bild von Maurits Cornelis Escher, niederländischer Künstler, von 1898 bis 1972 Copyright by Scheier Software Engineering Seite 8

Was ist Redundanz? Latein: redundare > im Überfluss vorhanden sein Informationstheorie: das mehrfache Vorhandensein ein und derselben Information oder das umfangreiche Beschreiben einer Information, die auch kürzer dargestellt werden kann. Copyright by Scheier Software Engineering Seite 9

Nachteile von redundanten Modellen für MDD Mehr Aufwand Änderungen müssen an mehreren Stellen nachgeführt werden Weniger übersichtlich durch überflüssige Informationen Copyright by Scheier Software Engineering Seite 10

Redundanz Beispiele: referenzieren mit Werten (1/2) Referenzieren mit Werten ist eine verbreitete Art von Redundanz Parameter Name : String Type : String Referenzen zu Modellelementen werden als Wert (meist als String) modelliert Wenn Klassenname geändert wird, müssen alle Parameter.Type geändert werden, die sich auf diese Klasse beziehen Parameter Name : String Type : Reference <Class> Vermeidung durch Verwendung von Referenz Elementen Name trotzdem sichtbar Copyright by Scheier Software Engineering Seite 11

Redundanz Beispiele: referenzieren mit Werten (2/2) In 3. GL Programmen sind alle Referenzen als Namen modelliert opy(); CB operation body CA ca = new CA(); ca.opx(p1); Meta Modelle die Verhalten als 3. GL Text modellieren erben dieses Problem von der 3. GL. CA Wenn sich sich der Name einer Operation ändert, müssen alle Aufrufe dieser Operation angepasst werden opx(); Copyright by Scheier Software Engineering Seite 12

Redundanz Beispiele: weitere CD Explizites Modellieren von Dependencies in UML Unnötige Arbeit CB opx(); CA Diese Information ist bereits implizit vorhanden Macht Modell unübersichtlich opy(cd d): CE operation body Nicht mehr benötigte Dependencies werden nicht gelöscht CE CA ca = new CA(); ca.opx(d); return new CE(); Copyright by Scheier Software Engineering Seite 13

Redundanzfreiheit! In anderen Worten: Meta Modelle sollten möglichst redundanzfreie Modelle ermöglichen! Referenzen mit speziellen Referenz Elementen modellieren Information die implizit vorhanden ist, nicht explizit modellieren! Copyright by Scheier Software Engineering Seite 14

Mit Round Trip geht's nicht aufwärts Copyright by Scheier Software Engineering Seite 15

Was ist Round Trip Engineering? Ein wenig Modellieren, ein wenig Codieren Model Code Beim Round Trip Engineering kann nicht nur im Modell, sondern auch im Code geändert werden. Änderungen im Code werden automatisch ins Modell transformiert. Copyright by Scheier Software Engineering Seite 16

Warum ist Round Trip so populär? Viele Software Entwickler beherrschen eine 3. GL wie ihre Muttersprache sie wollen nicht modellieren sondern codieren sie müssen modellieren Model Code Round Trip verspricht dass die gewohnte Arbeitsweise beibehalten werden kann unbeliebte Modellier Arbeit zu automatisieren Das findet Anklang Gibt es solche Tools wirklich? Ja, aber.. Copyright by Scheier Software Engineering Seite 17

Round Trip, die Illusion High Abstraction Transformations Low Abstraction nicht möglich Beispiele: Aus einem Bitmap, das Text darstellt kann man keine Absatzformate erkennen. Aus einem Member in Java kann man nicht erkennen, ob dieses einem Relationship by value oder by reference entspricht. Aus 3. GL. Code kann man nicht erkennen welche Abschnitte Statemachine Semantik haben. Copyright by Scheier Software Engineering Seite 18

Round Trip, Folgerung Mit Round Trip bewegt man sich auf dem Abstraktionsniveau von Code Man wechselt nicht die Abstraktion, nur die Darstellung Copyright by Scheier Software Engineering Seite 19

Nachteile von Round Trip für MDD Wer mit Round Trip arbeitet verzichtet auf: höhere Abstraktion das Hauptinstrument von MDD! Damit verzichtet man auch auf: einfache übersichtliche Modelle, schnellere Modellierung, besseres Verständnis der Modelle. Umkehrung gilt nicht! Wer auf Round Trip verzichtet... Copyright by Scheier Software Engineering Seite 20

Mit Round Trip geht's nicht aufwärts! In anderen Worten: Generiere ausschliesslich vorwärts Das abstrakte Modell ist der Master Verwende höhere Abstraktion verzichte auf Round Trip Arbeite konsequent top down Copyright by Scheier Software Engineering Seite 21

Dekorieren statt verschmutzen Motivation UML UML to SQL Schema Transformation Text Transformationen, z.b. Code Generatoren werden in der Regel so definiert, dass sie jedes Modell eines bestimmten Metamodells transformieren können. Oft möchte man den Code Generator anweisen, bei einem Modellelement etwas Spezielles zu generieren Person Name : String Z.B. der Codegenerator soll zu einem bestimmten Attribut einen Index in der Datenbank anlegen create index Name_index ON Person (Person_Name) Copyright by Scheier Software Engineering Seite 22

Dekorieren statt verschmutzen Person Name : String <<Index>> Gängiger Weg: Hinweise zur Code Generierung im abstrakten Modell Nachteile: Verschmutzung des Modells unübersichtlich keine klare Trennung zwischen abstraktem Modell und Implementation bei mehreren Zielplattformen addieren sich diese Nachteile Copyright by Scheier Software Engineering Seite 23

Dekorieren statt verschmutzen Implementation Details Detail Application Abstract Model B A C Nicht invasive Methode Hinweise für den Code Generator ausserhalb des abstrakten Modells D D1 D2 Abstrakte Modellelemente werden nur referenziert Transformation Implementation B A C D D1 D2 Copyright by Scheier Software Engineering Seite 24

Dekorieren statt verschmutzen, die Vorteile für MDD (1/2) Implementation Details Detail Application Abstract Model B A C Abstrakte Modelle bleiben rein, übersichtlich, zeitlos, stainless D D1 D2 definieren nur was das System können muss! Nicht wie es gelöst wird dadurch bleibt das Hauptinstrument von MDD intakt! Transformation Arbeitsteilung Implementation A B C Domain Experte Software Experte D D1 D2 Copyright by Scheier Software Engineering Seite 25

Dekorieren statt verschmutzen, die Vorteile für MDD (2/2) Detail Application Implementation Details Abstract Model A B C Implementation Details Verschiede Anreicherungen sind möglich D D1 D2 Performance Profiling Debugging Transformation Implementation A B C Transformation Implementation A B C Documentation verschiedene Plattformen verschiedene Anwendungsgruppen D D1 D2 D D1 D2... Copyright by Scheier Software Engineering Seite 26

Dekorieren statt verschmutzen! Detail Application Implementation Details Abstract Model B A C D D2 D1 Implementation Details In anderen Worten Implementations Details vom abstrakten Modell separieren Nicht invasiv anreichern Transformation Transformation Implementation Implementation B A C B A C D D1 D2 D D1 D2 Copyright by Scheier Software Engineering Seite 27

Die Grundprinzipien Zusammenfassung Implementation Details Detail Application Abstract Model A B C D D1 D2 Transformation Implementation B A C D D1 D2 Copyright by Scheier Software Engineering Seite 28

MBSD Tool Meta Meta Model (Meta Object Facility) MBSD = Model Based Software Development MBSD selbst basiert auf Modellen MBSD UML ist ein Meta Modell für UML Meta Model Structure Rules Texts Views Tranformations redundanzfrei höhere Abstraktionen wie Relationship, Statemachine, Active Object... mit nicht invasiven Implementationsdetails Bald öffentlich verfügbar Model Model Model Copyright by Scheier Software Engineering Seite 29

MBSD, Demo Demo Beispiel Quanda Lernprogramm das auf dem Prinzip einer Lernkartei beruht Lernkartei Hilfsmittel um beispielsweise Vokalbeln zu lernen gewusst nicht gewusst bonjour guten Tag Copyright by Scheier Software Engineering Seite 30

MBSD Demo Copyright by Scheier Software Engineering Seite 31