软件流程设计之事件风暴EventStorming

最近新开了一个公众号,有兴趣可以关注一下。时不时就复活去更新一下。
公众号二维码

最近在带几个新员工,新员工是学校刚毕业的,习惯于做一些导师或者师兄师姐们拆解好的任务,有很明确的功能描述,甚至喂饭喂到什么地步呢,输入输出,需求文档,参数类型都规定好了,他只要把逻辑实现一下就行。
但是问题来了,职场不是学校,喂饭喂到这种程度才能做的话,不如我自己写写算了。带人很累,但是我秉着授人以鱼不如授人以渔的想法,想要让他们学会怎么做程序设计。
今天给大家介绍一个能够让软件设计快速入门的方法论,事件风暴。

事件风暴的官方定义:

EventStorming is a flexible workshop format for collaborative exploration of complex business domains.事件风暴是一个处理复杂业务灵活小作坊。

目标:

  • 发掘现有的健康业务线中最有改进价值的地方;
  • 探索新业务模式的可行性;
  • 设想新的服务,为每个参与方带来最好的正向结果;
  • 设计整洁可维护的事件驱动型(Event-Driven)软件,以支持快速发展的业务。

事件风暴中的基本元素:

事件风暴中的基本元素很多,今天先介绍相对独立的系统(即不跟第三方系统交互),在设计流程的时候用到事件风暴中的几个必要元素。

1.事件 Event

指的是可以拆分到最小单元的业务动作。举个例子,“点击按钮”不算一个事件,因为没有任何业务属性,但是“查看账户余额”就可以认为是一个事件。

2.决策行为 Command

指的是导致事件发生的动作。顺着刚刚的例子说,“点击按钮”就是一个决策行为,导致了客户可以“查看账户余额”。

3.角色 User/Actor

指的是发起决策动作的一个参与者,就是对象。再顺着刚刚的例子,谁可以查看余额,很显然就是用户本人。值得注意的是,这里的Actor并不仅仅指生物学上的人类,它的范围涵盖了计算机领域的所有对象,一般包括,用户、信息系统、操作系统等。

了解了以上的几个必要元素之后,我们就有了一个基本的模型,那就是

User Command Event 谁-怎么做-做什么。
在这里插入图片描述
那么流程设计就是基于谁做什么导致什么结果,然后这个结果再驱动下一个人做什么的过程。

使用要点:

1.识别事件

案例:在双十一活动期间,某商家决定对在店内购买商品的客户都免费包邮赠送一本《C++程序设计》。
正常情况下的事件分解应该是。

客户下单,订单完成。
商家赠送书籍《C++程序设计》。
看起来很简单,但是怎么越想越不对,如果客户退货了怎么办呢?这本书也照送吗?
所以中间增加了一个事件,就是订单结束。
还有一个问题,很多客户是知道了这个赠品才买的其他商品,怎么能保证客户知晓自己有一个赠送书籍呢?
所以中间又增加了一个事件,就是订单结束后,通知客户赠品已发出。
……等等等等这样的想法还有很多。
这个识别事件的过程就是“风暴”。事件风暴就是所有的程序参与者(开发、测试、产品、业务、需求)在内的人不断经过唇枪舌剑,最终确认所有事件的过程。

2.根据结果事件倒推上一个事件

继续上面的案例:

客户收到赠品是最后一个事件,它的前提是

商家寄出赠品,它的前提是

订单已完成,它的前提是

客户收到商品,它的前提是

商品已发货,它的前提是

客户已付款,它的前提是

客户已下单。
在这里插入图片描述

2.识别主流事件并标注分支的优先级

首先,刚刚那个案例还是存在缺陷的,有很多问题我们没有考虑到,比如:订单生成了,但是客户取消付款;商品库存不足;赠品库存不足;客户要求退货退款;客户没有主动结束订单;赠品寄丢了。等等。

我们将这些其他的事件都补充到刚刚的流程中:在这里插入图片描述
但是软件的交付是有时间要求的,所以我们需要对所有的事件做优先级区分,以保证开发力量能够快速迭代上线。根据我们之前的分析,很显然正常状态下的完成整个业务流程的优先级是最高的。
在这里插入图片描述
在这个基础上我们就可以根据不同的MVP等级,编写不同开发周期的需求分析文档。

