web-dev-qa-db-ja.com

ドメイン駆動設計とモデル駆動型アーキテクチャ

私は興味があります、ドメイン駆動設計とモデル駆動型アーキテクチャの違いは何ですか?それらには一定の類似点があるという印象があります。

教えてくれませんか?

ありがとう

41
DaJackal

少し拡張する価値はあるかもしれませんが、上記のほとんどに同意しないでください。

DDDで最も重要な概念は、問題のある領域に焦点を当てることです。テクノロジーへの執着を脇に置き、解決しようとしている問題のモデル化に主に集中すること。したがって、ajax、ORM、データベース、フレームワークなどをバックグラウンドに置き、代わりに、問題の完全で正確なモデルを最初に用意してください。 (もちろん、アーキテクチャコンポーネントはまだ必要ですが、それらはモデルに明示的に従属しています)。 DDDは、これを「ユビキタス言語」と呼んでいます。これは、ドメインの専門家と開発者が同様に使用および理解する用語で表現されたモデルです。クラスやメソッドなどの名前が問題のドメインから取得されるモデル。

DDDは、そのモデルをキャプチャする/ how /を義務付けていませんが、この本では、OO言語を使用してキャプチャすることを暗示しています。

MDAは、問題のドメインを最初にモデル化するという同じ概念を共有しています(PIM、プラットフォームに依存しないモデル)。 DDDとは対照的に、UMLを使用してそのモデルを作成することをお勧めします。しかし、意図は同じです。(ソフトウェアの)アーキテクチャ上の懸念に汚染されることなく、問題のドメインを理解します。

MDAのPSM(プラットフォーム固有モデル)は、DDDのアーキテクチャパターン(集約、リポジトリなど)の適用にいくぶん類似しています。繰り返しますが、詳細は異なりますが、どちらも「純粋な」問題ドメインモデルを完全なソフトウェアシステムに変換する問題を解決することを目的としています。

要約すると、2つの点で類似していると思います。

  1. モデルの中心性(@Ruiが言うように)-特に/ Domain /モデル。
  2. ターゲットシステムを実現するために、モデルにアーキテクチャパターンを適用します。

hth。

36
sfinnie

ドメイン駆動設計(DDD)とモデル駆動アーキテクチャ(MDA)の両方のルートは、モデル駆動エンジニアリング(MDE)であり、ソフトウェア開発ドメインに限定されている場合は、モデル駆動ソフトウェア開発(MDSD)とも呼ばれます。ウィキペディアを参照してください: http://en.wikipedia.org/wiki/Model-driven_development

MDEの傘下にあるすべてのアプローチには、モデルという1つの共通点があります。このモデルがどのように実現されるかは、特定のMDEフレーバーによって異なります。

MDAは過度に複雑であると見なされています。 DDDは、抽象的すぎると考える人もいます。私の個人的なお気に入りのMDE実装は、DSMとABSEです(ウィキペディアの記事には記載されていません)。

6
Rui Curado

DDDは、設計を可能な限り現実の世界に近づけることを目的として、ビジネスの観点からソフトウェアソリューションにアプローチすることを目的としています。これは工学というより芸術です。

MDAはさまざまな問題を解決します。詳細はこちら: http://xml.coverpages.org/OMG-MDAFAQfinal1.pdf

3