基于面向對象程序切片的軟件度量
3.2 軟件度量技術的研究
軟件度量是一個在近幾十年研究非常活躍的軟件工程領域。抽象來講,它是一個函數,其輸入是軟件,輸出是單一的數值,能解釋軟件所具有的一個給定屬性對軟件質量的影響。用于預測、評估和控制軟件開發的過程,促進項目的成功,開發出高質量的產品。
軟件度量主要包括復雜性度量、模塊性度量、易修改性度量、易移植性度量、可擴充性度量、可靠性度量、易維護性度量、測試充分性度量等。有些可以用數值表示,稱為“定量度量”;不能用單一數值表達的稱為“定性度量”。研究集中在定量度量方面的內聚度和耦合度的度量,這兩個方面是衡量軟件質量非常重要的標準。二者之間密切相關,模塊之間的強耦合通常意味著弱內聚,而模塊之間的強內聚則意味著弱耦合。本文引用地址:http://www.104case.com/article/201809/388955.htm
4 利用程序切片技術進行軟件度量
軟件開發的目標是開發出高內聚和低耦合的系統。這里研究利用切片技術度量面向對象程序的內聚度和耦合度,尤其是內聚度量。
4.1 耦合度量
耦合度(Coupling Degree)用來測量由兩個或多個模塊連接而引起的聯結程度的強弱。強耦合使模塊連接后的系統變得復雜。因為模塊之間具有高度的關聯,改寫模塊將十分困難。降低模塊間的耦合則可以減少系統的復雜性。因此,在系統設計中應追求盡可能松散的耦合關系。
4.2 內聚度量
內聚度(Cohesion Degree)是軟件的內在屬性,反映軟件設計和實現中模塊組件之間結合的緊密程度。高內聚的軟件模塊有著最基本的功能,很難再切割其規模。
面向對象程序的基本特征是類。類由屬性和方法組成,屬性和方法間存在3種關系,因此類內聚度也從3個方面度量:屬性問內聚度、方法與屬性問內聚度、方法問內聚度。設類C共有n個屬性,m個方法,其中m,n≥0。V_Union表示所有成員變量。M_Union表示所有成員方法。這里使用數據標記(data token)而非語句作為基本單元來修正切片這個概念。數據切片包含和切片變量存在依賴關系的數據集合,簡寫作DataSlice(L,V),其中L表示程序中的某個點,通常情況下特指某條語句:V表示在L定義或使用的變量的集合;#表示勢操作,表示集合中元素的個數。則屬性間內聚度、方法與屬性間內聚度和方法間內聚度的計算公式分別為式(1)~(3),如下所示:
4.3 實驗操作
采用目前最主流的程序切片技術,以系統依賴圖為基礎,利用圖的可達性算法獲得切片結果。然后利用將切片結果代入式(1)~(3)進行計算,得到內聚度。
以下面的程序為例進行切片,計算內聚度,并和基于依賴性分析的類內聚度度量方法相對比。
評論