ドメイン駆動設計はソフトウェアプロダクトラインとオブジェクト指向分析のミッシングリング
@yojikさんのアドバイスを受けて、「エリック・エヴァンスのドメイン駆動設計」を読んでみたら、とてもインスピレーションが働いたので、即購入した。
@yojikさん、ありがとう。
【発端】
Twitter / @yojik: DDD本ってパターン本ですよ。。。 / ドメイン駆動設計よりもパターン本が好き: プログラマの思索 http://htn.to/8ZD5B9
Twitter / @yojik: どちらかというと @akipii さんが好きなタイプの本かもです!
【元ネタ】
「保守しやすいこと」が、良いプロセス~開発における、「設計」と「プロセス」の双対関係~:An Agile Way:ITmedia オルタナティブ・ブログ
Conwayの法則~アーキテクチャは組織にしたがう: プログラマの思索
Redmineプロジェクトの構造とConwayの法則: プログラマの思索
「エリック・エヴァンスのドメイン駆動設計」では、GoFのデザインパターン、ファウラーのアナリシスパターン
やエンタープライズ アプリケーションアーキテクチャパターン
を駆使して、OOAのモデリングの過程を詳しく解説してくれているのがとても分かりやすかった。
ファウラーのアナリシスパターンや児玉公信さんの本「UMLモデリングの本質
」は2000年代前半に勉強会で輪読したから、OOAがどういう手法でどんな成果物を作るのか、ということは分かっていたので、「エリック・エヴァンスのドメイン駆動設計
」がやろうとしているモデリングの感触は雰囲気はつかめた。
まだ1回しか読んでいないので詳しく解読できてないけど、ソフトウェアプロダクトラインのコア資産の抽出と再利用を目指しているような感想を持った。
特に第16章の「大規模な構造」では、例えばファウラーの知識・操作レベルのパターンを用いて、従業員タイプ(管理職・平社員)を見出すモデリングがあるけれど、その目的は抽象度を上げることによって、コア資産を抽出して再利用できるようにしたいためのように思えた。
「蒸留」という概念はコアドメインの抽出ないし抽象化を意味するが、それはソフトウェアプロダクトラインのコア資産抽出と非常に似ている。
コア資産を抽出できれば、次々に似たような製品の開発、つまり派生開発がやりやすくなるだろう。
つまり、ソフトウェアプロダクトラインのような製品ファミリー開発がやりやすくなるはずだ。
MSのOffice製品、AppleのiPod/iPhone/iPad製品系列などがまさにソフトウェアプロダクトラインの良い例に当たるように思えるが、その背後にはドメイン駆動設計があるのではなかろうか?
又、第17章の「戦略をまとめあげる」でモデリングの組織構造について解説しているが、その内容は丁度、Conwayの法則(ソフトウェアの構造は開発チームの構造に似てしまう)をなぞっているように思えた。
つまり、設計者と開発者に分けるのではなく、設計と開発を行き来しながらモデルを作り上げた方が良いモデルが作れる、と。
アーキテクチャチームが設計し、開発チームがそれを指示書としてコーディングする体制にすると、ソフトウェアの構造にその体制のインターフェイスが反映されてしまって、本来のモデルからかけ離れてしまう可能性があるからだ。
面白いので又読んでみる。
| 固定リンク
「モデリング」カテゴリの記事
- ストラテジストとプロジェクトマネージャの役割の違いは何なのかpart2~プロセスのレイヤと達成目標のレイヤが異なる(2023.02.18)
- UMTPモデリングフォーラムのパネル討論の感想(2022.11.29)
- Go言語でできることは何なのか(2022.11.06)
- クラウド上の開発がJavaに与えた影響は何なのか(2022.10.16)
- 「ソフトウェアアーキテクチャの基礎」本はアーキテクトが読むべき本だった(2022.09.18)
「ソフトウェア工学」カテゴリの記事
- ストラテジストとプロジェクトマネージャの役割の違いは何なのかpart2~プロセスのレイヤと達成目標のレイヤが異なる(2023.02.18)
- プロジェクト管理やソフトウェアアーキテクチャの問題の背後にはトレードオフが隠れているのではないか(2023.02.18)
- デブサミ2023の感想(2023.02.11)
- ChatGPTにEclipseでEclEmmaとJaCoCoからカバレッジを出力する方法を聞いた(2023.02.01)
- DDPは品質管理に役立つのか(2022.12.13)
コメント