写点什么

使用事件风暴的经验

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

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

关注

评论

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

图灵奖得主Yann LeCun走进百度,与世界研究工作者展开交流

百度大脑

使用关键点检测打造小工具Padoodle,让涂鸦小人跟随真人学跳舞

百度大脑

一文彻底搞懂原型链

CRMEB

实用机器学习笔记二十六:NAS

打工人!

学习笔记 NAS 机器学习算法 3月月更 神经网络架构搜索

威胁驱动的网络安全方法论

喀拉峻

网络安全

架构训练营毕业总结

Geek_e6f7f6

架构实战营

微博评论的高性能高可用计算架构

AragornYang

架构训练营 架构实战营

做一个小程序到底要多少钱?都有哪些费用?

源字节1号

开源 前端开发 后端开发 开发小程序

LeetCode刷题笔记:数组中重复的数据

OpenHacker

JavaScript 算法 LeetCode

RENO: Netflix的快速事件通知系统

俞凡

架构 netflix 大厂实践 3月月更

Flutter 图文并茂列表完整实现

岛上码农

flutter ios 安卓 移动端 3月月更

拿下10+OFFER总结的HR常问问题

暖蓝笔记

3月月更

百度连续四年亮相全球量子信息处理顶会QIP 宣布量子战略规划升级

百度大脑

AI语音识别-我给浏览器加了个语音搜索功能

DS小龙哥

语音识别 3月月更

Eclipse 不为人所知的另一面 - 企业管理软件领域 ABAP 编程语言开发利器

汪子熙

eclipse ide 开发者 abap 3月月更

模块化编程及LCD1602调试工具

謓泽

3月月更

吉利控股集团与百度深化战略合作

百度大脑

建设领先的AI原生云,百度智能云落地新一代高性能AI计算集群

百度大脑

纯CSS 神奇的边框特效

德育处主任

css3 纯CSS 前端可视化 css动画

[算法练习]2 二进制中1的个数

暖蓝笔记

3月月更

面向智能合约、区块链、Web3、以太坊开发工具指南

devpoint

Ethereum infura Solidity Web3.0 3月月更

尤达 DDD 领域驱动设计思想 第二章作业(重新划分SmartRM的子域和限界上下文)

代廉洁

尤达DDD领域驱动设计思想

优秀的测试开发应该具备的六大能力

老张

软件测试 测试开发

报名啦!中小企业如何借力AI逆势突围?飞桨中国行定档3月23日!

百度大脑

持续集成工具篇:Jenkins与流水线管理

自动化 持续集成 jenkins 持续交付 构架

对称加密与非对称加密总结

暖蓝笔记

3月月更

免费机器资源、硬核导师、丰厚奖励|飞桨黑客马拉松第二期开始啦!

百度大脑

有温度的人工智能,零门槛助力企业“鲤跃”智能化“龙门”

百度大脑

【建议收藏】Kafka 面试连环炮, 看看你能撑到哪一步?(上)

王江华

大数据 kafka 面试 中间件 消息队列

尤达DDD领域驱动设计思想 第一章作业(理解单纯的面向对象设计思想的缺陷)

代廉洁

尤达DDD领域驱动设计思想

vim 常用操作键tips

刁架构

xcode vim 快捷键

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