【手把手教你落地 DDD】学习笔记 Day3

407 阅读4分钟

03|事件风暴(上):怎样和业务愉快地聊需求?

问题与挑战

1)领域专家很可能不会像我们上一讲那样,一开始就把需求都一一列出来,需求可能仅仅停留在领域专家的脑子里。所以,我们就需要一种方法,能够将这些头脑中的需求挖掘出来。 2)即便领域专家已经把需求写出来,我们也很难保证没有遗漏,保证开发人员都彻底理解了

事件风暴解决的问题 1)不仅能帮助我们把需求补充完全,而且还能以协作的方式保证业务人员和技术人员对需求理解一致。 2)帮助我们识别领域对象,这也是我们进行领域建模前的重要一步。

事件风暴是怎么来的

为了理解需求,我们首先要分析系统具有哪些功能,这些功能由什么人操作,会产生什么效果。这个过程传统上叫做“捕获行为需求”。

捕获行为需求的方法有好几种,在传统的软件工程中,最常用的方法是“用例”,也就是 Use Case。

Eric Evans 在《领域驱动设计》这本书里,并没有规定捕获行为需求的具体方法。直到 2013 年,一位叫 Alberto 的 DDD 专家提出了“事件风暴”,也就是 Event Storming。 这种方法简单易学,而且充分体现了 DDD 中沟通协作、统一语言等要点,所以逐渐开始流行起来。

事件风暴是什么样的

事件风暴的主要过程: 1)找出业务流程中发生了哪些事件 2)识别用户角色,谁做了什么操作导致事件发生 3)识别领域名词,即实体,为领域建模打基础 image.png

事件风暴的准备

人员准备:业务人员和技术人员协作完成; 业务人员通常是领域专家,包括产品经理、PO、BA. 技术人员通常是架构师、开发人员、测试人员;

场地准备:大会议室 器材准备:白板、便利贴。

事件风暴的第一步:识别领域事件

业务人员讲一遍需求,然后开始识别领域事件。 所谓领域事件,就是业务过程中已经发生的事。 比如订单已提交、商品已签收。 实际上,领域事件是业务过程发生的结 果。 (事件风暴的作者认为,从结果梳理需求,比从操作入手,更容易把业务想清楚)

事件的命名规范:完成时+被动语态。

识别领域事件

把业务流程中的领域事件,按时间顺序排列。 image.png 通过充分讨论,统一语言且尽量使用通用术语,并且把领域事件补充完整,统一后如下: image.png

完整的领域事件如下

image.png

关于领域事件注意点

1)不要把技术事件当领域事件,比如数据库事务已回滚 2)查询功能不算领域事件, 领域事件应该是对某样事务产生的影响,并被记录。是某个事件的增、删、改操作。 通知事件也是领域事件。 查询功能要以另外的方式呈现。

学习收获

掌握事件风暴的概念和具体操作: 在识别领域事件过程中,不断地讨论、澄清误解、补充遗漏、发现业务规则。 事件风暴即头脑风暴,充分讨论。 讨论过程中,使用统一语言,是DDD的核心模式,减少沟通成本。

事件风暴可分为两大过程: 1)识别领域事件,发散过程 2)统一语言,收敛过程 协作是事件风暴的精髓。

观点讨论

1)事件风暴是中间产物,最终输出物:用户旅程地图、服务蓝图、UML领域模型。 2)如果事件本身很简单,但是业务规则非常复杂,这种情况怎么去揭示复杂的业务规则呢? 使用业务规则表