事件風暴EventStorming

WebAPI設計原則

事件風暴如何進行A

事件風暴怎麼玩?

事件風暴(EventStorming)需要成員共同的參與,首先需要有一個主辦人,他負責引導活動的進行與聚焦,避免討論過度發散,如果是在實體舉辦,那需要一面夠大的牆面或白板,在牆面貼上一張足夠大的壁報紙,稱為『事件風暴看板』,還要準備各種顏色便利貼。事件風暴進行有五大步驟。

第一步驟:區分領域事件

時間:30至60分鐘

區分工作故事豬的領域事件(Business domain event),每個人用邊利貼(橘色)寫上咧玉事件,貼在看板上

描述領域事件時,總是使用『過去式』,表示事件是已經發生,剛開始可能有些人對過去式不習慣,主辦人可以適時協助,在後面的過程中,我們會了解到用過去式的原因所在,如下表是參考的例子。

避免使用 建議使用
用戶認證成功 用戶已認證
下訂單 已被下的訂單
列印出貨標籤 已列印的出貨標籤

這步驟要進行15~30分鐘,如果是範圍更大的題目,可以跑更多次,跑完之後應該會有一大堆便利貼在看板上,之後我們會將他們做進一步地梳理。

在活動進行的初期,大家很容易就以為自己已經完整地找出所有的事件,但往往此時事件與事件間的關係可能其實是模糊的、重疊的,或根本沒有前後關係的,這時主持人可以點出那些為梳理清楚的盲點,要大家再次從頭到尾逐一的理清與補充每張便利貼的因果關係,直到每張便利貼都清楚明確,沒有任何曖昧之處。

圖4.2展示了邊利貼蒐集完領域事件後的樣貌,這件事情來自第三章節的JSON書屋表3.2的第一至四號的工作故事

200-Areas/230-知識擴展/讀書筆記/WEBAPI設計原則/resource/成立一次事件風暴-4.png

第二步:建立事件描述

時間:90~120分鐘

接下來將便利貼依照事件發生順序重新整理,去掉重複的便利貼,以及確認便利貼上的描述是清楚的

主辦人要要求所有人都確定每張便利貼的敘述都是絕對明確的,沒有疑問的,之後將便利貼依照事件發生的順序一一貼在看板上,還要在便利貼之間留下足夠的空間,以便之後能插入更多的便利貼。

在這一步中最常看到的問題是事件開始產生分支,為了避免過度發散,此時應該要選擇一條主要路線做為後續活動進行之用,其他的分支可以擺在主線的下方,做為參考。

下圖展示了梳理後的編立貼與故事線

200-Areas/230-知識擴展/讀書筆記/WEBAPI設計原則/resource/成立一次事件風暴-6.png

這書裡過程看似簡單但實際上會花到一兩個小時,過程中會湧現許多的討論,如果有某幾張便利貼難以取得定論,可以暫時先轉向45度,暫時跳過他們,等到故事線大致完成後再回過頭檢討那些45度的便利貼,直到故事線完整為止,如果直到最後還是有幾張懸而未決且當下也難以做出裁決的便利貼,可以改用粉紅色的便利貼將他們標示為熱點(hotspot),留待後續處理。

第三步驟:回顧事件敘述與劃分事件範圍

依照時間順序整理跟分類完便利貼之後,為了確保沒有任何遺漏的部分,派人從頭到尾說一遍所有的便利貼,如果中途發現還是有遺漏的、不清楚的立刻補正,這也是我們需要一大塊白版的原因,要有足夠的空間才夠貼上這麼多便利貼。

在回顧的同事時也要把所有出現的詞彙做統一,詞彙固定下來之後,才有辦法用一致的詞彙以及一致的語境在後續的ADDR流程中做一致的描述
下圖記載著幾個被明確定義的詞彙,在統一的詞彙訂定之後,將所有便利貼的舊有詞彙做修正。

200-Areas/230-知識擴展/讀書筆記/WEBAPI設計原則/resource/成立一次事件風暴-7.png|1000

在這一步驟中隨著回顧的進行,不同便利貼之間的模糊地帶也會再次浮現,在現場釐清、劃分間症候,每張便利貼應該都是明確、清楚、沒有重疊的,這整個回顧的過程中至少需要一個小時。

第四步驟:補通領域資訊

時間:30到60分鐘

在完成上一步的回顧後,這一步我們用其他顏色的便利貼補丸他資訓,請參見圖4.5 JSON書屋的下單工作故事範例,範例中可以看到用了其他顏色的便利貼來附加更多資訊。

200-Areas/230-知識擴展/讀書筆記/WEBAPI設計原則/resource/成立一次事件風暴-10.png

我們用不同顏色的便利貼表示不同的用途,下面是便利貼顏色與用途的對照清單:

開始用以是各種編理貼為我們的故事線添加更多資訊,首先貼上藍色的『命令』,可以從事件往回推衍初始事件發生的行動:命令之後貼上淡黃色的『聚合』,可以根據命令判斷後方接收命令的聚合實體:最吼貼上紫色的『政策』,找出故事線中我們會以『當....』開頭的情節,剩下如果有懸而未決的疑難點,則貼上輛粉紅色的『熱點』

