Zum Inhalt springen
iSAQB-blog-article-Lilienthal WP

Domain-Driven Design: Missver­ständ­nisse vermeiden, um Inves­tition zu sichern

Ein Artikel von Carola Lilienthal

Software­ent­wicklung ist ein Prozess, bei dem es zu vielen Missver­ständ­nissen kommen kann: Die späteren Anwender:innen sprechen ihre eigene fachliche Sprache. Das Software­ent­wick­lungsteam kommt aus einer techni­schen Welt und soll etwas schaffen, was es noch nicht gibt – innovativ und technisch auf dem neusten Stand. Ein Scheitern ist also durchaus möglich!

It’s developers’ (mis)understanding,
not domain experts’ knowledge,
that gets released in production.”

Alberto Brandolini, Erfinder des Event Stormings, bringt damit auf den Punkt, warum das Wissen über Domain-Driven Design (DDD) absolut essen­ziell ist für alle am Software­ent­wick­lungs­prozess Betei­ligten. Bei der Software­ent­wicklung muss es uns gelingen, die Domäne tiefgehend zu verstehen und das Domänen­wissen bis in die Software zu tragen.

Nur so können wir Software­systeme bauen, die zu 100% zur Aufgabe passen, die Domänenexpert:innen an das System stellen. Einer­seits verbessert und beschleunigt domänen­ge­triebene Software die Arbeits­pro­zesse. Anderer­seits können wir die Software im Einklang mit der Domäne über viele Jahre weiter­ent­wi­ckeln, denn die Domäne ist in der Regel stabiler als die von uns einge­setzte Technologie.

DDD ist eine Methode, die genau diese domänen­ge­triebene Heran­ge­hens­weise in den Vorder­grund stellt (vgl. Lilienthal 2023): Gemeinsam mit den Domänenexpert:innen erarbeitet sich das Entwick­lungsteam in einem agilen Prozess das Verständnis der Prozesse und Sprache in der Domäne. Die für Anfor­de­rungs­er­mittlung verwen­deten Techniken werden in DDD unter dem Begriff Colla­bo­rative Modelling zusam­men­ge­fasst. Das dabei erworbene Verständnis wird in eine Context Map (Abb. 1), in Bounded Contexts, in der Ubiqui­tious Language, in Domänen­mo­dellen überführt und schließlich in Sourcecode umgesetzt. Im Folgenden betrachten wir diese Schritte genauer.

 

Abb. 1: Zusam­menhang Domäne, Software­system und Teamstruktur

 

Colla­bo­rative Modelling und strate­gi­sches Design

Colla­bo­rative Modelling wird auf unter­schied­licher „Flughöhe“ während des gesamten Entwick­lungs­pro­jekts einge­setzt. Wir starten mit dem big picture: einer Gesamt­schau der Domäne und analy­sieren die übergrei­fenden Arbeits­pro­zesse. Mit den Analy­se­er­geb­nissen können wir das Strategic Design aus DDD beginnen. Dabei arbeiten wir verschiedene Subdo­mänen für unsere Domäne heraus und bewerten, wie wichtig diese für unsere Domäne sind (Core, Supporting, Generic Subdo­mains). Diese Bewertung hilft dem Entwick­lungsteam und dessen Management, zu entscheiden, wo wir unsere begrenzten Ressourcen inves­tieren und wo sich der Einkauf von Fremd­software lohnt.

 

Abb. 2: Beispiel einer Context Map aus der Fachdomäne Kino

 

Um den Gesamt­über­blick über die Archi­tektur zu bekommen, entwi­ckeln wir in diesem Schritt die sog. Context Map, in der wir die Subdo­mänen und ihre Bezie­hungen zuein­ander auf Bounded Contexts abbilden (Abb. 2). Die Context Map gibt die Struktur unserer Software vor, mit den Bounded Contexts als fachliche Module und ihren mit dem Context Mapping heraus­ge­ar­bei­teten unter­schied­lichen Arten von Schnitt­stellen. So bekommen wir eine aus der Domäne getriebene Archi­tektur, die zusätzlich auch Grundlage unserer Teamauf­teilung sein kann (vgl. Conway 1968).

 

Ubiquitous Language und takti­sches Design

In jedem Bounded Context wird die Ubiquitous Language – die gemeinsame Fachsprache – heraus­ge­ar­beitet und das Domänen­modell entwi­ckelt, mit dem die Ubiquitous Language in den Sourcecode überführt wird.

 

Ubiquitous Language
Ein System, dass nach DDD gebaut ist, besteht demnach aus mehreren Modulen mit jeweils unter­schied­lichen Domänen­mo­dellen, wobei jedes genau auf die Fachlichkeit seines Bounded Contexts zugeschnitten ist und so seine Subdomäne möglichst präzise den Punkt bringt.
Für die Konstruktion des Domänen­mo­dells gibt uns DDD mit dem Tactical Design Anleitung. Dabei unter­scheidet DDD fünf Arten von Klassen, die jeweils nach einem bestimmten Muster program­miert und mitein­ander verbunden werden: Entity, Domain Value, Service, Repository, Factory. Eine Technik aus dem Colla­bo­rative Modelling hilft uns, den richtigen Schnitt für die Klassen des Domänen­mo­dells zu finden. Mit Example Mapping aus Behavior-Driven Develo­pment (BDD; vgl. North 2006) lassen sich Szenarien für fachlich getriebene Akzep­tanz­tests heraus­zu­ar­beiten um die fachlichen Schnitt­stellen der Klassen und deren Zusam­men­arbeit modellieren.

 

Fazit und Ausblick

