鄭 鵬
(莆田學院 信息工程學院, 福建 莆田 351100)
隨著國家軟件產業進入高速發展階段,軟件質量評價問題引起了人們的廣泛關注。由于傳統的評價方法存在很多不足,支持向量機(Support Vector Machine, SVM)算法作為基于統計學的一種新的機器學習算法,克服了主觀賦權法的主觀性和維數災的問題,其全局尋優也解決了神經網絡法中的局部極值問題。文中將模糊數學和SVM結合,提出模糊支持向量機(Fuzzy Support Vector Machine, FUZZY-SVM)模型,旨在為軟件質量的綜合評價提供一個新的思路。
軟件質量度量指的是對軟件質量在開發過程進行質量控制、在驗收階段進行評價評估。為了可以提供一個科學度量的標準,ISO發布了ISO/IEC 25010軟件質量度量模型[1]。該模型根據最小關聯與獨立的原則把軟件產品劃分為8個質量特性和31個質量子特性。質量特性是代表軟件質量的一個方面,用于描述和評價軟件的某方面屬性。子特性是質量特性的細分,一個質量特性可以由多個子特性表達,某個子特性也可以屬于多個質量特性。ISO/IEC 25010模型是一個成熟全面的度量模型,文中將選其作為度量模型。
SVM算法是基于統計學習理論體系,由Cortes等[2]提出的一種解決線性不可分問題的新型通用機器學習方法。
假設線性可分樣本集為(xi,yi),i=1,2,…,n,x∈Rc,y∈{+1,-1},其中y為類別符號。在維度為c的空間中,將線性判別函數的形式一般表示為:
f(x)=ωx+b
分類線性方程表示為:
ωx+b=0
將判別函數進行歸一化,使樣本滿足
|f(x)|=1
此時分類間隔等于‖w‖/2。要使分類間隔最大,即‖w‖最小,需要滿足:
yi[(ωx)+b]-1≥0,i=1,2,…,n
當‖w‖最小且滿足上述條件時的分類面即為最優分類面,把支持最優分類面的H1、H2這兩類訓練樣本點稱為支持向量。
對于線性分類,SVM將其轉化成一個不等式約束下的二次函數極值問題。對于非線性的情況,假設有非線性映射φ:Rd→H,要將樣本映射到高維特征空間H中,當要構造最優超平面時,僅需使用空間中的點積φ(xi)·φ(xj)。此時,尋找函數K,使得
K(xi·xj)=φ(xi)·φ(xj)
這樣,在高維空間只需進行內積運算,而且可利用原有空間中的函數來實現。
選用適合的內積函數K(xi·xj)進行非線性變換,可以使核函數滿足Mercer條件,這樣在變幻的空間中的內積得到對應,也得到了線性分類[3]。
SVM算法這種通過向量輸入、支持向量的內積處理以及中間節點的線性組合輸出,結構類似一個神經網絡[4]。相當于把x=(x1,x2,…,xn)為輸入向量,中間節點K(x·xi)是基于支持向量的內積,權值是ωi=αiyi,輸出是中間節點的線性組合:
(1)
常見的核函數有三類:多項式核函數、RBF徑向基函數和S形核函數[4]??紤]到軟件質量評價指標與結果之間的非線性映射關系,以及徑向基RBF核函數的參數較少,不會過多影響模型的精度。此外,以往的評價方法對評價結果都是用線性賦權法進行計算的,這對于非線性賦權問題還是有缺陷的,而徑向基核函數解決了這些問題,因此選取徑向基RBF函數作為核函數[5]:
(2)
軟件質量評價指標中,有些指標是帶模糊性的,因此利用模糊數學來進行量化。對于可定量的指標,也存在一些問題:比如不符合軟件質量的連續和漸變的特點、部分評價的信息丟失、量化程度不好等,因此需要構造隸屬度函數[6]可定量指標的評價標準進行處理。
在實際評價應用中,通??梢赃x擇適當的模糊分布[7],再根據實際問題的特點確定各個參數,進而確定隸屬函數。根據軟件質量漸變連續的特點,梯形分布與半梯形分布的模糊分布比較符合。因此,文中采用梯形分布與半梯形分布構造隸屬度函數,在進行SVM輸入訓練之前對原始數據進行標準化。
FUZZY-SVM模型是一個模式分類的過程,是指對軟件質量特征、因子進行描述辨識和分類解釋的過程,如圖1所示。
首先,模型選擇指標體系及評價分級標準。然后對原始數據進行采集,采用模糊隸屬度函數對指標數據進行歸一化預處理。模型在面臨不同類型的軟件時,可以根據問題的實際數據特征來選擇不同的SVM模型和參數。在求解樣本數的二次規劃問題過程中,還需要設計特殊的訓練策略來解決復雜程度與樣本數成指數遞增關系的問題[8],具體包括:訓練集的選擇策略以及增量迭代如何進行等。在模型擇優的過程中,可循環迭代、多次優化,以最終達到整體上最優的效果,并進行綜合評價。如此一來,FUZZY-SVM模型可有效排除主觀性及干擾、容錯能力強、操作簡單便捷。

