摘要:软件产业是全球经济发展的最主要产业之一。但是,软件开发的项目往往伴随着许多风险因素,到目前为止,软件项...软件产业是全球经济发展的最主要产业之一。但是,软件开发的项目往往伴随着许多风险因素,到目前为止,软件项目依然具有非常高的失败率。因此,为了降低软件项目的风险和提高项目的成功率,风险管理是项目管理中最重要的活动之一。发现和分析风险因素与项目产出之间的因果关系是一项重要的软件项目风险分析任务,相对于相关关系知识,因果关系可以为制定高效的风险计划和风险控制策略提供更加具有针对性的知识支持。然而,尽管因果分析被普遍认为非常重要,但是在软件项目风险分析的研究领域中,目前关于因果关系分析的研究依然比较少,尤其是智能因果发现方面鲜有深入的研究,因此这方面应当需要更多的探索。目前,Hu等学者发表的文献(Hu et al,2013)是软件项目风险管理中唯一运用智能算法的因果发现研究,该研究提出了基于“V结构”算法的因果分析模型,但是该模型只能发现二对一的因果关系。然而,在实际的情境中,如软件开发项目,一对一或者二对一模型都只是因果关系里的特例,项目的产出结果往往会受到多个原因的影响,因素之间多对一的因果关系是非常常见的。因此,本论文旨在为软件项目风险分析提出一种有效的可泛化的多因果发现方法。加性噪声模型(Additive Noise Model,ANM)被认为是一种可以有效发现一对一因果关系的算法,但是并不能区分出多对一的因果关系。为了实现因果知识发现的可泛化,本研究从加性噪声模型入手,巧妙地结合条件概率表(Conditional Probability Table,CPT)将多因果的推导问题转化成单因果的推导问题,提出了一种适用于高维带噪声数据的可泛化多因果推断算法(ANMCPT),以分析软件项目风险因素与项目绩效之间的因果关系。基于收集的样本数据,本研究构建了一个基于ANMCPT算法的软件项目风险因果分析模型,并且运用十折交叉验证的方法对模型的性能进行评估。实验结果显示,本研究提出的算法可以有效地从498个软件项目的观测数据中发现多对一的因果关系,这些发现的因果关系与现有的专家知识相符合;而且,实验发现,“缺乏有效的项目管理方法”、“规划不周全”、“沟通效率低”、“开发团队成员缺乏经验”和“团队成员缺乏相关的技能”等这些主观性的项目管理风险是影响项目绩效的直接和关键原因;此外,算法的预测准确率优于其他比较的数据挖掘算法,如朴素贝叶斯、C4.5决策树、一般的贝叶斯网络、回归分析等。这些实验结果在一定程度表明了提出的多因果发现方法具有较强的一致性发现能力和鲁棒性。本研究探索性地将加性噪声模型应用于软件项目风险分析中,提出了一种可用于发现多对一因果关系的可泛化多因果发现方法,该方法可以为软件项目风险管理和其他领域的因果分析提供建模参考;此外,其发现的知识可以为实践者制定风险控制策略提供有用的指导和建议。因此,本论文的研究具有相当的理论意义和实践意义。显示全部