ylbtech-術語-軟件度量-內聚性:內聚性 |
內聚性(Cohesion)也稱爲
內聚力,是一
軟件度量,是
指機能相關的程序組合成一模塊的程度,或是
各機能凝聚的狀態或程度。是
結構化分析的重要概念之一。量測內聚性的方式不少,有些方法是由
分析源代碼,獲得非量化的結果,有些方法則是檢查源代碼的文本特徵,以獲得內聚性的量化分數。內聚性是
屬於順序式的量測量,通常會以「高內聚性」或「低內聚性」來表示。
通常會但願程序的模塊有高內聚性,由於高內聚性通常和許多理想的軟件特性有關,包括
魯棒性、可靠度、可複用性及易懂性(understandability)等特性,而
低內聚性通常也表明
不易維護、不易測試、不易複用以及難以理解。
耦合性是一個和內聚性相對的概念。
通常而言高內聚性表明低耦合性,反之亦然。內聚性是由賴瑞·康斯坦丁所提出,是以實務上可減小維護及修改的「好」軟件的特性爲基礎。
1.返回頂部 |
一、
二、
2.返回頂部 |
一、
高內聚性
在
計算機科學中,內聚性是指機能相關的程序組合成一模塊的程度。應用在
面向對象程序設計中,若服務特定類型的
方法在許多方面都很相似,則此類型即有高內聚性。
在一個高內聚性的系統中,代碼可讀性及複用的可能性都會提升,
程序雖然複雜,但可被管理。
如下的情形會下降程序的內聚性:
-
許多機能封裝在一類型內,能夠藉由方法供外界使用,但機能彼此相似之處很少。
-
在方法中進行許多不一樣的機能,使用的是相關性低或不相關的數據。
低內聚性的缺點以下:
-
增長理解模塊的困難度。
-
增長維護系統的困難度,由於一個邏輯修改會影響許多模塊,而一個模塊的修改會使得一些相關模塊也要修改。
-
增長模塊複用困難度,由於大部分的應用程序沒法複用一個由許多不必定相關的機能組成的模塊。
內聚性的類型
內聚性是一種非量化的量測,可利用評量規準來確認待確認源代碼的內聚性的分類。內聚性的分類以下,由低到高排列:
-
偶然內聚性(Coincidental cohesion,最低)
-
偶然內聚性是指模塊中的機能只是恰好放在一塊兒,模塊中各機能之間惟一的關係是其位置在同一個模塊中(例如:「工具」模塊)。
-
邏輯內聚性(Logical cohesion)
-
邏輯內聚性是隻要機能在邏輯上分爲同一類,不論各機能的本質是否有很大差別,就將這些機能放在同一模塊中(例如將全部的鼠標和鍵盤都放在輸入處理副程序中)。模塊內執行幾個邏輯上類似的功能,經過參數肯定該模塊完成哪個功能。
-
時間內聚性(Temporal cohesion)
-
時間內聚性是指將相近時間點運行的程序,放在同一個模塊中(例如在捕捉到一個異常後調用一函數,在函數中關閉已打開的文件、產生錯誤日誌、並告知用戶)。
-
程序內聚性(Procedural cohesion)
-
程序內聚性是指依一組會按照固定順序運行的程序放在同一個模塊中(例如一個函數檢查文件的權限,以後打開文件)。
-
聯繫內聚性/信息內聚/通訊內聚(Communicational cohesion)
-
聯繫內聚性是指模塊中的機能由於處理相同的數據或者指各處理使用相同的輸入數據或者產生相同的輸出數據,因此放在同一個模塊中(例如 一個模塊中的許多機能都訪問同一個記錄)。
-
依序內聚性/順序內聚(Sequential cohesion)
-
依序內聚性是指模塊中的各機能彼此的輸入及輸出數據相關, 一模塊的輸出數據是另外一個模塊的輸入,相似工廠的生產線(例如 一個模塊先讀取文件中的數據,以後再處理數據)。
-
功能內聚性(Functional cohesion,最高)
-
功能內聚性是 指模塊中的各機能是由於它們都對模塊中單一明肯定義的任務有貢獻(例如XML字符串的 詞法分析)。
由賴瑞·康斯坦丁、愛德華·尤登及史蒂夫·麥康奈爾等人的研究都提出偶然內聚性和邏輯內聚性是很差的,
聯繫內聚性和依序內聚性是好的,而功能內聚性是最理想的狀態。
相關條目
-
耦合性 (計算機科學)
-
面向對象程序設計用語列表
-
GRASP (面向對象設計)
-
SOLID (面向對象設計)
二、
3.返回頂部 |
4.返回頂部 |
5.返回頂部 |
一、
二、
6.返回頂部 |
做者:ylbtech 出處:http://ylbtech.cnblogs.com/ 本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利。 |