1. 程式人生 > >軟體工程之模組的耦合與內聚

軟體工程之模組的耦合與內聚

一個大而複雜的軟體系統若想簡單化,就要分解,這就引入了模組化的概念,模組化:把一個大而複雜的軟體系統劃分成易於理解的比較單純的模組結構。那麼與模組化相對應的就是抽象化了,抽象化:軟體系統進行模組設計時,可有不同的抽象層次。

模組(Module)一般具有如下三個基本屬性:

功能:描述該模組實現什麼功能;

邏輯:描述模組內部怎麼做;

狀態:該模組使用時的環境和條件。

模組的獨立性:是指軟體系統中每個模組只涉及軟體要求的具體的子功能。一般採用兩個準則度量模組獨立性,即模組間耦合和模組內聚。

(一)模組耦合

非直接耦合是指:兩個模組之間沒有直接關係。

資料耦合:如果一個模組訪問另一個模組時,彼此之間是通過簡單的資料引數,來交換輸入、輸出資訊的,則稱為資料耦合。

標記耦合:如果一組模組是通過引數表傳遞記錄資訊的,就是標記耦合。

控制耦合:如果一個模組通過傳送開關、標誌、名字等控制資訊,明顯地控制選擇另一模組的功能,就是控制耦合。

外部耦合:一組模組都訪問同一全域性簡單變數,而不是同一全域性資料結構,而且不是通過引數表傳遞該全域性變數的資訊,則稱之為外部耦合。

公共耦合:若一組模組都訪問同一個公共資料環境,則稱為公共耦合。

內容耦合:不通過正常入口進入其他模組內部。或者引用了別的模組中的資料,沒有通過正常呼叫進入。

原則:儘量使用資料耦合少用控制耦合,限制公共耦合,完全不用內容耦合。

(二)模組內聚:

功能內聚:一個模組中各個部分都是完成某一具體功能必不可少的組成部分,是不可分割的。

資訊內聚:這種模組完成多個功能,各個功能都在同一資料結構上操作,每一項功能都有一個唯一的入口點。

通訊內聚:如果一個模組內各功能部分都使用了相同的輸入資料,或產生了相同的輸出資料,則稱之為通訊內聚模組。

過程內聚:使用流程圖做工具設計程式時,把流程圖中的某一部分劃出組成模組,就得到過程內聚模組。即:模組內上一部的結果就是下一步的資料。

時間內聚:時間內聚模組的各個功能的執行與時間有關,通常要求所有功能必須在同一時間段內執行。

邏輯內聚:這種模組把幾種相關的功能組合在一起。

巧合內聚:巧合內聚模組內各部分之間沒有聯絡,或者即使有聯絡,這種聯絡也很鬆散。

那麼整個的原則是:低耦合高內聚

科學有序的設計一款軟體需要使用結構化的設計方法。

首先研究、分析和審查資料流圖,然後根據資料流圖決定問題的型別。資料處理問題典型的型別有兩種:變換型和事務型。針對兩種不同的型別分別進行分析處理。

在系統結構圖中的模組具體有:傳入模組、傳出模組、變換模組、協調模組。每一種模組在軟體開發中佔有重要的地位。

小編對於模組的耦合和內聚理解的還不到位,若有錯誤,請各位大神指正,小編將感激不盡。