DDD学习笔录——提炼问题域之知识提炼与协作的基本原则
1、通过通用语言达成共识
通用语言,已经强调过好多遍了,在DDD再怎么重视都不为过,后面可能还会讲。
知识提炼的输出以及共识的构建就是常见的通用语言(UL)。
当与业务相关人员和主题专家进行建模时,每个人都应该有意识地始终应用富含领域专有术语的通用语言。这一语言必须现实制作,并在描述领域模型和问题域时使用。该语言还应该用于模型的代码实现,使用用作类名、属性和方法名称相同的术语和概念。正是这一语言使得业务和开发团队拥有了关于软件的有意义沟通。
UL用于将模型的代码描述绑定到以业务能够理解的语言和图表交流的概念模型。这句话说了好多遍,再重复一次。
UL它将包含来自业务的专业术语 以及在进行问题域的用例建模时发现的新概念和术语。
UL能避免持续从技术模型转换到业务模型的情况,因而也就能避免出现遗漏掉必不可少的见解的情况。
UL是一个共识。
2、领域知识的重要性
领域知识是关键,其重要性甚至要远甚于技术知识。
要处理具有复杂过程和逻辑 的业务 的团队需要将自身沉浸在问题域中,学习吸收所以相关的领域知识。这样让团队能够专注在要点上,并在其开发的应用程序代码库核心处创建一个能够满足业务用例的模型。而且在整个应用程序的生命周期中都要保持这样的做法。
如果不能用简单术语向你的业务用户讲诉问题域中的复杂概念,那么无法做好开始在其中开发软件的准备。
要为你正在构建的复杂应用程序 快速地持续发布更新(即便是在稀奇古怪的业务要求,或变化无常的功能时),就需要你在设计和开发期间重新调整你的精力倾注点——需要让你的团队专注于业务问题,而不是仅仅是技术。
3、一个持续的过程
知识提炼是一个持续的过程;团队应该持续地为问题域的简单视图而努力,该简单视图只专注于相关内容以便实现创建有用模型的目标。模型驱动设计和领域模型的演化是一个持续过程。
开发团队、业务相关人员以及主题专家之间的协作不应该局限在项目开始阶段。知识提炼在整个应用程序构建的生命周期中应该在业务参与的情况下被持续关注。
认识到随着系统的每一次迭代,模型都会有所演化,这一点也是很重要。模型永远不会尽善尽美,它只是对于当前问题可用而已。因为,当新的需求被添加进来时,模型就会改变;新的行为和用例也将需要模型的改变。
随着每一次的迭代完成,团队对于问题域的理解都会提升。这将带来 能够极大简化模型的更深刻的见解以及设计突破。
在系统投入使用时,模型可能也需要演化,这是由像 性能或对系统用途的更好理解 这样一些技术原因造成的。
一个好的模型要能够足够灵活以支持变更;一个成熟的模型会保有丰富且传神的概念以及问题域的专业术语,并且能同时业务和技术团队所理解。
DDD学习笔录——提炼问题域之知识提炼与协作的基本原则的更多相关文章
- DDD学习笔录——提炼问题域之知识提炼与协作
提炼问题域的意义 理解一个复杂问题域以便创建简单且有用的模型需要深入详尽的知识以及深刻的见解,这些只能通过与从内到外理解该领域的人协作得到.对模型的设计进行连续实验和探究正是DDD的能力所能实现的.只 ...
- DDD学习笔录——提炼问题域之有效提炼知识的模型(三)
方式六:延迟对模型中概念的命名 对领域建模时命名很重要. 因为在不断的知识提炼过程中经常会发现已经被命名的概念与你最初理解的有出入,这时你当初的命名就会变成一个问题.其问题在于 最初选作名称的这个词 ...
- DDD学习笔录——简介领域驱动设计的实践与原则
DDD在存在许多DDD模式的同时,也有大量实践和指导原则,这些都是DDD思想体系成功的关键. 1.专注于核心领域 DDD强调的是在核心子域付出最多努力的需要.核心子域是你的产品会成功还是会失败的差异化 ...
- DDD学习笔录——领域驱动设计的常见误区(即错误的理解)
可以将DDD看成一种开发思想体系:它促成了一种新的以领域为中心的思维方式. 它是一种学习过程,而非最终目标,这就是DDD的最大优势. 任何团队都可以编写一个软件来满足一组用例的需求,但那些将时间和精力 ...
- DDD学习笔录——简介DDD的战略模式如何塑造应用程序的架构
前一篇,简单介绍了DDD战略模式的提炼问题域,这篇简单介绍它如何塑造应用程序的架构. 1.创建一个模型以解决领域问题 为每一个子域构建一个软件模型以处理领域问题并让软件与业务保持一致. 这个模型并非现 ...
- DDD学习笔录——提炼问题域之与领域专家一起获得领域见解
业务和开发团队之间的协作是DDD必不可少的部分,并且它是处于开发阶段的产品获得成功的关键. 领域专家指的是那些从业务领域的政策和工作流程到棘手处和特性都具有深刻理解的人.能够为你的问题区域提供深刻见解 ...
- DDD学习笔录——简介DDD的战术模式、问题空间和解空间
DDD的战术模式 DDD的战术模式(也称为模型构造块)是一个帮助创建 用于复杂有界上下文的有效模型的 模式集合. 也就是我们常说的设计模式. 问题空间 问题空间将问题域提炼成更多可管理的子域,是真对于 ...
- DDD学习笔录——领域驱动设计DDD概念总结
- Matlab高级教程_第一篇:Matlab基础知识提炼_01
第一篇:Matlab基础知识提炼: 这一篇主要用系统和提炼性的语言对Matlab基础知识进行总结,主要适用于有语言基础的学习者.尽量不讲废话. 第一部分:Matlab是什么? 1 Matlab是Mat ...
随机推荐
- app支付宝支付java服务端代码
app支付java服务端生成支付单文档 public String aliPay(String amount,Map<String,Object> body){ //实例化客户端 Alip ...
- Juint 单元测试(2)
单元测试(junit testing),是指对软件中的最小可测试单元进行检查和验证.Java里单元指一个类. JUnit ,是一个开源的Java单元测试框架,是 Java的标准单元测试库,是非常重要第 ...
- aac adts & LATM封装码流分析
本文继续上一篇文章的内容,介绍一个音频码流处理程序.音频码流在视频播放器中的位置如下所示. 本文中的程序是一个AAC码流解析程序.该程序可以从AAC码流中分析得到它的基本单元ADTS frame,并且 ...
- Leetcode 1005. Maximize Sum Of Array After K Negations
class Solution(object): def largestSumAfterKNegations(self, A, K): """ :type A: List[ ...
- JS返回上一页并刷新
window.history.go(-1);//返回上一页不刷新 window.location.href = document.referrer;//返回上一页并刷新
- 正则 去除html标签
String.prototype.stripHtml=function(){ var re=/<(?:.)*?>/g; // *? 意味着匹配任意数量的重复 return this.rep ...
- How to use NSRequest in Delphi XE4
//Demo How to use NSRequest..procedure TiOSWebBrowserService.DoNavigate(const URL: string);var NewUR ...
- fedora 安装新字体 courier new xxx
fedora安装新字体 1.将windows字体拷贝到/usr/share/fonts/truetype下面,文件夹名字可以随便起 cp /media/c/WINDOWS/Fonts/* /usr/s ...
- 关于modelsim添加库的说明
声明:以下纯属个人习惯. 1.工程建好后添加一个编译好的库的方法是:file->new->library选择a map to an existing library.然后将这个库在你这工程 ...
- yarn 管理nextjs 项目
预备环境 nodejs npm 1. yarn 安装 npm install -g yarn 2. nextjs 项目初始化 yarn add next react react-dom 3. 配置n ...