軟體工程中的各種耦合型別
耦合性(Coupling),也叫耦合度,是對模組間關聯程度的度量。耦合的強弱取決與模組間介面的複雜性、呼叫模組的方式以及通過介面傳送資料的多少。模組間的耦合度是指模組之間的依賴關係,包括控制關係、呼叫關係、資料傳遞關係。模組間聯絡越多,其耦合性越強,同時表明其獨立性越差。軟體設計中通常用耦合度和內聚度作為衡量模組獨立程度的標準。劃分模組的一個準則就是高內聚低耦合。
一般模組之間可能的連線方式有七種,構成耦合性的七種型別。它們之間的關係為(耦合性性由強到弱):
內容耦合(Content Coupling)
如果發生下列情形,兩個模組之間就發生了內容耦合。- 一個模組直接訪問另一個模組的內部資料;
- 一個模組不通過正常入口轉到另一模組內部;
- 兩個模組有一部分程式程式碼重疊(只可能出現在組合語言中);
- 一個模組有多個入口。
公共耦合(Common Coupling)
若一組模組都訪問同一個公共資料環境,則它們之間的耦合就稱為公共耦合。公共的資料環境可以是全域性資料結構、共享的通訊區、記憶體的公共覆蓋區等。外部耦合(External Coupling)
一組模組都訪問同一全域性簡單變數而不是同一全域性資料結構,而且不是通過引數表傳遞該全域性變數的資訊,則稱之為外部耦合。控制耦合(Control Coupling)
如果一個模組通過傳送開關、標誌、名字等控制資訊,明顯地控制選擇另一模組的功能,就是控制耦合。印記耦合(Stamp Coupling)
如果一組模組通過引數表傳遞記錄資訊,就是標記耦合。它是某一資料結構的子結構,而不是簡單變數。資料耦合(Data Coupling)
如果一個模組訪問另一個模組時,彼此之間是通過資料引數(不是控制引數、公共資料結構或外部變數)來交換輸入、輸出資訊的,則稱這種耦合為資料耦合。非直接耦合(Nondirect Coupling)
如果兩個模組之間沒有直接關係,它們之間的聯絡完全是通過主模組的控制和呼叫來實現的,這就是非直接耦合。這種耦合的模組獨立性最強。