劉小英,周 強,陳 強
(攀枝花學院 數學與計算機學院,四川 攀枝花 617000)
基于可拓理論的軟件質量評價系統設計與實現
劉小英,周 強,陳 強
(攀枝花學院 數學與計算機學院,四川 攀枝花 617000)
軟件質量評價一直是軟件工程領域的難點問題;探索科學的軟件質量評價方法并實現計算機化, 可為軟件質量管理人員進行決策提供數據基礎, 也為用戶在選擇軟件時提供客觀的比對依據;考慮到軟件質量評價指標的復雜性,在綜合分析了軟件質量評價的各項指標的基礎上,提出了基于可拓理論的軟件質量評價方法,采用C++設計開發了軟件質量評價系統;研究建立了軟件質量評價指標體系,利用層次分析法確定各指標權重,通過專家打分,得到各指標得分數據;根據建立的評價指標體系應用可拓理論建立物元模型,利用數據及權重計算關聯度,得出優度值并自動分析結果,得到軟件質量的評價結論,打印水晶報表;經過錄入數據測試,系統運行速度快,得出結論準確,具有較好的實用性。
軟件質量;評價;系統;可拓理論
用戶選擇軟件產品需要反復對比做出決策,其依據的核心是系統軟件質量的評價結果。而軟件質量的評價是一個復雜的決策問題,因為度量軟件質量的技術指標或能力指標往往具有模糊性、不確定性和灰色性等因素。目前,軟件質量評價多采用層次分析法和模糊綜合評判法,這兩種評價方法在有些情況下不能很好地解決問題[1-2]。如層次分析法當同一層次的比較因素較多時,專家容易出現矛盾或混亂的判斷,模糊綜合評判涉及元素對模糊概念的肯定隸屬情況,但現實情況中往往出現元素對模糊概念的肯定與否定兩個方面,即以上兩種方法在有些情況下不能有效解決實際存在的矛盾情況。可拓學是將物元理論和可拓集合理論相結合提出一種探討處理矛盾問題的新方法[3-4],將其核心分析方法之一優度評價法引入到軟件質量評價之中,應用簡便且便于計算機實現。
軟件質量的評價是一個復雜的系統過程,包括許多影響指標,側重點不同會產生不同的評價結果。指標越多矛盾越多,如何兼顧每項指標,得到科學滿意的評價結果,是決策者經常遇到的問題。
首先建立軟件質量評價指標體系,根據建立的評價指標體系應用可拓理論建立物元模型,建立關聯函數并計算關聯度,最后比較了權重的優度值計算結果(即評價結果)得出結論,對軟件質量進行有效評價。
1.1 物元模型[5]
由事物、特征、量值構成的有序三元組,作為描述事物的基本元,稱為一維物元。一物具有多個特征,與一維物元相仿,可以定義為多維物元。以物Om為對象,Cm為特征,Om關于Cm的量值Vm表示的物元模型可記為
(1)
1.2 右側距及關聯函數
應用優度評價法對軟件質量進行評價時,采用專家打分法對軟件質量每項評價指標打分,分值越高證明其對應的單項指標越好,在計算關聯函數時,將涉及可拓學右側距的計算。
1)右側距。

(2)
為x與區間X0關于x0的右側距。
2)關聯函數及關聯度計算。
設X0=〈a,b〉,X=〈c,d〉,x0∈〈a,b〉,X0?X,最優點在x0處時的關聯函數為
(3)
式(2)中,D(x,X0,X)稱為位值,計算方法如下:
(4)
其中,X0和X分別稱為經典域和節域,經典域為待評案例各特征的量域,節域為特征所允許的量域[5]。待評軟件的每項評價指標都被劃分了等級,經典域是指各評價指標不同等級水平的分值區間,節域根據評價指標可能的最大得分范圍來確定。
1.3 優度計算
優度是應用關聯函數確定待評價對象關于評價指標符合要求的程度,某評價等級優度值越高,證明待評案例更加符合該評價等級。優度計算公式可表示為:
(5)

