模塊獨立(耦合性與內(nèi)聚性)
?模塊獨立性指模塊不依賴其他模塊獨立完成功能的程度。模塊獨立程度的兩個定性標(biāo)準(zhǔn)度量是耦合和內(nèi)聚。
耦合性衡量不同模塊彼此之間相互依賴(連接)的緊密程度,耦合要低,即每個模塊與其他模塊的關(guān)系要簡單;內(nèi)聚性衡量一個模塊內(nèi)部各個元素緊密結(jié)合的程度(比如說,數(shù)據(jù)、函數(shù)高重復(fù)利用率能提高模塊內(nèi)聚性),內(nèi)聚要高,每個模塊完成一個相對獨立的子功能。
(1)耦合:一個軟件結(jié)構(gòu)內(nèi)不同模塊直接互連程度的度量(力求低耦合)
分為四種類型(從低到高排序),
①數(shù)據(jù)耦合
兩個模塊間通過參數(shù)僅交換數(shù)據(jù)
②控制耦合
兩個模塊間傳遞的信息中含有控制信息。
缺陷:
ⅰ.被調(diào)用模塊需要知道調(diào)用模塊的內(nèi)部結(jié)構(gòu)和邏輯,降低了重用的可能性。
ⅱ.控制耦合往往是多余的,把模塊適當(dāng)分解后,通??捎脭?shù)據(jù)耦合代替它
③公共耦合
兩個或兩個以上的模塊通過一個公共數(shù)據(jù)環(huán)境相互作用。公共環(huán)境可以是全程變量、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)、任何存儲介質(zhì)上的文件、物理設(shè)備等。
缺陷:
ⅰ.公共耦合的模塊難以重用,必須提供一個全局的變量清單。
ⅱ.即使模塊本身不改變,它和產(chǎn)品中其他模塊之間公共環(huán)境耦合的實例數(shù)也會變化非常的大。因此,這種耦合的潛在危險很大,模塊暴露出比必須多得多的數(shù)據(jù),導(dǎo)致難以控制數(shù)據(jù)的存取,從而導(dǎo)致計算機犯罪。
④內(nèi)容耦合(最高程度)
ⅰ.一個模塊訪問另一個模塊的內(nèi)部數(shù)據(jù)
ⅱ.一個模塊不通過正常入口轉(zhuǎn)到另一個模塊的內(nèi)部
ⅲ.兩個模塊有一部分代碼重疊
ⅳ.一個模塊有多個入口
降低模塊的設(shè)計原則:
①盡量使用數(shù)據(jù)耦合
②少用控制耦合
③限制公共耦合的范圍
④完全不使用內(nèi)容耦合
補充:
在面對對象設(shè)計中,耦合指不同對象之間相互關(guān)聯(lián)的緊密程度
①交互耦合(應(yīng)盡可能松散)
對象之間的耦合通過消息實現(xiàn)連接
②繼承耦合(應(yīng)盡可能緊密)
繼承是一般類和特殊類之間耦合的一種形式。通過繼承關(guān)系結(jié)合起來的基類和派生類,構(gòu)成系統(tǒng)中粒度更大的模塊。
(2)內(nèi)聚:一個模塊內(nèi)各個元素彼此結(jié)合的緊密程度。(力求高內(nèi)聚)
(內(nèi)聚和耦合是密切相關(guān)的,高內(nèi)聚往往就意味著低耦合)
內(nèi)聚性從低到高分為7種三個等級,(從低到高)
低等級:偶然內(nèi)聚、邏輯內(nèi)聚、時間內(nèi)聚
中等級:過程內(nèi)聚、通信內(nèi)聚
高等級:順序內(nèi)聚、功能內(nèi)聚
①偶然內(nèi)聚
一個模塊完成一組任務(wù),這些任務(wù)即使有聯(lián)系,關(guān)系也是很松散的。
②邏輯內(nèi)聚
模塊完成的任務(wù)從邏輯上屬于相同或相似的一類。
③時間內(nèi)聚
如果一個模塊包含的任務(wù)必須在同一段時間內(nèi)執(zhí)行。
④過程內(nèi)聚
一個模塊內(nèi)處理的元素是相關(guān)的,并且必須按特定次序執(zhí)行。
⑤通信內(nèi)聚
模塊中所有元素都使用同一個輸入數(shù)據(jù)和(或)產(chǎn)生同一個輸出數(shù)據(jù)
⑥順序內(nèi)聚
一個模塊內(nèi)的處理元素屬于一個整體,完成一個單一的功能。
⑦功能內(nèi)聚
模塊中所有的處理元素屬于一個整體,完成一個單一的功能。
圖解

?
