SlideShare ist ein Scribd-Unternehmen logo
1 von 41
參考鏈結
專案成功率
為什麼我們執行一個專案/產品這麼困難?
2
聽過這座塔的故事嗎?
4
辛苦的成果,有時候連自己也看不懂
參考資料
利用其它UML圖協助
團隊多了好幾本文件要讀
1 2 3
事件和動作有什麼不同呢?
行為 事件
10
買早餐
已經買早餐
有什麼區別?
11
Past
• 採用過去式描述
• 事件彼此之間不相依
• 範例:
已購票(Ticket Bought)
12
事件
事件的發生是有強列的順序性
事件
13
事件意味著證據
14
練習-事件&行動
15
使用事件去描述活動流程?
16
事件1 事件2 事件3
由左至右
呈現事件發生順序
17
事件1 事件2 事件3
事件2’
平行事件的處理方式
18
事件1 事件2 事件3
事件2’
添加命令
命令
19
事件1 事件2 事件3
事件2’
命令的發起者是誰?
命令
角色
20
事件 事件
事件事件
事件 事件 事件
事件
豐富你的事件
命令
角色
21
事件
Refund
Request
Received
Refund
Policy
Issue
Refund
Refund
Issued
Notificaton
Sent to
Payee
外部系統所引發的事件
商務流程中,極
有可能會使用
到外部系統
決策流程
人為
促進人為決策
的輸入(Input)
Refund
Request
Received
Refund
Policy
Issue
Refund
Refund
Issued
Notificaton
Sent to
Payee
Organizer
流程有可能是需要人為介入
事件4事件1 事件2 事件3
事件2’
找出機會/風險
24
排序你的機會/風險
This is
where
everything
is stock!
This is
where
everything
is stock!
This is
where
everything
is stock!
This is
where
everything
is stock!
This is
where
everything
is stock!
25
要先找出問題,才能設計
解決方案,如果顛倒了順
序,就會事倍功半。
27
先瞄準再射擊
28
切割成多個問題子領域
核心子領域
(Core Subdomain)
支持子領域
(Supporting Subdomain)
支持子領域
(Supporting Subdomain)
通用子領域
(General Subdomain)
問題域(Problem Domain)
依照價值(Value)將一個
問題領域切割成為多個
子問題領域。
核心子領域是最有價值的。
29
通用子領域
: 採用現成服務
支持子領域
: 採用外包
核心子領域
: 傾團隊之力
30
This is
where
everything
is stock!
This is
where
everything
is stock!
This is
where
everything
is stock!
This is
where
everything
is stock!
This is
where
everything
is stock!
將排序最高的風險/機會
列為核心子領域。
團隊最好能夠得到管理者
的承諾與支持。
挑選核心子領域
設計解決方案
每個問題子領域,都應該會
有解決方案,而這些解決
方案,在DDD中,稱其為:
限界上下文。
限界上下文
限界上下文
限界上下文
限界上下文
限界上下文
在事件風暴中,先找出
聚合,再找出限界上下文。
這就是先求內聚,再看耦合
探索聚合(Aggregate)
把相同功能目標的事件收攏在一起
聚合
事件
事件
事件
事件
命令
角色
事件
事件
事件
事件
命令
角色
34
命令
命令
命令
命令
每一個聚合都是為了相同
的功能目的。
命令與事件都是參考元素。
在事件風暴中,先找出
聚合,再找出限界上下文。
這就是先求內聚,再看耦合
探索限界上下文
把相同功能目標的聚合收攏在一起
限界上下文
(Bounded Context)
事件
事件
事件
事件
命令
事件
事件
事件
事件
命令
產品
事件
事件
事件
事件
命令
事件
事件
事件
事件
命令
將相同功能目的的
聚合放在一起,進而
形成一個限界上下文。
36
限界上下文之間其實並非
完全獨立,它們還是會存在
關聯性(Association)。
探索限界上下文圖
限界上下文圖
(Bounded Context Map)
38
U
U
U
D
D
D
上游的改變會嚴重影響
到下游,藉這張圖瞭解
系統變更所可能引發的
風險。
限界上下文圖模式
(Bounded Context Map Pattern)
模式大概有9種,但是可以
粗略地分成兩種:
• 協作
• 整合
https://1drv.ms/p/s!AvFly4pKEbnHlTKhVY1qfh8z4cAt

