事件風暴
事件風暴(Event storming)是利用研討方式,快速發現軟體特定領域中所發生事物的作法[1][2]。和其他方式比較,此方式相當的簡單,而且過程不需要電腦協助,活動只需要便利貼以及寬闊的牆面。在此活動中,商業流程會變成一連串的領域事件,在活動中會用橘色的便利貼表示
事件風暴是由Alberto Brandolini在領域驅動設計(DDD)的情境下發明。事件風暴可以用作商業流程建模以及需求工程的工具。其概念是讓軟體開發者和領域專家(domain expert)聚在一起,互相討論學習[3]。其命名是要讓重心專注在領域事件中,而其進行方式類似腦力激盪法或敏捷建模時的建模腦力激盪(model storming)。
需求
編輯事件風暴的過程中,會包括有問題要提出的人(一般會是軟體開發人員),以及知道相關問題答案的人(領域專家,product owners)。
建模會在寬闊的牆面以及牆面上的大張白紙上進行,便利貼會貼在白紙上。至少會需要五種不同顏色的便利貼[3]。
步驟
編輯第一個步驟是找到所有的領域事件,寫在橘色便利貼上。
所有領域事件都找到之後,下一個步驟是找到讓領域事件發生的命令,寫在藍色便利貼上,放在對應領域事件的前面。
第三個步驟是識別命令執行以及事件發生的聚合(aggregate),聚合會寫在黃色便利貼上。
事件風暴後形成的概念會分為幾類,每一類都會用對應顏色的便利貼表示: 以下是五個顏色的便利貼、顏色以及內容
- 領域事件(Domain event)
- 在商業流程中出現的事件,若用英文書寫的話,以過去式表示。
- 人員(Actor)
- 人員會透過view提出命令。
- 命令(Command)
- 命令是使用者透過view提出的,會產生領域事件
- 聚合(Aggregate)
- 一組可以視為單一單元處理的領域物件。
- view
- 用戶在系統上互動,執行任務的環境。
有時也會加上以下的內容
- 商業流程(Business process)
- 依商業規則及邏輯處理命令,會產生一個或是多個領域事件。
- 外部系統(External system)
- 第三方的服務提供者,例如像網上收款平台或是貨運公司。
例子
編輯以下是一個事件風暴的範例。
領域事件 帳戶建立
帳戶刪除
訂單建立
|
人員 客戶
註冊用戶
管理員
|
命令 建立帳戶
刪除帳戶
建立訂單
|
聚合 訂單
使用者
|
外部系統 Stripe(網上收款平台)
Google(郵件供應商)
|
Views 結帳
登入
|
錯誤 無法聯絡服務供應商
系統出現問題
|
Users
CreateAccount
AccountCreated
Signup
結果
編輯事件風暴後,可以在建模空間中展示商業流程。不過更重要的是在參與者心裡建立的知識。
參考資料
編輯- ^ Brandolini, Alberto. Introducing Event Storming. 2013-11-18 [2017-04-06]. (原始內容存檔於2018-05-04).
- ^ George, Chiraag. How to Design an Effective Event Storming Session. Creately Blog. 2021-07-19 [2023-07-07]. (原始內容存檔於2024-02-23) (美國英語).
- ^ 3.0 3.1 Vernon, Vaughn. Domain-Driven Design Distilled. Addison-Wesley. 2016. ISBN 978-0134434421.