しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

ドメインモデルとドメイン駆動開発とは何か調べてみた

ドメインモデルとは

ドメインモデル(英: Domain model)は、システムに関わる様々な実体とそれらの関係を説明するシステムの概念モデルである。

ドメインモデルは、システムの鍵となる概念と用語を文書化するために作成される。 ドメインモデルでは、システムの主要な実体とそれらの間の関係を明らかにし、一般にそれらの重要なメソッドと属性も洗い出す。すなわち、このモデルはシステムの構造的な観点を提供し、通常はユースケースモデルで動的な観点を補足する。 ドメインモデルの重要な利点は、システムの範囲を明らかにすることである。

Wikipediaによると上記の通りです。
自分なりの解釈になりますが、製品に使われるオブジェクトとその関係性を表したものがドメインモデルというものかと思います。
そしてその利点としてはどこにどのメソッドを配置するか等の設計の基準を作れる事かと思われます。

ドメイン駆動開発

下記事を参考にしました。
簡単に言うと、ドメインモデルを作成してそれを元にプログラミングしていく開発手法です。

ドメイン駆動設計 - Wikipedia
» ドメイン駆動設計をかじってみる TECHSCORE BLOG

ドメインモデルは、ドメイン知識を深めながら反復的(iterative)に深化させていく ドメインモデルが、開発者とドメイン知識をもつ人(ユーザ、専門家等)との間の共通言語となるようにする ドメインモデルと実装コードとがきちんと対応付けられるようにする

実践に向けたドメイン駆動設計のエッセンス

こちらの記事によるとドメインモデルを作成し、その後も反復的に設計に時間を使う事が大切だと書かれています。
そうする事で全体の共通言語を作る事・ドメインに関する知識を深める事ができるというメリットがあるようです。

参考URL

ドメインモデル - Wikipedia