內聚與耦合
內聚(cohesion)是乙個模組內部各成分之間相關聯程度的度量。耦合(coupling)是模組之間依賴程度的度量。內聚和耦合是密切相關的,與其它模組存在強耦合的模組通常意味著弱內聚,而強內聚的模組通常意味著與其它模組之間存在弱耦合。模組設計追求強內聚,弱耦合。
一、內聚強度
內聚按強度從低到高有以下幾種型別:
(1) 偶然內聚。如果乙個模組的各成分之間毫無關係,則稱為偶然內聚。
(2) 邏輯內聚。幾個邏輯上相關的功能被放在同一模組中,則稱為邏輯內聚。如乙個模組讀取各種不同型別外設的輸入。儘管邏輯內聚比偶然內聚合理一些,但邏輯內聚的模組各成分在功能上並無關係,即使區域性功能的修改有時也會影響全域性,因此這類模組的修改也比較困難。
(3) 時間內聚。如果乙個模組完成的功能必須在同一時間內執行(如系統初始化),但這些功能只是因為時間因素關聯在一起,則稱為時間內聚。
(4) 過程內聚。如果乙個模組內部的處理成分是相關的,而且這些處理必須以特定的次序執行,則稱為過程內聚。
(5) 通訊內聚。如果乙個模組的所有成分都操作同一資料集或生成同一資料集,則稱為通訊內聚。
(6) 順序內聚。如果乙個模組的各個成分和同乙個功能密切相關,而且乙個成分的輸出作為另乙個成分的輸入,則稱為順序內聚。
(7) 功能內聚。模組的所有成分對於完成單一的功能都是必須的,則稱為功能內聚。
二、耦合強度
耦合的強度依賴於以下幾個因素:(1)乙個模組對另乙個模組的呼叫;(2)乙個模組向另乙個模組傳遞的資料量;(3)乙個模組施加到另乙個模組的控制的多少;(4)模組之間介面的複雜程度。
耦合按從強到弱的順序可分為以下幾種型別:
(1)內容耦合。當乙個模組直接修改或操作另乙個模組的資料,或者直接轉入另乙個模組時,就發生了內容耦合。此時,被修改的模組完全依賴於修改它的模組。
(2)公共耦合。兩個以上的模組共同引用乙個全域性資料項就稱為公共耦合。
(3)控制耦合。乙個模組在介面上傳遞乙個訊號(如開關值、標誌量等)控制另乙個模組,接收訊號的模組的動作根據訊號值進行調整,稱為控制耦合。
(4)標記耦合。模組間通過引數傳遞複雜的內部資料結構,稱為標記耦合。此資料結構的變化將使相關的模組發生變化。
(5)資料耦合。模組間通過引數傳遞基本型別的資料,稱為資料耦合。
(6)非直接耦合。模組間沒有資訊傳遞時,屬於非直接耦合。
如果模組間必須存在耦合,就盡量使用資料耦合,少用控制耦合,限制公共耦合的範圍,堅決避免使用內容耦合。
內聚與耦合
內聚與耦合 內聚 cohesion 是乙個模組內部各成分之間相關聯程度的度量。耦合 coupling 是模組之間依賴程度的度量。內聚和耦合是密切相關的,與其它模組存在強耦合的模組通常意味著弱內聚,而強內聚的模組通常意味著與其它模組之間存在弱耦合。模組設計追求強內聚,弱耦合。一 內聚強度 內聚按強度從...
內聚與耦合
簡單地說,軟體工程中物件之間的耦合度就是物件之間的依賴性。指導使用和維護物件的主要問題是物件之間的多重依賴性。物件之間的耦合越高,維護成本越高。因此物件的設計應使類和構件之間的耦合最小。有軟硬體之間的耦合,還有軟體各模組之間的耦合。耦合性是程式結構中各個模組之間相互關聯的度量。它取決於各個模組之間的...
內聚和耦合
內聚 1.偶然內聚 模組的各成分之間沒有關聯,只是把分散的功能合併在一起。例 a模組中有三條語句 一條賦值,一條求和,一條傳參 表面上看不出任何聯絡,但是b c模組中都用到了這三條語句,於是將這三條語句合併成了模組a。模組a中就是偶然內聚。2.邏輯內聚 邏輯上相關的功能被放在同一模組中。例 a模組實...