Dreher Model Driven Engineering.pdf - FH Aachen
Dreher Model Driven Engineering.pdf - FH Aachen
Dreher Model Driven Engineering.pdf - FH Aachen
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/.