Risposte:
In primo luogo, se non sai di averne bisogno, è possibile che non ne abbia bisogno. Se non riconosci i problemi che DDD risolve, forse non hai questi problemi. Anche i sostenitori del DDD sottolineano spesso che il DDD è destinato solo a progetti di grandi dimensioni (> 6 mesi).
Supponendo che stai ancora leggendo a questo punto, la mia opinione su DDD è questa:
DDD sta cercando di trasformare il tuo software in un modello di un sistema o processo reale. Usando DDD, devi lavorare a stretto contatto con un esperto di dominio in grado di spiegare come funziona il sistema reale. Ad esempio, se stai sviluppando un sistema che gestisce il posizionamento delle scommesse sulle corse dei cavalli, il tuo esperto di dominio potrebbe essere un bookmaker esperto.
Tra te e l'esperto di dominio, costruisci un linguaggio onnipresente (UL), che è fondamentalmente una descrizione concettuale del sistema. L'idea è che dovresti essere in grado di scrivere ciò che il sistema fa in modo che l'esperto di dominio possa leggerlo e verificarne la correttezza. Nel nostro esempio di scommesse, il linguaggio onnipresente includerebbe la definizione di parole come "razza", "scommessa", "probabilità" e così via.
I concetti descritti da UL costituiranno la base della progettazione orientata agli oggetti. DDD fornisce alcune indicazioni chiare su come i tuoi oggetti dovrebbero interagire e ti aiuta a dividere i tuoi oggetti nelle seguenti categorie:
DDD raccomanda anche diversi modelli:
Ora, a questo punto, devo dire che se non hai mai sentito parlare di nessuna di queste cose prima, non dovresti provare a usare DDD su qualsiasi progetto per il quale hai una scadenza. Prima di provare DDD, è necessario conoscere i modelli di progettazione e i modelli di progettazione aziendale . Conoscerli rende DDD molto più facile da comprendere. E, come accennato in precedenza, è disponibile un'introduzione gratuita a DDD da InfoQ (dove puoi anche trovare discussioni su DDD).
Prendi StackOverflow come esempio. Invece di iniziare a progettare alcuni moduli Web, ti concentri prima di fare la modellazione orientata agli oggetti delle entità all'interno del tuo dominio problematico, ad esempio Utenti, Domande, Risposte, Voti, Commenti ecc. Poiché il design è guidato dai dettagli del problema dominio si chiama design guidato dal dominio .
Puoi leggere di più nel libro di Eric Evans .