为了验证本文提出的算法的有效性,我们用matlab生成了模拟数据。假设每个项目可以用一个六维向量表示:
对于风险小的类别,即 y=1时,软件的六个风险因素符合期望分别为
,每个分量的方差分别为1的正态分布。
,每个分量的方差分别为1的正态分布。 对于风险一般的类别,即 y=2时,软件的六个风险因素符合期望分别为
,每个分量的方差分别为1的正态分布。
,每个分量的方差分别为1的正态分布。 对于风险很大的类别,即 y=3时,软件的六个风险因素符合期望分别为
,每个分量的方差分别为1的正态分布。
,每个分量的方差分别为1的正态分布。 本文对每个风险等级类别随机生成了100个样本,这样总共有300个样本。比如对于风险因素F1软件产品规模,假设软件产品规模是一个随机变量,在风险较小的情况下软件产品规模也比较小,所以按照以上假设,它符合一个N(1,1) 的正态分布;在风险一般的情况下,软件产品规模适中,按照以上假设它符合一个 N(2,1) 的正态分布,同理在风险较大的情况下软件产品规模也非常大,用N(3,1) 的正态分布表示。均值的大小体现了在不同风险等级下软件的平均规模。对于其他因素的均值也可以类似理解。则显然可以推出风险因素的重要性排序应该是:

应用文章中信息熵的方法计算出每个风险因素的分值。为了计算每个风险因素Fj的重要性评分,我们取出Xj的最大值max和最小值min ,然后将值区间分为10等分,得出风险因素 落入每个值区间的概率,这样就把一个连续的随机变量转化为一个离散的随机变量来计算,从而得出信息熵。表1显示其运行结果。
表1 各项目风险因素的重要性

每个风险因素的评分给出了该风险因素的一个重要性评估,此方法成功的给出了一个正确的评估。根据这个结果可以说明:软件产品规模( F1)在软件项目的重要性评分为0.088706,业主需求(F2)在软件项目中的重要性评分为:0.029911,软件项目需求分析(F3)在软件项目中的重要性评分为:0.021996,技术(F14)在软件项目中的重要性评分为:0.020708,开发方式与开发环境( F5)在软件项目中的重要性评分为:0.015648,人力资源管理(F6 )在软件项目中的重要性评分为:0.012043,从而可以认为在软件项目管理中对软件产品规模的控制的重要性比对人力资源管理的重要性大得多,那么在进行软件项目开发时可以通过加强对软件产品规模此风险因素的管理来更好地控制软件项目开发的风险。由于该模拟数据不适合做SVM分析,因此本文不对模拟数据进行SVM分类.
第二部分:下面利用其他项目的数据[3]来进行分析,在这个数据集中,每个风险因素对应5个等级,分别对应0.1,0.3,0.5, 0.7,1,每个值都有专家评分取得。该数据集中有14个数据,利用其中的10个作为训练数据,4个作为测试数据。数据如表2所示。
表2 样本项目的各个指标及项目风险水平值

为了评估SVM的有效性,随机地从14个数据中取出10个作为训练数据,剩下的4个作为测试数据,总共进行了12次这样的随机选取,发现在10个训练数据上的训练正确率均为100%,而平均测试正确率为97.92%,效果非常好,显示出此方法可以非常可靠地对软件项目风险进行评估,同时用这14个数据得出了每个项目风险因素的重要性对比,如表3所示。
表3 各项目风险因素的重要性

由上面结果可以发现,技术因素的值为1,这表明技术可以完全决定软件项目风险等级,说明了技术在软件项目开发中的重要性,同样,人力资源管理在软件项目风险管理中的作用也不可忽视。
6 结论 本文不仅利用了SVM来预测软件项目风险,而且给出了各个风险因素的评估。虽然在对软件项目风险因素重要性进行分析的方法中,本文只是采取了简单的方法对连续变量进行了离散化,这个过程中可能会有一些信息丢失,但根据实验结果说明本文的方法在此数据集上具有效率高、预测准确和可靠性高的特点,因此在今后的学习中会提出更好的算法以得到更好的离散化变量。同时为了进一步完善风险预测的支持向量机方法,今后将会利用更多的数据集测试算法并对支持向量机作交叉验证,找出该方法的优缺点,以求能有进一步地提高。
参考文献
[1]冷晓彦.企业信息化项目风险的模糊综合评价[J].情报科学,2005,23(7):977-981.
[2]张丰,李红梅.层次分析法在风险投资项目评估中的应用[J].商业研究,2005,24(332):12.
[3]张丽霞,施国庆.基于支持向量机的工程项目风险预测研究[J].计算机工程与应用,2005,21:224-226.
[4]Jacek Biesiada, W_odzis_aw Duch, Adam Kachel, Krystian M¸aczka, Sebastian Pa_ucha, Feature ranking methods based on information entropy with Parzen windows [C], Katowice,Poland, International Conference on Research in Electrotechnology and Applied Informatics, August 31, September 3, 2005:2.