獨立的模塊比較容易測試和維護。 模塊的獨立程度可以由兩個定性標準度量,這兩個標準分別稱為內聚和耦合。
耦合
耦合是對一個軟件結構內不同模塊之間互連程度的度量。耦合強弱取決于模塊間接口的復雜程度,進入或訪問一個模塊的點,以及通過接口的數據。
模塊耦合分為數據耦合、控制耦合、特征耦合、公共環境耦合、內容耦合。
數據耦合
兩個模塊彼此間通過參數交換信息,而且交換的信息僅僅是數據,那么這種耦合稱為數據耦合。數據耦合是低耦合。系統中至少必須存在這種耦合。
控制耦合
傳遞的信息中有控制信息(盡管有時這種控制信息以數據的形式出現),則這種耦合稱為控制耦合。控制耦合是中等程度的耦合。
特征耦合
當把整個數據結構作為參數傳遞,而被調用的模塊只需要使用其中一部分數據元素時,就出現了特征耦合。
公共環境耦合
當兩個或多個模塊通過一個公共數據環境相互作用時,它們之間的耦合稱為公共環境耦合。
公共環境可以是全程變量、共享的通信區、內存的公共覆蓋區、任何存儲介質上的文件、物理設備等。
公共環境耦合的復雜程度隨耦合的模塊個數而變化,當耦合的模塊個數增加時復雜程度顯著增加。
只有兩個模塊有公共環境,耦合有下面兩種可能。
(1) 一個模塊往公共環境送數據,另一個模塊從公共環境取數據。這是數據耦合的一種形式,是比較松散的耦合。
(2) 兩個模塊都既往公共環境送數據又從里面取數據,這種耦合比較緊密,介于數據耦合和控制耦合之間。
內容耦合
最高程度的耦合是內容耦合。如果出現下列情況之一,兩個模塊間就發生了內容耦合。
一個模塊訪問另一個模塊的內部數據。
?一個模塊不通過正常入口而轉到另一個模塊的內部。
?兩個模塊有一部分程序代碼重疊(只可能出現在匯編程序中)。
?一個模塊有多個入口(這意味著一個模塊有幾種功能)。
應該堅決避免使用內容耦合。
總之,耦合是影響軟件復雜程度的一個重要因素。
應該采取下述設計原則:
盡量使用數據耦合,少用控制耦合和特征耦合,限制公共環境耦合的范圍,完全不用內容耦合。