各位學員大家好,大家在學習軟件工程知識時,會涉及到模塊的內聚和耦合的知識,我們經常說“高內聚,低耦合”,你知道是怎麼一回事嗎?爲了讓大家快速掌握這方面的知識點,接下來就帶領大家一起來學習一下!
例題1:模塊A將其中的學生信息,即學生姓名、學號、手機號等放到一個結構體中,傳遞給模塊B,則模塊A和B之間的耦合類型爲( )耦合。
A、數據
B、標記
C、控制
D、內容
解析:本題考查模塊耦合關係的基礎知識。
耦合是模塊之間的相對獨立性(互相連接的緊密程度)的度量。耦合取決於各個模塊之間接口的複雜程度、調用模塊的方式以及通過接口的信息類型等。一般來說,模塊之間的耦合有七種類型,根據耦合性從低到高爲非直接耦合(無直接耦合)、數據耦合、標記耦合、控制耦合、外部耦合、公共耦合和內容耦合。
1)、非直接耦合(無直接耦合):兩個模塊之間沒有直接關係,它們之間的聯繫完全是通過主模塊的控制和調用來實現的,它們之間不傳遞任何信息,因此模塊間的耦合性最弱,模塊獨立性最高。
2)、數據耦合:指兩個模塊之間有調用關係,傳遞的是簡單的數據值(不是控制參數,公共數據結構或外部變量),相當於高級語言中的值傳遞。
3)、標記耦合:指兩個模塊之間通過參數表(數據結構)傳遞記錄信息。
4)、控制耦合:指一個模塊調用另一個模塊時,傳遞的是控制變量,被調用模塊通過該控制變量的值有選擇地執行模塊內的某一功能。因此,被調用模塊內應具有多個功能,那個功能起作用受調用模塊控制。也就是說一個模塊通過傳送開關、標誌、名字等控制信息,明顯地控制選擇另一模塊的功能。
5)、外部耦合:模塊間通過軟件之外的環境聯結( 如I/O將模塊耦合到特定的設備、格式、通信協議上)時稱爲外部耦合。
6)、公共耦合:指通過一個公共數據環境相互作用的那些模塊間的耦合。
7)、內容耦合:一個模塊直接訪問另一個模塊的內部數據,或者通過非正常入口轉入另一個模塊內部,或者兩個模塊有一部分程序代碼重疊,又或者一個模塊有多種入口。這種模塊之間的耦合稱之爲內容耦合。
題幹中說明傳遞的參數是一個參數表(學生姓名、學號、手機號等放到一個結構體中),所以是標記耦合。故該題目的正確答案爲B。
例題2:某模塊內涉及多個功能,這些功能必須以特定的次序執行,則該模塊的內聚類型爲( )內聚。
A、時間
B、過程
C、信息
D、功能
解析:本題考查模塊內聚的基礎知識。
內聚是一個模塊內部各個元素彼此結合的緊密程度的度量。一個內聚程度高的模塊(在理想情況下)應當只做一件事。一般模塊的內聚性分爲7種類型,分類(內聚程度由弱到強)分別爲:
1)、偶然(巧合)內聚:模塊完成的動作之間沒有任何關係,或者僅僅是一種非常鬆散的關係。
2)、邏輯內聚:指模塊內執行若干個邏輯上相似的功能,通過參數確定該模塊完成哪一個功能。
3)、瞬時(時間)內聚:模塊內部的各個組成部分所包含的處理動作必須在同一時間間隔內執行,例如初始化模塊。
4)、過程內聚:指一個模塊完成多個任務,這些任務必須按指定的過程執行。
5)、通信(信息)內聚:指模塊內的所有處理元素都在同一個數據結構上操作,或者各處理使用相同的輸入數據或者產生相同的輸出數據。
6)、順序內聚:指一個模塊中的各個處理元素都密切相關於同一功能且必須順序執行,前一功能元素的輸出就是下一功能元素的輸入。
7)、功能內聚:指模塊內的所有元素共同作用完成一個功能,缺一不可,這是最強的內聚。
題幹中明確要求功能是以特定的次序執行,所以是過程內聚。故該題目的正確答案爲B。
(1)某系統中有一箇中央數據存儲,模塊A負責接收新來的數據並修改中央數據存儲中的數據,模塊B負責訪問中央數據存儲中的數據則這兩個模塊之間的耦合類型爲( 1 )。若將這兩個模塊及中央數據合併成一個模塊,則該模塊的內聚類型爲( 2 )。
1、A、數據
B、標記
C、控制
D、公共
2、A、邏輯
B、時間
C、通信
D、功能
(2)當一個模塊直接使用另一個模塊的內部數據,或者通過非正常入口轉入另一個模塊內部,這種模塊之間的耦合爲()。
A、數據耦合
B、標記耦合
C、公共耦合
D、內容耦合
(3)模塊A、B和C都包含相同的5個語句,這些語句之間沒有聯繫,爲了避免重複,把這5個語句抽取出來組成一個模塊D,則模塊D的內聚類型爲(1 ) 內聚。以下關於該類內聚的敘述中不正確的是(2 )。
1、 A、功能
B、通信
C、邏輯
D、巧合
2、A、從模塊獨立性來看,是不好的設計
B、是最弱的一種內聚類型
C、是最強的一種內聚類型
D、不易於軟件的修改和維護
(1)解析:本題考查模塊耦合和內聚的基礎知識。
選項中涉及的模塊耦合類型如下所示:
1)、數據耦合:指兩個模塊之間有調用關係,傳遞的是簡單的數據值(不是控制參數,公共數據結構或外部變量),相當於高級語言中的值傳遞。
2)、標記耦合:指兩個模塊之間通過參數表(數據結構)傳遞記錄信息。
3)、控制耦合:指一個模塊調用另一個模塊時, 傳遞的是控制變量,被調用模塊通過該控制變量的值有選擇地執行模塊內的某一功能。 因此,被調用模塊內應具有多個功能,那個功能起作用受調用模塊控制。也就是說一個模塊通過傳送開關、標誌、名字等控制信息,明顯地控制選擇另一模塊的功能。
4)、公共耦合:指通過一個公共數據環境相互作用的那些模塊間的耦合。
題幹中說系統中有一箇中央數據存儲,模塊A負責接收新來的數據並修改中央數據存儲中的數據,模塊B負責訪問中央數據存儲中的數據,可見模塊A和模塊B都是通過中央數據存儲來相互作用,所以這兩個模塊之間的耦合類型爲公共耦合。故該題目的第一空的正確答案爲D。
選項中涉及的模塊內聚類型如下所示:
1)、邏輯內聚:指模塊內執行若干個邏輯上相似的功能,通過參數確定該模塊完成哪一個功能。
2)、瞬時(時間)內聚:模塊內部的各個組成部分所包含的處理動作必須在同一時間間隔內執行,例如初始化模塊。
3)、通信(信息)內聚:指模塊內的所有處理元素都在同一個數據結構上操作,或者各處理使用相同的輸入數據或者產生相同的輸出數據。
4)、功能內聚:指模塊內的所有元素共同作用完成一個功能,缺一不可,這是最強的內聚。
若將這兩個模塊及中央數據合併成一個模塊,那麼在同一模塊內部,處理元素在同一個數據結構上操作,則該模塊的內聚類型爲通信內聚。故該題目的第二空的正確答案爲C。
(2)解析:本題考查模塊耦合的基礎知識。
選項中涉及到的模塊耦合類型如下所示:
1)、數據耦合:指兩個模塊之間有調用關係,傳遞的是簡單的數據值(不是控制參數,公共數據結構或外部變量),相當於高級語言中的值傳遞。
2)、標記耦合:指兩個模塊之間通過參數表(數據結構)傳遞記錄信息。
3)、公共耦合:指通過一個公共數據環境相互作用的那些模塊間的耦合。
4)、內容耦合:一個模塊直接訪問另一個模塊的內部數據,或者通過非正常入口轉入另一個模塊內部,或者兩個模塊有一部分程序代碼重疊,又或者一個模塊有多種入口。這種模塊之間的耦合稱之爲內容耦合。
題幹中說明當一個模塊直接使用另一個模塊的內部數據,或者通過非正常入口轉入另一個模塊內部,這種模塊之間的耦合肯定是內容耦合。故該題目的正確答案爲D。
(3)解析:本題考察模塊內聚類型的基礎知識。
涉及到的內聚類型(內聚程度由弱到強)如下所示:
1)、偶然(巧合)內聚:模塊完成的動作之間沒有任何關係,或者僅僅是一種非常鬆散的關係。
2)、邏輯內聚:指模塊內執行若干個邏輯上相似的功能,通過參數確定該模塊完成哪一個功能。
3)、通信(信息)內聚:指模塊內的所有處理元素都在同一個數據結構上操作,或者各處理使用相同的輸入數據或者產生相同的輸出數據。
4)、功能內聚:指模塊內的所有元素共同作用完成一個功能,缺一不可,這是最強的內聚。
由題幹可知這些語句之間沒有聯繫,所以他們之間的內聚關係爲巧合內聚,故該題目第一空的正確答案爲D,巧合內聚是最弱的一種內聚類型,故該題目第二空的正確答案爲C。
寫於2020年9月30日
作者:昊洋講師
版權所有,侵權必究