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