Chapter 5 結構化設計與評估準則 內聚力與耦合力 - Ian-Liu-1990/Systems-Analysis-Design GitHub Wiki
1. 功能內聚力
- 定義 : 單一個模組只處理一件事,具有"唯一"的功能
2. 順序內聚力 - 共用相同資料,但資料相互有執行順序
- 定義 : 模組內具有多個功能或處理多件事,且一項功能的輸出"立即"成為下一項功能的輸入
3. 溝通內聚力 - 共用相同資料,但資料相互沒有執行順序
- 定義 : 模組內具有多個功能或處理多件事,且功能使用"相同的輸入資料",但功能之間資料沒有相互執行順序
4. 程序內聚力 - 不共用相同資料,模組流程有順序性
- 定義 : 模組可能有多個功能或處理事件在不共用資料下,必須按照一定流程順序來執行
5. 暫時內聚力 - 不共用相同資料,模組流程沒有順序性
- 定義 : 模組可能是用來初始化一個系統或設定一組變數的初始值,必須在同一個時間內不共用資料,執行完成多個功能或處理多件事
6. 邏輯內聚力
- 定義 : 模組內有多個邏輯上的相關聯功能,順序之控制來自上層模組
7. 偶發內聚力
- 定義 : 模組內部需要執行好幾件工作,且每一件工作都不相關
- 定義 : 一種衡量模組間相互關聯強度的方法
-
連鎖反應: 解決一模組內的錯誤狀況,卻引起其他模組內新錯誤
- 解決方法:每個模組盡量獨立不要糾結即降低模組的耦合力
-
定義 : 模組間[傳遞之參數為一些簡單型別的資料()
-
提醒:
資料傳遞不可跨越太多模組(無法掌握到遞傳遞給誰),以減少錯誤機會
-
提醒:
2. 資料結構耦合力 - 傳遞參數為資料結構型別
-
定義 : 模組間以資料結構型別作為程式的介面
- 提醒: 資料結構欄位改變會影響所有使用相同介面的模組,每一個模組使用了比實際更多的記憶體
- 解決: 將所需要的欄位資料傳遞過去就好,即變成資料耦合力
3. 控制耦合力 - 傳遞參數為旗標(Flag)
-
定義 : 當一模組傳遞旗標(Flag)企圖去控制另一模組內的功能或事件等邏輯
- 提醒:`如果被呼叫的模組是被分成兩個或兩個以上的模組進行控制,會因為執行順序不同,資料糾結而造成錯誤,對被呼叫的模組不夠了解,在傳遞旗標的對象控制上也會使程式撰寫不易
4. 共同耦合力
1. 資料錯誤[旗標狀態不正確]: 所有呼叫的模組皆受影響
2. 資料名稱曖昧: 呼叫模組對相同的資料所扮演的角色不同功能需求也不同
3. 資料內容不確定: 使呼叫的模組判別資料狀態困難,造成模組邏輯混沌不易設計
4+5. 資料牽涉[變動&不易維護]: 資料需求改變[型態],所有呼叫的模組都被迫必須變動,維護不易
5. 內容耦合力(糟糕)
1. 多點進入:
2. 參考或改變"資料":
3. 改變"流程":