Develop with pleasure!

福岡でCloudとかBlockchainとか。

ドメインモデルの連続性

ThoughtWorksアンソロジー - Develop with pleasure!

すっかり放置してしまっていた、こちらを本を再び読み始めた。この9章の「ドメイン駆動設計とアノテーション」という章の

ドメイン駆動設計に従えば、ドメインモデルとそれ以外のアプリケーションインターフェース、インフラストラクチャコードをきれいに分離したソフトウェアシステムを作ることができます。ドメインモデルは通常、長い寿命を持ち、比較的、安定しています。一方、アプリケーションインターフェースとインフラストラクチャコードは寿命が短く、オブジェクトリレーショナルマッパやWebフレームワークのような特定のテクノロジに結びついています。難しいのは、ドメインモデルとインフラストラクチャコードの両方を再利用できるように、この分離を維持し続けることです。1つのドメインモデルをさまざまなアプリケーションやサービスで使うことが可能でなければなりません。その一方で、インフラストラクチャコードはさまざまなドメインモデルにおいて、簡単に使えるものでなければなりません。

という文章が引っ掛かった。文章自体に異議や疑問があるという意味ではなく、顧客の要求仕様を分析し、ドメインモデルを設計するというアプローチを取る事は多い。

けれど、本来そのドメインモデル自体は、開発のための分析段階で抽出され、開発のインプットとなり、開発が終わると実質そのドメインモデルの寿命も終わってしまうことがほとんどのように思える。

例えば、システムの更新が発生する場合、要求仕様が変わらない限り、ドメインモデルも変わらないはずであるし、要求仕様の変更があっても、元々のドメインモデルをインプットとして新たなドメインモデルが抽出されるというのが正しい姿のように思えるが、なかなかそういったことを実現しているケースって少ないように思う。(特に、開発ベンダーが変わった場合など。)

結局ドメインモデルが持つ寿命もSIという非連続的な開発の流れの中で上手く利用できていないように感じる。ドメインモデルという単語だけに注目して、その意味を軽んじていたようにも感じた。今までを振り返るという意味でも良い気付きの機会になった。

まぁ、あまり本の文章とは関係無いけれど…。