耦合和內聚總是傻傻的分不清楚,這次要徹底解決這個問題
耦合(耦合性從低到高)
解釋無直接耦合
兩個模組無直接關係
資料耦合
兩個模組有呼叫關係
標記耦合
傳遞的資料結構
控制耦合
傳遞的控制變數
外部耦合
一組模組都訪問同一全域性簡單變數
公共耦合
兩個程式共享乙個檔案
內容耦合
內容耦合已經基本杜絕,乙個模組直接使用另外乙個模組的資料
兩個模組無直接關係
兩個模組有呼叫關係,a模組呼叫b模組,傳遞簡單的資料值
void main()
int count(int n)
分析: main呼叫了fa的方法,中間傳遞簡單的數值(整數)
傳遞的資料結構,比如陣列、佇列等。
int main()
int count(a[10])
分析:兩個函式之間傳遞的a[10]為陣列(資料結構)
傳遞的控制變數
void main()
fa(q)
return q
}void count(int n)
else
}
分析:變數q在函式count中為控制變數,可以選擇不同的功能
模組間通過軟體之外的環境連線,或者一組模組都訪問同一全域性簡單變數。
int a b
void main()
void count1()
void count2()
分析:main count1 count2 都存在外部耦合
兩個程式共享乙個檔案
內容耦合已經基本杜絕,乙個模組直接使用另外乙個模組的資料
內聚 (內聚性從高到低)
解釋功能內聚
最強內聚,模組內的所有元素共同完成同乙個功能
順序內聚
乙個模組內的個各處理元素都密切相關且必須按順序執行
通訊內聚
模組內的所有處理元素都在同乙個資料結構上操作
過程內聚
乙個模組完成多個任務
時間內聚
需要同時執行的動作組合在一起形成的模組
邏輯內聚
模組內執行若干邏輯上相似的功能
偶然內聚
乙個模組內的各處理元素無任何聯絡
int count(int n)
else
return f;
}
分析:整個模組都是為了實現求n,為功能內聚
前一功能元素的輸出就是下一功能元素的輸入
int count(int n)
else
return f;
}
如果模組中所有元素都使用同乙個輸入資料和(或)產生同乙個輸出資料,則稱為通訊內聚
假設有乙個子程式,它產生讀取雇員的名字,然後是位址,最後是它的**號碼。這種順序之所以重要,僅僅是因為它符合使用者的要求,使用者希望按這種順序進行螢幕輸入。另外乙個子程式將讀取關於雇員的其它資訊。這個子程式是過程內聚性,因為是由乙個特定順序而不是其它任何原因,把這些操作組合在一起的。
程式設計開始時,程式設計師把對所有全域性變數的初始化操作放在模組a中。模組a中就是時間內聚。
int a;
int b;
int c;
void main
如果乙個模組完成的任務在邏輯上屬於相同或相似的一類(例如,乙個模組產生各種型別的全部輸出),稱為邏輯模組;
沒有任何聯絡,只是被放到了乙個模組裡
void main()
int count(int n)
如果乙個模組呼叫下層模組時傳遞乙個資料結構,則這種耦合屬於( )。
a 簡單耦合 b直接耦合
c 標記耦合 d控制耦合
經此一役,耦合和內聚以盡收囊中。
軟考之軟體工程 文件 內聚耦合
1.軟體開發生命週期模型 瀑布模型 一種理想化的開發模型,瀑布模型要求有明確的需求分析,而要達到這一點在現實開發中幾乎不可能。原型法 原型法的最大特點就是它採用了一種動態定義需求的方法。這樣,又是也就體現出來了,即不需要明確的需求 螺旋模型 結合了瀑布模型和演化模型的優點,最主要的特點就是在於加入了...
內聚與耦合
內聚與耦合 內聚 cohesion 是乙個模組內部各成分之間相關聯程度的度量。耦合 coupling 是模組之間依賴程度的度量。內聚和耦合是密切相關的,與其它模組存在強耦合的模組通常意味著弱內聚,而強內聚的模組通常意味著與其它模組之間存在弱耦合。模組設計追求強內聚,弱耦合。一 內聚強度 內聚按強度從...
內聚與耦合
內聚與耦合 內聚 cohesion 是乙個模組內部各成分之間相關聯程度的度量。耦合 coupling 是模組之間依賴程度的度量。內聚和耦合是密切相關的,與其它模組存在強耦合的模組通常意味著弱內聚,而強內聚的模組通常意味著與其它模組之間存在弱耦合。模組設計追求強內聚,弱耦合。一 內聚強度 內聚按強度從...