美文网首页
《DDD 模式原理和实践》(二)

《DDD 模式原理和实践》(二)

作者: Billy_Wang | 来源:发表于2021-03-16 15:59 被阅读0次

2、提炼问题域

2.1 知识提炼与协作

知识提炼的过程开始于一个系统的行为,开发人员和专家要一起探讨应用程序的使用场景。

image.png
  • 通过通用语言达成共识
  • 领域知识是关键,重要性高于技术知识
  • 业务分析员是重要的角色
  • 知识提炼是一个持续过程
  • 随着迭代的演进,对问题域的理解会提升

2.2 与领域专家一起获得领域见解

  • 业务人员提出想要什么,领域专家可以帮你制作满足业务的模型
  • 领域专家能够对业务领域的政策和工作流程、特性都有深刻的理解
  • 在协作中突破原有的理解

2.3 提炼知识的模式

  • 专注在最有意思的话题上
  • 从用例开始,理解用户与系统之间的交互。通过复述的方式验证你理解的问题是否与专家一致。最终理解真实的过程图、工作流程。
  • 提出有力问题,理解构建的产品的重要性以及理解背后的目的,示例问题:
    (1)需求来自何处?
    (2)这个系统如何为业务提供价值?
    (3)如果不构建这个系统会发生什么情况?
  • 草图
    (1)绘制草图时注意保持相同的抽象层次上
    (2)可使用少量的UML语言描述,不必像Viso和Rational Rose那样精心设计
  • CRC卡,专注于思考问题域中的概念:类名、职责、相关类
  • 延迟对概念命名,当心太多含义的术语
  • 行为驱动开发
  • 快速开发原型,寻找遗漏
  • 查看纸面系统,通过纸面解决方案了解过程和工作流

2.4 查看现有模型

寻求现有过程图、工作流程图,创建术语和知识库在团队中共享知识

  • 理解意图
    (1)理解了客户的真正意图,才能提供更好的解决方案
    (2)理解隐含的愿景
  • 事件风暴
  • 影响地图
  • 理解业务模型
  • 刻意发现
  • 模型探讨漩涡
    (1)场景探讨:领域专家对重要的场景进行解释,使团队成员能够理解。小组成员再对长江进行绘图。
    (2)建模:团队成员对场景建模并评估是否有效解决领域专家的场景问题。
    (3)考验模型:通过更多场景对模型进行考验
    (4)收集和记录:记录模型如何解决问题域中的关键问题
    (5)代码探究:技术团队通过代码证明能够实现

小结:

  • 让领域专家参与到系统最重要的部分

3、专注核心领域

并非一个问题的所有部分都是同等重要的

3.1 为何要分解一个问题域

  • 通过分解大的问题域,可以更有效的为不同区域分配资源
  • 单模型如果要满足所有的领域需求,模型可能过于复杂
  • 小模型更容易管理,可以绑定到一个特定的上下文

3.2 如何捕获问题的实质

值得考虑的问题:

为什么编写软件而不是选择一款现成的商业产品?
该应用对业务能起决定作用吗?
为何该应用是自建而不是外包?
该软件的一部分能为业务提供竞争优势吗?

  • 超越需求
    (1)寻找需求背后的动机
    (2)理解你隐含的愿景,了解业务尝试达到的目标,提供真正的业务价值
  • 捕获领域愿景
    (1)为何公司要构建软件?
    (2)在项目初期构建愿景,用以阐明什么内容对软件的成功是主要的、业务目标是什么、价值在哪里。

3.3 如何专注核心问题

核心领域:提供的独特的与竞争对手区别开来的区域,以及赋予其在市场中竞争优势的内容

  • 提炼问题域:提炼核心域在哪里
  • 核心领域:核心领域需要最好的开发人员;核心域随着业务的发展也会发生变化
  • 将核心领域当作一款产品:
  • 通用域:包含电子邮件、报表、账户管理
  • 支撑域

3.4 不追求处处完美

  • 专注于清晰边界而非完美模型
  • 核心领域也是不断演化的

小结

  • 对大问题进行分解、提炼以便找出核心、支撑和通用域
  • 提炼有助于降低问题空间的复杂性
  • 更加专注于核心领域

相关文章

  • 《DDD 模式原理和实践》(二)

    2、提炼问题域 2.1 知识提炼与协作 知识提炼的过程开始于一个系统的行为,开发人员和专家要一起探讨应用程序的使用...

  • 《DDD 模式原理和实践》(一)

    1、什么是领域驱动设计 1.1 解决复杂问题面临的挑战 未使用通用语言:(1)代码无法表达业务(2)代码难以阅读和...

  • DDD原则模式和实践 读书笔记 二

    提炼问题域 参与人员 - 业务(领域专家)和技术(开发人员)进行协作 业务相关人员更关注某个功能的输入和输出,但是...

  • 1.什么是领域驱动设计

    项目中用到了一些DDD的设计,以前也用到过,准备再学习一下《领域驱动设计模式、原理与实践》这本书,以前就看过不过当...

  • DDD分层架构的三种模式

    引言 在讨论DDD分层架构的模式之前,我们先一起回顾一下DDD和分层架构的相关知识。 DDD DDD(Domain...

  • 还在搞三层架构?了解下 DDD 分层架构的三种模式吧

    引言 在讨论DDD分层架构的模式之前,我们先一起回顾一下DDD和分层架构的相关知识。 DDD DDD(Domain...

  • 学习内容

    DDD领域模型设计 OpenResty最佳实践

  • DDD 模式从天书到实践

    背景 正所谓有人的地方就有江湖,有设计的地方也一定会有架构。如果你是一位软件行业的老鸟,你一定会有这样的经历:一个...

  • DDD 实践

    背景 从开始接触DDD到现在,也有一段时间了,中间断断续续的阅读了DDD的相关书籍及文章,中间思考了许多问题,不断...

  • DDD原则模式和实践 读书笔记 三

    领域模型实现模式 领域模型 领域模型是一个面向对象模型,它同时囊括了行为和数据。该模式基于没有数据库前提的。优点:...

网友评论

      本文标题:《DDD 模式原理和实践》(二)

      本文链接:https://www.haomeiwen.com/subject/pxlgqltx.html