武 岳
(河南工业贸易职业学院信息工程学院,河南 新郑 451191)
软件技术在社会的不同领域快速发展、应用,它在系统安全、工程和开发方面扮演着越来越重要的角色,特别是对于大型和复杂的系统。在软件工程中,评估在软件开发中起着不可或缺的作用,是基于不完整的、不确定的以及大量的数据输入来预测开发或保持软件所需的工作量的过程,是软件项目管理的一个重要部分。
软件开发项目所需的工作量评估对于成功整体安排交付极为重要。在软件行业内急需改进软件整体性能评估的技术,这也是对软件行业的一个重大挑战。现有的评估方式经常会导致预算超支、交付延迟、不满足法律约束力等,并间接影响软件的质量。因此,软件开发项目失败的一个常见的原因就是因为软件评估方法不正确。
评估工作直接影响到软件开发过程生命周期的多个方面:根据投资方向,决定软件的开发决策,确定项目预算和产品市场价格,影响软件项目计划与交付。在实际工作中,到软件项目结束时,软件评估的工作量往往比预期的要少很多,在这种情况下,软件开发团队在工作中就会遇到很多问题,如增加预算和延迟交付等。根据Jorgensen 的研究,软件评估计划工作量与实际工作量偏差30%左右[1]。准确的项目工作评估会影响到对现有资源的有效使用,为了满足设计的需求,在定义软件模块的实践中引入软件开发模型。程序代码的核心包括:描述、架构、实例、测试等。
在一些大型软件公司,虽然软件工作评估模型已经开发很多年了,但是在实际工作中关于成本和时间方面的控制效果都不是很理想,也对业务的开展带来了一定的影响。根据Standish Group CHAOS发表的一项调查报告指出,在8 000 个软件项目中,只有16%的完整的软件项目在预算和时间内交付;31%的软件项目在完成前就取消了;53%的软件项目在预算和进度上超支;大约60%的大型软件项目基本上超额完成了他们的估算;15%的软件项目由于对开发成本的严重错误估计而无法完成,导致软件项目失败。导致这种失败困境的因素有很多,错误的和不准确的软件工作量是导致这种失败的重要原因[2]。
通过关系法进行的软件工作评估称为模糊灰色关联分析(Fuzzy-Grey Relational Analysis,FGRA),它可以克服以往关系方法评估的困难,特别是现有的相似性方法中的不足之处。相似性的基本思想是与关系法的评估过程联系在一起的,目标项目和其他源项目之间的成功关系取决于它们之间存在某种程度的可比性因素。
FGRA 软件工作评估模型(以下简称“FGRA模型”) 由3 个基本阶段组成:数据准备阶段、属性选择阶段和软件工作评估预测阶段,见第6页图1。处理后的数据集在属性选择阶段被用于确定最佳预测属性及其相应的权重。可以看出,属性子集的选择利用了所提出的相似度量,产生了相似网格。属性选择阶段中减少的数据集被用于软件工作评估预测阶段,以真正执行软件工作评估预测[3]。
图1 FGRA软件工作评估模型框架
用于构建和调整软件工作评估模型的大型记录数据集在数据收集过程中有时是不完整的、不充分的和不精确的,这通常是由于数据收集工具的不足和测量标准的缺失,如果使用了缺失值可能会导致软件工作评估出现严重的错误。通常可以使用不同方法处理缺失值,例如多类逻辑回归、列表记录删除、回归属性、期望最大化算法等。在软件工作评估中普遍使用的技术方法是列表记录删除,该方法操作起来较为简单,可以删除整个项目中所有缺失值的样本,即忽略整个项目记录或缺失值的属性,并从数据集中排除。当缺失值较少时,该方法得出的结果令人满意;当缺失值增加时,该方法得出的结果就会造成较大偏差。虽然该方法直接有效,但是可能会造成有价值数据的丢失,从而导致软件工作评估的准确性下降,影响成本模型的建立。
这个阶段包括确定软件工作评估预测属性以及相应的权重。本文提出了一种新的属性选择算法,该算法基于项目选择属性的网络中心性和基于项目相似度模型的属性一致性,提出了与肯德尔线性相关系数的属性加权方法。同时,采用欧氏距离对软件工作评估方法的效率进行测算,并将所提出的算法整合到FGRA 模型中。在该模型中,采用提出的相似度来构建网络,在结果中减少了具有相应属性和权重的数据集。
一旦确定了预测属性,目标项目pt和所有可验证的源项目pi之间的相似度将根据这些属性进行评估。也就是说,先根据不同属性的类型,精确计算每个邻近的相似度(aj(pi),aj(pt)):aj×aj→[0,1],aj∈A;再利用FGRA 对它们的值进行汇总。如果可以计算出相似度Γ(pt,pi),i∈{1,2,…,n},那么源项目pi与目标项目pt按照两者相似度进行排名。
为了预测目标项目pt的工作量,应从中选出前N 个可比较的项目TOP(pt),并将其相应的工作量值存储在E(pt)中。首先必须决定将用于预测E(pt)的类比项目数量N。从本质上来说,确定合适的类比项目数量可以从两个角度来确定,主要的方法涉及所有属性特定的项目在一定的可比性阈值β 范围内,TOP(pt)={pi∈|Γ(pt,pi)≥β}。在一些其他方法中,可能会造成某些项目提供的数据被忽略,如果这些具有相似度的项目提供的数据是可用的、必要的,那么忽略这些数据就会造成软件工作评估的数据缺失,因此,在类比时需要特别注意相似度项目数据问题。因此,当数据集的规模很小的时候,只考虑少量的类比是比较合理的。可以是使用1 个、2 个、3 个类比,或者单一的相似性来产生预测,都是可行的。在本文中,采用的是第二种方法,使用1、2、3 进行类比[4]。
软件工作预测的另一个重要问题是选择转换技术,它将从一组TOP N 个比较项目的工作量E(pt)中产生一个估计值。差异化是一种用来推导得出新的预测值的新机制,通过这种方式,使检索到的项目与当前项目之间的差异实现最小化,这是根据关系模型进行软件工作评估预测的重要步骤,因为它反映了目标项目在检索到的源项目中的结构。需要注意的是,当类比的数量N=1 时,则完全不需要差异化技术。在软件工作评估中,软件成本估算通常使用的转换技术是:当N≥2 时,得出的结果最接近类比的平均值,N>2 时的中位数、N≥2 时的反距离加权平均值和反位置加权平均值都需要考虑对每个项目的影响,其中较高相似度比较低相似度具有更好的影响力。例如,有6 个类比项目,反向排名的权重平均值的计算如下:有3 项的估算值最为接近,2 项其次,1 项再次之[5]。
在软件工作的可靠性评估过程中,通过过程化目标评估软件开发的实际工作量,其中包括数据采集、数据集中、数据分析、数据可视化,然后对数据进行预处理,迭代实验以满足软件开发的基本要求、实际需求。每个项目的实际工作量记录为一个常数数值,然后转换为分类值[6]。定义3 个类别,每个类别对应的是每个项目所涉及的实际工作量的级别。通过对数据的分析、研究,发现需要对数据进行更多的预处理。根据项目模式和FGRA 模型,将这些由FGRA 模型给出的数据中的乘数转换为相应的数值,发现乘数的值与实际工作量的预测不相关,因此,可以使用乘数来构建一个新属性,称之为项目乘数,然后删除第一个单独的乘数。由于项目参数会影响代码,新构建的乘数属性乘以等效的物理代码属性,并利用日志功能将结果转化。图2为3 个工作类别的密度图。
图2 3 个工作类别的密度图
同时,预测结果表明,软件工作评估预测与项目规模、时间周期、代码大小有密切联系,其映射图也显示出负向性关系,见图3。
图3 软件工作评估映射图
本文通过将模糊集理论和灰色关联分析的技术与现有的FGRA 软件工作评估模型估算方法相结合,提出了新的高效和灵活的方法。此外,结合属性子集选择算法和权重技术相结合,提出一个全面的、综合的、完善的模型,可以克服以前类比估计方法的主要障碍。