领域驱动设计与模型驱动架构

DaJ*_*kal 40 language-agnostic modeling domain-driven-design

我很好奇,领域驱动设计和模型驱动架构之间有什么区别?我觉得他们有一些相似之处.

你能开导我吗?

谢谢

sfi*_*nie 35

不要不同意上面的大部分内容,尽管它可能值得扩展一点.

DDD中最重要的一个概念是关注问题领域.将技术痴迷放在一边,主要集中精力模拟你想要解决的问题.因此,将ajax,ORM,数据库,框架等放入后台,确保您首先要有一个完整,准确的问题模型.(当然,您仍然需要架构组件 - 但它们明确地服从于模型).DDD称之为"无所不在的语言" - 一种以域专家和开发人员使用和理解的方式表达的模型.从问题域中获取类,方法等的名称的模型.

尽管本书暗示使用OO语言这样做,DDD并没有强制/如何/你捕获该模型.

MDA首先分享了对问题域进行建模的相同概念(PIM,平台无关模型).与DDD相反,它建议使用UML创建该模型.但目的是相同的:理解问题领域而不会将其与(软件)架构问题相混淆.

MDA的PSM(特定于平台的模型)有点类似于在DDD中应用架构模式(例如聚合,存储库等).再次 - 虽然具体不同 - 两者都旨在解决将"纯"问题领域模型转换为完整软件系统的问题.

总结一下,我会说它们在两个方面相似:

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

心连心.


Rui*_*ado 5

域驱动设计(DDD)和模型驱动架构(MDA)的根源是模型驱动工程(MDE),如果仅限于软件开发域,也称为模型驱动软件开发(MDSD).请参阅维基百科:http://en.wikipedia.org/wiki/Model-driven_development

所有属于MDE保护伞的方法都有一个共同点:一个模型.该模型如何实现取决于具体的MDE风味.

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

  • 您能否简要介绍一下DSM和ABSE? (2认同)

Ara*_*ram 5

DDD 是从业务角度处理软件解决方案,目的是使设计尽可能接近现实世界。这与其说是工程,不如说是一门艺术。

MDA 解决了不同的问题。更多详细信息请参见:http://xml.coverpages.org/OMG-MDAFAQfinal1.pdf

  • 工程是一门艺术:) (5认同)