第五步驟:回顧最終的事件敘述

時間:30分鐘

最後我們來回顧一次全部的便利貼,先從頭到尾,再從尾走到頭,逐一確認每張便利貼沒有任何遺漏的部分,重要的事件與觸發條件都有被正確的標示,參見圖4.6下單工作故事的範例,此範例顯示了完整吧事件風暴便利貼樣貌,隨著便利貼的完整,所有參加者對下單的認識也更加完整。

完成事件風暴後,妥善收納看板,未來有疑問的時候可議再拿出來的回顧,也可以把看板照相留存後分享給大家。果辦公室或或意識夠大,也可以把看板放上去,方便團隊後續討論或回顧,如果看板是Miro這類數位式的協作工具,可以匯出成PDF或圖檔,放在專案的工想資料夾中,當作專案文件的一部分。

最後根據本張最前面提到的作法,產生出事件與步驟清單。

200-Areas/230-知識擴展/讀書筆記/WEBAPI設計原則/resource/成立一次事件風暴-14.png

事件風暴的好處

200-Areas/230-知識擴展/讀書筆記/WEBAPI設計原則/resource/成立一次事件風暴-15.png|1000

200-Areas/230-知識擴展/讀書筆記/WEBAPI設計原則/resource/成立一次事件風暴-16.png

200-Areas/230-知識擴展/讀書筆記/WEBAPI設計原則/resource/成立一次事件風暴-17.png|1000

誰應該來玩?

200-Areas/230-知識擴展/讀書筆記/WEBAPI設計原則/resource/成立一次事件風暴-18.png|1000

舉辦一場事件風暴

200-Areas/230-知識擴展/讀書筆記/WEBAPI設計原則/resource/成立一次事件風暴-19.png|1000

準備:準備道具

200-Areas/230-知識擴展/讀書筆記/WEBAPI設計原則/resource/成立一次事件風暴-20.png|1000

200-Areas/230-知識擴展/讀書筆記/WEBAPI設計原則/resource/成立一次事件風暴-21.png|1000

分享:事前說明

200-Areas/230-知識擴展/讀書筆記/WEBAPI設計原則/resource/成立一次事件風暴-22.png

200-Areas/230-知識擴展/讀書筆記/WEBAPI設計原則/resource/成立一次事件風暴-23.png

執行:開始執行

總結:找出活動與步驟

200-Areas/230-知識擴展/讀書筆記/WEBAPI設計原則/resource/成立一次事件風暴-24.png

調整活動流程

200-Areas/230-知識擴展/讀書筆記/WEBAPI設計原則/resource/成立一次事件風暴-25.png

總結

200-Areas/230-知識擴展/讀書筆記/WEBAPI設計原則/resource/成立一次事件風暴-26.png

圖片備份

200-Areas/230-知識擴展/讀書筆記/WEBAPI設計原則/resource/成立一次事件風暴.png
200-Areas/230-知識擴展/讀書筆記/WEBAPI設計原則/resource/成立一次事件風暴-1.png
200-Areas/230-知識擴展/讀書筆記/WEBAPI設計原則/resource/成立一次事件風暴-2.png

200-Areas/230-知識擴展/讀書筆記/WEBAPI設計原則/resource/成立一次事件風暴-3.png
200-Areas/230-知識擴展/讀書筆記/WEBAPI設計原則/resource/成立一次事件風暴-5.png

事件風暴 水球潘版本

目的

  1. 企業=價值、銷售
  2. 讓需求談得快點
  3. 同步認知

開始

  1. 事件的顆粒度偏大(勿用流程圖表達)
    1. 時間線從左到右
    2. 上下沒有順序關係
    3. 使用過去式表達(避免個人觀點)
    4. 中間空位放置happy path
  2. Event的定義是你最有興趣的
    1. 例子:追一個女生你最關注哪些事情?
    2. 帶來事件上的轉淚點
    3. 有興趣、很在乎、發生一定要告訴我(背後意義是進度、轉淚點)

200-Areas/230-知識擴展/讀書筆記/WEBAPI設計原則/resource/事件風暴EventStorming.png

  1. 開始Enforce the timeline
    1. 收斂大家的想法
    2. 時間線對齊
    3. 透過對話同步認知
  2. Story Telling
    1. 選擇一個人帶入一個角色,從左唸到右
    2. 一定會卡,停下來一起交流同步認知,確認他說出來的東西明確
    3. 如果太難當下無法回答使用粉紅色便條紙貼上去等等再討論
    4. 用說故事的方式
    5. 通常可以請工程師去做story telling,以確保他明確瞭解需求
    6. 加強版:有第二回合並加上「永遠都會」、「立刻」
  3. Event storming完成後就可以software design
graph LR;  
    A[Event Storming]
    B[Story Telling]
    C[Policy]
    D[Fresh out]
    E[Spec By Example]
    F[Rule]
    A-->B-->C-->D-->E-->F;
classDef default fill:#ECECFF,stroke:#9370DB,stroke-width:2px,color:#000
classDef yellow fill:#ffffde,stroke:#aaaa33,stroke-width:1px;