基于可拓理论的软件质量评价系统设计与实现
2017-02-27刘小英
刘小英,周 强,陈 强
(攀枝花学院 数学与计算机学院,四川 攀枝花 617000)
基于可拓理论的软件质量评价系统设计与实现
刘小英,周 强,陈 强
(攀枝花学院 数学与计算机学院,四川 攀枝花 617000)
软件质量评价一直是软件工程领域的难点问题;探索科学的软件质量评价方法并实现计算机化, 可为软件质量管理人员进行决策提供数据基础, 也为用户在选择软件时提供客观的比对依据;考虑到软件质量评价指标的复杂性,在综合分析了软件质量评价的各项指标的基础上,提出了基于可拓理论的软件质量评价方法,采用C++设计开发了软件质量评价系统;研究建立了软件质量评价指标体系,利用层次分析法确定各指标权重,通过专家打分,得到各指标得分数据;根据建立的评价指标体系应用可拓理论建立物元模型,利用数据及权重计算关联度,得出优度值并自动分析结果,得到软件质量的评价结论,打印水晶报表;经过录入数据测试,系统运行速度快,得出结论准确,具有较好的实用性。
软件质量;评价;系统;可拓理论
0 引言
用户选择软件产品需要反复对比做出决策,其依据的核心是系统软件质量的评价结果。而软件质量的评价是一个复杂的决策问题,因为度量软件质量的技术指标或能力指标往往具有模糊性、不确定性和灰色性等因素。目前,软件质量评价多采用层次分析法和模糊综合评判法,这两种评价方法在有些情况下不能很好地解决问题[1-2]。如层次分析法当同一层次的比较因素较多时,专家容易出现矛盾或混乱的判断,模糊综合评判涉及元素对模糊概念的肯定隶属情况,但现实情况中往往出现元素对模糊概念的肯定与否定两个方面,即以上两种方法在有些情况下不能有效解决实际存在的矛盾情况。可拓学是将物元理论和可拓集合理论相结合提出一种探讨处理矛盾问题的新方法[3-4],将其核心分析方法之一优度评价法引入到软件质量评价之中,应用简便且便于计算机实现。
1 软件评价系统的可拓评价方法
软件质量的评价是一个复杂的系统过程,包括许多影响指标,侧重点不同会产生不同的评价结果。指标越多矛盾越多,如何兼顾每项指标,得到科学满意的评价结果,是决策者经常遇到的问题。
首先建立软件质量评价指标体系,根据建立的评价指标体系应用可拓理论建立物元模型,建立关联函数并计算关联度,最后比较了权重的优度值计算结果(即评价结果)得出结论,对软件质量进行有效评价。
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 评价系统指标体系及权重
2.1 软件质量评价指标体系
不同地区,不同用户对软件质量有不同的侧重,因此软件质量量化评价标准也不尽相同。综合考虑各类软件特点,以GB/T16260系列标准为基础,结合ISO/IEC9126标准制定的软件质量评价指标体系[6-7]如图1所示。评价指标主要包括功用性、可靠性、维护性、可移植性4项一级指标,对应各一级指标的依从性等12项二级指标。
图1 软件质量评价指标体系
2.2 权重设置及计算方法
设计的系统默认权重方法采用应用广泛的层次分析法计算[8],具体又有几何平均法、算术平均法、特征向量法和最小二乘法4种,采用几何平均法编写程序。
(6)
式(6)中,aij表示所对应的判断矩阵中的标度值,wi表示所求的各级指标权重值。
3 系统设计与实现
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;
}