13

1)

エヴァンの本、ページ。415:

また、ドメインモデルの重要な側面は、複数の境界コンテキストにまたがる場合がありますが、定義上、これらの個別のモデルは、共通の焦点を示すように構造化することはできません。

a)引用は、コアドメイン CDが複数のバウンドコンテキスト BCにまたがることができることを示唆していると思いますか?

b)CD内のBCにはコア要素のみが含まれ、一般的な要素は含まれないと思いますか?もしそうなら、それは私たちが常にコアドメインを念頭に置いてBC ( CDに含まれているもの)を設計する必要があるという意味ではありませんか?言い換えれば、BCの設計を開始する前でも、 CDとは何かという一般的な考えを持っている必要がありますか?

c)

...しかし、定義上、これらの別個のモデルは、共通の焦点を示すように構造化することはできません

BCは、外の世界がすべての部分(つまり、 BC )がどのように組み合わされ、それらの共通の目的が何であるかをすぐに理解できるように構造化されるべきではないことを理解していますが、著者はそのような構造(暗黙的に伝達する)を暗示しています異なるBCの共通の目的)は偶然でも起こり得なかったのでしょうか?もしそうなら、なぜですか?

2)ドメインモデルには複数の汎用サブドメイン GSが含まれる場合がありますが、単一のGSが複数の BCにまたがることはできますか?

アップデート:

1)

b)

CD内のBCにはコア要素のみが含まれ、一般的な要素は含まれないと思いますか?..。

BCを定義するときは、コアドメインが何であるかを確実に理解する必要があります。述べたように、理想的には、それらは1対1である必要があります。ただし、BCは、理想的ではない状態のシステムのニーズを満たすように定義される場合があります。

非理想的な状況では、 CD内のBCにもいくつかの非コア要素が含まれている可能性があり、非理想的な状況では、 CDに複数のBCが含まれている可能性があることを示唆していると思いますか?

c)

ドメインは複数のBCにまたがっていますが、明示的な境界にもかかわらず、ドメインの動作は確かにBCにまたがることができます。コンテキストマップは、このようなBC間の相互作用を記述できます。引用自体は、コアドメインの価値を強調し、おそらくBCとの関係を説明することを目的としたドメインビジョンステートメントのアイデアに基づいています。

しかし、なぜ著者は「定義上」という用語を使用しているのでしょうか。まるで、 BCが誤って、共通の焦点を示すように構造化される可能性がないことを意味するのでしょうか。

2)

ドメインモデルには複数の汎用サブドメインGSが含まれる場合がありますが、単一のGSが複数のBCにまたがることはできますか?

複数のBCは、単一の汎用サブドメインを利用できます。ここでは「スパン」という用語を避けます。これは、ドメインモデル全体に​​対する汎用サブドメインの重要性を強調しすぎるためです。

a)

複数のBCが単一の汎用サブドメインを利用できます

あなたの返事がわかりません。1つの GSに複数の*BC*を含めることができると言っていますか?

b)

ここでは「スパン」という用語を避けます。これは、ドメインモデル全体に​​対する汎用サブドメインの重要性を強調しすぎるためです。

おそらく役に立たない質問ですが、「スパン」という用語を使用すると、ジェネリックサブドメインが実際よりも重要に見える理由について詳しく説明していただけますか?

Giacomo Tesioへの返信:

1)

b)

いいえ、一部の一般的な要素は、コアドメインで重要な役割を果たすことがよくあります。たとえば、多くの共有カーネルに存在する時間、通貨、およびお金を参照してください。これらは実際には一般的ですが、コアドメインルールにとって重要です。

したがって、汎用要素(Time、Currency、Moneyなど)コアドメインで使用されている場合、実装オプションは共有カーネルのみです(つまり、この汎用要素はコアドメインとそれを必要とする他のサブドメインの両方で共有されます)、しかし、汎用要素がコアドメインでのみ使用されている場合は、共有カーネルを気にする必要はありません。代わりに、この汎用要素をコアドメイン内で直接定義する必要がありますか?

1)

c)コンテキスト境界は、用語のセマンティクスの後に定義されます。BCでは、用語は複数のことを意味するものであってはなりません(SRPを参照)。ドメインの専門家の心の中でクラスが複数の意味を持っていることがわかると、異なるBCが混在していることがわかります。

あなたの答えが私の質問にどのように関連しているか理解できないので、あなたの答えを少し拡張していただけますか?

2回目の更新:

1)

b)

また、単一のBCに複数のサブドメインが含まれている場合もあります。これは、BCが混同していることを示している可能性があるため、通常は理想的ではありません。

この本を読んでいるとき、著者が「サブドメイン」という用語を使用していることにあまり注意を払っていませんが、この本がサブドメインとは何かを完全に定義していないことは間違いありません。では、正確には何がサブドメインと見なされますか?論理的に関連するドメインの概念のほんの一群?はいの場合、サブドメインが複数のBCにまたがってはならないと思いますか?

2)

a)

サインルGSは複数のBCで使用できます。これは、サブドメインが汎用であるためです。したがって、GSにはBCは含まれていません。代わりに、BCによって参照されます。

あなたの回答から、あなたはジェネリックサブドメインがBCとして決して実装されていないことを暗示しているようですか?私の意見では、異なるジェネリックサブドメインには別個のモデルが含まれている可能性があり、BCはそれらのジェネリックモデルを分離するための理想的なソリューションのように思われるので、なぜですか?!

