2010-11-12 79 views
31

我很好奇,领域驱动设计和模型驱动架构之间有什么区别?我有他们有某些相似之处的印象。域驱动设计vs模型驱动架构

你能开导我吗?

感谢

+0

如果您可以为您已完成的研究提供一些背景知识,它可能会帮助人们回答这个问题。 – 2010-11-12 16:34:18

回答

26

不要不同意上面的大多数,虽然它可能值得扩展一点。

DDD中最重要的概念是关注问题领域。把技术困惑放在一边,主要集中在建模你想要解决的问题上。因此,将Ajax,ORM,数据库,框架等置于后台,并首先确保您拥有完整,准确的问题模型。 (当然,您仍然需要架构组件 - 但它们明确地服从模型)。 DDD将此称为“无处不在的语言” - 这是一种以领域专家和开发人员所使用和理解的术语表达的模型。一个模型,其中类的名称,方法等来自问题域。

DDD并未强制要求/如何/您如何捕捉该模型,尽管本书暗示使用OO语言来完成此操作。

MDA共享的问题领域相同的概念(PIM,平台无关模型)。与DDD相反,它建议使用UML创建该模型。但意图是一样的:理解问题领域而不用(软件)架构问题玷污它。

MDA的PSM(平台特定模型)有点类似于在DDD中应用体系结构模式(例如聚集,存储库等)。再次 - 尽管具体情况不同 - 两者都旨在解决将“纯”问题域模型转换为完整软件系统的问题。

所以总结,我会说,他们是在两个方面相似:

  1. 模型的核心地位(如@Rui说) - 特别是/域/模型。
  2. 将架构模式应用于模型以实现目标系统。

hth。

4

两个领域驱动设计(DDD)和模型驱动架构(MDA)的根是模型驱动工程(MDE),也被称为模型驱动的软件开发(MDSD)如果仅限于软件开发领域。参见Wikipedia:http://en.wikipedia.org/wiki/Model-driven_development

MDE下的所有方法都有一个共同点:模型。这个模型如何实现取决于特定的MDE风格。

MDA被认为过于复杂。一些人认为DDD太抽象了。我个人最喜欢的MDE实现是DSM和ABSE(未在维基百科文章中列出)。

3

DDD即将从商业角度接近软件解决方案,旨在使设计尽可能地接近现实世界。这比艺术更像是一门艺术。

MDA解决了不同的一系列问题。更多细节在这里:http://xml.coverpages.org/OMG-MDAFAQfinal1.pdf

+0

工程是一门艺术:) – 2015-06-26 06:32:36