领域驱动设计与模型驱动设计的关系

07-08-15 monke82
领域驱动设计以模型驱动设计为根基,那么两者之间的区别于联系到底如何呢,领域驱动设计的定义又该如何下呢?

         

yananay
2007-08-15 18:21
把领域东西落实到设计中,就是模型了

banq
2007-08-16 17:34
领域驱动设计强调有一个专门的领域层,领域层不只是模型,还包括与模型相关的用来完成业务逻辑的其他元素,如服务等。

将领域层作为多层架构中最重点的层面来关注,高于其他层次,比如表现层 持久层或JMS/EMAIL发送这些应用服务层。

突出业务领域是DDD区别与MDD模型驱动设计的一个重要标志,是其升华和高级部分。

MDD曾经在EJB2时代就已经存在流行,所以DDD应该比MDD更具设计水准。

monke82
2007-08-16 17:55
哦,那就是说,

现在的领域层=模型驱动设计中单纯的模型+维护这些模型的完整性操作+模型之间的关联维护+提供模型访问的方法。

那么领域驱动设计就强调了在领域层内完成与软件领域相关的所有方方面面,包括领域对象的完整性约束,领域对象之间的相关关联,领域对象的生命周期等等,而与完成这些内容相关的技术,则是由基础层来提供,比如持久化,消息服务等等。

不知道我理解的是否正确。

另外还有个问题

在领域驱动设计书中,作者好像在前几章一直强调领域模型是领域专家,分析人员与开发人员相互交流的平台,但是后几章,作者的例子却是以uml图来表现领域对象,那么,如果领域专家,或者开发人员对uml不熟悉,是否可以采用其他的方式来表示,如果采用其他方式来表示,那么,在开发中还需要uml图么?

banq
2007-08-16 18:26
你对领域层理解应该和我是一致,不过不敢说是否正确,这要问祖师爷Evans,呵呵,其实学习理论主要是学习其思维方法,开拓眼界,也就是思考的乐趣所在啊。

分析人员一竿子通到设计层面,分析设计人员也可称为建模专家,或业务专家,业务专家和软件人员属于不同层面的,业务专家不懂软件语言,两者需要交流需要一个语言界面,目前UML比较适合了,如果两者都懂Java语言,用Java bean来表达沟通也可以。

现在又提出一种DSL语言,就是供业务专家使用的语言,这样业务专家又直接侵入软件人员的工作,使用DSL可以进行编程实现了,比如现在很火的RoR Groovy都号称是DSL,只是这样可能过犹不及,将软件人员彻底赶出软件领域好像和当初业务专家从软件人员手中夺权有些本质不同了。

所以,业务专家觉得UML已经不够用了,插手到软件细节,用起DSL了,那么业务专家自己的重点(领域建模)可能就不一定能干好,多元时代讲究分工专业化啊。

猜你喜欢
3Go 1 2 3 下一页