圖1 FUZZY-SVM模型
假設要對某類的軟件進行綜合評價。依據ISO/IEC 25010標準選取全部特性作為評價指標,用I1~I31表示,見表1。

表1 軟件質量評價指標體系
在指標體系中定量指標包括I1、I2、I8、I9、I10、I17,其余為定性指標。將定性指標的隸屬度分為5個等級:(差、較差、合格、良好、優秀)=(0,0.3,0.6,0.8,1.0),隸屬度越大,該指標對軟件質量的貢獻程度越大。定量指標中指標I1、I2、I17是極大型指標,而I8、I9、I10是極小型指標。利用隸屬度函數進行訓練:
把軟件質量根據評價結果分為4個等級,即優秀、良好、合格、不合格,并用1,2,3,4分別表示。將樣本的各項軟件質量指標隸屬度值作為評價指標輸入,將軟件質量綜合評價結果作為支持向量機輸出。選取收集的50份不同等級的數據作為模型訓練和測試樣本,其中前25個作為訓練樣本,后25個作為測試樣本,根據隸屬度等級和函數歸一化樣本數據。
在CPUIntelCeleronG530 2.4GHz,RAM4GB,windows7操作系統,MATLAB2013a環境下利用LIBSVM工具包,采用5折交叉驗證法對訓練樣本進行測試,選取了誤差最小、模型最優的參數:C=8,σ=0.5。
針對軟件質量評價的特殊性,提出了一種基于FUZZY-SVM的軟件質量評價模型。模型對不同軟件質量等級的樣本數據進行訓練,并檢驗樣本數據,結果基本一致。最后,再與模糊綜合評價方法和神經網絡評價方法進行了比較,結果表明,該方法正確率和預測精度最高。因此,FUZZY-SVM在實際中可有效地進行軟件質量等級分類、評價,為決策者在科學客觀評價軟件質量方面提供了一個新的評價思路。
參考文獻:
[1] 孫洋,袁玉宇.ISO/IEC25010質量模型標準現狀[J].信息技術與標準化,2008(11):33-36.
[2] 趙洪波,馮夏庭.非線性位移時間序列預測的進化:支持向量機方法及應用[J].巖土工程學報,2003,25(4):468-471.
[3] 杜棟,龐慶華,吳炎.現代綜合評價方法與案例精選[M].北京:清華大學出版社,2015.
[4] 蘇懷智,溫志萍,吳中如.基于SVM理論的大壩安全預警模型研究[J].應用基礎與工程科學學報,2009,17(1):40-47.
[5] 孟洛明,朱杰輝,楊楊.支持向量機回歸預測在網絡故障檢測中的應用[J].北京郵電大學學報,2014,37:23-29.
[6] 楊綸標,高英儀.模糊數學原理與應用[M].廣州:華南理工大學出版社,2005.
[7] 李榮鈞.模糊多準則決策理論與應用[M].北京:科學出版社,2002.
[8] 金菊良,魏一鳴.復雜系統廣義智能評價方法與應用[M].北京:科學出版社,2008.
[9] 黃明,李憲章,劉楊.軟件質量評審技術[J].吉林工學院學報,1990,11(3):25-29.