Bei der Entwicklung komplexer Software klafft oft eine Lücke zwischen Entwickler:innen und Architekt:innen auf der einen Seite und Fachexpert:innen bzw. Anwender:innen auf der anderen. Während sich Entwickler:innen und Architekt:innen stark auf technische Aspekte der Software konzentrieren, geht es den Fachexpert:innen um eine Lösung für ihr Problem. Beide Welten haben unterschiedliche Begrifflichkeiten und es ist schwierig, ein gemeinsames Verständnis der Fachdomäne zu erreichen.
Domain-driven Design (DDD) setzt an diesem Punkt an. Basierend auf einem iterativen Vorgehen wird ein Modell der Fachlichkeit entwickelt, mit dem sowohl Entwickler:innen als auch Fachexpert:innen etwas anfangen können. Ein entscheidender Aspekt ist hier das von Eric Evans als „Deep Insight“ bezeichnete tiefe Verständnis der Fachlichkeit, das oft zu einer wesentlich besseren Softwarelösung führt.
Anhand eines durchgängigen Fallbeispiels durchlaufen wir gemeinsam den DDD-Prozess, um die Domäne besser zu verstehen und daraus schließlich zu einem Modell zu kommen, das für Fachexpert:innen und Entwickler:innen gleichermaßen hilfreich ist. Dabei kommen Explorationstechniken wie Event Storming sowie DDD-Patterns und -Bausteine im Rahmen der Modellierung zum Einsatz.
Schließlich erhalten wir sogenannte „Bounded Contexts“, die voneinander unabhängige Teildomänen mit u.U. eigener Fachsprache („Ubiquitous Language“) darstellen. Sie eignen sich ideal für eine verteilte Softwarearchitektur wie beispielsweise Microservices, bei der jedem Bounded Context ein eigenes Entwicklerteam zugeordnet ist.
Auch diesen letzten Schritt, vom Modell zur Implementierung, erarbeiten wir im Seminar gemeinsam anhand des Fallbeispiels.