07.12.2012 Aufrufe

Dreher Model Driven Engineering.pdf - FH Aachen

Dreher Model Driven Engineering.pdf - FH Aachen

Dreher Model Driven Engineering.pdf - FH Aachen

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>Model</strong>-<strong>Driven</strong> <strong>Engineering</strong><br />

Seminararbeit im Masterstudiengang<br />

Information Systems <strong>Engineering</strong><br />

Sebastian <strong>Dreher</strong><br />

Fachhochschule <strong>Aachen</strong><br />

Fachbereich Elektrotechnik und Informationstechnik<br />

Eupener Straße 70, 52066 <strong>Aachen</strong><br />

[sebastian.dreher@alumni.fh-aachen.de]<br />

Kurzfassung. In dieser Seminararbeit werden verschiedene Vorgehensmodelle<br />

des <strong>Model</strong>-<strong>Driven</strong> <strong>Engineering</strong>, u.a. Computer Aided Software <strong>Engineering</strong>,<br />

Domain Specific Language und <strong>Model</strong>-<strong>Driven</strong> Architecture vorgestellt. Ein besonderer<br />

Fokus liegt hierbei auf der Entwicklungsmethode „<strong>Model</strong>-<strong>Driven</strong><br />

Architecture“, sowie Forschungsprojekte und Zukunftschancen dieser Methodik.<br />

Keywords: <strong>Model</strong>-<strong>Driven</strong> <strong>Engineering</strong>, <strong>Model</strong>-<strong>Driven</strong> Architecture, Computer<br />

Aided Software <strong>Engineering</strong>, Domain Specific Language<br />

1 Einleitung<br />

Charakteristisch für die Softwareentwicklung der heutigen Zeit sind sich schnell wandelnde,<br />

fachliche Anforderungen und rasante technologische Fortschritte, sowie ein<br />

hoher Zeit- und Kostendruck. Vor diesem Hintergrund offenbaren sich weitreichende<br />

Probleme eines inkrementellen, iterativen Verfahrens oder des traditionellen Wasserfall-Vorgehensmodells.<br />

(1)<br />

<strong>Model</strong>-<strong>Driven</strong> <strong>Engineering</strong> (dt. <strong>Model</strong>lgetriebene Softwareentwicklung, kurz MDE)<br />

ist ein Oberbegriff für die Anwendung ingenieursmäßiger Techniken, um automatisiert<br />

aus formalen <strong>Model</strong>len lauffähige Anwendungssoftware zu entwerfen. Durch<br />

den Einsatz des MDE wird eine Effizienzsteigerung im Softwareentwicklungsprozess<br />

propagiert. Diese soll durch die Anhebung des Abstraktionsniveaus durch <strong>Model</strong>lbildung<br />

im Vergleich zur Softwareentwicklung auf Codeebene erreicht werden.<br />

Ein Faktor der Effizienzsteigerung ist die gleichbleibende Qualität des Codes, welcher<br />

aus formalen <strong>Model</strong>len automatisch erzeugt wird. Man spricht in diesem Zusammenhang<br />

von „Automation durch Formalisierung“. Mit dem Hinzufügen von Abstraktionsebenen<br />

wird ebenfalls eine Umsetzung des Paradigmas „Separation of Concerns“<br />

erzwungen, welches die Wartbarkeit eines Softwaresystems erheblich vereinfacht.


Interoperabilität, Portabilität und Wiederverwendung zählen hierbei zu den primären<br />

Zielen des MDE.<br />

Grundlegend wird zwischen drei verschiedenen Implementierungen unterschieden,<br />

welche in dieser Ausarbeitung vorgestellt werden:<br />

� <strong>Model</strong> <strong>Driven</strong> Architecture (dt. <strong>Model</strong>lgetriebene Architektur, kurz MDA) der<br />

Object Management Group (OMG) 1 (2)<br />

� Domain-Specific-Languages (dt. Domänen Spezifische Sprachen, kurz DSL) 2<br />

� Computer Aided Software <strong>Engineering</strong> (dt. Computergestützte<br />

Softwareentwicklung, kurz CASE) 3<br />

Da die MDA ein sehr junger Entwicklungsansatz mit interessanten Forschungsthemen<br />

ist, wird diese Methodik in den nachfolgenden Kapiteln ausführlich erläutert.<br />

Abbildung 1: Ausdruckgsgrad der Lösungsbeschreibung<br />

Abbildung 1 zeigt den Ausdrucksgrad der Lösungsbeschreibung und die Einordung<br />

der MDE-Implementierungen. Je generischer die Implementierung bzw. <strong>Model</strong>labstraktion<br />

gehalten ist, desto größer ist der Aufwand der Anpassung des generierten<br />

Codes. Für code - bzw. problemspezifische Aufgaben eignet sich die Verwendung<br />

von DSLs besonders.<br />

