ドメイン・モデル

id:goldenport:20060508:1147055688にも書いたのだけれど、最近ドメイン・モデルに興味を持っている。
DOAからインスパイアされたこともあり、ドメイン分析段階のドメイン・モデルの具体度と設計段階のドメイン・モデルとの関係について考察を進めているのだけれど、そのような観点で『Domain-Driven Design: Tackling Complexity in the Heart of Software』をチェックしている。
ドメイン分析の段階では、ユースケース用のラフな概念モデルを作るのが汎用的な手法ではあると思うのだけれど、DOAのように最初の段階で詳細な論理モデルを作るアプローチも、企業システムというスコープで考えれば、なかなか魅力的な選択であると思うようになった。もちろんこれは、かなりの部分がパターン化できるという見込みによるものである。

Domain-Driven Design: Tackling Complexity in the Heart of Software

Domain-Driven Design: Tackling Complexity in the Heart of Software

この本を読んでいて面白いと思うのは、オブジェクト原理主義でよくあるドメイン・オブジェクトに責務を割り当てるという方式ではなく、ドメイン層とアプリケーション層を分離し、ServiceやValue Objectを第一級のモデル要素として導入している点である。
これは、ボクの考え方に非常に近く、ボクとしては安心感がある。

実現方式

ドメイン・モデルの設計・実装という観点からは、『Domain-Driven Design: Tackling Complexity in the Heart of Software』の手法で、ドメイン・モデルを設計モデルに落とし込んだものを:

Patterns of Enterprise Application Architecture (Addison-Wesley Signature Series (Fowler))

Patterns of Enterprise Application Architecture (Addison-Wesley Signature Series (Fowler))

翻訳『エンタープライズ アプリケーションアーキテクチャパターン (Object Oriented SELECTION)

の手法を用いてシステム化するという流れが非常にバランスがよいと思う。
つまり、この2冊を組み合わせて読んでみると、システム開発の全体像をバランスよく把握できると思う。
ただし、どちらかというとMartin Fowler自身はオブジェクト原理主義系で、あまりServiceというモデル要素を評価していないと思うので、どちらの流派を支持するにしても、その点は注意が必要かもしれない。

ドメイン・モデル

概念モデルの段階で、ドメイン・モデルをどのように構築するのかという点は、大きな論点である。

もちろん、この分野では:

Analysis Patterns: Reusable Object Models (Addison-Wesley Object Technology Series)

Analysis Patterns: Reusable Object Models (Addison-Wesley Object Technology Series)

翻訳『アナリシスパターン―再利用可能なオブジェクトモデル (Object Technology Series)

が有名であるし、ボク個人としてはオブジェクト原理主義的すぎるような気はするものの:

Java Modeling in Color With Uml: Enterprise Components and Process (Java Series)

Java Modeling in Color With Uml: Enterprise Components and Process (Java Series)

翻訳『Javaエンタープライズ・コンポーネント―カラーUMLによるJavaモデリング

Streamlined Object Modeling: Patterns, Rules, and Implementation (The Coad Series)

Streamlined Object Modeling: Patterns, Rules, and Implementation (The Coad Series)

翻訳『ストリームラインオブジェクトモデリング―パターンとビジネスルールによるUML

といったところも参考になる。

データ・モデリング

オブジェクト原理主義から少し距離を置いて、アプリケーション層とドメイン層を分離することを前提にすると、システム設計での柔軟性が増すと共に、データ・モデリングの手法を導入しやすくなるというメリットが出てくる。

日本ではDOAとして本格的な開発方式が提案されているが、その中でも:

名人椿正明が教えるデータモデリングの

名人椿正明が教えるデータモデリングの"技" (DB Magazine Selection)

などによるTH法は、OOA/Dでも非常に参考になる点が多い。

また、データ・モデリングの世界では業務知識やそれに立脚したパターン集も数多く用意されている。

洋物では、以下のものが有名であるが:

Data Model Patterns: Conventions of Thought

Data Model Patterns: Conventions of Thought

The Data Model Resource Book, Volume 1: A Library of Universal Data Models for All Enterprises

The Data Model Resource Book, Volume 1: A Library of Universal Data Models for All Enterprises

The Data Model Resource Book, Volume 2: A Library of Universal Data Models by Industry Types

The Data Model Resource Book, Volume 2: A Library of Universal Data Models by Industry Types

日本製のものも数多く出ている。

ボクが非常に驚いたのは:

グラス片手にデータベース設計~販売管理システム編 (DBMagazine SELECTION)

グラス片手にデータベース設計~販売管理システム編 (DBMagazine SELECTION)

で、このような深い内容の業務知識とドメイン・モデル(データ・モデル)を分かりやすく解説した本はなかなかない。
また:

業務別データベース設計のためのデータモデリング入門

業務別データベース設計のためのデータモデリング入門

生産管理・原価管理システムのためのデータモデリング

生産管理・原価管理システムのためのデータモデリング

といった本も非常に参考になる。

ドメイン・モデルに関する分野は和洋問わずデータ・モデリング系の情報が充実している。さらに、日本製の本が第一級の情報を提供しているという点でも、ソフトウェア技術の分野としては特異である。
世界と戦うという意味で、理論系では弱いものの、現場の実践が強い、という他の技術分野と同じような傾向になっているようである。また、大小織り交ぜてさまざまなシステム開発を長期間行ってきた日本の産業界の底力と考えることもできるだろう。

ドメイン・モデルとデータ・モデリング

アプリケーション層とドメイン層を分離して分析・設計を行う方式は、オブジェクト原理主義からは少し先祖返りした感がある方式ではあるけれど、企業システム開発に向いているバランスのよい方式であると思う。
そういう意味で、この方式を前提としている『Domain-Driven Design: Tackling Complexity in the Heart of Software』はとてもボクの感性にあっている。

さらに、この方式のメリットは設計や実装上の柔軟性だけではなく、ドメイン・モデルの構築にデータ・モデリング系の技術を適用できる可能性が高まる点にある。データ・モデリングとして既存の技術を使用し、アプリケーション層でオブジェクトを使うという選択もあるし、ドメイン分析にデータ・モデリングの手法を取り込むという方法も考えられる。色々工夫できそうなのである。

そんなことを考えつつ、チェックを進めているというわけです。