3.识别每一个事件可能导致的不同结果

延续上述案例,主流MVP1的每一个步骤都可能导致不同的结果:

客户提交订单,订单有可能提交失败;

客户支付订单,订单有可能支付失败,客户可能超时支付,客户可能取消订单;

商家发出商品,商品可能库存不足,商品可能丢失物流;

客户收到商品,客户可能没有及时签收,商品可能存在问题,客户可能申请退款,客户可能申请退货;

客户结束订单,客户可能没有收到商品,客户可能没有结束订单,订单可能超时自动关闭;

商家发出赠品,赠品可能没有库存,赠品可能没有及时通知客户,赠品丢失物流信息;

客户收到赠品,赠品可能存在质量问题,赠品可能需要补发,赠品可能没有被及时签收……

将以上所有可能的结果都绘制到流程图中,每一个结果可能会产生新的业务流程,比如退货流程,退款流程,系统自动关闭订单流程等。不同的流程会产生新的事件风暴流程。

最终会变成一个完整的业务流程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/181455.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

跨境电商的微商业务:个人品牌的成功之路

随着互联网的发展,跨境电商行业迅猛崛起,微商业务作为其中的一种新型销售模式也逐渐崭露头角。微商业务以低成本、高灵活性的特点,为个人品牌的成功之路开辟了新的可能性。 本文将深入研究跨境电商微商业务,探讨在这个领域中个人…

竞赛YOLOv7 目标检测网络解读

文章目录 0 前言1 yolov7的整体结构2 关键点 - backbone关键点 - head3 训练4 使用效果5 最后 0 前言 世界变化太快,YOLOv6还没用熟YOLOv7就来了,如果有同学的毕设项目想用上最新的技术,不妨看看学长的这篇文章,学长带大家简单的…

GitHub上8个强烈推荐的 Python 项目

文章目录 前言1. Manim2. DeepFaceLab3. Airflow4. GPT-25. XSStrike6. 谷歌图片下载7. Gensim8. SocialMapper总结关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③…

Vue3-provide和inject

作用和场景:顶层组件向任意的底层组件传递数据和方法,实现跨层组件通信 跨层传递普通数据: 1.顶层组件通过provide函数提供数据 2.底层组件通过inject函数获取数据 既可以传递普通数据,也可以使用ref传递响应式数据&#xff08…

WorkPlus即时通讯,打通上下游产业链,构建企业生态圈

如今,随着信息技术的迅速发展,智慧水务、智慧医疗、智慧城市、智慧教育、智慧政务等领域正蓬勃发展。在这个智慧时代,企业需要一个具备开放性和扩展性的平台级产品,以满足多样化的业务需求。WorkPlus作为一款全新的移动底座产品&a…

Linux应用开发基础知识——I2C应用编程(十二)

前言: I2C(Inter-Integrated Circuit BUS)是集成电路总线,是目前应用最广泛的总线之一,最初由PHILIPS(现为NXP)设计。它使用多主从架构,主要用于连接低速周边设备。I2C总线在硬件物理…

高效聚合 | AIRIOT智慧虚拟电厂管理解决方案

传统的电力供应模式主要依靠大型发电厂和电网进行能源传输和分配,但这种模式会导致能源浪费、环境污染等问题,往往存在如下的运维问题和管理痛点: 资源整合能力差:传统电力供应模式无法集成和整合分散的电力资源,包括…

将所有图片居中对齐

Ctrl h 调出替换框 ^g表示所有图片 格式里面选择段落 全部替换

国自然项目基金撰写的隐藏技巧、范例分析及提交前的自我审查

目录 一、基金项目申请要求、重点及项目介绍 二、基金的撰写技巧 三、基金撰写的隐藏技巧 四、范例分析及提交前的自我审查 更多应用 基金项目申请需要进行跨学科的技术融合,申请人需要与不同领域结合,形成多学科交叉的研究。基金项目申请在新时期更…

JS逆向之wasm逆向(二)

