軟體工程之模組的耦合與內聚
一個大而複雜的軟體系統若想簡單化,就要分解,這就引入了模組化的概念,模組化:把一個大而複雜的軟體系統劃分成易於理解的比較單純的模組結構。那麼與模組化相對應的就是抽象化了,抽象化:軟體系統進行模組設計時,可有不同的抽象層次。
模組(Module)一般具有如下三個基本屬性:
功能:描述該模組實現什麼功能;
邏輯:描述模組內部怎麼做;
狀態:該模組使用時的環境和條件。
模組的獨立性:是指軟體系統中每個模組只涉及軟體要求的具體的子功能。一般採用兩個準則度量模組獨立性,即模組間耦合和模組內聚。
(一)模組耦合
非直接耦合是指:兩個模組之間沒有直接關係。
資料耦合:如果一個模組訪問另一個模組時,彼此之間是通過簡單的資料引數,來交換輸入、輸出資訊的,則稱為資料耦合。
標記耦合:如果一組模組是通過引數表傳遞記錄資訊的,就是標記耦合。
控制耦合:如果一個模組通過傳送開關、標誌、名字等控制資訊,明顯地控制選擇另一模組的功能,就是控制耦合。
外部耦合:一組模組都訪問同一全域性簡單變數,而不是同一全域性資料結構,而且不是通過引數表傳遞該全域性變數的資訊,則稱之為外部耦合。
公共耦合:若一組模組都訪問同一個公共資料環境,則稱為公共耦合。
內容耦合:不通過正常入口進入其他模組內部。或者引用了別的模組中的資料,沒有通過正常呼叫進入。
原則:儘量使用資料耦合少用控制耦合,限制公共耦合,完全不用內容耦合。
(二)模組內聚:
功能內聚:一個模組中各個部分都是完成某一具體功能必不可少的組成部分,是不可分割的。
資訊內聚:這種模組完成多個功能,各個功能都在同一資料結構上操作,每一項功能都有一個唯一的入口點。
通訊內聚:如果一個模組內各功能部分都使用了相同的輸入資料,或產生了相同的輸出資料,則稱之為通訊內聚模組。
過程內聚:使用流程圖做工具設計程式時,把流程圖中的某一部分劃出組成模組,就得到過程內聚模組。即:模組內上一部的結果就是下一步的資料。
時間內聚:時間內聚模組的各個功能的執行與時間有關,通常要求所有功能必須在同一時間段內執行。
邏輯內聚:這種模組把幾種相關的功能組合在一起。
巧合內聚:巧合內聚模組內各部分之間沒有聯絡,或者即使有聯絡,這種聯絡也很鬆散。
那麼整個的原則是:低耦合高內聚。
科學有序的設計一款軟體需要使用結構化的設計方法。
首先研究、分析和審查資料流圖,然後根據資料流圖決定問題的型別。資料處理問題典型的型別有兩種:變換型和事務型。針對兩種不同的型別分別進行分析處理。
在系統結構圖中的模組具體有:傳入模組、傳出模組、變換模組、協調模組。每一種模組在軟體開發中佔有重要的地位。
小編對於模組的耦合和內聚理解的還不到位,若有錯誤,請各位大神指正,小編將感激不盡。