2016-01-19 12 views
8

Si dice spesso che DDD (Domain-driven Design) è più adatto per domini complessi anziché semplici.DDD - Che cos'è un dominio complesso?

Che cosa caratterizza un dominio complesso? (si prega di essere più specifici di "ha regole aziendali complesse");

Quali sono esempi di domini complessi?

Come è possibile classificare un dominio come complesso (ad esempio adatto per DDD) o no?

+1

Direi che non solo per * domini complessi * ma anche per * progetti ambiziosi che mirano ad avere una lunga vita *. La seconda affermazione ignora la complessità. – fabriciorissetto

risposta

5

Dalla mia esperienza 3 cosa più importante che rende il vostro dominio complesso:

Dimensioni

Grandi domini tende ad aumentare la complessità. Gestire e coordinare molte cose è sempre difficile.

Regole e invarianti

Domini (anche domini con solo un paio di contesto limitata) potrebbe avere un sacco di regole di dominio e invarianti e/o un sacco di sfumature nei suoi casi e processo di utilizzo. Questo aumenta la complessità. Le regole che inviano spam a molte modifiche in un'entità o eventi tra domini sono spesso le regole aziendali complesse.

Contesto

contesto complessità è difficile da spiegare wihtout un esempio. Mettiamo in tabella una complessità di contesto relativa a un'entità denominata Product.

A seconda del contesto; un'entità potrebbe significare cose diverse nel tuo dominio. Un'entità Product non si ha lo stesso significato per il contesto di fabbrica, contesto Marketing, Vendite contesto, contesto supporto PostSales, ecc

Se i dati, casi utente, processi, comportamenti, ecc legato alla Product entità, in ogni contesto, sono molto diversi, la complessità aumenta molto anche quando hai solo una manciata di contesti ed entità. Questo di solito significa che hai molte Product entità (una in ogni contesto) anche se tutte sono supportate dallo stesso archivio di persistenza (nel caso di ER store, le stesse tabelle).

1

Non esiste una definizione univoca di complessità, ma esiste una descrizione utile nel libro di Vaughn Vernon (Implementing Domain Driven Design): Tabella 1.1 Scorecard DDD.

Descrive il progetto con criteri diversi, ad esempio: un progetto complesso cambierà spesso (nuove funzionalità e sarà difficilmente prevedibile), non si capisce bene il dominio (o c'è molto ambiguità di cui hai bisogno di discutere con un esperto di business), la dimensione come ha detto @jlvaquero (numero di funzionalità/regole/ricchezza del linguaggio ...).

Problemi correlati