目的
|
說明設計模型組織中的新模型元素。
在必要之時,重新平衡設計模型的結構。
|
在新元素加入設計模型之後,通常需要重新套裝設計模型的元素。重新套裝可以實現許多目標:它會在設計模型中,降低套件之間的耦合性,增進套件的內聚力。最終目標是可以區分個人或小組,使不同套件(和子系統)的設計和開發可以彼此獨立進行。完全獨立大概不可能,但使套件之間的耦合性鬆散,往往會使大型或複雜系統的開發更容易。
「平面」模型結構(所有套件和子系統都在系統的相同概念層次)適合小系統;較大的系統需要稱為「分層」的其他結構工具(請參閱工作成果準則:分層)。分層規則會定義特定套件類型之間的可用關係限制。這些規則會辨認出不應存在的特定相依性:應用程式功能不應直接相依於特定作業系統或視窗系統服務,應該有一個中間層包含邏輯作業系統以及從低階實作服務的變更說明應用程式功能的視窗服務。分層提供一種方式來降低變更的影響:強制採用某些規則來限制套件和子系統之間的相依性,降低套件和子系統之間的耦合性程度,系統會變得更強韌。它能容忍變更。
當系統中加入新的模型元素時,現有套件可能會長得太大,以致於單一小組無法管理它:這時必須將套件分成幾個套件,它們的套件內聚性強,但套件之間的耦合性鬆散。這可能很困難,有些元素可能很難放在特定套件內,因為兩個套件的元素都會用到它們。可能的解決方案有兩個:將元素分割成多個物件,每個套件中各一個(當元素有多重「特質」或多組離散責任時,適合這個方式),或將元素移到較低層的套件中,讓所有較高層的元素平等依賴它。
當系統越來越複雜時,會需要更多層次,才能夠保持可維護、可理解的結構。不過,即使在最大的系統中,超出 7-10 層也很不尋常,因為越多層,會越複雜,越難理解。
以下顯示分層的範例,其中包括中介軟體和系統軟體層:
Java/Web 型應用程式的套件分層範例。附註:對於 TCP/IP 套件的相依性通常不會明確建模,因為 TCP/IP 服務的使用封裝在 Java VM、java.rmi 和 Web 瀏覽器內。這裡描述它們只是為了說明。
請將子系統和層次的責任指派給個人或小組。每個套件或子系統都應該由一個人(小範圍)或小組(大範圍)來負責。
|