2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

使用事件风暴的经验

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

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

关注

评论

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

什么是Java 异常?如何处理异常?

Java架构历程

Java 三周年连更

spdk里是怎么运行nvmf-tgt的

linux大本营

spdk

数说热点|米哈游新作《崩坏:星穹铁道》今日公测,能否再现原神奇迹?

MobTech袤博科技

用c语言写一个目录遍历程序

linux大本营

C语言 目录遍历

第五期(2022-2023)传统行业云原生技术落地调研报告——金融篇

York

容器 DevOps 微服务 云原生 金融

UDP报头是通过结构体位段实现的吗

linux大本营

网络协议 udp UDP协议

共话数字化新技术、新趋势 华为云开发者日东莞站成功举办

极客天地

对数据库中存储的程序进行现代化改造,以使用 Amazon Aurora PostgreSQL 联合查询、pg_cron 和 Amazon Lambda

亚马逊云科技 (Amazon Web Services)

YashanDB V22.2重磅发布!七大亮点带你了解新特性

YashanDB

数据库

什么是文件传输,介绍文件传输的发展进程

镭速

linux dbus代码举例

linux大本营

Linux C++

eBPF的发展演进---从石器时代到成为神(三)

统信软件

操作系统 Linux内核

一个有趣的图片加载效果

南城FE

CSS 前端 动画 图片

Go sync.Once:简约而不简单的并发利器

陈明勇

Go golang 高并发 三周年连更 sync.Once

dpdk中,如何建立portid/queue的配置和逻辑核心的关系

linux大本营

队列 DPDK DPDK开发

电子签赛道驶向深水区,法大大以数智化引领创新

ToB行业头条

重磅!阿里云云原生合作伙伴计划全新升级:加码核心权益,与伙伴共赢新未来

阿里巴巴云原生

阿里云 云原生 生态合作

容量成本性能全都要有, Redis 容量版 PegaDB 设计与实践

百度开发者中心

云数据库 百度智能云

Django笔记十七之group by 分组用法总结

Hunter熊

Python django count 分组查询 sum

nvim 配置c++环境

linux大本营

vim C++

云BI产品瓴羊Quick BI,为企业数字化转型保驾护航

巷子

如何使用 SCP 和 Rsync 在 Linux 中传输文件

wljslmz

Linux 三周年连更

来字节跳动实习,有机会发Nature子刊

字节跳动技术范儿

重载++运算符分别实现i++和++i

linux大本营

运算符 数据结构与算法

dpdk l2fwd如何初始化每个逻辑核的port/queue的

linux大本营

队列 DPDK DPDK开发

当生成式AI照进医疗,医患关系将何去何从?

白洞计划

医疗

打工人逃不开「单人单岗」

Java 架构 程序人生 职场

写一个完整的SHOW TABLE STATUS 语句返回的所有表的状态信息对应的结构体

linux大本营

数据库 存储 结构体 C++

解析下rte_pktmbuf_pool_create参数含义

linux大本营

DPDK DPDK开发

【Python实战】Python采集度贴吧排行榜

BROKEN

三周年连更

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