基于支持向量机的软件项目风险评价

打印本文 - 下载本文〗〖0条评论 - 150推荐〗〖字数:3100字〗

软件风险是指软件开发过程中及软件产品本身可能造成的伤害损失,由于软件项目开发和管理中存在着诸如技术、内部管理及外部环境等种种不确定因素,使软件行业成为高风险的产业,如果风险变成了现实,就会产生恶性后果或损失,因此应对软件项目风险进行评价以便于更好地进行软件项目地开发及管理。目前的风险评价及分析方法主要有调查和专家打分法、模糊数学法[1]、层次分析法[2],定性方法、基于树的方法;专家打分法、模糊数学法、层次分析法人为因素多而且手工计算繁琐。定性方法用于辨识系统中的潜在危险和失效是有效的,但缺乏考察事件之间依赖性的能力。基于树的方法弥补了这一缺陷,考虑了事件之间的依赖关系,但基于树的方法主要用于找出导致不期望事件的截集,然而这种方法只能用于事故场景的静态、逻辑的建模,并且影响人类行为的因素不能被明确地建模,这就影响了事件之间独立性的评估。

本文提出的信息熵的方法用来对软件各个风险因素重要性进行计算,它具有运算量小,结果直观易解释以及易评估的性质,排除了人为的主观因素。本文利用支持向量机(SupportVectorMachine简称SVM)方法来预测软件风险,它是建立在统计学习理论的VC维理论和结构风险最小原理(SRM)基础上[3]。兼顾训练误差和泛化能力,根据有限的样本信息在模型的复杂性和学习能力之间寻求最佳折衷。在解决小样本、非线性、高维数、局部极小值等模式识别问题中表现出许多特有的优势。因而在许多领域得到了成功的应用。同时,为了评估各个风险因素的重要程度,本文采取了信息熵的方法,这种方法具有计算量小和易解释性,弥补了专家打分法中因人为因素造成的主观性。

本文其它内容如下。第二部分介绍软件项目风险评价指标体系的建立,进而从各个侧面较完整地反映出软件项目的风险。第三部分和第四部分分别描述了基于信息熵的软件项目各风险因素的重要性评判以及基于支持向量机的软件项目风险类别的评估。第五部分是根据建立的模型利用数据进行实例研究。第六部分对本文进行了总结。

软件项目风险评价指标体系的建立软件项目的风险评估指标应能从各个侧面较完整地反映软件项目的风险,同时需要按照一定的标准将风险分类。

在软件项目开发过程中,一般有以下六个风险因素会直接影响软件的风险,分别如下:

1)软件产品规模(F1)根据以往开发项目的经验所知项目的风险是直接与产品的规模成正比的。软件产品规模有以下几个因素决定:产品规模估算的信任度、软件产品的用户数、复用的软件数、产品规模与以前产品规模平均值的偏差。

2)业主需求(F2)每位业主都有自己不同的需求,开发商为了满足不同业主的不同需求。决定业主需求的因素有:业主供应条目或信息、内部或外部转包商的关系、交互成员或交互团体依赖性、经验丰富人员的可得性。

3)软件项目需求分析(F3)软件项目需求分析就是分析人员在用户和软件设计人员的配合下对自己生成的需求规格说明和初步的用户手册进行复核,以确保软件需求的全面性、精确性和一致性,若此工作进行不好,就会对项目的成功造成很大的阻碍。主要包含以下几个方面的风险因素:产品需求的认知程度、需求分析中客户的参与程度、需求变化的分析程度、安全性及可靠性需求的分析程度。

4)技术(F4)技术对于一个软件项目的顺利完成是至关重要的,所以说如果技术出现问题那么就会引发一系列的风险问题。主要有下面这些风险因素:对方法、工具的使用状况、应用领域的经验状况、系统的稳定性状况。

