Loading AI tools
Oberbegriff für Techniken, die automatisiert aus formalen Modellen lauffähige Software erzeugen Aus Wikipedia, der freien Enzyklopädie
Modellgetriebene Softwareentwicklung (englisch model-driven software development, MDSD oder MDD) ist ein Oberbegriff für Techniken, die automatisiert aus formalen Modellen lauffähige Software erzeugen.[1] Dabei werden Modellierungssprachen, insbesondere domänenspezifische Sprachen (DSLs) zusammen mit Codegeneratoren und Interpretern eingesetzt.
Modellgetriebene Softwareentwicklung hat zum Ziel, den Quelltext für ein Softwaresystem ganz oder teilweise aus einem Modell zu generieren, wobei das Modell von deutlich einfacherer Komplexität ist, als der zu generierende Quelltext. Insbesondere kommt dabei das DRY-Prinzip[1] zum Tragen. Neben dem Quelltext lassen sich aber auch weitere Artefakte wie nicht ausführbare Dateien sowie Tests und Dokumentationen automatisiert generieren.[2] Weil allein mit den Mitteln der jeweiligen Programmiersprache nicht immer passende Abstraktionen zur Beschreibung verschiedener Gegenstandsbereiche (Domänen) eines Softwaresystems gefunden werden können, werden zielsprachunabhängige Abstraktionen in Form von Modellierungssprachen erschaffen.
Modellierungssprachen können auf den jeweiligen Gegenstandsbereich speziell zugeschnitten sein. Man spricht dann von einer domänenspezifischen Sprache (DSL). Üblich ist auch die Verwendung von universellen Modellierungssprachen wie der Unified Modeling Language (UML).[3] Die Modellierungssprache wird entweder generativ oder interpretativ auf die Zielplattform abgebildet.
Der Einsatz modellgetriebener Softwareentwicklung hat Auswirkungen auf allen Ebenen eines Projektes – sowohl technisch, fachlich als auch im Managementbereich. Deshalb beschreibt die Fachliteratur zu modellgetriebener Softwareentwicklung nicht nur, wie man DSLs und Codegeneratoren entwickelt, sondern auch, wie man diese sinnvoll in Entwicklungsprozesse integriert.
Durch den erhöhten Abstraktionsgrad der DSLs sind Problembeschreibungen wesentlich klarer, einfacher und weniger redundant festgehalten. Das erhöht nicht nur die Entwicklungsgeschwindigkeit, sondern sorgt innerhalb des Projektes für klar verständliche Domänenkonzepte. Das Konzept der Ubiquitous Language aus dem Domain-driven Design wird hier auf die Konzeptebene der Softwarearchitektur angewandt.
Weiterhin wird die Evolution der Software durch die Trennung der technischen Abbildung und der fachlichen Modelle wesentlich vereinfacht. Testfälle können rascher oder gründlicher erstellt werden, da man nicht mehr jede einzelne Zeile Code testet, sondern auf funktionaler Ebene das Systemverhalten statisch und dynamisch prüft.
Domänenspezifische Validierung in den Entwicklungswerkzeugen sorgt für sehr kurze Turnarounds.
Der Initialaufwand zur Entwicklung einer DSL bzw. zur maßgeschneiderten Abbildung von UML auf die Zielsprache kann, insbesondere bei nicht trivialen Projekten, erheblich sein.
Da sich die Metamodelle, und damit die Modelle, in der Regel auf Teilaspekte der abzubildenden Wirklichkeit beschränken, wird oft nur ein Rahmen (Datenstrukturen, Schnittstellen, Funktionsrümpfe etc.) erzeugt, welcher noch von Hand um die tatsächliche Funktion ergänzt werden muss. Dies führt dazu, dass der tatsächliche Projektaufwand deutlich unterschätzt werden kann. Auszunehmen sind hiervon in der Regel Client-Anteile von Client-Server-Anwendungen und reine Datenverwaltungsanwendungen. Weiterhin auszunehmen sind Fälle, in denen ausgereifte domänenspezifische Sprachen (DSL) zum Einsatz kommen, die dynamische Aspekte des Systemverhaltens so weit abdecken, dass eine vollständige oder fast vollständige Generierung des Quelltexts ermöglicht wird (z. B. Simulink).
Bei nicht trivialen Fehlern, solche die nicht auf Spezifikationsfehler zurückzuführen sind, ist in der Regel eine Fehlersuche zur Laufzeit notwendig. Dies ist insbesondere der Fall, wenn der generierte Code durch handgeschriebene Anteile ergänzt wurde. Eine Unterstützung zur Fehlersuche auf Modellebene ist oft nicht oder nur unvollständig vorhanden.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.