Diese Seminararbeit erläutert die zuvor benannten Implementierungen, sowie aktuelle<br />

Forschungsansätze, Vor- und Nachteile bzw. Problemstellungen des MDA.<br />

2 Computer Aided Software <strong>Engineering</strong><br />

Ziel des Computer Aided Software <strong>Engineering</strong> (kurz CASE) -Ansatzes ist es, Software<br />

möglichst vollständig und automatisiert aus fachlichen Beschreibungen zu erstellen.<br />

CASE-Tools sind Programme, die den Softwarearchitekten während Planung,<br />

Entwurf und Dokumentation automatisiert unterstützen sollen. Diese Tools werden<br />

1 weiterführende Literatur: Poland Petraschl, „<strong>Model</strong> driven architecture“, dpunkt.verlag<br />

GmbH, 2006<br />

2<br />

weiterführende Literatur: Martin Fowler, „Domain-specific Languages”, Addison Wesley<br />

Verlag, 2012<br />

3<br />

weiterführende Literatur: Thomas J. Bergin, Computer-Aided Software <strong>Engineering</strong> – Issues<br />

and Trend for the 1990s and Beyond“, Idea Group Publishing, 1993


als eigenständige Applikation (Standalone) oder in Form einer Funktionserweiterung<br />

(Plugin) für eine entsprechende Entwicklungsumgebung, wie Eclipse (Abbildung 2)<br />

angeboten. Im Allgemeinen verbirgt sich hinter dem CASE die Vorstellung eines<br />

klassischen Wasserfallmodells unter besonderer Berücksichtigung der Phasen: Analyse,<br />

Design und Implementierung. CASE-Werkzeuge gibt es sowohl für 3GL (Third<br />

Generation Programming Language) - und 4GL (Fourth Generation Programming<br />

Language) Programmiersprachen 4 , als auch für objektorientierte Entwicklungen.<br />

Abbildung 2: Grafische Java Notation mit dem Omondo-UML Editor (3)<br />

Moderne CASE-Tools bieten eine grundlegende Unterstützung für die grafische Notationsweise,<br />

Strukturierte Analyse und das Strukturierte Design. Nachfolgend werden<br />

diese drei elementaren CASE-Bestandteile erläutert.<br />

2.1 Grafische Notationsweise<br />

Mit Hilfe der grafischen Notation können Ablaufdiagramme oder UML-Diagramme<br />

in Codegerüste mit Funktionsrümpfen transformiert werden. So können beispielsweise<br />

eine Klasse mit Membervariablen und Zugriffs-Modifiern, sowie die Schnittsellen<br />

und Kommunikationsmuster grafisch gestaltet werden.<br />

2.2 Strukturierte Analyse<br />

Die Strukturierte Analyse wird während der Analysephase zur formalen Systembeschreibung<br />

im Rahmen der Softwareentwicklung verwendet.<br />

4 http://www.atalasoft.com/cs/blogs/rickm/archive/2009/06/11/a-short-history-of-programming-<br />

languages-generations.aspx


2.3 Strukturiertes Design<br />

“Strukturiertes Design (SD) ist ein Entwurfsmuster in der Softwaretechnik nach Edward<br />

Yourdon und Larry Constantine, welches modulares Design unterstützt, um<br />

neben der reinen Funktionshierarchie auch die Wechselwirkungen von übergeordneten<br />

Modulen zu beschreiben.” (4) Es handelt sich hierbei um eine Verfeinerung der<br />

zuvor durchgeführten, strukturierten Analyse.<br />

Abbildung 3: Strukturiertes Design (Schema), entnommen aus<br />

http://www.infforum.de/themen/anwendungsentwicklung/thema_SEmethode_sd.htm<br />

Oft wird das Schema aus Abbildung 3 für die Top-Down Strukturierung von Menüpunkten<br />

verwendet, um Hauptkategorien mit zugehörigen Unterkategorien bis hin<br />

zur Datenkapselung übersichtlich erfassen zu können. Die Landing Page der Fachhochschule<br />

<strong>Aachen</strong> (Abbildung 4) bietet z.B. den Hauptnavigationspunkt „Studienangebote“.<br />

Dieser wird unterteilt in die Module: Bachelorstudiengänge,<br />

Mastersudiengänge, duales Studium etc.. Selektieren wir nun das Modul Masterstudiengang,<br />

erhalten wir bezogen auf Abbildung 3, die “aufgerufene vordefinierte Datenkapsel”,<br />

was dem Content der zugrunde liegenden Website entspricht.


Abbildung 4: Landing-Page Menü der <strong>FH</strong>-<strong>Aachen</strong> (5)<br />

3 Domain Specific Language<br />

Unter DLSs werden im Allgemeinen abstrakte Sprachen bezeichnet, welche für ein<br />

bestimmtes Problem, die Domäne, entworfen und implementiert werden. Im Vergleich<br />

