Entwicklung in MDA erfolgt in folgenden Schritten:
1. Zuerst wird i. d. R. mit Hilfe der UML die
Struktur und/oder das Verhalten in Form eines High-Level Modells ( PIM) der jeweiligen Fachdomäne entwickelt, das von der eingesetzten Implementierungs- oder Basistechnologie vollständig unabhängig ist.
2. Als nächstes wird das PIM in ein oder mehrere plattformspezifische Modelle
( PSM's) transformiert. Diese Übersetzung geschieht automatisch. Jedes PSM beschreibt das Softwaresystem bezogen auf eine bestimmte Implementierungstechnologie. Es benutzt die Konstrukte, die in dieser Technologie zur Verfügung stehen, etwa: EJB's, Datenbankschemata, .Net-Komponenten etc.
3. Schließlich wird das PSM in Quellcode und Datenbankskripte übersetzt. Mit den entstehenden Datenbankskripten kann das gesamte Datenbankschema mit Tabellen, Indizes, Fremdschlüsselbeziehungen und Views auf einmal angelegt werden. Das ist zunächst eine sehr große Vereinfachung für den Entwickler.
Gerade darin liegt aber nun das größte Risiko. Es ist für den Designer oder Entwickler beispielsweise sehr einfach, im Modellierungstool ein Attribut zu einer persistenten Klasse hinzuzufügen. Die MDA-Generatoren erzeugen dann im Datenbankskript für die Tabelle, die zu der Klasse gehört, eine weitere Spalte. Dadurch entsteht nun die Notwendigkeit, zumindest die neue Spalte in den bestehenden Zeilen mit einem definierten Leerwert zu füllen.
Ebenso einfach ist es zum Beispiel, im Werkzeug zwischen zwei persistenten Klassen eine weitere persistente Beziehung (Assoziation) hinzuzufügen. Die MDA-Generatoren erzeugen dann im Datenbankskript für die Tabellen, die zu den Klassen gehören, neue Spalten und Fremdschlüsselbeziehungen (Constraints). Das macht in der Regel eine komplette Migration der existierenden Daten erforderlich, denn die Datenbank prüft die Einhaltung der Constraints natürlich sehr streng.
Im Entwicklungsprozess muss also das Augenmerk darauf gelegt werden, dass in einer Iteration Änderungen am Datenmodell, wenn möglich sofort erkannt und dem Entwickler zurückgemeldet werden. Der Entwickler wird sich dadurch der Konsequenzen seines Handelns bewusst und kann noch rechtzeitig anders entscheiden.