Wie die meisten leben­digen Methoden, entwi­ckelt sich auch DDD ständig weiter. Aktuell wird in der DDD-Community über Team Topologies (vgl. Skelton 2025) und Wardley Maps (vgl. Wardley 2017) disku­tiert. Team Topologies betrachtet die unter­schied­lichen Arten von Teams in Organi­sa­tionen. hat unseren Blick auf die Teamor­ga­ni­sation über die Stream-Aligned Teams, die einen Bounded Context umsetzen, hinaus geweitet, so dass wir uns Gedanken über Plattform, Enabling und Compli­cated Subsystem machen können. Mit Wardley Maps sind wir in der Lage, strate­gische Entschei­dungen für die Weiter­ent­wicklung unserer Software­lö­sungen für alle betei­ligten Ebenen gleicher­maßen verständlich und sichtbar zu machen. Dadurch können wir mit der Management-Ebene über die weitere strate­gische Planung sprechen.

Setzt man all diese Techniken und Konzepte aus DDD im Entwick­lungs­prozess ein und behält bei der Weiter­ent­wicklung des Systems die domänen­ge­triebene Perspektive bei, wird sich die Inves­tition in Software langfristig lohnen. Missver­ständ­nisse über die zu unter­stüt­zende Domäne werden mit DDD vermieden und es entsteht eine Software, die ihre Anwender:innen perfekt unterstützt.

 

Literatur

  • Carola Lilienthal, Henning Schwentner: Domain-Driven Trans­for­mation, dpunkt 2023.
  • Melvin E. Conway: How Do Committees Invent? In: F. D. Thompson Publi­ca­tions, Inc. (Hrsg.): Datamation. Band 14, Nr. 5, April 1968, S. 28–31
  • Dan North: Intro­ducing BDD. Better Software Magazin, März 2006
  • Simon Wardley. My basics for business strategy. Medium. Hacker Noon, Mai 2017
  • Matthew Skelton, Manuel Pais: Team Topologies: Organizing Business and Technology for Fast Flow of Value,IT Revolution, 2nd Edition, 2025

 

Die Autorin

Dr. Carola Lilienthal ist Geschäfts­füh­rerin der WPS – Workplace Solutions GmbH und prüft im Auftrag ihrer Kunden regel­mäßig die Qualität von Software­ar­chi­tek­turen. Ihre Erfah­rungen hat sie in den Büchern „Langlebige Software­ar­chi­tek­turen“ und „Domain-Driven Trans­for­mation“ zusammengefasst.

 

Appendix

 

Ubiqui­tious Language
DDD fordert, dass alle Betei­ligten an einem Software­projekt eine gemeinsame fachliche Sprache entwi­ckeln, die sog. Ubiquitous Language (allge­gen­wärtige Sprache). Diese gemeinsame Sprache soll auf der Fachsprache der Fachexpert:innen basieren, nicht auf der techni­schen Sprache der Entwickler:innen. Ziel ist es, die Fachsprache so zu standar­di­sieren, dass die Fachbe­griffe aus dem Problemraum (Domäne) im Lösungsraum (Software) ihre Entspre­chung finden können. DDD empfiehlt, dass diese gemeinsame Sprache während der Laufzeit eines Projekts überall verwendet wird: im Gespro­chenen, im Geschrie­benen, in Diagrammen und eben auch im Code.

Bounded Context
Im Software­system sollte es pro Subdomäne einen Bounded Context geben, der einen Teil des Source­codes umfasst und ein eigenes Daten­bank­schema besitzt. In klassi­scher Software­architektur würde man die Bounded Contexts als Module oder Kompo­nenten bezeichnen. Aller­dings ist es aus DDD-Sicht entscheidend, dass die Bounded Contexts fachlich geschnitten sind.

Wardley Mapping
Eine Wardley Map ist eine Darstellung der Landschaft, in der ein Unter­nehmen tätig ist. Sie besteht aus einer Wertschöp­fungs­kette – also Aktivi­täten zur Erfüllung der Benutzer:innen-Anforderungen; die im Vergleich zur Entwicklung – also die Verän­derung einzelner Aktivi­täten im Laufe der Zeit aufgrund des Wettbe­werbs zwischen Angebot und Nachfrage; grafisch darge­stellt ist.

Context Map
Je größer die Domäne ist und je größer die Software wird, desto mehr fachliche Kontexte wird es geben. Um hier die Übersicht zu behalten, gibt DDD uns das Mittel der Context Map an die Hand – eine Landkarte der fachlichen Kontexte.

Conways Law
besagt, dass die Archi­tektur eines Systems die Kommu­ni­ka­ti­ons­struktur der Organi­sation wider­spiegelt, die es entwi­ckelt hat. Verein­facht formu­liert, ist die Struktur des Systems, das entwi­ckelt wird, von der Struktur der Teams abhängig, die daran arbeiten.

Team Topologies
ist ein Konzept und Rahmenwerk, das einen Leitfaden für die Organi­sation und Entwicklung von Teams innerhalb einer Organi­sation bietet, um Software­pro­dukte oder ‑dienste effektiv zu entwi­ckeln und bereit­zu­stellen. Team Topologies wurde durch das gleich­namige Buch von Matthew Skelton und Manuel Pais aus dem Jahre 2019 bekannt.

Stream-Aligned Team
schaffen den Wert für die Kund:innen entlang des Value Stream. Sie sind cross-funktional zusam­men­ge­setzt, damit sie mit diesem Kompe­tenzmix schnell signi­fi­kante Inkre­mente liefern können. Sie haben einen klaren und fokus­sierten Auftrag und sind für den gesamten Lebens­zyklus ihrer Produkte verant­wortlich, von der Entwicklung über die Bereit­stellung bis zum Betrieb.

Teilen Sie diesen Artikel:

Zum Thema passende Artikel

Bleiben Sie informiert mit dem iSAQB®-Newsletter!

Nach oben scrollen