DDD(Domain-driven Design)は、より単純なドメインではなく複雑なドメインに適していると言われることがよくあります。DDD - 複雑なドメインとは何ですか?
複合ドメインの特徴は何ですか? (具体的にはより "複雑なビジネスルールがあります")。
どのような複雑なドメインの例ですか?
どのようにドメインを複雑(DDDに適している)として分類することはできますか?
DDD(Domain-driven Design)は、より単純なドメインではなく複雑なドメインに適していると言われることがよくあります。DDD - 複雑なドメインとは何ですか?
複合ドメインの特徴は何ですか? (具体的にはより "複雑なビジネスルールがあります")。
どのような複雑なドメインの例ですか?
どのようにドメインを複雑(DDDに適している)として分類することはできますか?
私の経験から、あなたのドメイン複合体を作る3最も重要なこと:
サイズ
ビッグドメインは複雑さを増加させる傾向があります。多くのものを扱い、調整することは常に困難です。
ルールや不変条件
ドメイン(有界コンテキストだけのカップルでも、ドメイン)がドメイン・ルールと不変量および/またはそのユースケースとプロセスにおけるニュアンスの多くの多くを持っているかもしれません。これにより複雑さが増します。エンティティまたはドメイン間のイベントの多くの変更をスパムするルールは、しばしば複雑なビジネスルールです。
コンテキスト
コンテキストの複雑さは、例えば、wihtout説明するのは難しいです。 Product
という名前のエンティティに関連するコンテキストの複雑さをテーブルに入れてみましょう。
コンテキストにもよりますが、エンティティはドメイン内のさまざまなことを意味する可能性があります。 Product
エンティティは、ファクトリコンテキスト、マーケティングコンテキスト、販売コンテキスト、ポストセールスサポートコンテキストなどについて同じ意味を持ちません。
Product
エンティティに関連するデータ、あらゆるケース、プロセス、コンテキストとエンティティがほんの一握りの場合でも、複雑さは非常に異なります。これは、通常、同じ永続ストア(ERストアの場合は同じテーブル)ですべてサポートされていても、多くのProduct
エンティティ(すべてのコンテキストに1つ)が存在することを意味します。
複雑さに関する独自の定義はありませんが、Vaughn Vernonの書籍(Implementing Domain Driven Design)には便利な説明があります。表1.1 DDDスコアカード。
たとえば、複雑なプロジェクトが頻繁に変更される(新しい機能はほとんど予想されません)、ドメインを完全に理解していない(または、あなたがビジネスエキスパートと話し合わなければならないあいまいさ)、@ jlvaqueroが言ったサイズ(言語の特徴/規則/豊かさの数...)。
私は、*複雑なドメイン*だけでなく、長寿*を目指す野心的なプロジェクトについても言います。 2番目のステートメントは複雑さを無視します。 – fabriciorissetto