本当にサブドメインとは何ですか?


8

ドメイン駆動設計(DDD)を研究する際に、サブドメインの概念に出くわしましたが、まだ理解していないと思います。これについて私の最初の理解は、サブドメインがアプリケーションのドメインのサブセットであるということでした。言い換えれば、それは問題空間のパーティションです。サブドメインには3つのタイプがあると読みました。

  • コアサブドメイン
  • サポートするサブドメイン
  • 汎用サブドメイン。

私の理解はこのようなものでした。アプリケーションのドメインを選択しましたが、それは非常に複雑です。次に、それを見て、それをより単純な部分に分割する方法を見つけます。その一部はコアサブドメインであり、一部はサポートするものであり、その他は一般的なものです。

詳細情報を検索したところ、別のことを言っている人が見つかりました。コアサブドメインが1つだけ存在し、いくつかの汎用サブドメインがあり、サポートサブドメインがまったくないことです。

だから私の質問は:

  1. 本当にサブドメインとは何ですか?私の最初の理解は正しいものですか、それとも私が読んだ2番目のものですか?
  2. このサブドメインの考え方はどのように役立ちますか?
  3. サブドメインを識別するための良い基準は何ですか?このアイデアをより有効に活用するためにサブドメインを決定するとき、何を念頭に置く必要がありますか?

編集:もう少し検索すると、次のことがわかりました:

eコマースシステムについて考えてみましょう。最初は、それがショッピングコンテキストのアプリケーションであることがわかります。さらに詳しく見ると、在庫、配送、アカウントなど、他のコンテキストもあることがわかります。

これは、私が最初にサブドメインだと思ったものです。ドメイン(ショッピングドメイン)を選択し、それをより単純なサブドメイン(在庫、配送、アカウントなど)に分割します。しかし、問題のテキストでは、彼らはこれらを文脈と呼んでいます。私の以前の理解はサブドメインではなくコンテキストですか?

このサイトで、サブドメインと制限付きコンテキストの違いについて1つの質問を見つけました。答えは、サブドメインは問題空間のパーティションであり、コンテキストは解空間のパーティションであると述べています。ただし、ショッピングコンテキストを在庫、配送、アカウントなどに分離することは、概念的な区分ではありません。つまり、解空間ではなく問題空間にありますか?


回答:


8

免責事項:私はDDDの専門家ではありませんが、質問に答えるためにここで最善を尽くします。

例として、オンライン書店を使用してみましょう。本の売り手は彼のウェブサイトで本を売ることを申し出ていますが、彼は自分で本を印刷しません。代わりに、彼は書籍を印刷して倉庫に発送し、それらを梱包して世界中の顧客に発送する「書籍サプライヤー」の長いリストを持っています。

その会社で働いているチームを想像できますか?

  1. リスティングチーム:サプライヤーの在庫状況に応じて、ウェブサイトに掲載する書籍を選択するチーム。
  2. フルフィルメントチーム:ウェブサイトから注文を収集し、注文のライフサイクルを管理します。
  3. 商業チーム:これらは、システムでサプライヤーを追加または削除する担当者です。
  4. マーケティングチーム:キャンペーンとオファーを担当します。
  5. 倉庫チーム:サプライヤーからの本の収集と発送を担当します。

各チームは独自の用語を使用して、何をしているのかを説明します。チームは、ドメイン言語または「ユビキタス言語」を使用します。通常、各チームには、エンティティが何であるかについての異なるメンタルモデルがあります。例えば:

Listing team: BOOK(book_id, ISBN, title, price, weight, length, width )  
Fulfillment team: BOOK(book_id, totalPrice, sold_quantity)   
Shipping team: ITEM(book_id, delivery_date) --> they refer to the book entity as "item" 

サブドメインはドメインの特定の部分であり、一部のユーザーは特定のユビキタス言語を使用します。言語が変わると、これは別のサブドメインに移動しようとしていることを示しています。

2つのチームが同じ用語を使用するとどうなりますか?フルフィルメントチームとリスティングチームはどちらも本を「本」と呼んでいます。「あなたにとって本は何ですか?その主要な属性は何ですか?それはどのように使用されますか?」と尋ねる必要があります。

これらの質問に対する答えは、2つの異なるまたは類似したドメインモデルになります。2つのモデルの違いが大きいほど、これらが2つの異なる境界コンテキスト/サブドメインであることを示します。反対も当てはまります。2つのモデルが類似しているほど、同じサブドメインの一部である必要があります。

これにより、モデルで非常に興味深い結果が得られる場合があります。フルフィルメントサブドメイン内では、注文がさまざまな状態(新規->リクエスト済み->発送済み)を通過することがわかります。これらの各状態には複雑な管理とさまざまな属性が必要な場合があるため、このサブドメインをいくつかの他のサブドメインに分割できます。

これは、サブドメインのサイズがどうあるべきかという疑問を引き起こします。答えは「ドメインモデルに決定を任せる」です。ULとモデルの変更を確認したら、そのサブドメインの境界を描きます。

DDDは、ビジネス、人々、およびそれらの間のコミュニケーションがすべてであることに注意してください。モデルを動かしてみましょう。


1
「コンウェイの法則によれば、サブドメインの境界は、組織内の通信構造によって部分的に決定されます。通信構造は時間の経過とともにテストおよび改良されている可能性が高いため、これはしばしば許容できる境界です。」- gorodinski.com/blog/2013/04/29/...
inf3rno
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.