10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

使用事件风暴的经验

  • 2016-07-05
  • 本文字数:1118 字

    阅读完需:约 4 分钟

Dan North 在最近伦敦举行的 DDD eXchange 大会上的演讲中声称,在领域驱动设计(Domain-Driven Design, DDD)的概念中,事件风暴是非常有用和有价值的。他解释了事件风暴的基本机制,并分享了他近几年为各种不同系统建模的经验。

事件风暴就是把所有的关键参与者都召集到一个很宽敞的屋子里来开会,并且使用便利贴来描述系统中发生的事情。一张桔黄色的便利贴代表一个领域事件,在上面用一句过去时的话描述曾经发生过什么事情。为了让自己关注最终目标,North 经常从结束时的最后一个事件开始,然后把第一个事件加上来,就有了一个从开始到结束的完整时间表。

其它常见的便利贴有:

  • 用蓝色的便利贴来为被命令触发的事件建模。命令的发起者可能是人,是注入到系统中的外部事件,或是定时器等
  • 用粉色的便利贴来为疑问或难题建模
  • 用绿色便利贴为人们看见了什么或者想看见什么建模,即视图或者阅读模式

North 也表示并不一定要用这种方法,他建议使用对你建模的问题最有效的办法。

North 说事件风暴最强大之处在于为结果建模。我们对发生过什么事情感兴趣,我们就知道事情将来可能的结果集。用传统方法时我们总是围绕着过程、活动和人的行为建模,这太受限了,因为最终都是从人的行为开始。如果换个角度我们关注这些活动的结果,把它们建模为事件,我们就有了另外的作法。

事件风暴如此有效的原因在于很多有用的工作都是并行完成的。人们总是关注他们自己日常做的那一块,这样就自然而然地把人按工作内容给分了组,每个组在做模型的不同部分。这样就产生了模型里面的聚集或者叫子系统。象经理这样的知道整体流程的人则从全局的角度去看待它,检查确保所有的子系统最后可以整合得起来。

建模的过程中有一个非常重要的步骤是问什么事件是必要的——就是那些要得到结果就必须要发生的事件,与其对应的是那些只做为流程的一部分发生又不会影响结果的事件。这个问题可以把那些不必要的事件剔除掉而显著的简化整个流程。

North 说事件风暴与影响图谱、故事图谱和其他的协作发现活动等都是针对相同问题域的。他会使用事件风暴来让团队达成共识,然后使用影响图谱来获得方向感,最后使用故事图谱来找到开发和提交软件的方法。

Vaughn Vernon 在一个早些的演讲中提到事件风暴对于定义模型应用的上下文、为模型划定边界是一个非常重要的工具。

事件风暴的发明者 Alberto Brandolini 最近在写一本书: Introducing EventStorming

明年的 DDD Exchange 大会计划在 2017 年四月下旬召开,现在正开放注册。

查看英文原文 Experiences Using Event Storming


感谢夏雪对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-07-05 19:005678
用户头像

发布了 152 篇内容, 共 78.0 次阅读, 收获喜欢 64 次。

关注

评论

发布
暂无评论
发现更多内容

BeyondCampus-护航高校网络安全

权说安全

网络安全 零信任

Java 集合中的排序算法浅析

京东科技开发者

jdk 后端 Java、 排序算法 企业号 2 月 PK 榜

在统信UOS上二进制安装GreatSQL

GreatSQL

MySQL UOS 统信 greatsql greatsql社区

ChatGPT风口下的技术“狂飙”,天翼云荣登ZeroCLUE榜首

天翼云开发者社区

假如面试官问你Babel的原理该怎么回答

loveX001

JavaScript

基于飞桨PaddleClas完成半导体晶圆图谱缺陷种类识别

飞桨PaddlePaddle

paddle 开源 飞桨

面试官:你是怎样进行react组件代码复用的

beifeng1996

React

有爱相伴,宠爱有家,皮皮App发起关爱流浪动物主题公益活动

联营汇聚

面试官:说说React-SSR的原理

beifeng1996

React

「读源码」为什么注册路由时没有传入上下文,在接口方法中却能取到?

王中阳Go

Go golang 高效工作 学习方法 程序员

ModStartBlog v6.7.0 后台管理优化,页面宽度调整

ModStart

瓴羊Quick BI即席分析工具:创设数据分析捷径

巷子

瓴羊Quick BI为企业决策者提供可视化分析服务

小偏执o

腾讯前端必会面试题(必备)

loveX001

JavaScript

迷恋管理是一种病

虎妞先生

Percona 8.0.30中show engine innodb status导致coredump排查及分析

GreatSQL

MySQL MySQL 高可用 :MySQL 数据库 greatsql greatsql社区

开学季,5门优选好课助你在新学期狂飙!

博文视点Broadview

vivo版本发布平台:带宽智能调控优化实践-平台产品系列03

vivo互联网技术

版本发布 CDN带宽

搞懂Druid之连接创建和销毁

小小怪下士

Java 程序员 后端 Druid

疑似45亿条递信息泄露,“三类主体”如何应对?

极盾科技

数据安全

Python设置显示屏分辨率

Python 分辨率

吃透阿里2023版Java性能优化小册后,我让公司系统性能提升了200%

程序员小毕

数据库 程序员 JVM 架构师 Java性能优化

Prompt Learning: ChatGPT也在用的NLP新范式

Baihai IDP

人工智能 自然语言处理 nlp ChatGPT 企业号 2 月 PK 榜

文盘Rust -- 本地库引发的依赖冲突

京东科技开发者

后端 Clickhouse 本地计算 rust语言 企业号 2 月 PK 榜

关于微服务架构的思考

HummerCloud

微服务 云原生

百度前端必会react面试题总结

beifeng1996

React

unittest使用parameterized参数化后如何调用添加到测试套件中

Python 单元测试 自动化测试 unittest 测试套件

擅用瓴羊Quick BI报表分析工具,数据分析事半功倍

夏日星河

最初设计时就会避开钽电容,这是为什么呢?三大理由告诉你原因

元器件秋姐

元器件 电容 钽电容

令人头秃的js隐式转换面试题,你能做对吗

loveX001

JavaScript

面试了20+前端大厂,整理出的面试题

loveX001

JavaScript

使用事件风暴的经验_语言 & 开发_Jan Stenberg_InfoQ精选文章