事件风暴
事件风暴(Event storming)是利用研讨方式,快速发现软体特定领域中所发生事物的作法[1][2]。和其他方式比较,此方式相当的简单,而且过程不需要电脑协助,活动只需要便利贴以及宽阔的墙面。在此活动中,商业流程会变成一连串的领域事件,在活动中会用橘色的便利贴表示
事件风暴是由Alberto Brandolini在领域驱动设计(DDD)的情境下发明。事件风暴可以用作商业流程建模以及需求工程的工具。其概念是让软体开发者和领域专家(domain expert)聚在一起,互相讨论学习[3]。其命名是要让重心专注在领域事件中,而其进行方式类似脑力激荡法或敏捷建模时的建模脑力激荡(model storming)。
需求
编辑事件风暴的过程中,会包括有问题要提出的人(一般会是软体开发人员),以及知道相关问题答案的人(领域专家,product owners)。
建模会在宽阔的墙面以及墙面上的大张白纸上进行,便利贴会贴在白纸上。至少会需要五种不同颜色的便利贴[3]。
步骤
编辑第一个步骤是找到所有的领域事件,写在橘色便利贴上。
所有领域事件都找到之后,下一个步骤是找到让领域事件发生的命令,写在蓝色便利贴上,放在对应领域事件的前面。
第三个步骤是识别命令执行以及事件发生的聚合(aggregate),聚合会写在黄色便利贴上。
事件风暴后形成的概念会分为几类,每一类都会用对应颜色的便利贴表示: 以下是五个颜色的便利贴、颜色以及内容
- 领域事件(Domain event)
- 在商业流程中出现的事件,若用英文书写的话,以过去式表示。
- 人员(Actor)
- 人员会透过view提出命令。
- 命令(Command)
- 命令是使用者透过view提出的,会产生领域事件
- 聚合(Aggregate)
- 一组可以视为单一单元处理的领域物件。
- view
- 用户在系统上互动,执行任务的环境。
有时也会加上以下的内容
- 商业流程(Business process)
- 依商业规则及逻辑处理命令,会产生一个或是多个领域事件。
- 外部系统(External system)
- 第三方的服务提供者,例如像网上收款平台或是货运公司。
例子
编辑以下是一个事件风暴的范例。
领域事件 帐户建立
帐户删除
订单建立
|
人员 客户
注册用户
管理员
|
命令 建立帐户
删除帐户
建立订单
|
聚合 订单
使用者
|
外部系统 Stripe(网上收款平台)
Google(邮件供应商)
|
Views 结帐
登入
|
错误 无法联络服务供应商
系统出现问题
|
Users
CreateAccount
AccountCreated
Signup
结果
编辑事件风暴后,可以在建模空间中展示商业流程。不过更重要的是在参与者心里建立的知识。
参考资料
编辑- ^ Brandolini, Alberto. Introducing Event Storming. 2013-11-18 [2017-04-06]. (原始内容存档于2018-05-04).
- ^ George, Chiraag. How to Design an Effective Event Storming Session. Creately Blog. 2021-07-19 [2023-07-07]. (原始内容存档于2024-02-23) (美国英语).
- ^ 3.0 3.1 Vernon, Vaughn. Domain-Driven Design Distilled. Addison-Wesley. 2016. ISBN 978-0134434421.