领域驱动设计:软件核心复杂性应对之道-2

2015-06-29

第二章 语言的交流和使用

模式: UBIQUITOUS LANGUAGE(通用语言)

开发在于领域专家沟通时,需要建立一个通用语言,来减少沟通的成本

基于业务,开发和业务达成共识,用双方都能理解的黑话来讨论序曲

强调了专业术语的差异,带来沟通和理解的成本,为了降低成本,必须使用一种共同的术语来建模。

这个术语更偏重于业务,而不是开发,但开发对于术语所代表的意义和业务要达成共识。

领域语言在描述业务场景或者是构建领域模型时,如果有歧义,则需要领域专家向开发人员澄清,清除歧义,同时也会更新模型。

通用语言的包括口头的交流语言,图表,文档。

书面文档,不是必须的,但它可以作为口头交流的补充,文档是基于领域模型的,不是对代码的复述。

书面文档如果不再被及时的更新,那么它就失去存在的意义,请把它归档。

所以书面文档请保持尽量的简洁

文字和图是相辅相成的,不要刻意的去偏重某一种描述。

代码是最实时有效的对模型的描述,但它太偏重与细节,不是能被领域专家所能完全理解的,即便领域专家能理解,但会让人深陷细节中。

所以需要文档作为补充。

图不完全是UML图,可以用简单的图示去描述业务流程,更适用与沟通。

本章更多是在强调用一种双方都便于理解的语言、文字和图去对系统进行描述,便于大家对系统的分析和设计。

时间: 2025-01-03 23:15:54

领域驱动设计:软件核心复杂性应对之道-2的相关文章

领域驱动设计 软件核心复杂性应对之道 读书笔记

问题: 1.  何为领域驱动设计(DOMAINDriven DESIGN)? 2.  UBIQUITOUS LANGUAGE(领域通用语言)应该是如何去描述 3. 作者:Eric Evans 第二部分 模型驱动设计的构造块   第四章 分离模型 分层架构如图: 而主要的业务模型及在领域层. 第五章 软件中所表示的模型 模型主要包括Entity.Value Object和service 问题: Entity.Value Object和Service是如何定义的? 它们是如何进行区分和划分的? EN

《领域驱动设计 软件核心复杂性应对之道》 - 书摘精要

(序) 领域模型的最大价值是它提供了一种通用语言,这种语言是将领域专家和技术人员联系在一起的纽带: (P2) 模型是一种知识形式,他对知识进行有选择的简化和有目的的结构化: (P33) 面向对象编程之所以功能强大,是因为它基于建模范式,并且为模型构造提供了实现方式: (P48) 领域驱动设计只有应用在大型项目上才能产生最大的收益,而这也确实需要高超的技巧: (P70) 在大型系统中,中等粒度的.无状态的 Service 更容易被重用,因为它们在一个简单的接口背后封装了重要的功能: 细粒度的对象可

读书笔记--领域驱动设计:软件核心复杂性应对之道-1

2015–6-28 第一章 消化知识 有效建模的要素 1. 模型和实现的绑定 模型要基于现实的业务,不能和用户现实的业务脱节 2. 获得一种基于模型的语言 通过一种统一的语言(业务人员和开发人员都能理解的)去描述所建立的模型,如UML图,基于业务的术语,无奇异的,作者的意思是业务人员和开发人员建立基于模型一个沟通的桥梁. 3.开发一个蕴含丰富知识的模型 灵活的,适应变化的的模型,模型不能简单等同于类图,而是解决复杂业务问题的方案.包含各种类型的知识 4. 提炼模型 对业务的描述要抽象,从场景的分

解构领域驱动设计(二):领域驱动设计的核心之分层架构

