领域驱动设计(3) DDD设计流程

  • 战略设计

    • 产品愿景与场景分析

    • 领域建模

    • 微服务拆分

  • 战术设计

    • 分析微服务领域对象

    • 设计微服务代码结构

DDD整体包含战略设计和战术设计两部分。战略设计过程会从业务视角出发,进行场景分析、领域建模,并划分领域边界、建立通用语言、确定限界上下文;战术设计则关注如何将模型转化为软件实现,涉及聚合根、实体、值对象、领域服务、应用服务等概念。所以战略设计重在把控方向、建立模型,战术设计重在软件实现,战略设计的好坏直接决定了DDD能否成功实施。所以除了关注DDD战术设计中用到的工具集、思想(比如四层架构、CQRS等)之外,更应该关注其战略设计。

DDD也是协作方式的变革,在战略设计、战术设计过程中,需要业务、技术双方角色的共同参与,比如领域专家、业务需求方、产品经理、架构师、开发经理、测试经理等。
下面以一个请假、考勤系统的案例来贯穿DDD的整个设计流程。系统的功能包括:

  1. 请假:请假人可以提交请假单,根据请假人的身份、请假类型、请假天数进行校验,然后根据审批规则逐级提交给上次审批,审批通过后记录考勤,否则请假申请被拒绝;

  2. 考勤:根据考勤规则,核销请假数据,对请假数据进行校验,输出考勤统计。

战略设计

战略设计的目的是根据用户旅程分析,找出领域对象和聚合根,对实体和值对象进行聚类组成聚合,划分限界上下文,建立领域模型。
战略设计采用事件风暴的方法,包括产品愿景和场景分析、领域建模、微服务拆分(如果要实现为微服务的话)等过程。

产品愿景与场景分析

产品愿景是对产品顶层价值的设计,避免产品偏离方向。事件风暴中,大家讨论的维度可以围绕产品目标用户、核心价值、差异化竞争点。如果所涉及的系统目标和需求非常明确,那么这一步可以忽略。

场景分析则是从用户的视角出发,探索业务领域中的典型场景,明确涉及的场景、每个场景的用例。然后根据不同角色的场景分析,尽可能全面地梳理从前端操作到后端业务逻辑发生的所有操作、命令、领域事件以及外部依赖关系。

以请假和审批为例:请假的用户࿰

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值