Weitere ähnliche Inhalte

Mehr von 國昭 張

DDD架構設計
DDD架構設計DDD架構設計
DDD架構設計國昭 張
 
DDD系統分析
DDD系統分析DDD系統分析
DDD系統分析國昭 張
 
Asp.net core v1.0
Asp.net core v1.0Asp.net core v1.0
Asp.net core v1.0國昭 張
 
Redux+react js
Redux+react jsRedux+react js
Redux+react js國昭 張
 
架構設計-資料存取的選擇
架構設計-資料存取的選擇架構設計-資料存取的選擇
架構設計-資料存取的選擇國昭 張
 
前端自動化工具
前端自動化工具前端自動化工具
前端自動化工具國昭 張
 
例外處理與單元測試
例外處理與單元測試例外處理與單元測試
例外處理與單元測試國昭 張
 
ASP.Net WebAPI經驗分享
ASP.Net WebAPI經驗分享ASP.Net WebAPI經驗分享
ASP.Net WebAPI經驗分享國昭 張
 
ASP.Net MVC Framework
ASP.Net MVC FrameworkASP.Net MVC Framework
ASP.Net MVC Framework國昭 張
 
Team Foundation Server
Team Foundation ServerTeam Foundation Server
Team Foundation Server國昭 張
 
SQL Server效能調校
SQL Server效能調校SQL Server效能調校
SQL Server效能調校國昭 張
 
NoSQL-MongoDB介紹
NoSQL-MongoDB介紹NoSQL-MongoDB介紹
NoSQL-MongoDB介紹國昭 張
 
深入淺出Node.JS
深入淺出Node.JS深入淺出Node.JS
深入淺出Node.JS國昭 張
 

Mehr von 國昭 張 (20)

Vue
VueVue
Vue
 
Docker基礎
Docker基礎Docker基礎
Docker基礎
 
DDD架構設計
DDD架構設計DDD架構設計
DDD架構設計
 
DDD系統分析
DDD系統分析DDD系統分析
DDD系統分析
 
DDD引導
DDD引導DDD引導
DDD引導
 
前端測試
前端測試前端測試
前端測試
 
Asp.net core v1.0
Asp.net core v1.0Asp.net core v1.0
Asp.net core v1.0
 
Redux+react js
Redux+react jsRedux+react js
Redux+react js
 
React js
React jsReact js
React js
 
架構設計-資料存取的選擇
架構設計-資料存取的選擇架構設計-資料存取的選擇
架構設計-資料存取的選擇
 
前端自動化工具
前端自動化工具前端自動化工具
前端自動化工具
 
例外處理與單元測試
例外處理與單元測試例外處理與單元測試
例外處理與單元測試
 
ASP.Net WebAPI經驗分享
ASP.Net WebAPI經驗分享ASP.Net WebAPI經驗分享
ASP.Net WebAPI經驗分享
 
ASP.Net MVC Framework
ASP.Net MVC FrameworkASP.Net MVC Framework
ASP.Net MVC Framework
 
Team Foundation Server
Team Foundation ServerTeam Foundation Server
Team Foundation Server
 
SQL Server效能調校
SQL Server效能調校SQL Server效能調校
SQL Server效能調校
 
NoSQL-MongoDB介紹
NoSQL-MongoDB介紹NoSQL-MongoDB介紹
NoSQL-MongoDB介紹
 
深入淺出Node.JS
深入淺出Node.JS深入淺出Node.JS
深入淺出Node.JS
 
Linq初階
Linq初階Linq初階
Linq初階
 
Linq實戰
Linq實戰Linq實戰
Linq實戰
 

20190126 ddd-meetup1