ビジネス要件とドメイン駆動設計

貨物業務を例にして

例1.1にて

ドメイン駆動設計」の中で、貨物業務を例にドメイン駆動設計の実例が示されていたので、実例を踏まえてドメイン駆動設計とは何たるかの解像度を上げてみたい。

 

本書で示されているのは、当初コンテナの予約アプリケーションの責務が貨物と航海(実際には貨物船にあたるだろうか)の関連付けを行うことだったが、ビジネス要件を洗い出した結果、本来システムとして処理したいのは輸送日程の手配よりも物理的な積荷作業を行う下請け業者間の責任の所在を明らかにすることによって見える法律書類や支払い免除につながるプロセスだった(一部解釈含む)、との記載がある。

 

つまり、このことからドメイン(ユーザーの目的や活動)が貨物と航海の関連付けから導かれる輸送日程の管理から、コンテナを扱う業者者間の責務の明瞭化によって明らかになる法的な拘束力の有無を管理することへと変化したことがわかる。

 

対象となるシステムのモデルレイヤーで設計した時に、おそらく対象のビジネス固有の特性や、価値基準はわからないだろう。

 

あくまでドメイン(ユーザーの関心・行動・目的、システムを通して解決したい課題など)指向で設計をすることで、システムの仕様が実際のビジネスに寄り添う形で更新されていく例が示されているのであろう。

 

これはおそらく、モデル(現実の断片を抽出した表現形式)をベースに考えていた時には見えてこなかった観点であって、あくまでドメイン駆動設計をすることによって見つかる観点である、というのが本書が示したいところなのだろうと思う。

 

あくまで理念的な話であり、より方法論的な面で展開するとクリーンアーキテクチャなどと関連してゆくのかもしれないが、今のところその範囲まで考察できるインプットがない状態なので、この記事ではここまでで留める。