反映业务规则的代码是整个软件的核心,但是它一般只占很小的一部分,在传统的基于贫血模型的分层软件架构中,业务规则可能分散到各个层.各个代码段,从而使得通过代码来还原业务规则或者保证代码与业务规则一致将变得非常困难.DDD分层架构的核心思想就是将所有业务规则的代码抽取到领域层,保证领域层的编码与领域模型是完全一致的. 下图是DDD的分层架构.?我将通过代码来演示这个新的分层架构. 1 应用层 应用层在这里非常的简单清晰,它仅仅是将基础设施层.领域层提供的功能装配起来完成任务,这一层的代码逻辑非常简单

我的“第一次”,就这样没了:DDD(领域驱动设计)理论结合实践

写在前面 插一句:本人超爱落网-<平凡的世界>这一期,分享给大家. 阅读目录: 关于DDD 前期分析 框架搭建 代码实现 开源-发布 后记 第一次听你,清风吹送,田野短笛:第一次看你,半弯新湖,鱼跃翠堤:第一次念你,燕飞巢冷,释怀记忆:第一次梦你,云翔海岛,轮渡迤逦:第一次认你,怨江别续,草桥知己:第一次怕你,命悬一线,遗憾禁忌:第一次悟你,千年菩提,生死一起. 人生有很多的第一次:小时候第一次牙牙学语.第一次学蹒跚学步...长大后第一次上课.第一次逃课.第一次骑自行车.第一次懂事.第一次和喜

.NET领域驱动设计—实践(穿过迷雾走向光明)

阅读目录 开篇介绍 1.1示例介绍 (OnlineExamination在线考试系统介绍) 1.2分析.建模 (对真实业务进行分析.模型化) 1.2.1 用例分析 (提取系统的所有功能需求) 1.3系统设计.建模 (技术化业务模型) 1.3.1 枚举类型的使用 (别让枚举类型成为数值型对象) 1.3.2 基础数据.业务数据 (显示实体和隐式过程) 1.3.3 模型在数据库中的主外键关联问题 (面向对象模型与关系模型的天然抗阻) 1.3.4 角色.类型 (区分类型与面向对象概念) 1.3.5 名词

Re:从零开始的领域驱动设计

领域驱动的火爆程度不用我赘述,但是即便其如此得耳熟能详,但大多数人对其的认识,还只是停留在知道它的缩写是DDD,知道它是一种软件思想,或者知道它和微服务有千丝万缕的关系.Eric Evans对DDD的诠释是那么地惜字如金,而我所认识的领域驱动设计的专家又都是行业中的资深前辈,他们擅长于对软件设计进行高屋建瓴的论述,如果没有丰富的互联网从业经验,是不能从他们的分享中获取太多的营养的,可以用曲高和寡来形容.1000个互联网从业者,100个懂微服务,10个人懂领域驱动设计. 可能有很多和我一样的读者,

领域驱动设计和实践

软件系统面向对象的设计思想可谓历史悠久,20世纪70年代的Smalltalk可以说是面向对象语言的经典,直到今天我们依然将这门语言视为面向对象语言的基础.随着编程语言和技术的发展,各种语言特性层出不穷,面向对象是大部分语言的一个基本特性,像C++.Java.C#这样的静态语言,Ruby.Python这样的动态语言都是面向对象的语言. 但是面向对象语言并不是银弹,如果开发人员认为使用面向对象语言写出来的程序本身就是面向对象的,那就大错特错了,实际开发中,大量的业务逻辑堆积在一个巨型类中的例子屡见不

领域驱动设计(DDD)实现之路

2004年,当Eric Evans的那本<领域驱动设计——软件核心复杂性应对之道>(后文简称<领域驱动设计>)出版时,我还在念高中,接触到领域驱动设计(DDD)已经是8年后的事情了.那时,我正打算在软件开发之路上更进一步,经同事介绍,我开始接触DDD. 我想,多数有经验的程序开发者都应该听说过DDD,并且尝试过将其应用在自己的项目中.不知你是否遇到过这样的场景:你创建了一个资源库(Repository),但一段时间之后发现这个资源库和传统的DAO越来越像了,你开始反思自己的实现方式