2005年2月第27卷 第2期系统工程与电子技术Systems Engineering and Electronics Feb.2005Vol 127 No 12收稿日期:2004-03-12;修回日期:2004-07-04。
基金项目:国家自然科学基金资助课题(70272002)作者简介:蒋国萍(1975-),女,博士研究生,主要研究方向为系统建模与决策,项目管理和风险管理等。
文章编号:1001O 506X(2005)02O 0353O 04基于面向对象贝叶斯网络的软件项目风险评估蒋国萍,陈英武(国防科技大学人文与管理学院管理系,湖南长沙410073)摘 要:针对软件项目的特点和软件项目风险定量评估任务,提出了基于面向对象贝叶斯网络的风险评估方法。
该方法通过分析软件项目生命周期中的具体风险与风险因素之间的因果关系,建立面向对象贝叶斯网络拓扑结构;由专家判断和工程经验确定网络中的概率参数;采用概率推断工具,可定量估计风险的发生概率。
给出了风险贝叶斯网络的建模过程,讨论了风险贝叶斯网络可以完成的风险管理任务。
通过一个简单例子说明了该方法的应用。
关键词:软件项目;风险评估;贝叶斯网络;面向对象中图分类号:O21116 文献标识码:ASoftware project risk evaluation method based onobject -oriented Bayesian networkJI ANG Guo -ping,C HEN Ying -wu(School o f Management,N a tional University o f De f ense T echnology ,Changsha 410073,Ch ina)Abstract:A risk evaluation method based on objec -t oriented Bayesian ne twork is put forward for evaluating soft -ware project risk quantitatively.The objec -t orie nted Bayesian ne twork .s topology is construc ted by a nalyzing the causalrela t ion be tween risk and risk factors,and the probability pa ra meters are de termined by e xperts .judgment and e xper-i ence.Then the occurrence probability is calc ula ted with probability inference tool.The modeling procedure of risk Ba yesian ne twork is prese nted,and a si mple example is given to sho w the method .s applic ation.Key words:software project;risk e valuation;Bayesian network;objec -t oriented1 引 言软件行业已经充分意识到风险管理的重要性与必要性。
软件工程研究领域大批学者和研究机构对风险管理进行了广泛研究。
目前的风险分析方法主要有定性方法、基于树的方法和动态系统技术3大类[1]。
定性方法用于辨识系统中的潜在危险和失效是有效的,但缺乏考察事件之间依赖性的能力。
基于树的方法弥补了这一缺陷,考虑了事件之间的依赖关系。
基于树的方法主要用于找出导致不期望事件的截集。
故障树和事件树已被广泛用于概率风险评估中量化事故发生的概率和不期望事件导致的寿命折损和经济利益的损失。
然而,故障树和事件树只能用于事故场景的静态、逻辑的建模,并且影响人类行为的因素不能被明确地建模,这就影响了事件之间独立性的评估。
动态系统技术则比较适合用来处理动态系统,允许循环和反馈回路。
近20年来,贝叶斯网络(Bayesian network,B N )在人工智能领域受到了广泛关注,得到了深入研究,已有大量成熟的研究成果。
贝叶斯网络是图论与概率论相结合的产物,直观地表示为一个复杂的赋值因果关系图,图中各节点表示所讨论的问题域中的变量或事件。
节点之间的弧表示事件之间的直接因果关系。
贝叶斯网络的实质就是所研究领域的概率分布。
贝叶斯网络由于其坚实的数学理论基础,被认为是在不确定性环境中实现知识表示、推断、预测等最理想的工具。
它已在数据挖掘、故障诊断、图像识别等领域得到了较好的应用。
在软件工程领域,贝叶斯网络也被成功地用于软件质量预测、软件错误预测等方面[2,3]。
Fenton [4]对软件度量的传统分析方法进行了批判,提出结合软件度量和因果模型建立贝叶斯网络进行软件项目风险分析[5]。
贝叶斯网络考虑了人类的决策行为,并对其进行明确建模,从而可以更充分地利用专家知识和工程经验。
同时贝叶斯网络根据风险因素之间的因果关系,描述了风险的产生机制,可为管理决策提供更多的辅助信息。
但大型复杂的贝叶斯网络很难构建和维护。
贝叶斯网络经常要用到相似或相同的BN 片断,如果采取拷贝/粘贴操作,则对BN 片断的任何修改都需要在多处进行更新。
因而对于软件项目风险管理这样复杂的系统,本文考虑采用面向对象的建模思想。
面向对象贝叶斯网络[6](objec-t oriented Bayesian network,OOBN)较一般BN具有以下优势。
(1)支持自顶向下建模过程[7]。
自顶向下建模过程也就是逐步求精的过程。
整体网络确认之后,可以对每一个网络片断进行修改,可以在这些网络片断尚未完全定义之前利用其来构建BN,然后再精炼网络片断;(2)对复杂模型采取小的易于理解的模型片断进行构建,有利于专家知识的获取以及建模人员与领域专家的交流。
领域专家和B N建模人员之间的交流对建立正确的模型至关重要。
由于人思维的局限性,就一个较小的领域询问专家,可以得到更准确的信息;(3)采用面向对象思想,可以比较容易地对复杂系统建立B N模型,降低建模的难度和复杂性,增强模型的重用性。
对模型进行递增式的修正时,可以在类的实例上进行,无需对整个复杂的模型进行大的改动;(4)充分考虑OOB N的封装特点和层次性,可以采用更有效的概率推断算法。
BN的概率推断是一个NP问题。
OOBN的思想提出之后,已有一些学者提出了专门针对OOBN的推断算法,由于充分考虑到了封装特性,其收敛速度和时间效率都比一般的BN推断算法要好。
B N在软件工程领域已经有了成功的应用[2,3],另有学者将B N与其它分析决策技术相结合(如多准则决策[8])应用于软件项目风险管理。
但就目前所能查阅的资料,尚未看到将OOBN应用于软件项目风险管理的文章。
2面向对象贝叶斯网络介绍2.1OOBN的相关概念OOBN建模中[7]的类是一个BN片断,其内部可能包含其它类的实例。
也就是说,类是一段包含一些特殊节点和特殊连接的B N。
特殊节点有输入节点、内部节点和输出节点3类。
特殊连接为有向连接、构建连接和参考连接3类。
为区别起见,本文称一般BN中的节点(问题领域的随机变量)为简单节点。
简单节点与简单节点之间的连接称为简单连接。
输入节点都是简单节点,内部节点可能是简单节点也可以是其它类的实例。
由于类的封装特性,即类中的节点没有该类之外的父节点,因此又引入了参考节点这一概念。
参考节点是类中节点的类外父节点在该类中的映射,它与被映射的节点(即被参考节点)存在参考连接。
参考连接是参考节点与被参考节点之间的连接。
当类中包含的实例的输出节点就是该类的输出节点时,则该类的输出节点也是参考节点。
构建连接,若A与B之间存在构建连接,说明A与B存在某种联系。
这里,A,B可以是简单节点、实例等。
文中类的实例和对象是两个相同的概念。
类存在层次结构。
父类与子类之间存在继承关系。
这些都与一般面向对象建模思想相同。
2.2OOBN概率推断构建了OOBN后,通过OOB N概率推理,解决问题。
目前主要存在如下两类OOB N推断算法。
(1)标准的BN推断算法由OOB N构建其潜在的BN,然后采用一般BN的概率推断算法进行OOB N概率推断。
构建类T的潜在BN,记NB T,采用以下算法[7]。
¹对应于T中每一个输入节点、输出节点和一般节点,在NB T中添加相应节点;º针对包含在该类中的类的实例的每一个输入节点、输出节点和一般节点,在NB T中添加相应节点;»在类中的非参考节点之间添加连接;¼对每一个参考树,检查节点与其参考节点是否是相同类型,如果是,则将参考节点与被参考节点合并为一个节点。
参考树是参考节点与被参考节点组成的有向连接图。
由上述算法得到OOB N的潜在BN,然后采用标准的贝叶斯推断算法,进行风险分析与评估。
(2)面向对象的BN推断算法OOBN结合了B N清晰的概率含义和面向对象框架的组织结构。
由于OOB N中蕴含了许多结构信息,尤其是对象中被封装的变量以及模型片断在不同上下文中的重复使用,都有助于加快推断过程。
面向对象模型帮助揭示了研究领域的局部结构,因而支持更有效的概率推断。
但这方面的算法目前较少,软件更不易获得。
3软件项目风险评估面向对象的贝叶斯网络方法3.1任务的描述根据一般软件项目风险管理过程,在辨识出项目中潜在的关键风险之后,便需要对其进行分析评估。
本文充分考虑风险与风险因素以及各风险因素之间的因果关系,为风险建立面向对象的贝叶斯网络模型,理清风险产生机制,分析评估风险。
其中风险OOB N可以完成如下的主要风险管理任务。
(1)预测风险发生的概率风险度量一般采用的公式是风险量=风险概率@风险损失。
根据领域专家和项目技术人员的知识经验构建风险B N,由B N概率推理进行不确定性传播,得到风险的发生概率以及在观测到相关证据后,风险发生的最大后验概率等。
(2)预测最可能发生的风险场景风险B N能够展示风险的产生机制,通过对B N的最可能发生事件(most possible event,MPE)预测,获得潜在风险未来发生发展的场景,以利于风险的监控以及风险反应计划的制定。
(3)寻找关键风险因素风险因素是导致风险发生的原因,一个风险的发生总存在关键的风险因素。
通过对风险B N的灵敏度分析,找到那些关键风险因素,对其实行控制以避免风险的发生、减轻风险损失。
(4)预测风险控制措施的效果,进行项目管理决策在实施风险控制措施之前,通过对特定控制措施在风险B N上进行模拟仿真、概率推断,预测控制效果,以便科学地选择风险控制方案,提高决策的有效性。