Es wird oft gesagt, dass DDD (Domain-driven Design) eher für komplexe als für einfachere Domänen geeignet ist.
Was kennzeichnet eine komplexe Domäne? (Bitte seien Sie spezifischer als "es hat komplexe Geschäftsregeln" );
Was sind Beispiele für komplexe Domänen?
Wie kann ich eine Domäne als komplex klassifizieren (d. h. für DDD geeignet) oder nicht?
Aus meiner Erfahrung 3 wichtigste Sache, die Ihre Domäne komplex macht:
Größe
Große Domänen neigen dazu, die Komplexität zu erhöhen. Die Handhabung und Koordination vieler Dinge ist immer schwierig.
Regeln und Invarianten
Domains (sogar Domains mit nur ein paar beschränkten Kontexten) können in ihren Anwendungsfällen und Prozessen viele Domain-Regeln und Invarianten und / oder viele Nuancen enthalten. Dies erhöht die Komplexität. Regeln, die viele Änderungen in einer Entität oder Interdomains-Ereignissen spammen, sind häufig die komplexen Geschäftsregeln .
Kontext
Kontextkomplexität ist ohne Beispiel schwer zu erklären. Lassen Sie uns in die Tabelle eine Kontextkomplexität einfügen, die sich auf eine Entität mit dem Namen Product
bezieht.
Abhängig vom Kontext; Eine Entität könnte verschiedene Dinge in Ihrer Domain bedeuten. Eine Product
-Entität bedeutet nicht dasselbe für Factory-Kontext, Marketing-Kontext, Sales-Kontext, PostSales-Support-Kontext usw.
Wenn die mit Product
entity in jedem Kontext verbundenen Daten, Benutzerfälle, Prozesse, Verhaltensweisen usw. sehr unterschiedlich sind, erhöht sich die Komplexität sehr, selbst wenn Sie nur eine Handvoll von Kontext und Entitäten haben. Dies bedeutet normalerweise, dass Sie viele Product
-Entitäten haben (eine in jedem Kontext), selbst wenn sie alle vom gleichen Persistenzspeicher unterstützt werden (im Falle eines ER-Speichers die gleiche Tabelle / s).
Es gibt keine eindeutige Definition von Komplexität, aber es gibt eine nützliche Beschreibung im Buch von Vaughn Vernon ( Domain-Driven-Design implementieren ): Tabelle 1.1 Die DDD Scorecard.
Er beschreibt das Projekt mit verschiedenen Kriterien, zum Beispiel: ein komplexes Projekt wird sich oft ändern (neue Features und es wird kaum zu erwarten sein), Sie verstehen die Domain nicht vollständig (oder es gibt viel Unklarheit dass Sie mit Business-Experten besprechen müssen), die Größe wie @jlvaquero sagte (Anzahl der Feature / Regeln / Reichhaltigkeit der Sprache ...).
Tags und Links domain-driven-design