模塊內(nèi)聚和耦合的基礎(chǔ)知識是軟件評測師考試的重要考點,經(jīng)常出現(xiàn)在上午場的客觀選擇題當(dāng)中。模塊獨立是指模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的接口簡單,符合信息隱蔽和信息局部化原則,模塊間關(guān)聯(lián)和依賴程度盡可能小。衡量模塊獨立性的標(biāo)準(zhǔn)是耦合度和內(nèi)聚度。內(nèi)聚度是衡量同一個模塊內(nèi)部的各個元素彼此結(jié)合的緊密程度。耦合度是衡量不同模塊彼此間相互依賴的緊密程度。下面就該知識點并結(jié)合例題進(jìn)行總結(jié)學(xué)習(xí)。
一、模塊內(nèi)聚
(1)概述:內(nèi)聚是一個模塊內(nèi)部各個元素彼此結(jié)合的緊密程度的度量。一個內(nèi)聚程度高的模塊(在理想情況下)應(yīng)當(dāng)只做一件事。
(2)分類:一般模塊的內(nèi)聚性分為7種類型,如下圖所示:
1)偶然(巧合)內(nèi)聚:模塊完成的動作之間沒有任何關(guān)系,或者僅僅是一種非常松散的關(guān)系。
2)邏輯內(nèi)聚:指模塊內(nèi)執(zhí)行若干個邏輯上相似的功能,通過參數(shù)確定該模塊完成哪一個功能。
3)瞬時(時間)內(nèi)聚:模塊內(nèi)部的各個組成部分所包含的處理動作必須在同一時間間隔內(nèi)執(zhí)行,例如初始化模塊。
4)過程內(nèi)聚:指一個模塊完成多個任務(wù),這些任務(wù)必須按指定的過程執(zhí)行。
5)通信(信息)內(nèi)聚:指模塊內(nèi)的所有處理元素都在同一個數(shù)據(jù)結(jié)構(gòu)上操作,或者各處理使用相同的輸入數(shù)據(jù)或者產(chǎn)生相同的輸出數(shù)據(jù)。
6)順序內(nèi)聚:指一個模塊中的各個處理元素都密切相關(guān)于同一功能且必須順序執(zhí)行,前一功能元素的輸出就是下一功能元素的輸入。
7)功能內(nèi)聚:指模塊內(nèi)的所有元素共同作用完成一個功能,缺一不可,這是最強的內(nèi)聚。
二、模塊耦合
(1)概述:耦合是模塊之間的相對獨立性(互相連接的緊密程度)的度量。耦合取決于各個模塊之間接口的復(fù)雜程度、調(diào)用模塊的方式以及通過接口的信息類型等。
(2)分類:一般來說,模塊之間的耦合有7種類型,如下圖所示:
1)非直接耦合(無直接耦合):兩個模塊之間沒有直接關(guān)系,它們之間的聯(lián)系完全是通過主模塊的控制和調(diào)用來實現(xiàn)的,它們之間不傳遞任何信息,因此模塊間的耦合性最弱,模塊獨立性最高。
2)、數(shù)據(jù)耦合:指兩個模塊之間有調(diào)用關(guān)系,傳遞的是簡單的數(shù)據(jù)值(不是控制參數(shù),公共數(shù)據(jù)結(jié)構(gòu)或外部變量),相當(dāng)于高級語言中的值傳遞。
3)標(biāo)記耦合:指兩個模塊之間通過參數(shù)表(數(shù)據(jù)結(jié)構(gòu))傳遞記錄信息。
4)控制耦合:指一個模塊調(diào)用另一個模塊時,傳遞的是控制變量,被調(diào)用模塊通過該控制變量的值有選擇地執(zhí)行模塊內(nèi)的某一功能。因此,被調(diào)用模塊內(nèi)應(yīng)具有多個功能,那個功能起作用受調(diào)用模塊控制。也就是說一個模塊通過傳送開關(guān)、標(biāo)志、名字等控制信息,明顯地控制選擇另一模塊的功能。
5)外部耦合:模塊間通過軟件之外的環(huán)境聯(lián)結(jié)( 如I/O將模塊耦合到特定的設(shè)備、格式、通信協(xié)議上)時稱為外部耦合。
6)公共耦合:指通過一個公共數(shù)據(jù)環(huán)境相互作用的那些模塊間的耦合。
7)內(nèi)容耦合:一個模塊直接訪問另一個模塊的內(nèi)部數(shù)據(jù),或者通過非正常入口轉(zhuǎn)入另一個模塊內(nèi)部,或者兩個模塊有一部分程序代碼重疊,又或者一個模塊有多種入口。這種模塊之間的耦合稱之為內(nèi)容耦合。