5)开发方式与开发环境(F5)开发方式和开发环境风险是由于软件项目所处的环境与自身的开发方式状况而导致实现软件项目预期目标中所带来的不确定性。主要风险因素有:软件项目团队的稳定性、项目过程的控制程度、项目资金的稳定程度。6)人力资源管理(F6)人力资源管理风险是由于在软件项目开发过程中由于对开发人员及相关人员管理不当及管理混乱从而对软件项目开发造成的风险。其主要的风险因素包括:人员职能设置之间的协调性、项目所有者与决策者的关系。总体项目的风险等级分为3个类别,分别为风险较小(y=1)、风险一般(y=2)、风险较大(y=3)三类。在所建立模型中,总体项目的风险等级对应于y的取值,而六个风险因素——软件产品规模、业主需求、软件项目需求分析、技术、开发方式与开发环境、人力资源管理所属的风险类别对应于六维向量x的取值。3基于信息熵的软件项目各风险因素的重要性评判设已知有n个软件项目,矩阵的列向量Xj表示各项目的风险因素Fj(j=1.2...

6),行向量xi表示每个软件项目(i=1.2,...n),要衡量每个风险因素Fj(j=1.2...6)的重要性,本文利用信息论中信息熵的方法来评判。列向量中的分量分别表示第i个项目的风险等级:yi=1表示第i个项目的风险等级较小,yi=2表示第i个项目的风险等级一般,yi=3表示第i个项目的风险等级较大。则对于项目的风险等级Fj,它的熵为;对于项目各风险因素Fj,它的熵为;()对于项目各风险因素Fj中在各个风险等级的风险为:;()则各风险因素Fj的重要性评分为:;()越高表示该因素重要性越高。

4基于支持向量机的软件项目风险类别的评估支持向量机是一种分类方法,假定软件项目风险评估问题,其中xi(i=1.2,...n)代表第i个项目的六个风险因素,为六维向量,代表每个项目的风险类别,最简单的线性分类器是希望找到一条直线,其中βn为一个数量β为一个六维向量,这样对一个新样本x#39;的分类可以用来表示。为此还需要解决如下问题:使得支持向量机很容易就可以用来解决多点分类问题,实际运用中支持向量机可能不是线性的,它通过核函数将原来的样本映射到另外一个核空间中,这里我们对核函数不做深入讨论,我们选择了线性核函数在本文的研究中,先从已有的软件项目数据作为训练样本来训练支持向量机,然后用训练好的支持向量机来预测新的软件项目样本,从而进行准确性验证。

案例研究

为了验证本文提出的算法的有效性,我们用matlab生成了模拟数据。假设每个项目可以用一个六维向量表示:对于风险小的类别,即y=1时,软件的六个风险因素符合期望分别为,每个分量的方差分别为1的正态分布。对于风险一般的类别,即y=2时,软件的六个风险因素符合期望分别为,每个分量的方差分别为1的正态分布。对于风险很大的类别,即y=3时,软件的六个风险因素符合期望分别为,每个分量的方差分别为1的正态分布。本文对每个风险等级类别随机生成了100个样本,这样总共有300个样本。由上面结果可以发现,技术因素的值为1,这表明技术可以完全决定软件项目风险等级,说明了技术在软件项目开发中的重要性,同样,人力资源管理在软件项目风险管理中的作用也不可忽视。

结论

本文不仅利用了SVM来预测软件项目风险,而且给出了各个风险因素的评估。虽然在对软件项目风险因素重要性进行分析的方法中,本文只是采取了简单的方法对连续变量进行了离散化,这个过程中可能会有一些信息丢失,但根据实验结果说明本文的方法在此数据集上具有效率高、预测准确和可靠性高的特点,因此在今后的学习中会提出更好的算法以得到更好的离散化变量。同时为了进一步完善风险预测的支持向量机方法,今后将会利用更多的数据集测试算法并对支持向量机作交叉验证,找出该方法的优缺点,以求能有进一步地提高。

版权声明: 请尊重本站原创内容,如需转载本范文,请注明原文出处:中国范文模板网
原文地址:http://www.fanwenmuban.com/lw/jsjyy/220127.html

    按字数查找计算机应用研究

    相关评论

    评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)