我剛剛完成了一個客戶的工作,該客戶已經燒燬了數百萬個項目,爲他們的業務提供了「一個真正的域模型」。這是該項目的唯一可交付成果。一個真正的領域模型 - 一個謬誤?
你對此有何看法?真理的單一版本是否現實?
我剛剛完成了一個客戶的工作,該客戶已經燒燬了數百萬個項目,爲他們的業務提供了「一個真正的域模型」。這是該項目的唯一可交付成果。一個真正的領域模型 - 一個謬誤?
你對此有何看法?真理的單一版本是否現實?
這裏的關鍵詞是「模型」。任何領域模型都是系統的模型中關鍵實體和行爲的抽象。
作爲一個例子,交通管理系統可能有一個不可分割的實體Car。駕駛模擬將具有更多的結構:組件,重量,顏色,佔有者等等。
這裏的重點在於Car沒有全局定義。您只關心您的特定應用程序(甚至是應用程序的一部分)的狀態和行爲。
不,這是不現實的。是的,這是一個謬誤;-)
在我看來,這是衆所周知的可重用性和可維護性之間的權衡。如果可維護性有一個最重要的方面,我會說它是:最小化依賴關係。無論設計多麼巧妙,整個企業的「單一領域模型」都會產生很多依賴關係。
我會去更好的可維護性。
嗯,領域模型。建模是一種抽象技術,我們在其中創建真實對象的表示形式,它將抽象(省略)不必要的細節(因此通常我們必須事先指定重要的方面)。域是一個特定的業務領域。問題是,即使在一個組織和不同的觀點中,對領域可能會有不同的看法,所以很難定義重要的方面,因此很難定義模型。更糟糕的是,這個領域和這些觀點隨時間而改變,因此模型可能會隨時間而改變 - 當我們談論業務敏捷性時,這一點很重要。我個人認爲,這些領域模型,特別是當他們需要用於特定目的時,都非常流暢。根據需要爲特定目的捕捉當前狀態和/域的視圖是更好的。
有一件事情沒有幫助,就是你沒有指定建模語言。
您可能指的是數據模型:關係型,ER,UML類或類似的東西。可能不是。 在任何情況下,我們都希望所使用的語言足夠清晰,以便至少就模型中應該包含哪些信息以及應該如何表示這些信息達成共識。繪製具有各種形狀和裝飾的盒子和線條沒有明確的含義不會給你很好的模型。
這就是說我的投票是針對markus的回答:你所包含的信息越多,你拖得越多。此外,您需要哪些信息以及如何最好地對其進行建模取決於您需要哪些信息,如何輕鬆可靠地獲取和存儲信息,可能基於訪問控制考慮(每個人都可以看到所有內容?)以及其他許多考慮因素。在不知道這些要求以及將來如何改變的情況下,沒有一個好的模型,更不用說完美的模型。除了固有的質量考慮因素 - 例如信息的多餘表示通常是一個糟糕的主意,除非你有一個特殊的要求使其具有吸引力。
這並不意味着建模或重新考慮現有模型是浪費時間:相反,一旦您嘗試設計模型並考慮其影響,您通常只會意識到現有需求或設計限制。爭取一致的代表性,使一切適合一切可能的單一通用模型是很好的。但這當然不是建模的目標。
也許企業需要長時間思考他們有什麼信息,他們需要什麼,誰維護它,如何以及如何改進。在這種情況下,我想設定一個大的,一致的和完整的通用信息模型的目標可能是實現這一目標的一個好方法。但是這個模型可能不會是主要結果。
由於這是一個討論點,這應該是社區Wiki,恕我直言 – 2010-04-01 11:34:14