耦合性

耦合性

耦合性(Coupling),也叫耦合度,是對模組間關聯程度的度量。耦合的強弱取決於模組間接口的複雜性、調用模組的方式以及通過界面傳送數據的多少。模組間的耦合度是指模組之間的依賴關係,包括控制關係、調用關係、數據傳遞關係。模組間聯繫越多,其耦合性越強,同時表明其獨立性越差( 降低耦合性,可以提高其獨立性)。軟體設計中通常用耦合度和內聚度作為衡量模組獨立程度的標準。劃分模組的一個準則就是高內聚低耦合。

基本信息

耦合性(或稱“耦合度”)

英文 : coupling

耦合性也叫塊間聯繫。指軟體系統結構中各模組間相互聯繫緊密程度的一種度量。模組之間聯繫越緊密,其耦合性就越強,模組之間越獨立則越差,模組間耦合的高低取決於模組間接口的複雜性,調用的方式以及傳遞的信息。

形象的說,就是要將代碼寫的和電腦一樣,主類就是電腦的主機箱,當程式需要實現什麼功能的時候只需要在其他的類引入接口,就像電腦上的usb接口。

構成

簡介

一般模組之間可能的連線方式有七種,構成耦合性的七種類型。它們之間的關係為(獨立性由強到弱)

非直接耦合(Nondirect Coupling)

如果兩個模組之間沒有直接關係,它們之間的聯繫完全是通過主模組的控制和調用來實現的,這就是非直接耦合。這種耦合的模組獨立性最強。

數據耦合(Data Coupling)

如果一個模組訪問另一個模組時,彼此之間是通過數據參數(不是控制參數、公共數據結構或外部變數)來交換輸入、輸出信息的,則稱這種耦合為數據耦合。由於限制了只通過參數表傳遞數據,按數據耦合開發的程式界面簡單、安全可靠。因此,數據耦合是鬆散的耦合,模組之間的獨立性比較強。在軟體程式結構中至少必須有這類耦合。

印記耦合(Stamp Coupling)

如果一組模組通過參數表傳遞記錄信息,就是標記耦合。事實上,這組模組共享了這個記錄,它是某一數據結構的子結構,而不是簡單變數。這要求這些模組都必須清楚該記錄的結構,並按結構要求對此記錄進行操作。在設計中應儘量避免這種耦合,它使在數據結構上的操作複雜化了。如果採取“信息隱蔽”的方法,把在數據結構上的操作全部集中。

控制耦合(Control Coupling)

如果一個模組通過傳送開關、標誌、名字等控制信息,明顯地控制選擇另一模組的功能,就是控制耦合。這種耦合的實質是在單一接口上選擇多功能模組中的某項功能。因此,對所控制模組的任何修改,都會影響控制模組。另外,控制耦合也意味著控制模組必須知道所控制模組內部的一些邏輯關係,這些都會降低模組的獨立性。

外部耦合(External Coupling)

一組模組都訪問同一全局簡單變數而不是同一全局數據結構,而且不是通過參數表傳遞該全局變數的信息,則稱之為外部耦合。例如C語言程式中各個模組都訪問被說明為extern類型的外部變數。外部耦合引起的問題類似於公共耦合,區別在於在外部耦合中不存在依賴於一個數據結構內部各項的物理安排。

公共耦合(Common Coupling)

若一組模組都訪問同一個公共數據環境,則它們之間的耦合就稱為公共耦合。公共的數據環境可以是全局數據結構、共享的通信區、記憶體的公共覆蓋區等。 這種耦合會引起下列問題:

所有公共耦合模組都與某一個公共數據環境內部各項的物理安排有關,若修改某個數據的大小,將會影響到所有的模組。

無法控制各個模組對公共數據的存取,嚴重影響軟體模組的可靠性和適應性。

公共數據名的使用,明顯降低了程式的可讀性。

公共耦合的複雜程度隨耦合模組的個數增加而顯著增加。若只是兩個模組之間有公共數據環境,則公共耦合有兩種情況。

若一個模組只是往公共數據環境裡傳送數據,而另一個模組只是從公共數據環境中取數據,則這種公共耦合叫做鬆散公共耦合。若兩個模組都從公共數據環境中取數據,又都向公共數據環境裡送數據,則這種公共耦合叫做緊密公共耦合。只有在模組之間共享的數據很多,且通過參數表傳遞不方便時,才使用公共耦合。否則,還是使用模組獨立性比較高的數據耦合好些。

內容耦合(Content Coupling)

如果發生下列情形,兩個模組之間就發生了內容耦合。

一個模組直接訪問另一個模組的內部數據;

一個模組不通過正常入口轉到另一模組內部;

兩個模組有一部分程式代碼重疊(只可能出現在彙編語言中);

一個模組有多個入口。

在內容耦合的情形,所訪問模組的任何變更,或者用不同的編譯器對它再編譯,

都會造成程式出錯。好在大多數高級程式設計語言已經設計成不允許出現內容

耦合。它一般出現在彙編語言程式中。這種耦合是模組獨立性最弱的耦合。

相關詞條

相關搜尋

熱門詞條

聯絡我們