`
icyiwh
  • 浏览: 7676 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

领域驱动与模型驱动

    博客分类:
  • DDD
阅读更多
  原文参见:
http://www.domaindrivendesign.org/discussion/blog/evans_eric_ddd_and_mdd.html
  标题:Domain-Driven / Model-Driven
  作者:Eric Evans
      February 4, 2004

  译序
  这是第一次翻译老外写的文章,以前看国人翻译的文章总是嗤之以鼻,认为文章怎么翻译的这么烂,还是看原文好(其实自己看原文时总是看个大概).真正自己动笔翻译时,才知道,要想把每一个细节都翻译的到位,不仅需要深厚的中英文文学功底,还需要对相关技术的熟悉,而我似乎这三者都做得不够,以至于自己翻译完之后都看不懂,更不用说什么翻译的信达雅了.看来,翻译还有很长一段路要走.所幸,通过翻译更加能够理解相关技术的所以然.
  希望自己在翻译的过程当中沿着信达雅的层次往上走,不段的完善自己在英文与技术层次上的功能.

  领域驱动设计与模型驱动设计之间有什么区别呐?因为这两个术语在名称上相近,概念上也有重叠,所有常常被混淆了.但是它们是两个截然不同又相互补充的程序开发的方法.

  领域驱动设计基于一个基本的前提:即程序开发的核心是主题知识(译:knowledge of the subject matter)以及找出一些有用的方法来理解这些主题知识. 需要我们去处理问题的复杂性在于领域本身,而不是技术架构,用户接口,甚至那些特殊的特性.这就意味着所有的设计都是关于我们对最本质的业务概念理解,同样也可以通过程序设计是否基于那些核心的业务概念来判断所有其它的程序是否合理.
 
  为了达到这一点,领域专家与程序专家必须一起寻求一些方法,组织主题知识为程序开发的目的服务.他们必须专注于他们的主题,让主题来引导他们,为构建程序第一步即是描述和理解领域设定优先级.他们必须挖掘出一些核心的规则,忽略那些肤浅的方面.

  把知识提炼成一组明晰的概念是一个建模的过程.这些模型存在于一个团队语言当中,而基于这些语言的每一次会议都是一个建模会话.所以领域驱动设计不可避免的会导致建模,是因为建模是一个我们获得复杂领域理解的一个方法.

  当前,有些团队可能会写一些事务脚本或者其它形式的非模型驱动程序,并且他们对领域的理解可能是有价值的,只要他们的程序员本身是共享那些知识的.

  但是,当这些模型仅仅悬浮在空中,他们没有很好的掌握的时候. 每一个程序遇到的问题必须在这种设计下解决. 这就存在一种风险:模型变得没有意义甚至会误导.所以,我们需要给出一个模型的轮廓.

  模型驱动设计实际上是基于一组概念构建的程序.例如,一个UI框架如果一些UI概念,比如窗口,菜单等与实际的程序构建相关联,则可以称这个UI框架是模型驱动设计的.有些UI框架是这样设计的,而另外一些只是简单的提供了一些函数来达到这些效果.

  所以在UI和基础架构中模型驱动设计可以被归类技术问题.全是,这只是模型驱动设计在那些让开发项目起飞领域方面的应用.当开发人员专注于领域,与领域专家拍档咀嚼知识,通过无所不在的语言建立的共享模型的练习,他们脑海中提炼并形成一个共享模型.模型驱动设计使用那些模型嵌入到程序的每一个角落.最后,这些反馈循环会在实现与领域学习之间关闭.

  在模型驱动设计中,设计不仅仅是基于模型,一个模型也可以用来满足设计与实现的考虑.通过迭代同时解决了这两个限制.这就部分的反映出,我们特定硬件或者程序语言或者底层架构的限制.这是本质的,但是一些更加基础的也会发生.编程显示了精妙性,但在逻辑中重要的错误是那些从来不会被关注的(至少不会是有损效率的).在在编写模型驱动设计这些困难被解决后,程序员就会提炼领域相关的思想来解决这些错误.那些坚持模型驱动设计的团队意识到代码的更改就是模型的更改.小的异常可能是一个大的模型insights的提示.

  在领域驱动设计中,我写了一个经历:在大的金融交易中,分配剩余的一分钱的硬币会导致复杂的新insights和主要模型的重新设计.在过程设计中,这可能会发生,但在我们头脑和语言中,这很少发生,因为领域思想之间对应的代码的耦合度比较低.所以说,这两种模型的思考方式是相互独立的.

  这是为什么模型驱动设计是领域驱动设计一个不可缺少的自然伙伴.它允许领域专家和程序员通过自然语言,或者程序本身,甚至是终端客户来达成对领域的深度理解 -- 以及所有回归的方式.
分享到:
评论

相关推荐

    领域驱动模型(DDD).zip_ddd_领域模型_领域驱动_领域驱动设计

    通过学习《领域驱动模型(DDD).pdf》这样的资料,开发者可以深入了解DDD的原理,掌握如何进行领域建模,如何划分限界上下文,如何设计和实现业务规则,以及如何有效地与其他团队成员协作,以实现高质量、符合业务...

    领域驱动设计与模型驱动开发

    领域驱动设计(Domain-Driven Design,简称DDD)是一种软件开发方法论,它强调...随着软件开发实践的不断演进,领域驱动设计与模型驱动开发的理论与技术也在不断发展和完善,为软件工程项目带来了诸多新的启示和工具。

    领域驱动设计与模型驱动开发.pptx

    收集来自主流的DDD开发理论知识培训课程,包括: 领域驱动设计简介 领域通用语言 领域驱动设计的构造块 领域驱动设计编程实践 CQRS架构 模型驱动开发

    领域驱动模型设计和应用

    在本资料中,我们将深入探讨领域驱动模型的设计与应用。 首先,我们要理解DDD的核心概念——领域模型。领域模型是对业务领域的抽象,包含了业务实体、值对象、聚合、领域事件、领域服务等元素。领域模型是业务逻辑...

    领域驱动设计模型DomainDrivenDesign

    Eric Evans所著的《领域驱动设计》(Domain-Driven Design:通常简称为“DDD”)一书可以说是经典中的经典,虽然“领域”的概念早就存在,但是直到这本书的出现,才让人们真正开始认真审视软件的构建,相信你看了这...

    EntityFramework领域驱动模型-陈晴阳大哥的文章.pdf

    ### EntityFramework与领域驱动设计(DDD):陈晴阳的深度解析 #### 一、EntityFramework:领域驱动设计的新篇章 EntityFramework(简称EF),作为微软.NET Framework的一部分,自3.5版本起便崭露头角,至4.0版本...

    领域驱动模型.pdf

    本书是Eric Evans的《领域驱动模型》一书的精简版,让你在短时间内理解领域驱动设计的内容。这本书没有介绍任何新的概念,它只是概要总结了领域驱动设计的本质, 抽取了Eric Evans原书中关于这一主题的大部分内容,...

    最新领域驱动设计(DDD)资料合集(23份).zip

    领域驱动架构透析与架构解耦 领域驱动设计在系统重构中的应用实践 如何让DDD落地 淘宝应用架构升级——反应式架构的探索与实践 微服务的容器化实践 物联网平台的反应式设计 演进式架构的平台化落地 以DDD思想为基础...

    领域模型驱动设计1553265830.pdf

    领域模型是领域驱动设计的核心概念,它代表了业务领域的概念和规则的抽象。设计一个好的领域模型是理解复杂业务逻辑的关键。领域模型分为贫血模型和充血模型两种。 - 贫血模型指的是领域对象只包含了数据访问方法...

    领域驱动模型设计-精讲.zip

    领域模型使开发人员可以表达丰富的软件功能需求,由此实现的软件可以满足用户真正的需要,因此被公认为是软件设计的关键所在,其重要性显而易见。但讲述如何将领域模型用于软件开发过程的优秀实用资料却不多见。本书...

    实现领域驱动设计(完整PDF版)

    DDD的全称为Domain-driven Design,即领域驱动设计。下面我从领域、问题域、领域模型、设计、驱动这几个词语的含义和联系的角度去阐述DDD是如何融入到我们平时的软件开发初期阶段的。要理解什么是领域驱动设计,首先...

    领域驱动设计与模式实践.pdf

    领域驱动设计(DDD)的中心内容是如何将业务领域概念映射到软件工件中。大部分关于此主题的著作和文章都以Eric Evans的书《领域驱动设计》为基础,主要从概念和设计的角度探讨领域建模和设计情况。这些著作讨论实体...

    DDD领域驱动设计学习框架简介PPT

    领域驱动设计(DDD)是一种软件开发方法,由Eric Evans在其同名著作《领域驱动设计》中提出。DDD致力于解决复杂业务系统的开发问题,通过将业务领域专家与开发人员紧密合作,将复杂的业务逻辑转化为可执行的软件模型...

    DDD领域驱动设计和中台实践资料合集25篇.zip

    领域驱动架构透析与架构解耦-张逸 领域驱动建模(Evans DDD) 领域驱动设计(DDD)架构的实践 如何让DDD落地 淘宝应用架构升级 - 反应式架构的探索与实践 微服务的容器化实践 物联网平台的反应式设计 演进式架构的平台化...

    领域驱动设计案例-盒马实践

    本文将通过对盒马实践的领域驱动设计案例进行详细的分析,讨论领域模型的设计理念、数据建模、对象建模、依赖注入等方面的知识点。 领域模型的设计理念 领域模型是领域驱动设计的核心概念,它指的是对业务领域的...

    领域驱动设计.mobi

    领域驱动设计.mobi,英文原文,适用于在kindle上阅读。

    领域驱动设计和开发实战.pdf

    - **服务导向的设计**:面向服务的架构(SOA)可以与领域驱动设计相结合,通过服务化的领域模型提供更加灵活和可复用的服务。 - **微服务架构**:在微服务架构中,每个服务通常对应一个领域模型,这有助于实现高内聚...

    张逸-构建领域驱动设计知识体系_compressed.pdf

    - 宏观层次的分析与设计是领域驱动设计的一个重要方面,它分为全局分析阶段和战略设计阶段。这两个阶段分别关注于整个系统的业务架构和核心领域的识别,以及基于这些认识进行的高层次设计工作。 - **全局分析阶段**...

Global site tag (gtag.js) - Google Analytics