我們的團隊對於領域驅動設計來說相當新穎。我們有一個剛剛從設計階段轉入編碼階段的新項目。在設計階段,一些團隊成員在Visio中創建了UML設計模型,而其他人則剛開始編寫代碼。另外,隨着版本發佈的壓力,我們的許多型號很快就會過時。對象模型在領域驅動設計中的重要性
讓對象模型保持最新是否很重要?讓所有/大部分子系統擁有它們很重要嗎?
我們的團隊對於領域驅動設計來說相當新穎。我們有一個剛剛從設計階段轉入編碼階段的新項目。在設計階段,一些團隊成員在Visio中創建了UML設計模型,而其他人則剛開始編寫代碼。另外,隨着版本發佈的壓力,我們的許多型號很快就會過時。對象模型在領域驅動設計中的重要性
讓對象模型保持最新是否很重要?讓所有/大部分子系統擁有它們很重要嗎?
我想答案是「它取決於」,不是嗎?
如果項目很小,變化速度很快等,模型的投資回報率可能很糟糕,最終所有重要的是工作代碼。另一方面,對於具有高度儀式和不斷變化的開發團隊等的多年期多階段項目,您將從某種文檔中獲益良多。對象模型可以是一個這樣的文檔。
沒有銀彈畢竟,所以,這取決於你的項目位於規模的結束,你可能會發現模型是非常有價值的,或只是維護成本高。
您對代碼(和模型)的最佳文檔是代碼和數據庫模式。在代碼之外開發模型對理解問題有一定價值,但正如您最終發現的那樣,這些模型會成爲一種負擔。如果你打算使用它們,你需要花時間保持它們的最新狀態。敏捷的哲學會說,只有投入儘可能多的時間來維護這些,因爲您從中獲得了價值。一般來說,這並不算什麼,因爲代碼無論如何都是最終的權威。如果您有監管要求,可能會有不同的情況,但是如果您需要文檔來描述它,通常會在模型翻譯成代碼並根據需要直接從代碼/模式重新生成模型時丟棄該模型。
擁有任何類型的文檔的目標是幫助開發,而不是阻止它。開發人員知道模型是如何工作的,以及代碼和記錄內容之間的主要區別。
但是,您應該意識到,您將沒有任何材料(代碼本身除外)向團隊中的新員工展示說明,並且需要一些時間來教授新員工。
所以它決定什麼是最有效的問題。如果保持模型過時使團隊更快,請勿更新模型。如果更新模型會稍微改進開發,那麼您應該這樣做(不管多麼無聊)。
User Story Level以下的任何文檔與實現細節直接相關,因此與volatile事實(Why vs. How)有直接關係。它(如何,模型)因此不應該手動維護,而是爲了開發人員通信改進而在需要時生成。
文檔在任何時候都保持良好狀態。如果你不能保證,去的源代碼文件(並保持它作爲您更改代碼),因爲你需要從你的代碼生成儘可能多的UML,當你需要它。
然後再次丟棄生成的文檔。它只是幫助您更好地與開發人員溝通。它沒有更多的價值。
今天剛剛開始:一位開發人員用一張漂亮的Visio圖表向我走來,打印在紙上,看起來非常漂亮。我打開IDE並向他展示源代碼與他手中的文檔略有不同。花了一些時間讓我清楚,代碼勝過文檔。總是。
我不知道可以從對象中自動生成智能且易於理解的UML模型的軟件......這真的有可能嗎? – alchemical 2010-01-29 19:09:37
你問:「保持文檔與代碼同步(當執行DDD時)是否很重要?」 – raoulsson 2010-01-29 18:33:06
是的,這是問題的一部分,如果模型首先要做的比較重要。 – alchemical 2010-01-29 19:07:26
在Visual Studio中,您可以將模型類拖放到類圖上並使其自動更新。保持UML圖保持最新狀態,仍然有助於從計算機遠離設計審查。 – 2010-02-12 18:03:46