劉小英,周 強(qiáng),陳 強(qiáng)
(攀枝花學(xué)院 數(shù)學(xué)與計算機(jī)學(xué)院,四川 攀枝花 617000)
基于可拓理論的軟件質(zhì)量評價系統(tǒng)設(shè)計與實現(xiàn)
劉小英,周 強(qiáng),陳 強(qiáng)
(攀枝花學(xué)院 數(shù)學(xué)與計算機(jī)學(xué)院,四川 攀枝花 617000)
軟件質(zhì)量評價一直是軟件工程領(lǐng)域的難點問題;探索科學(xué)的軟件質(zhì)量評價方法并實現(xiàn)計算機(jī)化, 可為軟件質(zhì)量管理人員進(jìn)行決策提供數(shù)據(jù)基礎(chǔ), 也為用戶在選擇軟件時提供客觀的比對依據(jù);考慮到軟件質(zhì)量評價指標(biāo)的復(fù)雜性,在綜合分析了軟件質(zhì)量評價的各項指標(biāo)的基礎(chǔ)上,提出了基于可拓理論的軟件質(zhì)量評價方法,采用C++設(shè)計開發(fā)了軟件質(zhì)量評價系統(tǒng);研究建立了軟件質(zhì)量評價指標(biāo)體系,利用層次分析法確定各指標(biāo)權(quán)重,通過專家打分,得到各指標(biāo)得分?jǐn)?shù)據(jù);根據(jù)建立的評價指標(biāo)體系應(yīng)用可拓理論建立物元模型,利用數(shù)據(jù)及權(quán)重計算關(guān)聯(lián)度,得出優(yōu)度值并自動分析結(jié)果,得到軟件質(zhì)量的評價結(jié)論,打印水晶報表;經(jīng)過錄入數(shù)據(jù)測試,系統(tǒng)運行速度快,得出結(jié)論準(zhǔn)確,具有較好的實用性。
軟件質(zhì)量;評價;系統(tǒng);可拓理論
用戶選擇軟件產(chǎn)品需要反復(fù)對比做出決策,其依據(jù)的核心是系統(tǒng)軟件質(zhì)量的評價結(jié)果。而軟件質(zhì)量的評價是一個復(fù)雜的決策問題,因為度量軟件質(zhì)量的技術(shù)指標(biāo)或能力指標(biāo)往往具有模糊性、不確定性和灰色性等因素。目前,軟件質(zhì)量評價多采用層次分析法和模糊綜合評判法,這兩種評價方法在有些情況下不能很好地解決問題[1-2]。如層次分析法當(dāng)同一層次的比較因素較多時,專家容易出現(xiàn)矛盾或混亂的判斷,模糊綜合評判涉及元素對模糊概念的肯定隸屬情況,但現(xiàn)實情況中往往出現(xiàn)元素對模糊概念的肯定與否定兩個方面,即以上兩種方法在有些情況下不能有效解決實際存在的矛盾情況。可拓學(xué)是將物元理論和可拓集合理論相結(jié)合提出一種探討處理矛盾問題的新方法[3-4],將其核心分析方法之一優(yōu)度評價法引入到軟件質(zhì)量評價之中,應(yīng)用簡便且便于計算機(jī)實現(xiàn)。
軟件質(zhì)量的評價是一個復(fù)雜的系統(tǒng)過程,包括許多影響指標(biāo),側(cè)重點不同會產(chǎn)生不同的評價結(jié)果。指標(biāo)越多矛盾越多,如何兼顧每項指標(biāo),得到科學(xué)滿意的評價結(jié)果,是決策者經(jīng)常遇到的問題。
首先建立軟件質(zhì)量評價指標(biāo)體系,根據(jù)建立的評價指標(biāo)體系應(yīng)用可拓理論建立物元模型,建立關(guān)聯(lián)函數(shù)并計算關(guān)聯(lián)度,最后比較了權(quán)重的優(yōu)度值計算結(jié)果(即評價結(jié)果)得出結(jié)論,對軟件質(zhì)量進(jìn)行有效評價。
1.1 物元模型[5]
由事物、特征、量值構(gòu)成的有序三元組,作為描述事物的基本元,稱為一維物元。一物具有多個特征,與一維物元相仿,可以定義為多維物元。以物Om為對象,Cm為特征,Om關(guān)于Cm的量值Vm表示的物元模型可記為
(1)
1.2 右側(cè)距及關(guān)聯(lián)函數(shù)
應(yīng)用優(yōu)度評價法對軟件質(zhì)量進(jìn)行評價時,采用專家打分法對軟件質(zhì)量每項評價指標(biāo)打分,分值越高證明其對應(yīng)的單項指標(biāo)越好,在計算關(guān)聯(lián)函數(shù)時,將涉及可拓學(xué)右側(cè)距的計算。
1)右側(cè)距。
(2)
為x與區(qū)間X0關(guān)于x0的右側(cè)距。
2)關(guān)聯(lián)函數(shù)及關(guān)聯(lián)度計算。
設(shè)X0=〈a,b〉,X=〈c,d〉,x0∈〈a,b〉,X0?X,最優(yōu)點在x0處時的關(guān)聯(lián)函數(shù)為
(3)
式(2)中,D(x,X0,X)稱為位值,計算方法如下:
(4)
其中,X0和X分別稱為經(jīng)典域和節(jié)域,經(jīng)典域為待評案例各特征的量域,節(jié)域為特征所允許的量域[5]。待評軟件的每項評價指標(biāo)都被劃分了等級,經(jīng)典域是指各評價指標(biāo)不同等級水平的分值區(qū)間,節(jié)域根據(jù)評價指標(biāo)可能的最大得分范圍來確定。
1.3 優(yōu)度計算
優(yōu)度是應(yīng)用關(guān)聯(lián)函數(shù)確定待評價對象關(guān)于評價指標(biāo)符合要求的程度,某評價等級優(yōu)度值越高,證明待評案例更加符合該評價等級。優(yōu)度計算公式可表示為:
(5)
2.1 軟件質(zhì)量評價指標(biāo)體系
不同地區(qū),不同用戶對軟件質(zhì)量有不同的側(cè)重,因此軟件質(zhì)量量化評價標(biāo)準(zhǔn)也不盡相同。綜合考慮各類軟件特點,以GB/T16260系列標(biāo)準(zhǔn)為基礎(chǔ),結(jié)合ISO/IEC9126標(biāo)準(zhǔn)制定的軟件質(zhì)量評價指標(biāo)體系[6-7]如圖1所示。評價指標(biāo)主要包括功用性、可靠性、維護(hù)性、可移植性4項一級指標(biāo),對應(yīng)各一級指標(biāo)的依從性等12項二級指標(biāo)。
圖1 軟件質(zhì)量評價指標(biāo)體系
2.2 權(quán)重設(shè)置及計算方法
設(shè)計的系統(tǒng)默認(rèn)權(quán)重方法采用應(yīng)用廣泛的層次分析法計算[8],具體又有幾何平均法、算術(shù)平均法、特征向量法和最小二乘法4種,采用幾何平均法編寫程序。
(6)
式(6)中,aij表示所對應(yīng)的判斷矩陣中的標(biāo)度值,wi表示所求的各級指標(biāo)權(quán)重值。
3.1 總體設(shè)計
軟件評價系統(tǒng)采用c/s(客戶機(jī)/服務(wù)器)三層結(jié)構(gòu)。
表現(xiàn)層,即用戶使用軟件的顯示界面,實現(xiàn)功能和專業(yè)評價的頁面;
業(yè)務(wù)層,即對頁面?zhèn)魉瓦^來的數(shù)據(jù)進(jìn)行綜合性的處理和計算,具體的實現(xiàn)層次分析法的算法,把權(quán)重和屬性數(shù)據(jù)聯(lián)系到一起,得出優(yōu)度值和評價結(jié)果;
數(shù)據(jù)層,即采用SQL Server 2008對評價原始數(shù)據(jù)、權(quán)重和評價結(jié)果的存儲與管理。
3.2 系統(tǒng)的工作流程圖
基于可拓理論和層次分析法的軟件評價系統(tǒng)的工作流程圖如圖2所示,其主要的步驟為:
圖2 系統(tǒng)工作流程
1)設(shè)置專家的人數(shù)。
2)通過專家對一個軟件的檢測來對其相應(yīng)的指標(biāo)進(jìn)行打分。
3)設(shè)置權(quán)重,或者使用系統(tǒng)默認(rèn)權(quán)重
4)基于打分的數(shù)據(jù),通過計算得出的數(shù)據(jù)使用水晶報表打印出來。
3.3 系統(tǒng)功能模塊設(shè)計
軟件的功能設(shè)計是衡量一個軟件優(yōu)良的重要指標(biāo),根據(jù)軟件評價系統(tǒng)的具體需求,本軟件具體實現(xiàn)了以下功能模塊,如圖3所示。
圖3 系統(tǒng)功能模塊設(shè)計
3.3.1 設(shè)置專家人數(shù)模塊
當(dāng)用戶使用本軟件時,需要確定共有多少個專家參與本次評價,系統(tǒng)默認(rèn)的人數(shù)為4個,系統(tǒng)支持3~10個專家進(jìn)行打分。
3.3.2 專家打分評價模塊
專家打分評價模塊實現(xiàn)接受每一位專家對相應(yīng)的指標(biāo)打分的數(shù)據(jù),每一個指標(biāo)對應(yīng)的分?jǐn)?shù)范圍為60~100。
3.3.3 選擇是否自定義權(quán)重值
本系統(tǒng)中關(guān)于評價指標(biāo)權(quán)重的值分為兩種:系統(tǒng)默認(rèn)權(quán)重值和用戶自定義權(quán)重值。
系統(tǒng)默認(rèn)值前面已提到,通過數(shù)據(jù)對比分析,應(yīng)用層次分析法計算后得出的各個評價指標(biāo)權(quán)重值,這一類權(quán)重值能滿足大部分的軟件系統(tǒng)評價。
用戶自定義權(quán)重值,則是需要用戶自己指定所要評價軟件哪些項指標(biāo)更為重要,設(shè)定好權(quán)重后,從而通過后續(xù)算法評價出軟件的優(yōu)劣性。使用自定義權(quán)重,這樣可以避免有些對于某些評價指標(biāo)有特殊要求的軟件不能公正得出評價數(shù)據(jù)。自定義權(quán)重模塊如圖4所示,單元格中權(quán)重如何設(shè)置如圖中界面左下角所示。
圖4 自定義權(quán)重值模塊
實現(xiàn)該模塊的核心代碼:
//計算權(quán)重值
private double[] getWeight(double[,] params)
{
int N = params.GetLength(0);
// 存儲得到每行元素乘積Mi
double[] RowMultiply= new double[N];
// 存儲得到計算Mi的n次方根
double[] Square= new double[N];
// 存儲正規(guī)化處理結(jié)果
double[] Result= new double[N];
// 得到每行元素乘積Mi
for (int i = 0; i < N; i++)
{
double M = 1;
for (int j = 0; j < N; j++)
{
M *= params [i, j];
RowMultiply [i] = M;
}
}
// 得到計算Mi的n次方根
for (int i = 0; i < N; i++)
Square [i] = Math.Pow(RowMultiply [i], 1.0 / N);
// 正規(guī)化處理結(jié)果
double zhenggui = 0;
for (int i = 0; i < N; i++)
zhenggui += Square [i];
for (int i = 0; i < N; i++)
Result [i] = Square [i] / zhenggui;
return Result;
}
3.3.4 水晶報表打印報表模塊
此模塊把專家打分的原始數(shù)據(jù)、計算出來的優(yōu)度值和評價結(jié)果通過計算體現(xiàn)出來,采用了水晶報表工具來創(chuàng)建報表。被請求時,水晶報表直接根據(jù)指定的驅(qū)動連接數(shù)據(jù)庫后組裝這些數(shù)據(jù),顯示時能夠清晰的顯示出數(shù)據(jù)庫存儲的數(shù)據(jù),界面如圖5所示。
圖5 水晶報表顯示專家打分?jǐn)?shù)據(jù)
3.3.5 水晶報表打印一級權(quán)重和各二級權(quán)重數(shù)據(jù)
優(yōu)度值數(shù)據(jù)表、評價等級數(shù)據(jù)表中各項對應(yīng)的值越大說明該項在軟件綜合方面占有的比值越大。最終評價結(jié)果也是根據(jù)圖6兩表中數(shù)據(jù)比較得出。
圖6 權(quán)重數(shù)據(jù)表和優(yōu)度表
實現(xiàn)該模塊的核心代碼:
1)計算關(guān)聯(lián)函數(shù)的K值的算法框架:
/*
* @param x 評價分?jǐn)?shù)
* @param a 經(jīng)典域中a
* @param b經(jīng)典域中b
* @param c 節(jié)域
* @param d 節(jié)域
*/
private double relativity (double x,double a,double b, double c,double d)
{
double p, d, q1,q2, k;
//求右側(cè)距p
if (x <=b)
{
p = a - x;
}
else
{
p = x - b;
}
//求距
q1= Math.Abs(x -) -;
q2 = Math.Abs(x -) -;
//求位值
if (q1 q2)
{
d = -10;
}
else if (q1 != q2 && x >= a && x <= b)
{
d = q2 - q1 - 10;
}