耦合 與 內聚

在軟件設計的過程中 軟件一般都有模塊的形式出現。一方面 按照開發人員條件將軟件分成你個模塊,另一方面 按照軟件的功能將軟件分成相應的的模塊。者往往是軟件設計的 精要所在,在一般的軟件設計過程和軟件的長期應用、日後維護過程中都傾注於後者。

一般較優秀的軟件設計,應儘量做到高內聚,低耦合,即減弱模塊之間的耦合性和提高模塊內的內聚性,有利於提高模塊的獨立性。模塊獨立性指每個模塊只完成系統要求的獨立子功能,並且與其他模塊的聯繫最少且接口簡單,兩個定性的度量標準――耦合性和內聚性。

模塊的獨立程度是評價設計好壞的重要度量標準。衡量軟件的模塊獨立性使用耦合性和內聚性兩個定性的度量標準。

內聚性是一個模塊內部各個元素間彼此結合的緊密程度的度量。內聚是從功能角度來度量模塊內的聯繫。
    
內聚有如下種類,他們之間的內聚性由弱到強排列爲偶然內聚、邏輯內聚、時間內聚、過程內聚、通信內聚、順序內聚、功能內聚。

耦合性是模塊間互相連接的緊密程度的度量。耦合可以分爲下列幾種,他們之間的耦合度由高到低排列爲內容耦合、公共耦合、外部耦合、控制耦合、標記耦合、數據耦合、非直接耦合。

1)     內容耦合。當一個模塊直接修改或操作另一個模塊的數據,或者直接轉入另一個模塊時,就發生了內容耦合。此時,被修改的模塊完全依賴於修改它的模塊。這是最高程度的耦合,也是最差的耦合。

2)     公共耦合。兩個以上的模塊共同引用一個全局數據項就稱爲公共耦合。

3)     控制耦合。一個模塊在界面上傳遞一個信號(如開關值、標誌量等)控制另一個模塊,接收信號的模塊的動作根據信號值進行調整,稱爲控制耦合。

4)     標記耦合。模塊間通過參數傳遞複雜的內部數據結構,稱爲標記耦合。此數據結構的變化將使相關的模塊發生變化。

5)     數據耦合。模塊間通過參數傳遞基本類型的數據,稱爲數據耦合。

6)     非直接耦合。模塊間沒有信息傳遞時,屬於非直接耦合。

如果模塊間必須存在耦合,就儘量使用數據耦合,少用控制耦合,限制公共耦合的範圍,堅決避免使用內容耦合。

內聚(Cohesion)是一個模塊內部各成分之間相關聯程度的度量,內聚按強度從低到高有以下幾種類型:

1)     偶然內聚。如果一個模塊的各成分之間毫無關係,則稱爲偶然內聚。

2)     邏輯內聚。幾個邏輯上相關的功能被放在同一模塊中,則稱爲邏輯內聚。如一個模塊讀取各種不同類型外設的輸入。儘管邏輯內聚比偶然內聚合理一些,但邏輯內聚的模塊各成分在功能上並無關係,即使局部功能的修改有時也會影響全局,因此這類模塊的修改也比較困難。

3)     時間內聚。如果一個模塊完成的功能必須在同一時間內執行(如系統初始化),但這些功能只是因爲時間因素關聯在一起,則稱爲時間內聚。

4)     過程內聚。如果一個模塊內部的處理成分是相關的,而且這些處理必須以特定的次序執行,則稱爲過程內聚。

5)     通信內聚。如果一個模塊的所有成分都操作同一數據集或生成同一數據集,則稱爲通信內聚。

6)     順序內聚。如果一個模塊的各個成分和同一個功能密切相關,而且一個成分的輸出作爲另一個成分的輸入,則稱爲順序內聚。

7)     功能內聚。模塊的所有成分對於完成單一的功能都是必須的,則稱爲功能內聚。

 

發佈了24 篇原創文章 · 獲贊 3 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章