构析领域驱动设计读后感

254 阅读6分钟

构析领域驱动设计

1. 全局分析

  • 全局分析的目标就是确定问题空间,在统一语言的指导下,通过各种可视化手段,由领域专家与团队一起完成对问题空间的探索,帮助领域驱动设计对准问题,输出价值需求和业务需求
    • 价值需求
      • who :利益相关者,支持方, 收益方
      • why: 明确系统愿景
      • where: 确定系统范围
      • 使用商业画布模式
        • 重要合作
        • 关键业务
        • 价值主张
        • 客户关系
        • 客户细分
        • 成本结构
        • 收益来源
        • 核心资源
        • 渠道通路
    • 业务需求
      • 业务流程:

        • 业务流程的关键点:完整,边界

        • 业务流程的分类:

          • 从业务流程特征看:主业务流程,变体业务流程和支撑业务流程
          • 从业务流程发起者看:外部业务流程,内部业务流程,管理业务流程
        • 业务流程呈现:

          • 业务流程图:通过对各角色,部门之间的交流协作,来真实反映业务的流转

          • 服务蓝图:一个角色的业务流程,与系统中其他服务之间的联系

      • 业务场景: 场,时间,空间; 景,情景,互动

        • 业务场景的5w模型: who,when,where,what,why
      • 业务服务: 角色主动向目标系统发起服务请求完成的一次完整的功能交互,体现了服务价值的业务行动

        • 服务价值:它能为执行业务服务的角色提供了什么样的服务,是否满足了角色的服务请求
        • 角色:一个业务服务必须会有一个角色作为发起者: 用户,策略,伴生系统
        • 执行序列:所有的步骤都是连续且不可中断的,如此才能完成一次完整的功能交互。
      • 业务服务的识别:

      • 业务服务的呈现:

        • 业务服务图: 用例图, 参与者(who),用例(what),用例关系(why),边界(where)
        • 业务服务规约

2. 架构映射

  • 映射成为获得架构的主要设计手段,价值需求中的利益相关者,系统愿景和系统范围可映射为系统上下文,业务服务通过对业务相关性的归类于归纳映射为限界上下文,系统上下文与限界上下共同构成了系统架构的重要层次。 前者勾勒出解空间的控制边界,后者勾勒出领域模型的知识边界,组成了一个稳定而又具有演进能力的领域驱动架构。
    • 同构系统: 两个复杂结构可以互相映射,并且每一个结构的每一个部分在另一个结构中都有一个相应的部分
      • 概念层次的同构系统
        • 架构的定义:

          • 功能分解的软件元素: 控制规模
          • 软件元素之间的关系 : 结构清晰
          • 软件元素与外部环境之间的关系: 结构清晰
          • 指导架构设计与演化的原则: 响应变化
        • 架构方案的推演

          • 业务,技术,应用,数据在同一个限界上下文内遵循一致的业务方向变化。技术,业务架构分层
        • 领域驱动架构风格

          • 系统上下文:界定了目标系统与伴生系统之间的关系,通过系统分层架构模式进行约束
          • 限界上下文:体系了领域模型和业务能力的边界,通过菱形对称架构模式进行约束
      • 设计层次的同构系统
        • 组织级映射:站在整个组织的高度,通过全局分析阶段输出的价值需求确定组织级的系统上下文
        • 业务级映射:通过全局分析阶段输出的业务需求,根据业务相关性对业务服务进行归类于归纳,识别出边界合理的 限界上下文, 并为其建立菱形对称架构
        • 系统级映射:进入系统内部,在全局分析阶段划分的子领域指导下,建立系统分层架构,将属于核心子领域的限界上下文映射为业务价值层,将通用子领域和支持子领域的限界上下文映射为基础层,并确定他们之间的协做的上下文模式,定义服务契约
    • 系统上下文: 所有系统都有边界
      • 系统内 和 系统外: 不知庐山真面目,只缘身在此山中
      • 系统上下文:通过在不同的抽象层次上重新定义方块和虚线框的含义来将我们的表达限制一个抽象的层次上,从而避免在表达的时候产生抽象层次混乱的问题。
        • 伴生系统:伴生系统的类型直接影响了目标系统与伴生系统的协作。
        • 系统上下文图:以目标系统为核心,勾勒出用户,目标系统和伴生系统之间的关系
      • 系统上下文的确定
        • 参考价值需求:区分系统内,系统外,识别核心域,支持域

        • 业务序列图: 展现目标系统与伴生系统之间的动态协作关系

      无论是系统上下文图还是业务序列图,核心目标都是为了明确目标系统解空间的范围,也就是勾勒出界定系统外与系统内的那条边界线。在确定了解空间的范围后,目标系统就固定下来了,由系统上下文明确他与利益相关者,伴生系统之间的关系,以便正确的建立目标系统位于解空间的架构

    • 限界上下文
      • 限界上下文的定义:上下文表现了业务流的场景片段,整个业务流程由诸多具有时序的活动组成,随着流程的进行,不同活动需要不同的角色参与,并导致上下文有因为某个活动的执行发生切换,形成了场景的边界。

    1、 封装了领域知识的领域对象组成领域模型,在知识语境的界定下,不同的领域对象扮演不同的角色,执行不同的业务活动,并与限界上下文内的其他非领域模型对象一起对外提供完整的业务能力

    2、 限界上下文之间的复用具体体现为业务能力的复用,而非对知识语境边界内领域模型的复用

    • 上下文映射
    • 服务契约设计
    • 领域驱动架构

3. 领域建模

4. 融合