質問
コンテキスト: だから、とんでもなく複雑なドメインモデルを構築しようとしています。ユーザーと話をすると、システムの使用方法が複数あります(たとえば、1つは従業員の観点から、もう1つの方法は雇用主の観点から)。実際には、コアドメインを再利用する複数のアプリケーションです。
質問: 複数の観点からドメインを作成するのは間違っていますか?たとえば、ビジネスの実行時にドメインを構築するということは、エンティティなどに関する追加情報を保持するすべての種類の関係クラスを作成することを意味します。しかし、特定の観点から実行する場合、リレーションシップクラスを親エンティティにロールバックできます。
アイデア?反論?完全にオフベースですか?
解決
いいえ、これは絶対に適切です。 Evan'sは、彼の本でこれらの「パースペクティブ」バウンドコンテキストを呼び出しています。
本当に複雑なドメインモデルを作成する代わりに、特定の方法でドメインに対応するシンプルなモデルを作成してみてください。制限されたコンテキストをリンクして、より小さくシンプルな直接ドメインモデルのウェブを形成できます。
他のヒント
「コアドメイン」を事前に試して事前定義する必要はないと思います。開発プロセスで出現するようにします。また、2つ(またはそれ以上)のパースペクティブに共通していないものはすべて「コア」に含まれないようにしてください。
たとえば、従業員の観点からシステムの一部を構築します。これにより、「プロジェクト」、「タスク」、「顧客」などのエンティティを作成するように求められる場合があります。次に、従業員の観点から部分を構築します。これにより、新しいエンティティを構築し、「プロジェクト」と「タスク」を再利用するように求められる場合があります。そのとき、「プロジェクト」と「タスク」をシステムの残りの部分が共有する「コアライブラリ」に移動します。
共通のエンティティを見つけることもありますが、関連はさまざまです。その場合、関係はエンティティ自体に組み込まれるのではなく、コンテキストによって注入される必要があります。