法和开发软件,为风险预测的贝叶斯模型建造和推理提供快捷的工具,加速了风险预测的有效性。
第二,贝叶斯网络将概率理论与有向无环图有机结合,既可以将因果知识直接用有向图直观地表示出来,也可以将统计数据以条件概率的形式融入模型,还能使人类的先验知识和经验数据无缝地结合。第三,贝叶斯网络用图形化表示随机变量间的联合概率,能够处理各种不确定性信息,网络中没有确定的输入或输出节点,节点之间是相互影响的,更适合表达软件项目风险之间的关联关系。
3 贝叶斯网络的构建原理与方法
3.1 贝叶斯网络的形式化分析
3.2 贝叶斯网络的构建原理
3.3贝叶斯网络的构建方法
对于不同的应用领域构造贝叶斯网络的方法不尽相同,但概括起来包括以下三个步骤:
(1)确定特征变量。对所要为之建模的问题领域,确定所有的特征变量,这些变量构成该问题领域的变量集,对变量集中的每个变量确定其状态和取值范围。
(2)确定网络结构。根据节点之间的概率依赖关系或先验依赖关系确定网络结构,对具备大量专家知识的问题领域,贝叶斯网络结构的构建可以由先验知识获得。大多数情况下由专家知识获得的贝叶斯网络结构正是最优的贝叶斯网络结构。
在领域专家知识或先验知识难以获得的情况下,一种更普遍的方法是直接从大量的样本数据中主动地学习出节点之间的关系构成贝叶斯网络结构,这种方法称为从数据中学习贝叶斯网络结构。
(3)计算每个节点的概率分布。对确定的网络结构计算每个节点的概率分布,包括根节点的先验概率分布和中间节点的条件概率分布。贝叶斯网络结构确定以后,贝叶斯网络的参数学习就变为在给出网络结构和样本数据集的条件下计算节点的概率分布问题。
4 软件项目风险评估
软件项目在系统分析和设计环节中经常存在项目计划制定不完善、需求不确定、技术或方法选择不恰当等因素,并且这些因素相互影响大,对风险的评估尤为重要。以制造业信息化公共服务平台项目为例,说明如何在软件项目中利用贝叶斯网络进行风险评估。
4.1 贝叶斯网络的建立
制造业信息化公共服务平台属于创新型项目,项目组在研发过程中需求变更比较频繁,开发人员对开发平台与开发技术难以把握,对平台资源整合以及业务流程自动化的可视化工作流引擎实现难度大,对软件性能的提高有较大的影响。
在项目启动时实施风险评估,首先识别项目中的风险和风险因子,设定风险关键字,即需求风险、需求变更、技术风险、技术熟悉度、软件复杂性、人员沟通、软件性能以及安全策略等。根据已有案例启动风险案例学习机制,结合专家经验生成本次评估的贝叶斯网络即风险分析网络。
4.2 风险概率的计算
软件项目风险评估是软件项目风险管理过程中的核心,评估过程分为风险发生概率评估和风险影响评估。
4.2.1 风险发生概率评估
风险分析过程是依据贝叶斯网络进行的,贝叶斯网络是表示变量间概率依赖关系的有向无环图,每个节点表示领域变量,每条边表示变量间的概率依赖关系,同时每个节点都对应着一个CPT,指明该变量与父节点之间概率依赖的数量关系。风险发生概率的评估步骤为:
(1)定义风险发生概率的模糊评语集。在缺乏项目历史数据的情况下,领域专家将使用“不可能”、“可能”等模糊性语言来评价风险发生的概率,即模糊评语集Hp={极不可能,不可能,中等,可能,很可能}。
(2)风险发生概率评估是指专家使用模糊评语集Hp,设定风险分析网络中的条件概率和先验概率,形成CPT。
(3)根据风险分析网络和CPT,通过风险概率推理算法,计算得出各个风险节点的发生概率综合评估矩阵P。
4.2.2 风险影响评估
风险影响评估包括