基于BNs 软件模块故障倾向排序模型 罗云锋,贲可荣(海军工程大学计算机系湖北武汉 430033 ) 摘要: 如何将有限的资源分配给那些最有可能出现故障的模块,是软件测试和维护人员最为关注的问题之一。本文提出以贝叶斯网络为基本定量模型预测软件模块故障倾向,建立模块故障倾向排序模型,根据模块故障倾向排序队列来分配维护资源。实验研究数据说明了贝叶斯网络故障预测模型在模块排序模型中的可用性。关键字: 软件维护贝叶斯网络模块故障倾向排序模型 1 引言 在软件维护活动中,由于时间和资源都是有限的,不可能将资源分配给所有的模块。如何将有限的资源分配给那些最有可能出现故障的模块,是软件测试和维护人员最为关注的问题之一。 Khoshgoftaar 等人提出采用模块故障倾向排序模型来指导资源分配[1]。模块排序模型是一个基于软件产品和过程的质量模型,它根据质量因子如(故障数)来预测模块排序。模块排序模型的输入是一个带有产品度量属性和过程历史属性的模块集。模块排序模型包含一个基本定量模型,这个基本定量模型预测集合中每个模块的质量因子,随后根据预测的值对模块排序。模型的输出是集合中模块的一个排序序列,而不是预测的质量因子的值。 Khoshgoftaar 等人的工作主要集中在排序模型中基本定量模型的建立上,总结了多线性回归、神经网络和多目标优化等基本定量模型[2] 。贝叶斯网络是一种不确定性因果关联模型,具有强大的不确定性问题处理能力,能有效进行多源信息表达与融合[3]。本文采用贝叶斯网络预测软件模块故障倾向,以此建立模块故障倾向排序模型。 2 基于贝叶斯网络的模块故障倾向排序模型 排序模型的基本框架如图 1 所示。该框架主要是将贝叶斯网络软件故障预测模型应用于模块排序模型的基本定量模型。领域专家根据先验知识和软件模块故障信息以及软件生命周期相关信息确定整个网络的结构和节点概率分布[4] 。由测试集来判断其精确度和性能。基本的应用步骤为: ( 1)确定划分模块的方式。划分模块有很多方法,如将一个源代码文件看成是一个模块,将一个 Ada 包认为是一个模块等等。 ( 2)预处理模块。 Khoshgoftaar 等人研究表明:模块的复用历史是软件质量模型的重要参数,在项目的多个版本中都没有修改的模块是极其可靠的[1]。因此,在应用排序模型之前去掉那些比较可靠的模块将会减少计算量,也会减少模型的输入噪声,增加预测精度。 ( 3)收集模块的相关信息,包括从需求分析到测试各阶段的信息。( 4)领域专家建立贝叶斯网络故障预测模型,本文采用如图 2所示的贝叶斯网络模型[5] 。排序模型根据故障预测模型的预测结果建立模块排序队列。( 5)构造模型评估方法使用测试集评估排序模型的精度和性能。模块排序模型带有产品度量和过程历史属性的模块集基于 BN 软件模块故障预测模型模块集排序序列图1 基于贝叶斯网络软件故障预测模型的排序模型 图2 贝叶斯网络故障预测模型 3 模块故障倾向排序模型评估方法 通过判断模型对模块排序能力来判断模型的有用性,即对模块故障倾向程度的排序能力。本文采用下面的方法来评估一个排序模型[1] 。( 1)确定在测试数据集下的实际模块队列 R ,它由第 i 个模块的实际故障数 F i 确定。( 2)确定在测试数据集下的预测模块队列,它由第 i个模块的预测故障数? R ?() i
附件3:广东外语外贸大学推荐优秀应届本科毕业生免试攻读硕士学位研究生实施办法(2014年9月修订).pdf 来自淘豆网www.taodocs.com转载请标明出处.