Domain-Driven Design
Ein Ansatz zur Softwareentwicklung, der sich auf die Modellierung komplexer Domänen konzentriert.
Klassifikation
- KomplexitätMittel
- AuswirkungTechnisch
- EntscheidungstypDesign
- OrganisationsreifeFortgeschritten
Technischer Kontext
Prinzipien & Ziele
Use Cases & Szenarien
Kompromisse
- Missverständnisse in der Domänenmodellierung
- Überkomplexität durch zu viele Modelle
- Widerstand gegen Veränderungen
- Engagierte Zusammenarbeit zwischen IT und Fachabteilungen.
- Iterative Entwicklung und Feedbackschleifen.
- Dokumentation der Domänenmodelle.
I/O & Ressourcen
- Anforderungen der Stakeholder
- Technische Spezifikationen
- Marktforschungsergebnisse
- Funktionierende Software
- Dokumentierte Prozesse
- Erfüllte Anforderungen
Beschreibung
Domain-Driven Design (DDD) ist ein Konzept, das darauf abzielt, die Komplexität von Softwareprojekten zu bewältigen, indem es die Domäne des Problems in den Mittelpunkt stellt. Es fördert die enge Zusammenarbeit zwischen Fachexperten und Entwicklern, um ein gemeinsames Verständnis der Domäne zu schaffen und effektive Modelle zu entwickeln.
✔Vorteile
- Verbesserte Softwarequalität
- Erhöhte Flexibilität
- Bessere Zusammenarbeit zwischen Teams
✖Limitationen
- Hoher initialer Aufwand
- Komplexität in der Modellierung
- Abhängigkeit von Fachexperten
Trade-offs
Metriken
- Kundenzufriedenheit
Messung der Zufriedenheit der Benutzer mit der Software.
- Fehlerquote
Anzahl der Fehler pro 1000 Zeilen Code.
- Entwicklungszeit
Zeit, die für die Entwicklung neuer Funktionen benötigt wird.
Beispiele & Implementierungen
Einsatz von DDD in einem Finanzdienstleistungsunternehmen
Ein Finanzdienstleister nutzt DDD, um komplexe Geschäftsregeln in einem neuen Kreditvergabe-System abzubilden.
Entwicklung einer CRM-Lösung
Ein Unternehmen implementiert DDD, um eine maßgeschneiderte CRM-Lösung zu entwickeln, die die spezifischen Anforderungen der Kunden berücksichtigt.
Optimierung eines E-Commerce-Systems
Ein E-Commerce-Unternehmen verwendet DDD, um die Benutzererfahrung durch gezielte Modellierung der Kaufprozesse zu verbessern.
Implementierungsschritte
Durchführung von Workshops zur Anforderungsanalyse.
Erstellung von Prototypen zur Validierung von Modellen.
Regelmäßige Überprüfung und Anpassung der Modelle.
⚠️ Technische Schulden & Engpässe
Tech Debt
- Unzureichende Dokumentation der Modelle.
- Technische Schulden durch schnelle Lösungen.
- Veraltete Technologien in der Implementierung.
Bekannte Engpässe
Beispiele für Missbrauch
- Verwendung von DDD ohne ausreichendes Fachwissen.
- Modellierung ohne Feedback von Benutzern.
- Vernachlässigung technischer Einschränkungen.
Typische Fallen
- Annahme, dass alle Fachexperten die gleiche Sichtweise haben.
- Überbewertung der Komplexität der Domäne.
- Unterschätzung des Schulungsbedarfs.
Erforderliche Fähigkeiten
Drivers (Architectural Drivers)
Constraints
- • Einhaltung von Sicherheitsstandards
- • Regulatorische Anforderungen
- • Technologische Rahmenbedingungen