Erklär-Seite · 7 Minuten Lesezeit

Was ist Model-Driven Engineering?

Statt erst Code zu schreiben und dann zu hoffen, dass alle dasselbe gemeint haben, malst du zuerst ein Modell — und der Rest wird daraus erzeugt. Methode seit ~2003 · gescheitert in der Wave 1 · jetzt in der Wave 2 wieder relevant.

Mit einem konkreten Beispiel

Stell dir vor, du baust einen Tank-Sensor-Service. Der Sensor misst den Füllstand, ein Display zeigt ihn an, eine Pumpe schaltet sich bei < 20 % ein.

Klassisch schreibst du:

Sechs Stellen, an denen „Tankfüllstand" in irgendeiner Form codiert ist. Wenn jemand entscheidet, dass der Wert künftig in Litern statt Prozent ankommt, musst du alle sechs anfassen. Eine vergisst man — und im Feld kommt der Bug raus.

Mit MDE machst du es so:

  1. Du beschreibst einmal in einem Modell:
    topic Tankfuellstand {
      wert: Liter
      gemessen_um: Zeitstempel
    }
  2. Ein Generator macht daraus den Rust-Code, den Swift-Code, den Kotlin-Code, das SQL-Schema, die OpenAPI-Definition. Alle.

Wenn die Einheit jetzt von Prozent auf Liter wechselt, änderst du eine Zeile im Modell. Der Generator macht den Rest.

Modell zuerst, Code danach. Eine Wahrheit, sechs Outputs.

Warum hat das in den 2000ern nicht funktioniert?

In den 2000ern gab's einen großen Hype um MDA (Model-Driven Architecture) und UML als universelle Modellierungssprache. Das hat aus mehreren Gründen nicht geklappt:

Warum es jetzt anders ist

Wo passt das ins ZeroDDS-Bild?

DDS braucht Modelle. Eine „Topic" — also ein Datenfluss zwischen Maschinen — wird durch eine Type-Definition beschrieben. Klassisch macht man das in IDL (Interface Definition Language). Aus dieser einen IDL-Datei wird Code für jede Sprache erzeugt.

Das ist klassisches MDE. ZeroDDS macht das mit dem Tool idlc (IDL-Compiler), der aus einer .idl-Datei native Rust-, C++-, Java-, Python- und TypeScript-Klassen baut.

Was wir mit Zero PDE drauf setzen: ein Werkzeug, in dem du nicht nur Type-Definitionen, sondern die ganze Architektur modellierst — Topics, QoS-Profile, Sicherheits-Domänen, Hardware-Mapping. Aus einem Modell. In Git versionierbar. Transparent generiert.

Wo's nicht passt

Ein guter Indikator: wenn dein Projekt eine „Wahrheit" hat, die an mehr als 3 Stellen codiert sein muss, ist MDE einen Blick wert.

In drei Sätzen

Model-Driven Engineering ist die Idee, eine einzige Wahrheit in einem versionierbaren Modell zu pflegen und alle Code-, Schema- und Doku-Outputs daraus zu generieren. Es ist seit 20 Jahren versprochen worden und seit 5 Jahren tatsächlich machbar. Die ZeroDDS-Familie nutzt es konsequent — vom IDL-Compiler bis zum Architektur-Modellierer.

Weiter: Was ist DDS? · Glossar