2.1 軟件質量評價指標體系
不同地區,不同用戶對軟件質量有不同的側重,因此軟件質量量化評價標準也不盡相同。綜合考慮各類軟件特點,以GB/T16260系列標準為基礎,結合ISO/IEC9126標準制定的軟件質量評價指標體系[6-7]如圖1所示。評價指標主要包括功用性、可靠性、維護性、可移植性4項一級指標,對應各一級指標的依從性等12項二級指標。

圖1 軟件質量評價指標體系
2.2 權重設置及計算方法
設計的系統默認權重方法采用應用廣泛的層次分析法計算[8],具體又有幾何平均法、算術平均法、特征向量法和最小二乘法4種,采用幾何平均法編寫程序。
(6)
式(6)中,aij表示所對應的判斷矩陣中的標度值,wi表示所求的各級指標權重值。
3.1 總體設計
軟件評價系統采用c/s(客戶機/服務器)三層結構。
表現層,即用戶使用軟件的顯示界面,實現功能和專業評價的頁面;
業務層,即對頁面傳送過來的數據進行綜合性的處理和計算,具體的實現層次分析法的算法,把權重和屬性數據聯系到一起,得出優度值和評價結果;
數據層,即采用SQL Server 2008對評價原始數據、權重和評價結果的存儲與管理。
3.2 系統的工作流程圖
基于可拓理論和層次分析法的軟件評價系統的工作流程圖如圖2所示,其主要的步驟為:

圖2 系統工作流程
1)設置專家的人數。
2)通過專家對一個軟件的檢測來對其相應的指標進行打分。
3)設置權重,或者使用系統默認權重
4)基于打分的數據,通過計算得出的數據使用水晶報表打印出來。
3.3 系統功能模塊設計
軟件的功能設計是衡量一個軟件優良的重要指標,根據軟件評價系統的具體需求,本軟件具體實現了以下功能模塊,如圖3所示。

圖3 系統功能模塊設計
3.3.1 設置專家人數模塊
當用戶使用本軟件時,需要確定共有多少個專家參與本次評價,系統默認的人數為4個,系統支持3~10個專家進行打分。
3.3.2 專家打分評價模塊
專家打分評價模塊實現接受每一位專家對相應的指標打分的數據,每一個指標對應的分數范圍為60~100。
3.3.3 選擇是否自定義權重值
本系統中關于評價指標權重的值分為兩種:系統默認權重值和用戶自定義權重值。
系統默認值前面已提到,通過數據對比分析,應用層次分析法計算后得出的各個評價指標權重值,這一類權重值能滿足大部分的軟件系統評價。
用戶自定義權重值,則是需要用戶自己指定所要評價軟件哪些項指標更為重要,設定好權重后,從而通過后續算法評價出軟件的優劣性。使用自定義權重,這樣可以避免有些對于某些評價指標有特殊要求的軟件不能公正得出評價數據。自定義權重模塊如圖4所示,單元格中權重如何設置如圖中界面左下角所示。

圖4 自定義權重值模塊
實現該模塊的核心代碼:
//計算權重值
private double[] getWeight(double[,] params)
{
int N = params.GetLength(0);
// 存儲得到每行元素乘積Mi
double[] RowMultiply= new double[N];
// 存儲得到計算Mi的n次方根
double[] Square= new double[N];
// 存儲正規化處理結果
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);
// 正規化處理結果
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 水晶報表打印報表模塊
此模塊把專家打分的原始數據、計算出來的優度值和評價結果通過計算體現出來,采用了水晶報表工具來創建報表。被請求時,水晶報表直接根據指定的驅動連接數據庫后組裝這些數據,顯示時能夠清晰的顯示出數據庫存儲的數據,界面如圖5所示。

圖5 水晶報表顯示專家打分數據
3.3.5 水晶報表打印一級權重和各二級權重數據
優度值數據表、評價等級數據表中各項對應的值越大說明該項在軟件綜合方面占有的比值越大。最終評價結果也是根據圖6兩表中數據比較得出。

圖6 權重數據表和優度表
實現該模塊的核心代碼:
1)計算關聯函數的K值的算法框架:
/*
* @param x 評價分數
* @param a 經典域中a
* @param b經典域中b
* @param c 節域
* @param d 節域
*/
private double relativity (double x,double a,double b, double c,double d)
{
double p, d, q1,q2, k;
//求右側距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;
}