軟體工程-----高內聚低耦合
內聚是從功能角度來度量模組內的聯絡,一個好的內聚模組應當恰好做一件事。它描述的是模組內的功能聯絡; 耦合是軟體結構中各模組之間相互連線的一種度量,耦合強弱取決於模組間介面的複雜程度、進入或訪問一個模組的點以及通過介面的資料。
耦合性也稱塊間聯絡。指軟體系統結構中各模組間相互聯絡緊密程度的一種度量。模組之間聯絡越緊密,其耦合性就越強,模組的獨立性則越差。模組間耦合高低取決於模組間介面的複雜性、呼叫的方式及傳遞的資訊。
2. 內聚分為哪幾類?耦合分為哪幾類?
內聚有如下的種類,它們之間的內聚度由弱到強排列如下:
(1) 偶然內聚。模組中的程式碼無法定義其不同功能的呼叫。但它使該模組能執行不同的功能,這種模組稱為巧合強度模組。
(2) 邏輯內聚。這種模組把幾種相關的功能組合在一起, 每次被呼叫時,由傳送給模組引數來確定該模組應完成哪一種功能
(3) 時間內聚:把需要同時執行的動作組合在一起形成的模組為時間內聚模組。
(4) 過程內聚:構件或者操作的組合方式是,允許在呼叫前面的構件或操作之後,馬上呼叫後面的構件或操作,即使兩者之間沒有資料進行傳遞。
(5) 通訊內聚:指模組內所有處理元素都在同一個資料結構上操作(有時稱之為資訊內聚),或者指各處理使用相同的輸入資料或者產生相同的輸出資料。
(6) 順序內聚:指一個模組中各個處理元素都密切相關於同一功能且必須順序執行,前一功能元素輸出就是下一功能元素的輸入。
(7) 功能內聚:這是最強的內聚,指模組內所有元素共同完成一個功能,缺一不可。
耦合可以分為以下幾種,它們之間的耦合度由高到低排列如下:
(1) 內容耦合:如果發生下列情形,兩個模組之間就發生了內容耦合
一個模組直接訪問另一個模組的內部資料
一個模組不通過正常入口轉到另一模組內部;
兩個模組有一部分程式程式碼重疊(只可能出現在組合語言中);
一個模組有多個入口。
(2) 公共耦合:若一組模組都訪問同一個公共資料環境,則它們之間的耦合就稱為公共耦合。公共的資料環境可以是全域性資料結構、共享的通訊區、記憶體的公共覆蓋區等。
(3) 外部耦合:一組模組都訪問同一全域性簡單變數而不是同一全域性資料結構,而且不是通過參數列傳遞該全域性變數的資訊,則稱之為外部耦合。
(4) 控制耦合:如果一個模組通過傳送開關、標誌、名字等控制資訊,明顯地控制選擇另一模組的功能,就是控制耦合
(5) 標記耦合:一組模組通過參數列傳遞記錄資訊,就是標記耦合。這個記錄是某一資料結構的子結構,而不是簡單變數。其實傳遞的是這個資料結構的地址;也就是地址傳遞。
(6) 資料耦合:指兩個模組之間有呼叫關係,傳遞的是簡單的資料值,一個模組訪問另一個模組時,彼此之間是通過簡單資料引數 (不是控制引數、公共資料結構或外部變數) 來交換輸入、輸出資訊的,相當於高階語言的值傳遞。
(7) 非直接耦合:兩個模組之間沒有直接關係,它們之間的聯絡完全是通過主模組的控制和呼叫來實現的。
耦合強度,依賴於以下幾個因素:
(1)一個模組對另一個模組的呼叫;
(2)一個模組向另一個模組傳遞的資料量;
(3)一個模組施加到另一個模組的控制的多少;
(4)模組之間介面的複雜程度。相關文章
- Java 工程解耦即高內聚低耦合Java解耦
- 高內聚,低耦合的實現方式
- 大型專案架構搭建_高內聚、低耦合(1)架構
- 分散式系統關注點——「高內聚低耦合」詳解分散式
- 精通介面隔離原則,輕鬆實現高內聚、低耦合架構架構
- 物件導向三大特性五大原則 + 低耦合高內聚物件
- 如何設計一個高內聚低耦合的模組——MegEngine 中自定義 Op 系統的實踐經驗
- [技術討論]OO原則中鬆耦合與高內聚的分析
- 高階軟體工程筆記軟體工程筆記
- 如何實現軟體設計中的高凝聚和鬆耦合? - thevaluable
- CSSEE7023高階軟體工程CSS軟體工程
- 軟體Bug、耦合以及因果推理 - Michael Feathers
- 高階軟體開發工程師招聘資訊工程師
- 軟體工程-軟體工程層狀模型(EHM)軟體工程模型
- 軟體工程 第一章 軟體與軟體工程軟體工程
- 軟體工程 .軟體工程
- 軟體工程軟體工程
- 聚類分析軟體操作流程聚類
- 軟體工程——軟體測試軟體工程
- 軟體工程——軟體計劃軟體工程
- 急聘:高階java軟體開發工程師(北京)Java工程師
- 上海聘:高階軟體整合&測試工程師工程師
- 軟體、軟體危機、軟體工程 (轉)軟體工程
- Python完美詮釋"高內聚"概念的IO流API體系結構PythonAPI
- Python 完美詮釋"高內聚"概念的 IO 流 API 體系結構PythonAPI
- 國內軟體工程專案的外包管理分析軟體工程
- 軟體工程—GitHub軟體工程Github
- 軟體工程1軟體工程
- 軟體工程4.21軟體工程
- 軟體工程5.7軟體工程
- 軟體工程4.28軟體工程
- 軟體工程5.9軟體工程
- 軟體工程5.8軟體工程
- 軟體工程4.27軟體工程
- 軟體工程5.13軟體工程
- 軟體工程6軟體工程
- 高階軟體測試工程師,需要掌握哪些技能工程師
- 2017年秋高階軟體工程學習心得軟體工程