我是2012年開始接觸DDD的,后續研讀過幾遍《領域驅動設計:軟件核心復雜性應對之道》,也用DDD做過項目??偟母惺苁荄DD的一些概念比較晦澀難懂,很難掌握,因此想寫個系列短文,希望能幫助大家更輕松地理解DDD。文章很多都是我個人體會和理解,難免有錯誤,希望大家能及時指正,共同探討提高。前面短文鏈接:
輕松學DDD之一:模型驅動設計
本文是系列短文第二篇,介紹如何高效消化知識。
在講如何消化知識前,我們要明確下建模的知識來源有哪些。首先我們通過下圖來考察模型、領域、軟件、現實世界、計算機系統等幾個概念的關聯。
從上面的認知我們可以知道模型就是在用戶目標和軟件實現技術的約束下對領域知識的精確化、結構化和抽象。
由于建模依賴于在用戶目標和軟件實現技術約束下的領域知識梳理,因此建模就要求領域專家、建模專家和軟件開發之間通過高效地溝通協作來有效地消化領域知識。下面我們從溝通媒介、溝通形式和目標三個方面來展開說明如何做到這一點。
消化知識的溝通媒介可以是多種多樣,下面是幾種主要的溝通媒介:
有了溝通手段,我們還需要溝通形式,下面是一些主要的溝通形式:
知識消化的最終目標無疑是構建良好的模型,但是構建良好的模型需要通過統一語言和精煉模型來支撐。
統一語言是指團隊所有成員用統一的術語來指代領域概念和知識,它有如下幾方面:
我們知道簡單合理的軟件設計是軟件在長期的開發過程中能夠保持低成本修改的關鍵。在DDD中,領域模型的復雜度決定了軟件設計的復雜度,因此模型精煉就是我們消化領域知識的最重要的目標。也就是說我們消化領域知識的目標不是為了理解全部的領域知識;而是為了明確對于實現用戶需求而言,哪些領域知識是重要的,哪些是不重要的。模型精煉是一個持續的過程。隨著我們對于領域理解的不斷深入,模型會持續精煉。隨著需求的不斷變化,模型關注的最重要的概念也會不斷添加和刪除。
消化知識是如此之難,因此保證這些知識的平穩傳承就很重要。盡管這些知識會沉淀在我們的文檔、UML和代碼等各種物質載體之中,但是它們最重要的載體還是團隊中深刻理解了這些知識的核心骨干,因此在軟件開發過程中保證這些核心骨干的相對穩定才能保證知識的有效傳承,才能最終保證DDD的成功。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。