zu universell einsetzbaren Programmiersprachen, wie C/C++, Java, etc. erzeugen<br />

DSLs bedeutend weniger Overhead und Redundanz, aufgrund des meist beschränkten<br />

Umfangs. DSLs werden in Verbindung mit Codegeneratoren und Interpretern<br />

verwendet, um die Beschreibung eines Sachverhaltes oder Problems deklarativ zu<br />

gestalten. Im Folgenden werden die einzelnen Prozessschritte von der Domänenbeschreibung<br />

bis hin zum fertigen Code unter Verwendung der DSL beschrieben. (6)<br />

Die Vorgehensweise bei der Entwicklung einer DSL, lässt sich wie folgt beschreiben:<br />

� Domänenbeschreibung<br />

─ Die Domänenbeschreibung ist gekennzeichnet durch eine fachliche oder technische<br />

Wissensbeschreibung des darzustellenden Gesamtsystems. Hier werden<br />

Grenzen und Schnittstellen, sowie das Verhalten klar definiert.<br />

� Metamodellierung<br />

─ Abgrenzung: Nichtberücksichtigung irrelevanter Objekte<br />

─ Reduktion: Weglassen von Objektdetails<br />

─ Dekomposition: Zerlegung, Auflösung in einzelne Segmente<br />

─ Aggregation: Vereinigung von Segmenten zu einem Ganzen<br />

─ Abstraktion: Begriffs- bzw. Klassenbildung<br />

� Ableiten der DSL<br />

─ Externe DSL: Eine von Grund auf neu definierte Sprache. Sowohl die konkrete<br />

Syntax als auch die Semantik können hier frei definiert werden.<br />

─ Interne DSL: Eine interne DSL ist eine echte Untermenge einer generelleren<br />

Sprache.<br />

� <strong>Model</strong>lierung des Systems unter Verwendung der DSL<br />

� Validierung des Systems<br />

� Glue-Code<br />

─ Manuelle Anpassung des Implemetierungscodes


4 <strong>Model</strong> <strong>Driven</strong> Architecture<br />

MDA bietet ein offenes, herstellerneutrales Vorgehen, um während des Softwareentwicklungsprozesses<br />

die Business- und Applikationslogik, sowie Plattformtechnologie<br />

voneinander zu trennen.<br />

Abbildung 5: Integration der MDA (2)<br />

Bei der <strong>Model</strong>lierung mit MDA wird berücksichtigt, dass ein einziges <strong>Model</strong>l nicht<br />

die Komplexität eines Software-Gesamtsystems abbilden kann. Entweder wird das<br />

fachliche Detail im Zusammenhang mit der Geschäftslogik zu intensiv dargestellt,<br />

was zu einer überladenen und nicht überschaubaren Komplexität führt, oder es wird<br />

nicht mit genügend Detailtreue abgebildet, was zu einer Unschärfe der Anforderungen<br />

führen kann. Als Konsequenz führt MDA eine Trennung des Gesamtmodelles in Teil-<br />

<strong>Model</strong>le durch (Abbildung 5). Hierbei liegt der Scope nicht auf einer vollständigen<br />

Automatisierung der Code-Generierung, denn diese variiert in Abhängigkeit der fachlichen<br />

Anforderung zwischen 20 und 80 Prozent. (7)<br />

Abbildung 6: Schema unter Anwendung der MDA<br />

Abbildung 6 zeigt einen schematischen Top-Down-Ansatz, mit welchem die verschiedenen<br />

Phasen durchlaufen werden.


4.1 Computation Independent <strong>Model</strong> (CIM)<br />

Mit Hilfe des CIM wird die Geschäfts- oder Domänensicht des zu entwickelnden<br />

Softwaresystems modelliert. Das CIM ist im Rahmen der MDA der <strong>Model</strong>ltyp mit der<br />

höchsten Abstraktionsebene. Es ist unabhängig von technischen Aspekten der Implementierung,<br />

d.h. es beschreibt keine internen Strukturen oder das innere Verhalten des<br />

Softwaresystems. (8) Als Werkzeuge kommen hierbei umgangssprachliche Beschreibungen,<br />

Use-Case-Diagramme, Interaktionsdiagramme und Aktivitätsdiagramme zum<br />

Einsatz.<br />

4.2 Platform Independent <strong>Model</strong> (PIM)<br />

Das PIM ist ein plattformunabhängiges <strong>Model</strong>l für Geschäftsprozesse, welches logische<br />

Prozesse abstrahiert. Das zuvor erstellte CIM wird hierbei mit Hilfe einer <strong>Model</strong>-<br />

<strong>Model</strong>-Transformation in ein PIM überführt (Abbildung 7). Durch ein UML-Profil<br />

wird die Darstellung fachlicher Elemente (Services, Business Classes, Business Rules)<br />

