如何避免 Domain Model 過度發散
建立 Bounded Contexts 可以讓團隊聚焦在「什麼是問題核心」的這件事上面,並將那些沒這麼相關的東西排除在外,而剩下來最核心的、及核心最緊密的那些概念就是整個團隊的 Ubiquitous Language。
Domain Experts v.s. Developers
Domain experts 並不是一個職稱,而是指那些主要聚焦在企業 (focused on the business)、以及充分了解企業運作及 business model 的人
聚焦在 Business Complexity 而不是 Technical Complexity
我們導入 DDD 是因為 business model 的複雜度很高,而我們絕對不想讓 domain model 比原本預期的更複雜;同時,導入 DDD 也是因為 business model 的複雜度比專案的技術複雜度來得高,這也是為什麼開發人員需要和 Domain experts 一同深入了解 business model
不要將 Domain model 侷限在一堆名詞上;相反的,我們應該要將 Core domain 以更具體的情境來表達出 domain model 究竟該做些什麼。這裡的情境 (scenarios) 不是指 use cases 或是 User story,而是 domain model 該如何運作。下面是符合 Scrum Ubiquitous Language 的情境描述:
Allow each backlog item to be committed to a sprint. The backlog item may be committed only if it is already scheduled for release. If it is already committed to a different sprint, it must be uncommitted first. When the commit completes, notify interested parties. - Domain-Driven Design Distilled , p.42