« Redmineプロジェクトの構造とConwayの法則 | トップページ | SEを極める50の鉄則 »

2011/05/19

ドメイン駆動設計はソフトウェアプロダクトラインとオブジェクト指向分析のミッシングリング

@yojikさんのアドバイスを受けて、「エリック・エヴァンスのドメイン駆動設計」を読んでみたら、とてもインスピレーションが働いたので、即購入した。
@yojikさん、ありがとう。


【発端】
Twitter / @yojik: DDD本ってパターン本ですよ。。。 / ドメイン駆動設計よりもパターン本が好き: プログラマの思索 http://htn.to/8ZD5B9

Twitter / @yojik: どちらかというと @akipii さんが好きなタイプの本かもです!

【元ネタ】
「保守しやすいこと」が、良いプロセス~開発における、「設計」と「プロセス」の双対関係~:An Agile Way:ITmedia オルタナティブ・ブログ

ドメイン駆動設計よりもパターン本が好き: プログラマの思索

ドメイン駆動設計: プログラマの思索

コンウェイの法則 - Strategic Choice

Conwayの法則~アーキテクチャは組織にしたがう: プログラマの思索

Redmineプロジェクトの構造とConwayの法則: プログラマの思索

エリック・エヴァンスのドメイン駆動設計」では、GoFのデザインパターン、ファウラーのアナリシスパターンエンタープライズ アプリケーションアーキテクチャパターンを駆使して、OOAのモデリングの過程を詳しく解説してくれているのがとても分かりやすかった。
ファウラーのアナリシスパターンや児玉公信さんの本「UMLモデリングの本質」は2000年代前半に勉強会で輪読したから、OOAがどういう手法でどんな成果物を作るのか、ということは分かっていたので、「エリック・エヴァンスのドメイン駆動設計」がやろうとしているモデリングの感触は雰囲気はつかめた。

まだ1回しか読んでいないので詳しく解読できてないけど、ソフトウェアプロダクトラインのコア資産の抽出と再利用を目指しているような感想を持った。
特に第16章の「大規模な構造」では、例えばファウラーの知識・操作レベルのパターンを用いて、従業員タイプ(管理職・平社員)を見出すモデリングがあるけれど、その目的は抽象度を上げることによって、コア資産を抽出して再利用できるようにしたいためのように思えた。
「蒸留」という概念はコアドメインの抽出ないし抽象化を意味するが、それはソフトウェアプロダクトラインのコア資産抽出と非常に似ている。

コア資産を抽出できれば、次々に似たような製品の開発、つまり派生開発がやりやすくなるだろう。
つまり、ソフトウェアプロダクトラインのような製品ファミリー開発がやりやすくなるはずだ。

MSのOffice製品、AppleのiPod/iPhone/iPad製品系列などがまさにソフトウェアプロダクトラインの良い例に当たるように思えるが、その背後にはドメイン駆動設計があるのではなかろうか?

又、第17章の「戦略をまとめあげる」でモデリングの組織構造について解説しているが、その内容は丁度、Conwayの法則(ソフトウェアの構造は開発チームの構造に似てしまう)をなぞっているように思えた。
つまり、設計者と開発者に分けるのではなく、設計と開発を行き来しながらモデルを作り上げた方が良いモデルが作れる、と。
アーキテクチャチームが設計し、開発チームがそれを指示書としてコーディングする体制にすると、ソフトウェアの構造にその体制のインターフェイスが反映されてしまって、本来のモデルからかけ離れてしまう可能性があるからだ。

面白いので又読んでみる。

|

« Redmineプロジェクトの構造とConwayの法則 | トップページ | SEを極める50の鉄則 »

モデリング」カテゴリの記事

ソフトウェア工学」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: ドメイン駆動設計はソフトウェアプロダクトラインとオブジェクト指向分析のミッシングリング:

« Redmineプロジェクトの構造とConwayの法則 | トップページ | SEを極める50の鉄則 »