projekt- und anwendungsspezifisch vorgegeben.<br />

4.3 Platform Specific <strong>Model</strong> (PSM)<br />

Das PSM ist ein abstraktes, plattformabhängiges <strong>Model</strong>l der Zielarchitektur. Es entsteht<br />

durch die Transformation des CIM unter Berücksichtigung spezieller Architektureigenschaften<br />

und Services der späteren Zielplattform (Abbildung 7), so z.B. J2EE,<br />

Corba oder XML.<br />

4.4 Codemodell<br />

Nach einer weiteren Transformation wird das PSM in den Implementierungscode der<br />

zuvor gewählten Plattform (Abbildung 7) überführt. Wie bereits erwähnt, erhebt das<br />

MDA-Verfahren keinen Anspruch auf eine vollständige Codegenerierung. Gegebenenfalls<br />

müssen Glue-Code 5 oder das Ausprogrammieren von Funktionsrümpfen<br />

manuell vorgenommen werden.<br />

5 Glue-Code: funktionsfreier Quellcode der einzelne Software-Module untereinander „verbindet“,<br />

welche sonst nicht kompatibel zueinander wären


Abbildung 7: MDA-Transformationsbeispiel (9)<br />

Abbildung 7 zeigt den Transformations-Ablauf der verschiedenen <strong>Model</strong>le von 4.1<br />

bis 4.4.<br />

5 Forschungsansätze des MDA<br />

Obwohl MDE noch nicht lange in den wissenschaftlichen Bereichen vertreten ist, gibt<br />

es bereits einen Großteil an nationalen und internationalen Forschungsprojekten und<br />

Konferenzen. Dieses Kapitel gibt einen groben Überblick über nationale Forschungseinrichtungen<br />

im Bereich MDE, sowie die zugehörigen Projekte.<br />

Im Jahr wurde 2010 an der TU München - Lehrstuhl IV: Software & Systems <strong>Engineering</strong><br />

ein MDE-Kompetenzzentrum gegründet, welches die Forschungsaktivitäten<br />

in den folgenden Bereichen intensiviert hat. (10)<br />

� Seamless model-based development<br />

� <strong>Model</strong>-based development of mechatronic systems<br />

� Formal specification of (mostly embedded) software systems<br />

� <strong>Model</strong>-based debugging<br />

� Analysis of costs and benefits of model-based development of embedded software<br />

systems in the car industry<br />

� <strong>Model</strong>ing of probabilistic systems<br />

� Formal semantics of UML2<br />

� Transition from documents in natural language to system models<br />

� <strong>Model</strong> validation<br />

� <strong>Model</strong>-based deployment<br />

� <strong>Model</strong>-based testing


� <strong>Model</strong>-based safety-cases<br />

Im folgenden Auszug der aktuellen Forschungsprojekte der TU München lassen sich<br />

als Förderungspartner u.a. das BMBF (Bundesministerium für Bildung und Forschung),<br />

BMWi (Bundesministeriums für Wirtschaft und Technologie), Altran Technologies<br />