本文仅供技术交流和技术学习 不做其他用途 接着上一篇继续讲: 上篇地址: JS逆向之wasm逆向(二进制) 网址: aHR0cHM6Ly93d3cuN3E2Y3lqLmNvbTo5MDAxL3JlZ2lzdGVyNDY5Njg/aV9jb2RlPTQ0Mjc5OTU1 这个网站我们后面可以继续讲他的debugger 和滑块…

放弃无谓的「技术氛围」幻想,准备战斗

大型科技公司每年都招聘大量研发人才,这给了很多人一种错觉,认为是「技术」导致了这些公司的成功,其实他们的成功是技术推动的市场战略的成功,是市场需要某项服务,才需要研发人员夜以继日的埋头苦干。资本绝不会做亏本…

前端设计问题:iframe

居中问题&#xff1a; 尝试了一般的居中方法&#xff0c;无效果 display: flex;justify-content: center;align-items: center;放到导航栏下面不居中 放到页面底部还是不居中 Code <iframe id"demo_sanshui" src"demo_sanshui.html" width"120%…

浅析基于智能音视频技术的城市重要场馆智能监控系统设计

了解旭帆科技的朋友都知道&#xff0c;旭帆科技一直都乐于和大家分享各类场景的视频解决方案&#xff0c;今天小编就基于智能音视频技术的城市重要场馆智能监控系统设计和大家探讨一下。 基于智能音视频技术的城市重要场馆智能监控系统设计&#xff0c;主要包含以下要素&#x…

java项目之消防物资存储系统(ssm+vue)

项目简介 消防物资存储系统实现了以下功能&#xff1a; 管理员功能: 管理员登陆后&#xff0c;主要模块包括首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;仓库管理&#xff0c;物资入库管理&#xff0c;物资出库管理&#xff0c;仓库管理&#xff0c;物资详情管…

【C语言:深入理解指针二】

文章目录 1. 二级指针2. 指针数组3. 字符指针变量4. 数组指针变量5. 二维数组传参的本质6. 函数指针变量7. 函数指针数组8. 转移表9. 回调函数10. qsort函数的使用与模拟实现 1. 二级指针 我们知道&#xff0c;指针变量也是变量&#xff0c;它也有自己的地址&#xff0c;使用什…

微信小程序中使用腾讯地图bindmarkertap=“onMarkerTap“事件无法获取数据的id解决方法

问题描述 由于id是字符串类型&#xff0c;导致获取不到id 点击tap后&#xff0c;获取不到我们数据中的id 解决方法 只需要把id转成Number类型即可 点击tap后&#xff0c;即可获取到我们数据中对应的id

什么是复费率电表?

随着科技的不断进步和人们对能源管理的日益重视&#xff0c;复费率电表逐渐成为我国电力系统中不可或缺的一员。复费率电表是一种能够实现电能计量、峰谷电价划分以及负荷控制等多功能的智能电表&#xff0c;它采用先进的通信技术和计算机算法&#xff0c;对用户的用电行为进行…

JOSEF约瑟 过电流继电器 JL15-300/11 触点形式一开一闭 板前接线

系列型号 JL15-1.5/11电流继电器JL15-2.5/11电流继电器 JL15-5/11电流继电器JL15-10/11电流继电器 JL15-15/11电流继电器JL15-20/11电流继电器 JL15-30/11电流继电器JL15-40/11电流继电器 JL15-60/11电流继电器JL15-80/11电流继电器 JL15-100/11电流继电器JL15-150/11电流继电…

前端已死?看看我的秋招上岸历程

背景 求职方向&#xff1a;web前端 技术栈&#xff1a;vue2、springboot&#xff08;学校开过课&#xff0c;简单的学习过&#xff09; 实习经历&#xff1a;两段&#xff0c;但都是实训类的&#xff0c;说白了就是类似培训&#xff0c;每次面试官问起时我也会坦诚交代&…

SAP GOS与DMS简介

通常在项目实施过程中很多业务数据需要管理对应的系统外的附件&#xff0c; 制造业的BOM需要对应图纸&#xff0c;采购订单需要对应线下的采购合同&#xff0c;物料需要对应相应的参数文件等等&#xff0c;很多产品都会遇到业务数据和系统外相关资料的关联&#xff0c;有PDF的文…