數(shù)據(jù)耦合。如一個功能模塊訪問另一個功能模塊,被訪問的功能模塊的輸入和輸出都是數(shù)據(jù)項參數(shù),則這兩個功能模塊為數(shù)據(jù)耦合。
☆非直接耦合。若兩個功能模塊沒有直接關系,他們之間的聯(lián)系完全是通過主程序的控制和調用來實現(xiàn)的,便稱這兩個功能模塊為非直接耦合,獨立性強。
上面只是對耦合機制進行了一個分類。原則上講,功能模塊化設計總是希望功能模塊之間的耦合表現(xiàn)為非直接耦合方式。但是,由于問題所固有的復雜性和空間方面的考慮,有時則要根據(jù)實際情況,權衡,選用其它類型的耦合。 [1]
內聚
內聚是從功能角度來度量功能模塊內的聯(lián)系,一個好的內聚功能模塊應當恰好做一件事。它描述的是功能模塊內的功能聯(lián)系。
內聚有如下的種類,其內聚度由弱到強排列:
☆偶然內聚。一功能模塊中的代碼無法定義其不同功能的調用。但它使該功能模塊能執(zhí)行不同的功能,這種功能模塊稱為巧合強度功能模塊。
☆邏輯內聚。這種功能模塊把幾種相關的功能組合在一起,每次被調用時,有傳送給功能模塊參數(shù)來確定該功能模塊應完成那一種功能。
☆時間內聚。這種功能模塊順序完成一類相關功能,比如初始化功能模塊,它順序為變量置初值。
☆過程內聚。如果一個功能模塊內的處理元素是相關的,而且必須以特定次序執(zhí)行則稱為過程內聚。
☆通信內聚。這種功能模塊除了具有過程內聚的特點外,還有另外一種關系,則它的所有功能都通過使用公共數(shù)據(jù)而發(fā)生關系。
☆順序內聚。如果一個功能模塊內的處理元素和同一個功能密切相關,而且這些處理必須順序執(zhí)行,通常一個處理元素的輸出數(shù)據(jù)作為下一個處理元素的輸入數(shù)據(jù),則稱為順序內聚。