2

午後全員

私は現在、ドメイン駆動設計 (DDD)を勉強していますが、基本的な概念を理解するのに苦労しています。

パターンの原則と実践 (Millett and Tune)

研究の過程で、ドメイン モデル (DM)という用語に出くわすことがよくありますが、一般的にさまざまなレベルの粒度で議論されています。

  1. 場合によっては、相互接続されたさまざまなオブジェクト (顧客、販売、見積もり、請求書など) の成果物 (UML、スケッチ、写真) のコレクションとして表され、単一のサブドメイン内のすべての概念の概要が示されます。

    単一のサブドメインに対してモデルが 1 つしかないように

  2. それ以外の場合は、 Productなどの単一のエンティティとして表され、サブドメインは多くの異なるドメイン モデルで構成されます。

上記のあいまいさにより、ドメインモデルが実際に何であるか、およびそのようなモデルを境界付けられたコンテキスト (BC)に配置する方法を理解するのに苦労しています。

これに加えて、ドメイン モデルは異なる境界付けられたコンテキスト間で共有できることを読みました。

たとえば、EmployeePayrollHR Bounded Contextの間で共有されます

これを考慮して、

  1. サブドメインを表すために複数のドメイン モデルを作成しますか?
  2. または単一のものだけですか?
  3. 後者の場合、そのような大規模なモデルをコンテキスト間でどのように共有しますか?

誰かがこのあいまいさを明らかにし、ドメイン モデルとは何か、それがどの程度細分化できるかを正確に説明してください。

とても有難い

ダニエル

4

2 に答える 2

2

The Blue Bookを必ず確認してください。

まさにドメインモデルとは...

ドメインモデルは

  • ビジネスが関心を持つデータ/状態/情報のコレクション
  • そのデータがどのように変更されるかを管理するルール

read ドメイン モデルは、異なる境界付けられたコンテキスト間で共有できます

多分...

Employee は Payroll と HR Bounded Context の間で共有されます

デザインに含める重要なこと:ユビキタス言語は、あるコンテキストと別のコンテキストの間の境界を越えると変化します。Payroll と HR が Employee を同じように理解していない場合、同じルールでデータの変更を管理し、同じライフ サイクルを使用している場合、それらが同じモデルを共有していると主張すると、これらのモデルがあれば直面しないリスクにさらされます。別々に保管されていました。

さらに複雑なのは、モデルが「記録簿」であるかどうかを理解することです。たとえば、人間について話している場合、従業員は現実の世界にいます。実世界は記録の本です。データベースに取り込んだ情報は単なるコピーです。

たとえば、現実の世界では、名前を変更する法的権利があります。それはあなたのビジネスにとって何を意味しますか?その影響のタイミングは、給与プロセスと同じように人事プロセスに影響を与えますか? それらが今日同じである場合、それは常に真実であると確信していますか?

従業員になる前に、人間は応募者であった可能性があります。HRは気にしますか?給与計算しますか?

また、実際的な懸念もあります。人事データベースがダウンした場合、給与処理がブロックされるべきでしょうか?

于 2016-05-27T17:50:02.013 に答える
1

Patterns Principles and Practices (Millett and Tune)は、DDD に関する非常に優れた本で、明快な説明があります。

DDD の戦略的パターンを使用すると、アプリケーションはサブドメインに分割されます。ここで、各サブドメインは問題ドメインの個別の部分を表します。複雑なサブドメインには複数のモデルを含めることができ、1 つのモデルが複数のサブドメインにまたがることもできます。

したがって、モデルの整合性を保護するために、モデルの境界を明確に定義することが重要です。これは、境界付けられたコンテキストとして知られる特定のコンテキストにモデルをバインドすることによって実現されます。境界付けられたコンテキストごとにドメイン モデルがあります。

ドメイン モデルは問題空間を表し、開発チームとビジネス チームの間の議論に基づいて到達します。ユビキタス言語に基づいており、スケッチと UML ダイアグラムを使用して表されます。同じことがコード モデルにも反映されます。

これに加えて、ドメイン モデルは異なる境界付けられたコンテキスト間で共有できることを読みました。

たとえば、EmployeePayrollHR Bounded Contextの間で共有されます

これを考慮して、

サブドメインを表すために複数のドメイン モデルを作成しますか? または単一のものだけですか?後者の場合、そのような大規模なモデルをコンテキスト間でどのように共有しますか?

これは、 2 つの境界付けられたコンテキストが同じドメイン ロジックのサブセットを共有している共有カーネルパターンのケースです。3 つのドメイン モデルを作成する必要があります。1 つは Employee と HR 用、もう 1 つは共有モデルの Employee 用です。

于 2016-05-28T09:26:51.000 に答える