DDD を理解したいあなたのための DDD 入門以前
DDD はソフトウェア開発における困難に向き合っている。その「困難」とは、「ソフトウェア開発者は、自分が開発しているソフトウェアの対象分野に必ずしも詳しくない」という事実である。 この問題の解決策は本質的に 3 通りしかない
対象分野に詳しいエキスパートがソフトウェア開発にも詳しくなる
ソフトウェア開発に詳しい開発者が対象分野にも詳しくなる
ソフトウェア開発者と対象分野のエキスパートが協力する
消去法で取られがちな選択
対象分野の知見とソフトウェアの実装そのものにはギャップがある
特に2000年以前ともなればGCや型推論のような高価なものは扱えず、実装の複雑さがコードに色濃く現れた ギャップを埋めるための道具がモデルだが、モデルにはモデルの難しさがあり、モデラーという概念が生まれた DDD とは以下のような特徴を持つ開発手法である。
分析モデルと設計モデル (と実装モデル) を統一し、単独のモデルを分析から実装までに用いる (「モデル駆動設計」) モデルの記述までしか行わず実装をしないモデラーを廃し、ソフトウェアの実装者とモデラーを融合させる (「実践的モデラ」)
実装者とエキスパートの間の媒介を排することで円滑になる