DDD / Part IV Strategic Design


戦略的デザイン (328ページ)

要約

システムが成長していくにつれ、個々の小さなモデルを把握していくのは困難になっていき、大きなモデルの把握が必要となる。本パートでは、非常に複雑なドメインにまでスケールアップするためのモデリングプロセスを可能にする原則を示す。

大抵のエンタープライズシステムは巨大すぎるがゆえに、重複と矛盾がところどころに入り混じり、管理どころか理解すら難しくなる。もっと小さなパーツに分けるべきだが、そうやって作られたシステムはエンタープライズレベルの問題を解決するには力不足で、各連携ポイントの分だけ一貫性問題に気をつけなければならない。

戦略的デザインの理念として、相互依存を減らし重要な相互運用性や相互作用性を失うことなくクリアにしていかなければならない。またシステムの本質(ビジョン)をつかむためにモデルに焦点を当てなければならない。本パートでは3つのテーマ「コンテキスト(context)」「蒸留(distillation)」「大規模な構造(large-scale structure)」について模索していく。

「コンテキスト」は最も基礎的な概念である。モデルは、様々な変化があるエンタープライズシステムにおいて、一貫性を保っていなければならない。BOUNDED CONTEXTパターンで他のコンテキストとの関係を定義することで、モデルの品質低下を防げる。

「蒸留」は乱雑さを減らし適切なものに注意を向ける概念である。ドメインモデルはシステムの最も重要なものに注目し、できるだけそこに労力を割いて構築しなければならない。

「大規模な構造」は全体像を把握する概念である。「蒸留」でコアとその他の区別をつけられるが、システム全体を表すデザイン要素やパターンを適用する必要もある。「大規模な構造」に関するパターンは本書では全てカバーできていない。必要に応じて追加されるべきであり、EVOLVING ORDERパターンのプロセスを通じて進化させていくべきである。

これらの3つはそれぞれ独立して役立つが、統合することで完璧に理解している人が誰もいないような煩雑なシステムでも、よいデザインをもたらすことができる。

参考資料

担当者のつぶやき

  • 4パラグラフ目の英文「Enterprise systems sometimes integrate subsystems with varying origins or have applications so distinct that very little in the domain is viewed in the same light.」が上手く自分の中で訳せませんでした。特に or 以降。
    • 苦し紛れの訳は「エンタープライズシステムは時々、当初のものから変化しているサブシステムを統合したり、同じ考え方で考えられたドメインがほとんどないようなアプリケーションを持ったりする。」
  • 本書発行から数年経った現在、「大規模な構造」ら辺はなんか進化してるんすかね?
  • 自分はサブシステムを出来るだけ細かくする、で問題ない世界に生きてるけど、そうじゃダメな世界もあるんですね、分かります。
    • でも「力不足」ってことはないと思うけどなー。

みんなの突っ込み



まとめ (議事録)