(http://www.altran.de/), sowie Siemens Automation finden. Große Institutionen<br />

und Firmen zeigen also durchaus (finanzielles) Interesse in diesem Forschungsbereich.<br />

(11)<br />

SPES 2020. SPES 2020 ist ein vom BMBF gefördertes Forschungsprojekt zur Entwicklung<br />

einer Methodik zur durchgängig, modellbasierten Entwicklung von eingebetteten<br />

Systemen. Im Rahmen des Projekts werden Lösungen für die domänenübergreifende<br />

und modellbasierte Entwicklung von eingebetteter Software erarbeitet. <strong>Model</strong>lbasierte<br />

Verfahren auf Basis eines soliden mathematischen Fundaments ermöglichen<br />

eine effiziente Entwicklung eingebetteter Systeme, beginnend bei den initialen<br />

Kundenanforderungen über den Entwurf und die Implementierung bis hin zur Verifikation<br />

und Zertifizierung von Systemen. (11)<br />

Analyse der Kosten und des Nutzen modellbasierter Entwicklung eingebetteter<br />

Softwaresysteme in der Automobilindustrie. In Zusammenarbeit mit dem Technologieberatungsunternehmen<br />

Altran werden die notwenigen Kosten für eine <strong>Model</strong>lbasierte<br />

Entwicklung und der daraus resultierende Nutzen analysiert. Ziel ist es wesentliche<br />

Kosten- und Nutzentreiber zu identifizieren und zu analysieren wie man die<br />

Wirtschaftlichkeit der modellbasierten Entwicklung optimieren kann. Die Ergebnisse<br />

der Arbeit werden aus Fallstudiengesprächen und einer globalen Studie abgeleitet.<br />

(11)<br />

AutoVIBN. Gefördert durch das BMWi (AiF) entwickelt das Kompetenzzentrum<br />

<strong>Model</strong>lbasierte Entwicklung zusammen mit dem iwb und mehreren Industriepartnern<br />

Beschreibungstechniken und Methoden für die logische Verhaltensmodellierung<br />

mechatronischer Systeme im Anlagenbau. Diese <strong>Model</strong>le dienen der Unterstützung<br />

im Entwicklungsprozess durch Exploration und Simulation verschiedener Lösungsansatze<br />

auf logischer Ebene. Zudem lassen sich die <strong>Model</strong>le als Basis für die Generierung<br />

abgeleiteter <strong>Model</strong>l nutzen, wie etwa von <strong>Model</strong>len für die virtuelle Inbetriebnahme.<br />

(11)<br />

FlaSCo. Eine Machbarkeitsstudie der modellbasierten Entwicklung eingebetteter<br />

Systeme im industriellen Umfeld: von Anforderungen bis zum Entwurf n Zusammenarbeit<br />

mit Siemens Automation. (11)<br />

In der Universität Ulm - Institut für Programmiermethodik und Compilerbau gibt es<br />

seit 2009 ebenfalls einen Forschungsbereich zum MDE, wodurch das Projekt „Active<br />

Charts“ entstanden ist: „Wir beschäftigen uns mit der Frage, wie mächtigere Soft-


ware-Werkzeuge konstruiert werden können, welche die Synchronisation von Analyse/Entwurfs-<br />

und Implementierungsartefakten unterstützen bzw. sicherstellen können<br />

ohne den Entwickler in seinen bisherigen Implementierungsmöglichkeiten zu sehr<br />

einzuschränken.“ (12)<br />

„Unser Ansatz ActiveCharts kombiniert <strong>Model</strong>le aus den Analyse/Design-Phasen<br />

und (handgeschriebenen) Code aus der Implementierungsphase auf eine neue Art:<br />

Wir modellieren den Kontrollfluss einer Anwendung mit UML 2 Aktivitätsdiagrammen,<br />

die von einer Laufzeitumgebung (ActiveChartsIDE) interpretiert werden. Mit<br />

dieser Laufzeitumgebung können die Aktivitätsdiagramme simuliert und visualisiert<br />

werden. Funktionen wie beispielsweise Breakpoints oder schrittweises Vorgehen<br />

ermöglichen ein einfaches Debuggen der Anwendung.<br />

Analyse- bzw. Designartefakte werden in unserem Ansatz nahtlos für die Implementierungsphase<br />

übernommen. Wir wollen damit die Lücken zwischen den unterschiedlichen<br />

Phasen im Softwareentwicklungsprozess verkleinern und die Dokumentation<br />

und die Wartbarkeit von Softwareprodukten verbessern.“ (13)<br />

Einen weiteren, interessanten Ansatz verfolgt das Transferprojekt „Agile <strong>Model</strong><br />

<strong>Driven</strong> Architecture“ an der Universität Leipzig. Hier werden zwei Ansätze kombiniert,<br />

die augenscheinlich nichts miteinander zu tun haben – MDE der Object Management<br />

Group und Agile Softwareentwicklung.<br />

Im Kern geht es bei agiler Softwareentwicklung um möglichst häufige Rückkopplungsprozesse<br />

und zyklisches (iteratives) Vorgehen auf allen Ebenen: bei der Programmierung,<br />

im Team und beim Management. Im Vergleich zum direkten Vorgehensmodell<br />

wird die Zielsetzung nicht ausschließlich zu Beginn der Softwareentwicklung<br />

erarbeitet, sondern kann während des Entwicklungsprozesses noch angepasst<br />

werden. (14)<br />

„Unser Lösungsansatz lautet: "Agile MDA" oder "Prefabricated Architectures"<br />

oder "MDA Domesticated" oder einfach "Leipziger Softwareprozessmodell".<br />

Das Leipziger Software-Prozessmodell (LSP) versucht das Beste beider Welten miteinander<br />

zu verbinden. <strong>Model</strong>le, die die Fachlichkeit möglichst umfassend ausdrücken,<br />

aber keine Generierung um jeden Preis, genauso wie kontinuierliche Einbeziehung<br />

des Anwenders und schlanke Inkremente, ohne dabei die Pandora-Büchse des<br />

unkontrollierten Hacking zu öffnen.“ (15)<br />

Ein Blick auf die Publikationswebsite des Frauenhofer Instituts (16) zeigt anhand<br />

der Dissertation „A methodology for pattern-oriented model-driven testing of<br />

reactive software systems“ von Vouffo-Feudjio, A.-G., dass auch dort Ansätze des<br />

MDE erforscht werden:<br />

“The thesis presents a catalogue of test design patterns, along with a methodology<br />

for the proposed approach. The methodology is based on a new notation called Unified<br />

Test <strong>Model</strong>ing Language (UTML), specifically designed to support patternoriented<br />

model-driven testing. UTML is a Domain-Specific <strong>Model</strong>ing Language<br />

(DSML) for designing test objectives, test architectures, test data and test behaviour at<br />

a high level of abstraction, using predefined test design patterns. The result are socalled<br />

abstract test models, that can then be subsequently refined through a series of


iterative transformation processes into executable test sequences, scripts or documentation<br />

artifacts.” (17)<br />

6 Offene Punkte beim MDA<br />

Da das MDE eine relativ „junge“ Entwicklungsmethode beschreibt, gibt es noch einige<br />

ungeklärte Aspekte, die bei der Einführung dieser Methodik berücksichtigt werden<br />

sollten. Bei der Umsetzung der Standards wirken viele Tools keinesfalls überzeugend.<br />

Bezug nehmend auf die Wirtschaftlichkeit dieses Verfahrens - speziell im Vergleich<br />

zur konventionellen Entwicklung, gibt es kaum verfügbare Belege. Es stellt sich also<br />

die Frage, ob die Einführung des MDE für die jeweilige Unternehmung rentabel ist.<br />

So kommen Lewis, G.A. und Wrage, L. in einer MDA Studie im Jahr 2005 (18) zu<br />

dem Resultat, dass die Entwicklungszeit unter Einsatz von MDA zunächst zunimmt<br />

und sich nur lohnt, wenn mehrere Projekte dieser Art durchgeführt werden. Ergebnisse<br />

aktuellerer Studien lagen zum Zeitpunkt des Verfassens dieser Arbeit nicht vor.<br />

Abbildung 8: Kernaussagen aus MDA Studien, entnommen aus “<strong>Model</strong>-<br />

<strong>Driven</strong> Architecture: Konzeption, Einordnung und Wirtschaftlichkeit“ [S.60]<br />

von Johannes Vetter


Die Frage nach der Rentabilität kann also nicht mit einem einfachen „Ja“ oder<br />

„Nein“ beantwortet werden. Vielmehr müssen eine Vielzahl von Aspekten gegeneinander<br />

ab gewägt werden.<br />

Das Internetportal Software-<strong>Engineering</strong> (www.software-kompetenz.de) listet<br />

hierzu die nachfolgenden Punkte, welche an dieser Stelle übernommen und nach<br />

fachlicher bzw. wirtschaftlicher Relevanz sortiert wurden. (19)<br />

6.1 Fachliche Relevanz<br />

Reengineering / Wartung<br />

MDA ist ursprünglich für Neuentwicklungen gedacht. Wie können aber bestehende<br />

Softwaresysteme in MDA übernommen werden, so dass die Weiterentwicklung<br />

mit Hilfe dieser Methodik erfolgen kann? Ein weiterer Aspekt ist die Erzeugung von<br />

Releases, Patches oder Updates, welches ein wichtiger Bestandteil der laufenden<br />

Wartung von Anwendungen ist. Wie geht MDA damit um? Ist es notwendig jedes<br />

Mal das komplette System neu installieren?<br />

Stabilität des Datenmodells<br />

Änderungen am Datenmodell können großen Aufwand nach sich ziehen, der bei<br />

der Änderung des <strong>Model</strong>ls nicht sofort sichtbar ist. Es ist für den Designer oder Entwickler<br />

beispielsweise sehr einfach, im <strong>Model</strong>lierungstool ein Attribut zu einer persistenten<br />

Klasse hinzuzufügen. Die MDA-Generatoren erzeugen dann im Datenbankskript<br />

für die Tabelle, die zu der Klasse gehört, eine weitere Spalte. Dadurch entsteht<br />

nun die Notwendigkeit, zumindest die neue Spalte in den bestehenden Zeilen mit<br />

einem definierten Leerwert zu füllen.<br />

Entfremdung des Entwicklers vom Code<br />

Der generierte Code ist für den Entwickler nur noch schwer verständlich und nachvollziehbar.<br />

Weiterhin stellt sich das Problem mit Fehlern in den Codegeneratoren auf<br />

neue Weise wieder. Es wird dadurch potenziert, dass die Generatoren teilweise Code<br />

erzeugen, der auf Annahmen basiert, welche die Architekten bei der Entwicklung der<br />

Templates für den Codegenerator gemacht haben und welche dem Entwickler unbekannt<br />

sind. Resultierend hierbei ist Code, der von den Entwicklern in vielen Fällen<br />

schwer zu verstehen ist. Aus Sicht des Entwicklers ist es schwierig Codefragmenten<br />

zu vertrauen, die nicht selber entwickelt wurden und kaum lesbar sind.<br />

Unzulänglichkeiten in den Tools<br />

Die Erwartungshaltungen der Entwickler sind derzeit nur schwer zu erfüllen. Dies<br />

betrifft sowohl die funktionalen, als auch die nicht-funktionalen Aspekte.


Zu den nicht-funktionalen Einschränkungen gehört z. B. die Performance. So dauert<br />

beispielsweise das Umbenennen einer Implementierungsklasse im Code in der Regel<br />

nur Sekunden. Inklusive der damit verbundenen Nachfolgeänderungen (z. B. Umbenennung<br />

der Datei im Konfigurationsmanagementsystem) bewegt man sich jedoch im<br />

Minutenbereich. Die Umbenennung einer Klasse im UML-<strong>Model</strong>l eines MDA-Tools<br />

hingegen kann schon aufwändiger werden. Der MDA-Codegenerator muss den gesamten<br />

Code neu generieren. Die Arbeitsumgebung muss konsistent gehalten werden.<br />

Dazu gehört, dass alle Artefakte mit dem alten Namen gelöscht werden.<br />

6.2 Wirtschaftliche Relevanz<br />

ROI (Return-on-Investment)<br />

Bisher gibt es nur sehr wenige Überlegungen, ab wann sich der Einsatz von MDA<br />

lohnt. Für den Einsatz von MDA sind viele Vorbereitungen und Vorarbeiten notwendig.<br />

Hierzu gehören nicht nur Schulungen der Entwickler, sondern auch konzeptionelle<br />

Arbeiten (z. B. Anpassung des Softwareentwicklungsprozesses). Dies sind nicht<br />

unerhebliche Aufwände.<br />

EAI (Enterprise Application Integration)<br />

<strong>Model</strong>lierung auf hoher Ebene erscheint auf den ersten Blick sinnvoll. Neue Anwendungen<br />

laufen aber selten für sich isoliert, sondern müssen in eine vorhandene<br />

Anwendungslandschaft integriert werden. Wie kann dies in der MDA-basierten Entwicklung<br />

berücksichtigt werden?<br />

Herstellerabhängigkeit<br />

Da der MDA-Standard derzeit noch nicht vollständig und einheitlich von den<br />

Toolherstellern umgesetzt wird, bedeutet die Festlegung auf ein Werkzeug damit auch<br />

eine gewisse Herstellerabhängigkeit. Solche Abhängigkeiten haben sich in der Vergangenheit<br />

jedoch oftmals als negativ herausgestellt, da eine Kompatibilität zu Konkurrenz-Produkten<br />

meist nicht gegeben ist.<br />

7 Fazit<br />

Abschließend ist festzuhalten, dass sich die modellgetriebene Softwareentwicklung<br />

noch in einem sehr frühen Entwicklungsstadium befindet. So gibt es Ansätze verschiedener<br />

Hersteller, unterstützende Tools bereitzustellen, aber oft ist der generierte<br />

Output schwer wartbar oder die Umsetzung der Standardisierungen ist nicht ausreichend<br />

implementiert. Dies kann zu Problemen im Zusammenspiel mit anderen Softwareprodukten<br />

führen. Langzeiterfolge des MDA-Ansatzes sind sehr eng mit der


Entwicklung marktreifer, praxistauglicher MDA-Tools, speziell im Bereich der <strong>Model</strong>-to-<strong>Model</strong>-Transformation<br />

verknüpft. (20)<br />

International, als auch auf nationaler Ebene gibt es verschiedene, meist universitäre<br />

Forschungsprojekte, deren gemeinsames Ziel in der Optimierung der MDE-<br />

Entwicklungsmethoden liegt, um die Wirtschaftlichkeit dieses Verfahrens weiterhin<br />

zu optimieren.<br />

Gerade bei der Durchführung komplexer, großangesetzter Softwareentwicklungen<br />

wäre die Etablierung vollständiger, standardisierter MDE-Tools eine große Bereicherung.<br />

Es bleibt zu hoffen, dass Techniken, wie das MDA noch zu einem „Durchbruch“<br />

finden und nicht irgendwann lautlos verschwunden sein werden. Wie gezeigt<br />

wurde, gibt es noch offene Punkte beim MDA – die besonders für Entwickler eine<br />

Eintrittsbarriere auf Grund der hohen Komplexität darstellen.<br />

Ein großer Vorteil von DSL hingegen ist, dass die Sprachkonzepte auf die Zieldomäne<br />

abgestimmt sind. Das heißt, dass in möglichst natürlicher Sprache, bezogen auf<br />

die Domäne, Sachverhalte formuliert werden können. Je nach Grad der Abstraktion<br />

und Syntax können dies auch Nicht-Entwickler übernehmen oder Experten der Domäne,<br />

ohne IT-Kenntnisse. Weiterhin ist die allgemeine Produktivität innerhalb des<br />

Projekts deutlich erhöht, sobald die DSL einmal fertiggestellt ist, da dann auf höherem<br />

Abstraktionsgrad gearbeitet werden kann. (21)<br />

8 Literaturverzeichnis<br />

1. Anneke Kleppe, Jos Warmer, Wim Bast. MDA Explained, The Practice . s.l. :<br />

Addison Wesley, 2003.<br />

2. OMG. The Architecture of Choice for a Changing World. [Online] 27 06, 2012.<br />

[Cited: 07 16, 2012.] http://www.omg.org/mda.<br />

3. www.forum-omondo.com. Omondo UML. [Online] [Cited: 09 20, 2012.]<br />

www.forum-omondo.com/documentation_eclipseuml_2008<br />

/refactoring/refactor_class_class_diagram.png .<br />

4. Wikipedia. Strukturiertes Design. [Online] [Cited: 09 20, 2012.]<br />

http://de.wikipedia.org/wiki/Strukturiertes_Design.<br />

5. <strong>FH</strong>-<strong>Aachen</strong>. Landing-Page. [Online] www.fh-aachen.de.<br />

6. Wikipedia. Domänenspezifische Sprache. [Online] [Cited: 08 12, 2012.]<br />

http://de.wikipedia.org/wiki/Domänenspezifische_Sprache.<br />

7. <strong>Model</strong> <strong>Driven</strong> Architecture. [Online] 04 27, 2012. [Cited: 07 16, 2012.]<br />

http://de.wikipedia.org/wiki/<strong>Model</strong>_<strong>Driven</strong>_Architecture.<br />

8. VSEK. Computation Independent <strong>Model</strong> (CIM). [Online] [Cited: 07 16, 2012.]<br />

http://www.software-kompetenz.de/servlet/is/27119.<br />

9. Thomas, Dr. Marc. MDA – Praktisch. [PDF] s.l. : itemis GmbH & Co. KG,<br />

2006.<br />

10. TU München - Fakultät für Informatik Lehrstuhl IV: Software & Systems<br />

<strong>Engineering</strong>. Research Areas. [Online] [Cited: 08 21, 2012.]<br />

http://www4.in.tum.de/research/modeldriven/research.shtml.


11. TU München - Fakultät für Informatik Lehrstuhl IV: Software & Systems<br />

<strong>Engineering</strong>. Aktuelle Projekte. [Online] [Cited: 08 21, 2012.]<br />

http://www4.in.tum.de/research/modeldriven/projects.shtml .<br />

12. Universität Ulm. <strong>Model</strong> <strong>Driven</strong> Development. [Online] [Cited: 08 20, 2012.]<br />

http://www.uni-ulm.de/in/pm/forschung/themen/mdd.html.<br />

13. Universität Ulm. ActiveCharts. [Online] [Cited: 08 2012, 2012.]<br />

http://www.uni-ulm.de/in/pm/forschung/themen/mdd.html.<br />

14. IT-Agile DIE EXPERTEN FÜR AGILE SOFTWAREENTWICKLUNG.<br />

Was ist agile Softwareentwicklung? [Online] [Cited: 07 26, 2012.] http://www.itagile.de/wasistagilesoftwareentwicklung.html.<br />

15. Universität Leipzig. Transferprojekt "Agile <strong>Model</strong>-<strong>Driven</strong> Architecture".<br />

[Online] [Cited: 07 26, 2012.] http://ebus.informatik.unileipzig.de/www/de/forschung/agile-mda/agilemda.html.<br />

16. Frauenhofer. Schlagwort Suche: <strong>Model</strong>-<strong>Driven</strong> <strong>Engineering</strong>. [Online] [Cited:<br />

07 26, 2012.] http://publica.fraunhofer.de/schlagwoerter/modeldriven%20engineering.<br />

17. Vouffo-Feudjio, A.-G. Frauenhofer. A methodology for pattern-oriented<br />

model-driven testing of reactive software systems. [Online] [Cited: 07 26, 2012.]<br />

http://publica.fraunhofer.de/dokumente/N-195472.html.<br />

18. Vetter, Johannes. <strong>Model</strong>-Drive Architecture. Konzeption, Einordnung und<br />

Wirtschaftlichkeit. Ravensburg : GRIN Verlag, 2007.<br />

19. Software-<strong>Engineering</strong>. MDA in der Wissenschaft. [Online] [Cited: 07 23,<br />

2012.] http://ms.ligatus.com/de/finanzen/provea/miriale8_popunder/?v=3.<br />

20. Thomas Stahl, Markus Völter. <strong>Model</strong>lgetriebene Softwareentwicklung –<br />

Techniken, <strong>Engineering</strong>, Management. s.l. : dpunkt-Verlag, 2005.<br />

21. Maximilian Stroh. Hauptseminar Web <strong>Engineering</strong> im SS 2012. <strong>Model</strong><br />

<strong>Driven</strong> Development and Domain Specific Languages. [Online] [Cited: 09 21, 2012.]<br />

http://vsr.informatik.tu-chemnitz.de/edu/2012/webe-seminar-ss/papers/02/.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!