耦合與內聚分類

耦合部分

耦合能夠分爲如下幾種,它們之間的耦合度由高到低排列以下:數據結構

(1) 內容耦合:一個模塊直接訪問另外一模塊的內容,則稱這兩個模塊爲內容耦合。
若在程序中出現下列狀況之一,則說明兩個模塊之間發生了內容耦合:spa

1. 一個模塊直接訪問另外一個模塊的內部數據。
2. 一個模塊不經過正常入口而直接轉入到另外一個模塊的內部。
3. 兩個模塊有一部分代碼重疊(該部分代碼具備必定的獨立功能)。
4. 一個模塊有多個入口。.net

內容耦合可能在彙編語言中出現。大多數高級語言都已設計成不容許出現內容耦合。這種耦合的耦合性最強,模塊獨立性最弱。設計

(2)公共耦合:一組模塊都訪問同一個全局數據結構,則稱之爲公共耦合。公共數據環境能夠是全局數據結構、共享的通訊區、內存的公共覆蓋區等。若是模塊只是向公共數據環境輸入數據,或是隻從公共數據環境取出數據,這屬於比較鬆散的公共耦合;若是模塊既向公共數據環境輸入數據又從公共數據環境取出數據,這屬於較緊密的公共耦合。
公共耦合會引發如下問題:blog

1. 沒法控制各個模塊對公共數據的存取,嚴重影響了軟件模塊的可靠性和適應性。
2. 使軟件的可維護性變差。若一個模塊修改了公共數據,則會影響相關模塊。
3. 下降了軟件的可理解性。不容易清楚知道哪些數據被哪些模塊所共享,排錯困難。內存

通常地,僅當模塊間共享的數據不少且經過參數傳遞很不方便時,才使用公共耦合。io

(3) 外部耦合:一組模塊都訪問同一全局簡單變量,並且不經過參數表傳遞該全局變量的信息,則稱之爲外部耦合。變量

(4) 控制耦合:模塊之間傳遞的不是數據信息,而是傳遞控制信息例如標誌、開關量等,一個模塊控制了另外一個模塊的功能。軟件

(5) 標記耦合:調用模塊和被調用模塊之間傳遞數據結構而不是簡單數據,同時也稱做特徵耦合。表就和的模塊間傳遞的不是簡單變量,而是像高級語言中的數據名、記錄名和文件名等數據結果,這些名字即爲標記,其實傳遞的是地址。程序

(6) 數據耦合:調用模塊和被調用模塊之間只傳遞簡單的數據項參數。至關於高級語言中的值傳遞。

(7) 非直接耦合:兩個模塊之間沒有直接關係,它們之間的聯繫徹底是經過主模塊的控制和調用來實現的。耦合度最弱,模塊獨立性最強。
總結:耦合是影響軟件複雜程度和設計質量的一個重要因素,爲提升模塊的獨立性,應創建模塊間儘量鬆散的系統,在設計上咱們應採用如下原則:若模塊間必須存在耦合,應儘可能使用數據耦合,少用控制耦合,慎用或有控制地使用公共耦合,並限制公共耦合的範圍,儘可能避免內容耦合。

內聚部分

內聚有以下的種類,它們之間的內聚度由弱到強排列以下:

(1) 偶然內聚:一個模塊內的各處理元素之間沒有任何聯繫,只是偶然地被湊到一塊兒。這種模塊也稱爲巧合內聚,內聚程度最低。

(2) 邏輯內聚:這種模塊把幾種相關的功能組合在一塊兒, 每次被調用時,由傳送給模塊參數來肯定該模塊應完成哪種功能

(3) 時間內聚:把須要同時執行的動做組合在一塊兒造成的模塊稱爲時間內聚模塊。

(4) 過程內聚:構件或者操做的組合方式是,容許在調用前面的構件或操做以後,立刻調用後面的構件或操做,即便二者之間沒有數據進行傳遞。簡單的說就是若是一個模塊內的處理元素是相關的,並且必須以特定次序執行則稱爲過程內聚。

(5) 通訊內聚:指模塊內全部處理元素都在同一個數據結構上操做或全部處理功能都經過公用數據而發生關聯(有時稱之爲信息內聚)。即指模塊內各個組成部分都使用相同的數據數據或產生相同的數據結構。

(6) 順序內聚:一個模塊中各個處理元素和同一個功能密切相關,並且這些處理必須順序執行,一般前一個處理元素的輸出時後一個處理元素的輸入。
例如某模塊完成工業產值求值的功能,前一個功能元素求總產值,後一個功能元素求平均產值,顯然該模塊內兩部分緊密關聯。
順序內聚的內聚度比較高,但缺點是不如功能內聚易於維護。

(7) 功能內聚:模塊內全部元素的各個組成部分所有都爲完成同一個功能而存在,共同完成一個單一的功能,模塊已不可再分。即模塊僅包括爲完成某個功能所必須的全部成分,這些成分緊密聯繫、缺一不可。

功能內聚是最強的內聚,其優勢是它的功能明確。判斷一個模塊是否功能內聚,通常從模塊名稱就能看出。若是模塊名稱只有一個動詞和一個特定的目標(單數名詞),通常來講就是功能內聚,如:「計算水費」、「計算產值」等模塊。功能內聚通常出如今軟件結構圖的較低層次上。
功能內聚模塊的一個重要特色是:他是一個「暗盒」,對於該模塊的調用者來講,只須要知道這個模塊能作什麼,而不須要知道這個模塊是如何作的。

————————————————版權聲明:本文爲CSDN博主「Hyo_yew」的原創文章。原文連接:https://blog.csdn.net/Hyo555/article/details/80293960

相關文章
相關標籤/搜索