3)私をかなり混乱させるので、次の質問についても助けてもらえますか?ジェネリック要素(Time、Currency、Moneyなど)コアドメインで使用されている場合、実装オプションは共有カーネル(つまり、このジェネリック)のみです要素はコアドメインとそれを必要とする他のサブドメインの両方で共有されます)が、汎用要素がコアドメインでのみ使用される場合は、共有カーネルを気にする必要はありませんが、代わりにこの汎用要素をコア内で直接定義する必要がありますドメイン

ありがとうございました

4

2 に答える 2

9

1a)その引用では、著者はコアドメインではなく、ドメイン全体を参照しています。ドメイン全体が複数のBCにまたがることができます。BCとコアドメインの関係はもっと複雑になる可能性があります。ドメイン、サブドメイン、およびコアドメインは、問題空間の要素です。BCは、解空間のアーティファクトです。実際には、必ずしも1対1であるとは限りませんが、それが理想的です。

1b)BCを定義するときは、コアドメインが何であるかを確実に理解する必要があります。述べたように、理想的には、それらは1対1である必要があります。ただし、BCは、理想的ではない状態のシステムのニーズを満たすように定義される場合があります。

1c)ドメインは複数のBCにまたがっていますが、明示的な境界にもかかわらず、ドメインの動作は確かにBCにまたがることができます。コンテキストマップは、このようなBC間の相互作用を記述できます。引用自体は、コアドメインの価値を強調し、おそらくBCとの関係を説明することを目的としたドメインビジョンステートメントのアイデアに基づいています。

2)複数のBCが単一の汎用サブドメインを利用できます。ここでは「スパン」という用語を避けます。これは、ドメインモデル全体に​​対する汎用サブドメインの重要性を強調しすぎるためです。

アップデート

1b)コアドメインが複数の境界付きコンテキストで実装されている可能性があります。これは必ずしも欠陥ではなく、場合によっては理想的です。また、単一のBCに複数のサブドメインが含まれている場合もあります。これは、BCが混同していることを示している可能性があるため、通常は理想的ではありません。

1c)定義上、BCは物理的に分割されており、直接の依存関係を持つべきではありません。これが作者が言っていることだと思います。彼が強調している問題は、特に単一のサブドメインがアドレス指定されている場合、説明が必要な複数のBCを使用できることです。

2a)サインルGSは複数のBCで使用できます。これは、サブドメインが汎用であるためです。したがって、GSにはBCは含まれていません。代わりに、BCによって参照されます。

2b)一般的なサブドメインの「スパン」を持つことは、それが実際には一般的なサブドメインではなく、コアドメインであることを示している可能性があります。これは、システム全体で汎用コンポーネントを使用できないということではなく、まったく逆です。ただし、その場合、システムにまたがるコンポーネントは技術的な軸にすぎません。

更新2

1b)はい、サブドメインはドメイン全体のまとまりのあるコンポーネントです。サブドメインは複数のBCにまたがることができます。BCはソリューションスペースのアーティファクトであり、その存在には技術的な理由や組織的な問題が存在する可能性があるため、これは許容できます。たとえば、オンライン小売業者のドメインには、製品カタログのサブドメインがあります。これには、対応する製品BCがあります。ただし、製品検索に関する追加機能を製品検索BCに配置することができます。これはまだカタログサブドメインの一部ですが、技術的な理由から新しいBCです。一方、単一のBCに複数のサブドメインが含まれている場合、これは問題になる可能性があります。

2a)私は単語スパンの使用について過度に意味論的になったと思います。汎用サブドメインはBCにすることができます。ただし、一般的なサブドメインが実際に一般的な方法で使用されるように注意する必要があります。

3)はい。さらに、Moneyのような基本クラスは、複数の場所で使用されている場合でも、サブドメインごとに一意に実装できます。コピーアンドペーストが最適なパターンである場合があります。

于 2013-03-11T18:37:47.817 に答える
3

1a)はい。コアドメインは基本的に、顧客の観点からアプリケーションを開発する価値のある一連の制限されたコンテキストです。

1b)いいえ、一部の一般的な要素は、コアドメインで重要な役割を果たすことがよくあります。たとえば、多くの共有カーネルに存在する時間、通貨、およびお金を参照してください。これらは実際には一般的ですが、コアドメインルールにとって重要です。

1c)コンテキスト境界は、用語のセマンティクスの後に定義されます。BCでは、用語は複数のことを意味するものであってはなりません(SRPも参照)。それらはほとんど言語的な境界です!ドメインの専門家の心の中でクラスが複数の意味を持っていることがわかると、異なるBCが混在していることがわかります。

2)はい。汎用サブドメインは、ドメインモデル(または境界付きコンテキストのセット)の一部であり、アプリケーションの中心ではありませんが、有用です。私は一般的なサブドメインを使用していくつかのアプリケーションを構築しました。顧客が支払いたい価値を追加する場合(そして、単純なCRUDコンポーネントではそのような価値を提供できません)。

アプリケーションの「コアドメイン」は定性的な定義であることに注意してください。顧客の企業組織が変わったときに重要性を達成するために、成功したアプリケーションの二次的な部分を何度も見てきました。したがって、今日のコアドメインとは、明日ではない可能性があります。

于 2013-03-11T21:21:43.313 に答える