Zum Inhalt springen

Modellgetriebene Architektur

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 25. Juli 2004 um 09:15 Uhr durch Peterlustig (Diskussion | Beiträge) (linkfix). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Model Driven Architecture (MDA)

MDA ist ein junger Standard der Object Management Group (OMG), welche 1989 gegründet wurde und heutzutage ein offenes Konsortium aus ca. 800 Firmen weltweit ist. Die OMG erstellt herstellerneutrale Spezifikationen zur Verbesserung der Interoperabilität und Portabilität von Softwaresystemen. Bekannte Ergebnisse sind CORBA (Common Object Request Broker Architecture), IDL, UML (Unified Modeling Language), XMI oder MOF (Meta Object Facility). Das neue Flaggschiff der OMG heißt MDA . Mit MDA soll eine erhebliche Steigerung der Entwicklungsgeschwindigkeit erreicht werden. Das Mittel dazu heißt Automation durch Formalisierung. Aus formal eindeutigen Modellen soll durch Generatoren automatisch Code erzeugt werden. Durch den Einsatz der Generatoren und die formal eindeutig definierten Modellierungssprachen soll darüber hinaus die Softwarequalität gesteigert werden. Fehler in den generierten Codeanteilen können an einer Stelle - in den Generatorschablonen - beseitigt werden. Die Qualität des generierten Sourcecodes ist gleichbleibend, was zu einem höheren Grad der Wiederverwendung führen soll.

Ein weiteres wesentliches Ziel ist die bessere Handhabbarkeit von Komplexität durch Abstraktion. Mit den Modellierungssprachen soll Programmierung auf einer abstrakteren Ebene möglich werden, die klare Trennung von fachlichen und technischen Anteilen zielt auf eine bessere Wartbarkeit durch Trennung von Verantwortlichkeiten ab. Die abstraktere, technologieunabhängige Beschreibung von Schlüsselkonzepten mit eindeutigen Modellierungssprachen verspricht eine verbesserte Handhabbarkeit des Technologiewandels. Und nicht zuletzt soll eine verbesserte Interoperabilität durch Standardisierung erreicht werden.

MDA Konzepte im Überblick

Model: Ein Modell ist eine abstrakte Repräsentation von Struktur, Funktion oder Verhalten eines Systems. MDA-Modelle werden in der Regel in UML definiert. Aber auch klassische Programmiersprachen sind MDA-Modellierungssprachen. Ihre Programme sind MDA-Modelle. Diese sind wiederum unabhängig von der darunter liegenden Plattform - beispielsweise Bytecode oder Maschinencode. UML-Diagramme sind jedoch nicht per se MDA-Modelle. Der wichtigste Unterschied zwischen allgemeinen UML-Diagrammen (z.B. Analyse-Modellen) und MDA-Modellen liegt darin, dass die Bedeutung von MDA-Modellen formal definiert ist. Dies wird durch die Verwendung einer formal eindeutigen Modellierungssprache sicher gestellt, die in einem UML-Profil (s.u.) festgelegt wird. Damit wird erreicht, dass das erzeugte Modell eindeutig durch Generatoren auf ein anderes Modell oder auf Sourcecode abgebildet bzw. tranformiert werden kann. Plattform: MDA sagt (zunächst) nichts über den Abstraktionsgrad von Plattformen aus. Plattformen können aufeinander aufbauen. Beispielsweise ist Intel PC eine Plattform für Linux. CORBA, J2EE oder Web Services sind mögliche Plattformen für ein eBusiness-System und C++ ist eine mögliche Plattform für CORBA. Auch eine wohldefinierte Anwendungsarchitektur mit dazugehörigem Laufzeitsystem kann eine Plattform für Applikationen sein.

UML-Profile: UML-Profile sind der Standardmechanismus zur Erweiterung des Sprachumfangs der UML. Sie enthalten Sprachkonzepte, die über Basis-UML-Konstrukte wie Klassen und Assoziationen, Stereotypen, Tagged Values und Modellierungsregeln (Constraints) festgelegt werden.

Abgrenzung und Einordnung

An dieser Stelle fragen Sie sich möglicherweise, wo denn nun der bahnbrechende Unterschied zu bisherigen Ansätzen der Code-Generierung liegt. Daher hier eine kurze Abgrenzung: MDA ist kein CASE-Ansatz. Klassische CASE-Tools zeichnen sich dadurch aus, dass häufig sowohl Metamodell wie auch Transformation fix sind. Darüber hinaus besitzen sie in der Regel proprietäre Modellierungssprachen. Damit fehlt die angestrebte Interoperabilität und insbesondere lassen sich Modellierungssprache und der generierte Anteil nicht auf projektspezifische Bedürfnisse anpassen.

MDA ist keine 4GL. Ähnlich wie bei den CASE-Tools sind bei den 4GL-Tools häufig Transformation und Metamodell fest. Zusätzlich beruhen sie auf festen Laufzeitsystemen, die durch den Entwickler nicht modifiziert werden können. MDA macht hier dem gegenüber keine Einschränkungen. Und MDA ist kein Code-Wizard oder Pattern-Expander. Jeder kennt sie: Die nützlichen Code-Wizards in Entwicklungsumgebungen oder die Pattern Expansion in den UML-Tools. Sie erlauben die automatische Erzeugung eines Klassenrumpfes beispielsweise eines Entity Beans bzw. die Erzeugung mehrerer Klassenrümpfe bei der Pattern Expansion. Dieser Schritt ist im Unterschied zu MDA jedoch einmalig. Die mit MDA erreichbare wiederholte Generierung bei Erhaltung der vorgenommenen Individualisierungen fehlt. Außerdem geht die Abstraktion verloren, die mit MDA im Modell vorgenommen wird.

Praktische Interpretation

Soweit die reine OMG Lehre. Damit MDA praktisch anwendbar wird, muss man diesen jungen OMG-Standard allerdings in geeigneter Weise interpretieren und entsprechende Werkzeuge einsetzen, die zu der Interpretation passen. Richtig eingesetzt ist MDA mehr als eine Bereicherung für die Softwareentwicklung.