Programm
Einführung in Domain-Driven Design
- Überblick: Was ist Domain-Driven Design? – Grundlagen und Zielsetzungen des DDD-Ansatzes.
Die Domäne kennenlernen
- Methoden zur Analyse und Modellierung der Domäne, einschließlich Event Storming und Domain Storytelling, um die spezifischen Anforderungen und Abläufe besser zu verstehen.
Strategisches Design
- Die Domäne aufteilen und Modelle voneinander abgrenzen (Bounded Context).
- Strategien, um die Domäne in sinnvolle und skalierbare Strukturen zu unterteilen.
Ubiquitous Language (Allgegenwärtige Sprache)
- Aufbau einer gemeinsamen Fachsprache zwischen Fachexperte/Fachbereich und Entwickler zur Vermeidung von Missverständnissen und zur Verbesserung der Kommunikation.
Der Weg zum Modell
- Schritte zur Entwicklung und Verfeinerung eines Domänenmodells, das die Anforderungen der Domäne widerspiegelt.
Taktisches Design – Umsetzung des Modells in Software
- Techniken, um das entwickelte Modell in Software zu überführen, inklusive der Verwendung von DDD-Elementen wie Entities, Value Objects, Aggregates und Repositories.
Ziele
In der erfolgreichen Softwareentwicklung spielt nicht nur die Technologie, sondern vor allem die Fachlichkeit der Domäne eine entscheidende Rolle. Der Domain-Driven Design (DDD)-Ansatz ermöglicht es, Software so zu gestalten, dass sie die spezifischen Anforderungen der Domäne widerspiegelt und die Anwender optimal bei ihrer Arbeit unterstützt.
Ein häufiges Problem in Softwareprojekten sind Kommunikationsbarrieren zwischen Fachexperte/Fachbereich und Entwickler. DDD bietet hier einen strukturierten Ansatz zur Entwicklung einer gemeinsamen Fachsprache, die die Grundlage für eine domänenorientierte Architektur bildet. Durch diese gemeinsame Sprache werden Missverständnisse vermieden, und die Zusammenarbeit zwischen den Teams wird erleichtert.
Auch innerhalb von Entwicklungsteams können Missverständnisse über die Systemarchitektur auftreten. DDD stellt vordefinierte Muster wie Entity, Value Object, Aggregate, Service und weitere zur Verfügung, die eine klare Kommunikation und eine einheitliche Architektur fördern.
Diese Fachsprache und DDD-Muster können nicht nur innerhalb eines Systems, sondern auch in großen Softwareprojekten oder bei verteilten (Micro-)Service-Architekturen effektiv eingesetzt werden. Mit Konzepten wie Bounded Context, Context Map, Shared Kernel, Domain Events und Anticorruption Layer ermöglicht DDD den Aufbau einer skalierbaren und stabilen Architektur.
Voraussetzungen
- Erfahrungen in der Softwareentwicklung und Produktbereitstellung: Grundlegende Kenntnisse in der Softwareentwicklung und -lieferung werden vorausgesetzt.
- Grundkenntnisse in Software-Architektur (von Vorteil): Vorkenntnisse in Software-Architektur sind hilfreich, aber nicht zwingend erforderlich.


