Thursday, March 25, 2021

[Domain-Driven Design] 用 Ubiquitous Language 溝通

現代軟體的複雜特性,沒有一個人或是團隊可以單獨掌握所有的知識細節,甚至連領域專家的理解都可能有所缺漏。

為了要盡可能獲取知識的全貌,我們會將溝通所得到的知識提煉出來達成共識後,建立 Ubiquitous Language (通用語言),減少溝通的成本。


(開發與商業團隊交流後,發現其實系統需要的是訂單、商品與會員管理三個功能,並且規定大家要用 Ubiquitous Language 互相溝通)

整個過程可以參考這張圖:


至於該怎麼與領域專家做到有效溝通並建立 Ubiquitous Language ,會在之後的章節介紹 Event Storming 事件風暴。

兩大設計模式類別

與領域專家討論出 Ubiquitous Language 後,就可以開始套用 DDD 的各種設計模式,而這些模式大致上可以分為兩類:Strategic Design (戰略設計) 與 Tactical Design (戰術設計)。

  • Strategic Design 戰略設計:利用與領域專家溝通的結果,拆分問題成數個子領域後,定義解決方案(系統)的邊界與關係。
  • Tactical Design 戰術設計:又稱 Model-Driven Design ,在 Strategic Design 的一個個解決方案邊界內,用一系列設計模式寫程式實踐業務邏輯。

簡單來說, Strategic Design 打嘴砲設計大架構與方向, Tactical Design 捲起袖口開始寫程式。

以上兩個模式就是之後本系列的主軸

No comments:

Post a Comment

n8n index

 【n8n免費本地端部署】Windows版|程式安裝x指令大補帖  【一鍵安裝 n8n】圖文教學,獲得無限額度自動化工具&限時免費升級企業版功能