我想知道以下两项是否有分别:
领域驱动设计(DDD)模型驱动设计(MDD)我总是在许多文章和公共文献中找到这两个术语,但没有人强调它们之间的区别。
发布于 2017-02-07 04:04:51
我个人发现MDA和DDD相去甚远。
MDA专注于创建不同类型的模型,这些模型在不同的层次上描述软件系统。它鼓励对这些模型使用UML,并且可以从不同的角度生成许多这样的模型来描述相当复杂的系统。创建了一些解决方案,比如Rational Rose,用于从模型生成软件,并使它们与代码保持同步。
同时,MDA没有说明您如何与业务沟通以了解他们的问题域。所有MDA关注的都是解决方案领域。
另一方面,DDD更多的是关于领域和语言的知识。简而言之,许多人将DDD描述为“在有界上下文中开发无处不在的语言”。鼓励您与领域专家交谈,了解他们在说些什么。您需要定义这些术语有意义的上下文,因为不同上下文中的术语差异可能非常不同。然后,每个上下文被隔离为一个高度内聚的组件,这些组件的组合形成了一个完整的系统。
DDD中有许多战术模式,如聚合根、实体、值对象、存储库和工厂。但它们的主要目标是为开发人员提供一些工具来创建适当的抽象,这些抽象可以在不影响代码可读性的情况下封装领域知识。
DDD最重要的部分是策略模式,如有界上下文、上下文映射和无处不在的语言。如果你没有使用这个--你没有DDD。不管你用哪种符号来绘制图表(有些只是使用便签),这完全是次要的。
发布于 2017-02-01 22:14:00
这两种设计方法非常相似。请查看此StackOverflow链接,获得有关此主题的一些很好的、详细的答案:
Domain Driven Design vs Model Driven Architecture
为了总结链接中的答案,这两种方法都专注于在设计解决方案之前对问题进行准确建模。一般来说,DDD被认为是更抽象的,没有特别建议的技术或设计工具。MDD/MDA被认为是更具体的,并建议使用UML进行设计工作。
https://stackoverflow.com/questions/41981559
复制相似问题