現代軟體的複雜特性,沒有一個人或是團隊可以單獨掌握所有的知識細節,甚至連領域專家的理解都可能有所缺漏。
為了要盡可能獲取知識的全貌,我們會將溝通所得到的知識提煉出來達成共識後,建立 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