DDD - Was ist eine komplexe Domäne?

8

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?

    
Piovezan 19.01.2016, 11:59
quelle

2 Antworten

5

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).

    
jlvaquero 19.01.2016 12:31
quelle
1

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 ...).

    
rad 22.01.2016 17:25
quelle

Tags und Links