Ist Domain Driven Design für nicht so komplexe Domänen nützlich / produktiv?

16

Bei der Beurteilung eines potenziellen Projekts bei der Arbeit schlug ich vor, dass es vorteilhaft sein könnte, einen domänengetriebenen Entwurfsansatz für sein Objektmodell zu verwenden. Das Projekt hat keine übermäßig komplexe Domäne, daher hat mein Kollege Folgendes auf mich geworfen:

Es wurde gesagt, dass DDD in Fällen vorteilhaft ist, in denen es ein komplexes Domänenmodell gibt („... es gilt immer dann, wenn wir in einer komplexen, komplizierten Domäne arbeiten“, Eric Evans).

Ich verliere mich in der Frage, wie Sie die Komplexität einer Domain definieren. Kann es durch die Anzahl der aggregierten Wurzeln im Domänenmodell definiert werden? Liegt die Komplexität einer Domäne im Zusammenspiel von Objekten?

Die Domain, die wir bewerten, ist das Online-Publishing und das Content-Management.

Elijah
quelle
Sie wissen, dass Ihre Domain komplex genug ist, um DDD zu rechtfertigen, wenn Sie DDD zum Modellieren verwenden. :)
Adam Crossland

Antworten:

18

Die Komplexität der Geschäftslogik, auch als Anwendungsverhalten bezeichnet, ist der wichtigste Faktor. Der zweitwichtigste Faktor ist, wie groß die Lücke zwischen dem technischen Problem und dem Geschäftswortschatz ist, der zur Beschreibung dieses Problems verwendet wird, da es bei DDD darum geht, ein gemeinsames Vokabular zwischen dem Geschäft und dem Ingenieurteam zu erstellen.

Einige der in DDD verwendeten Muster sind in der Unternehmensanwendungsarchitektur im Allgemeinen nützlich, z. B. das Repository-Muster, Bounded Context und Layered Architecture. Nur weil Sie diese Muster verwenden, bedeutet dies nicht, dass Sie domänengesteuertes Design durchführen.

Wenn es nicht viel Verhalten gibt, dh wenn Sie hauptsächlich Daten speichern und nicht auf diese Daten reagieren, ist der Aufbau dieser Domänenschicht möglicherweise weniger sinnvoll. Wenn Sie in der Inhaltsverwaltung lediglich Genehmigen und Veröffentlichen ausführen, kann dies möglicherweise durch Kennzeichen im System und nicht durch Domänenmethoden dargestellt werden. Wenn Sie jedoch zusätzliches Verhalten hinzufügen, wird die Eignung einer vollständigen Domänenebene deutlicher.

Wenn wir über Content Management sprechen, sind hier einige (imaginäre) Regeln, die möglicherweise auf die Notwendigkeit von DDD hinweisen:

  • Wenn die Story bis zum Datum xx / yy / zz gesperrt ist, veröffentlichen Sie sie zum Drucken und dann im Web. Wenn es kein Embargo gibt, veröffentlichen Sie es im Web und stellen Sie es zum Drucken bereit
  • Stellen Sie diese Story sofort bezahlten Abonnenten hinter der Paywall zur Verfügung. Veröffentlichung 2 Wochen später.
  • Nachdem eine Geschichte geschrieben wurde, senden Sie sie zur Überarbeitung, Korrektur und Genehmigung an einen Redakteur. Wenn genehmigt, senden Sie es an die Produktion. Wenn die Produktion aus Platzgründen die Story verkürzt, stellen Sie eine erweiterte Version online zur Verfügung.
JasonTrue
quelle