速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

使用事件风暴的经验

  • 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:005310
用户头像

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

关注

评论

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

读scss/sass实例项目带你入门

devpoint

SASS scss css预处理器

升级版数字人民币试点在深启动 这次有啥不一样?

CECBC

数字人民币

《中寰卫星导航项目管理部负责人卜钢:智能网联行业的问题与前景》(采访提纲):

谙忆

一个可递归遍历的Vue树型组件

空城机

JavaScript vue.js 大前端 4月日更

感谢Github帮我斩获了8家大厂Offer

Java架构师迁哥

Python模拟MOBA手游(三)

Bob

Python Python 游戏编程 4月日更

树莓派安装pytorch

IT蜗壳-Tango

4月日更

三分钟热度的你,不会得到你想要的结果

小天同学

坚持 日常感悟 4月日更 专心 个人思考

颜色值JavaScript换算(HSV、RGB、十六进制颜色码)

空城机

JavaScript 大前端 颜色值换算

Java编辑器

ベ布小禅

4月日更

完美的,从不空口说白话,140个案例带你深入理解微服务

Java架构师迁哥

计算机原理学习笔记 Day4

穿过生命散发芬芳

计算机原理 4月日更

InheritableThreadLocal源码解析,子线程如何获取父线程的本地变量?

徐同学呀

ThreadLocal Java源码

Coinbase上市在即,这里有你想知道的一切

CECBC

比特币

cat监控http请求-CatFilter

Java个体户

监控 cat

重读《重构2》- 内联函数

顿晓

重构 4月日更

升级JDK到1.8笔记

风翱

jdk8 4月日更

你看起来很美味?独家揭露视频推荐系统AI秘方

脑极体

微信被单删或拉黑?这两个免打扰检测方法你要知道。

彭宏豪95

微信 工具 社交 数据备份 4月日更

用吃解决生活问题

石云升

读书笔记 好好吃饭 28天写作 4月日更

JVM-技术专题-MAT解析OOM问题

洛神灬殇

JVM

Linux 下的Zabbix Agent 安装

耳东@Erdong

Linux zabbix 4月日更

真假敏捷教练

escray

面试 面经 4月日更

《分布式系统设计》(1) 从程序思维到系统思维

陈皓07

不确定的海浪中,更需要数字化转型的定海神针

脑极体

Spark测试用例生成apache iceberg结果

聚变

大数据 iceberg

从程序员角度看湖南电信网络全崩,如何防范服务器被攻击以及解决方案

北游学Java

Java 网络安全 网络 服务器

「MySQL」深入理解事务的来龙去脉

学Java关注我

Java 编程 架构 程序人生 软件架构

余额宝|三年开发|一二三四+HR面面经,已拿offer|

Java架构师迁哥

Scrum Patterns:小团队(译)

Bruce Talk

敏捷开发 译文 Agile Scrum Patterns

《分布式系统设计》(2) 关键概念和基本问题

陈皓07

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