时间:2015-12-21 01:55:24 所属分类:计算机技术 浏览量:
摘 要:本文在分析已有软件故障预测方法后指出:论文单纯从软件开发过程的某个阶段或基于几种度量来预测软件故障是不充分的.提出综合利用软件开发过程信息构建基于BBNs软件故障预测模型.本文从一个基本的贝叶斯信念网(BBNs)故障预测模型出发,扩展基本节点,
摘 要:本文在分析已有软件故障预测方法后指出:论文单纯从软件开发过程的某个阶段或基于几种度量来预测软件故障是不充分的.提出综合利用软件开发过程信息构建基于BBNs软件故障预测模型.本文从一个基本的贝叶斯信念网(BBNs)故障预测模型出发,扩展基本节点,得到了一个较完善的故障预测模型,结合已有的关于软件度量的研究成果,提出利用软件度量和专家知识确定节点状态概率分布.仿真实验结果表明该模型与实际情况相符合,具有一定的故障预测能力.
关键词: 软件故障预测;贝叶斯信念网;软件度量
1 引言
当前关于软件故障预测的研究大都集中于软件工程领域的某个方面,毕业论文 如面向对象系统中利用各种度量属性建立模型预测故障数和故障倾向,利用测试过程中用例的覆盖率预测模块故障,利用专家经验建立专家知识库预测故障等等.软件故障的原因贯穿于软件开发全过程,仅从一个方面来考察软件故障是不充分的.近十几年备受关注的贝叶斯网络(BBNs)对于解决复杂系统不确定因素引起的故障具有很大的优势,被认为是目前不确定知识表达和推理领域最有效的理论模型.本文提出基于BBNs的故障预测方法,综合利用软件开发过程信息预测软件故障.
2 软件故障预测的研究现状
预测故障的方法可以分为两大类:(1)基于数量的技术,关注预测软件系统中的故障数;硕士论文 (2)基于分类的技术,关注于预测哪些子系统具有故障倾向.第一类已经有一些研究,但是开发一个有效的模型比较困难.第二类方法更成功一些.利用软件度量来预测故障倾向是一个重要的趋势和研究内容,当前的预测模型涉及软件设计度量,代码度量和测试度量.软件维护的历史数据,例如软件改变历史[1]和过程质量数据[2]也被用于软件故障预测.很多专家认为开发过程的质量是产品质量(这里默认是残留故障密度)最好的预测器.Ahmed E.Hassan等人提出利用启发式规则预测软件子系统故障倾向[3].还有文献提出利用测试过程中的各种数据(如测试覆盖率)来预测故障[2].
分析已有的故障预测模型,它们大多基于软件开发过程中的某一个或几个阶段的数据,或者基于一种或者几种度量,如软件复杂性度量和测试度量.但显而易见,影响软件质量的关键因素不仅仅是其几个度量.软件故障与软件开发全过程往往具有不确定的因果关联关系,导致软件故障的因素很多,单纯从软件开发过程的某个阶段或基于几种度量来预测软件故障是不充分的.BBNs本身是一种不确定性因果关联模型,具有强大的不确定性问题处理能力,能有效进行多源信息表达与融合.因此本文提出基于BBNs构建软件故障预测模型,综合利用软件开发过程信息预测软件故障.
3 贝叶斯网络
一个BBNs是一个有向无环图,由代表变量的节点及连接这些节点的有向边构成.节点代表随机变量,可以是任何问题的抽象,医学论文 如问题复杂度,观测现象,意见征询等.节点间的有向边代表了节点间的相互关联关系.有向图蕴涵了条件独立性假设,用A(vi)表示非vi后代节点构成的任何节点集合,用∏(vi)表示vi的直接双亲节点集合,则P(vi|(A(vi)∪∏(vi)))=P(vi|∏(vi)).用条件概率表(conditional probabilities table,CPT)来描述点与点之间关联,条件概率表可以用P(vi|∏(vi))来描述,它表达了节点同其父节点的相关关系———条件概率.没有任何父节点的节点概率为其先验概率.图1用BBNs描述了一个简单的关于软件产品质量的例子[4],产品质量由管理能力和开发能力确定,表1为其CPT.BBNs对构造者的信念(专家知识和经验)建模,基于这个模型它能够提供精确的数学计算和预测.
4 基于BBNs的软件故障预测方法
将BBNs应用于软件故障预测的步骤是:(1)确定变量及其顺序;(2)建立BBNs结构;(3)确定BBNs的参数(CPT).本文从软件开发过程来建立一个BBNs基本模型,并以此模型为基础扩展节点.
4·1 一个BBNs故障预测的基本模型
影响软件项目风险的基本因素可分为两组,一是与组织相关的因素,包括组织文化,管理经验和能力以及过程成熟度.二是与项目相关的因素[4].影响软件故障的基本因素可以描述为图2的基本模型.方框是可以扩展的基点.“项目特征”和“验证和确认”影响到软件开发的需求分析,设计,实现和测试过程,软件故障受开发过程的影响,这个模型涵盖了软件开发过程
4·2 扩展的BBNs故障预测模型
我们用已探测的故障数,残留故障数,职称论文 残留故障密度和测试中故障密度四个节点来描述软件故障,分别用“问题复杂度”,“设计功效”和“测试功效”节点描述需求分析,设计和测试过程.V&V[4]与问题复杂度,设计功效和测试功效三个变量关系紧密,因此本文去掉V&V节点,将这些描述V&V节点的变量(如测试覆盖率,员工能力等)用来确定问题复杂度,设计功效和测试功效的参数.
本文采用如图3所示的BBNs故障预测模型,这个模型可以解释为两个阶段:第一个阶段覆盖了软件生命周期的规约,设计和编码;第二个阶段覆盖了测试.设计规模和缺陷数节点为整数或者一个限定的范围,故障密度为实数,其他节点有下面的状态:很高,高,中等,低,很低.问题复杂度表示待开发问题集中内在的复杂度,这些问题是规约中离散的功能需求,问题复杂度和设计功效之间的不匹配将导致引入故障数和设计规模增大.测试阶段在设计阶段之后,实践中实际分配的测试功效比所要求的少得多.测试功效和设计规模之间的不匹配将会影响已探测故障的数目,引入故障是其边界条件.已探测故障和引入故障之差是残留故障数.测试中故障密度是已探测故障和设计规模的函数(已探测故障/设计规模),同样,残留故障密度是残留故障数/设计规模.这里的问题复杂度,设计功效和测试功效的粒度仍然较大,不利于确定其状态,将其继续扩展,建立相应子网来描述这些节点:(1)问题复杂度子网(图4);(2)设计功效子网(图5);(3)测试功效子网(图6).
4·3 确定BBNs参数
接下来的问题是确定变量状态的概率和变量之间关系的强度.从对软件开发过程的各种文档记录中我们可以得到一些确定性知识.对于不确定性知识,传统的方法是根据专家经验主观确定.研究人员定义了大量软件度量描述软件质量[2,5,6],将这些研究与专家知识和经验结合起来确定BBNs参数.
参考文献:
[1] Todd L Graves,Alan F Karr,J S Marron,Harvey Siy.Predict-ing fault incidence using software change history[J]. IEEETransactions on Software Engineering,2000,26(7):653-661.
[2] Fenton,NE,Neil M.A critique of software defect prediction models[J].IEEE Transactions on Software Engineering,1999,25(5):675-689.
[3] Ahmed E Hassan,Richard C Holt.The top ten list:dynamic fault prediction[A].Proceedings of the21st IEEE International Conference on Software Maintenance(ICSM’2005)[C].Bu -dapest,Hungary:IEEE,2005.263-272.
[4] Chin-Feng Fan,Yuan-Chang Yu.BBN-based software project risk management[J].Journal of Systems and Software,2004,73(2):193-203.
[5] Munson J C,Nikora A P.Toward a quantifiable definition of software faults[A].Proceedings of13th International Sympo-sium on Software Reliability Engineering(ISSRE2002)[C]. Annapolis,MD,USA:IEEE,2002.388-395.
[6]王青,李明树.基于SPC的软件需求度量方法[J].计算机学报,2003,26(10):1312-1317.Wang Qing,LI Ming-Shu.Measurement of Software Require-ment Based on SPC[J].Chinese Journal of Computers,2003,26(10):1312-1317.(in Chinese)
[7] AgenaRisk.http://www. agenarisk. com[EB /OL].2005/2006-7-15.
转载请注明来自:http://www.zazhifabiao.com/lunwen/gcjs/jsjjs/36738.html
上一篇:港航内网门户信息结构分析
下一篇:Linux下的GTK图形界面编程