事件风暴 Event Storm
- 事件风暴 : 理解、访谈需求
- 目的 : 将商业流程视觉化,找出核心价值、风险与机会
- 成员 : 引导帅、领域专家、利害关系人
- 三个阶段
- Big Picture : 看到全貌
- 便利贴
- 橘色便利贴 :
- domain event 商业流程的所有发生的事情
- 过去式动式,过去发生的事情 ( 下单会有很多意思,如果用已下单,会发生,就只有一个意思了 )
- 红色便利贴 : 代表冲突,包含不清楚、不确定、有争议的事情
- 黄色 : 使用者 ( user/actor )
- 浅紫色 : System
- Step 1. 混沌探索 ( 因为每个可能想到的事件有的会重复,或是打架,又或是用不同字,来说明同一个事情,因为会将这些放到一群 )
- Step 2. 执行时间
- Pivotal Event : 关键事件,代表不同业务场景阶段之间的转换 ( 用一个纸交带, )
- Swimlanes : 平行的业务流程
- Step 3. People & System : 将人与系统丢进去图里
- Step 4. Explicit Walkthrough : 以讲故事的方法,说明这整个 flow 的流程与事情
- Process Modeling : 商业流程的建模,为了可以理解整个流程
- 便利贴
- 蓝色 : command
- 绿色 : read model : 当使用者看到、感受,然後会触发更多的事情。 ( UI/UX 设计 )
- 紫色 : policy : 一定规则与限制
- 为『 domain event 』加上 user → command
- 思考 read model,就是当用户看到或知道什麽後,会改变 command 的决策。
- 思考 policy : 有没有什麽限制或规则。
- 过程中可以使用 user story 来讨论。
- Soft Design : 软件设计
- Aggregate : 把概念相同的东西放在一起,并且记好 aggregate 就像是 state machine,它有很多的状态,而这些状态对应到 domain event。
- 找出 Bounded Context : 找出软件的边界
范例
使用者可以看到画面上有不同的产品,产品包含影音课程、文章、直播,并且可以购买与观看,并且购买完成後,并且会寄信给购买者,还会分润给老师们。
流程 1. Big Picture : 看到全貌
- Step 1. 混沌探索
- Domain event ( 假设你在 domain 完成後,已发生的事情 ) ( 橘色便利贴 )
- 已购买产品
- 已浏览产品
- 已学习产品
- 已收到分润
- 已收到购买完成信
- Step 2. 重新整理,并且确保时间顺序
- 顺序与平行为 :
- 平行 A : 浏览 → 购买 → 学习产品
- 平行 B : → 分润
- 平行 C : → 收到完成信
- Pivotal Event : 购买
- 问题 ( 红色便利贴 )
- 购买产品有没有限额 ?
- 只要有看过就算已学习产品吗 ?
- 分润的公式 ?
- Step 3. 加上 user ( 黄色便利贴 ) 与 system ( 浅紫色便利贴 )
- 一般使用者 → 透过 API → 已购买产品
- 一般使用者 → 透过前台画面 → 已浏览产品
- 购买产品使用者 → 透过前台画面 → 已学习产品
- 老师 → 排程定期付钱 → 已收到分润
- 购买产品使用者 → 透过 API 与 Mail Service → 已收到购买完成信
- Step 4. 讲故事
流程 2 : Process Modeling : 商业流程的建模
- Step 1. 为 domain event 加上 command ( 蓝色便利贴 )
- 一般使用者 → 将选择商品结帐 ( command ) → 透过 API → 已购买产品
- 一般使用者 → 选择产品总览页面 ( command ) → 透过前台画面 → 已浏览产品
- 购买产品使用者 → 选择产品进行观看影片 ( command ) → 透过前台画面 → 已学习产品
- 老师 → 一般使用者购买该老师产品 → 排程定期付钱 → 已收到分润
- 购买产品使用者 → 购买产品,并且进行付款 ( command ) → 透过 API 与 Mail Service → 已收到购买完成信
- Step 2. 思考有没有什麽事情 real model,会改变 command 的决定。 ( 绿色便利贴 )
- 商品有没有折扣
- 商品有没有合购
- 产品是否全部看过
- 商品有没有 Coupon
- Step 3. 思考 policy 有没有什麽限制或规则。( 深紫色便利贴 )
- 商品有没有限额
- 商品没有规则,每个用户只能买几次 ?
流程 3 : Soft Design : 软件设计
- Step 1. 提取 Enties。
- Step 2. 建立 Aggregate。
- Step 3. 画定 Bounded Context
这一步我发现要先去理解完 『 战术层级 』的东西以後,会比较清楚,等说完战行层级时,在来回补。难怪有些书籍会将这个地方拉到很後面才说明。
参考