【VC++开源代码栏目提醒】:以下是网学会员为您推荐的VC++开源代码-软件模块故障倾向预测方法研究 - 会议论文,希望本篇文章对您学习有所帮助。
第35卷第5期 武汉大学学报·信息科学版 V01.35 No.52010年5月 Geomatics and Information Science of Wuhan University May 2010文章编号:1671—8860(2010)05—0562—04 文献标志码:A 软件模块故障倾向预测方法研究 罗云锋1 普 杰1 贲可荣1 (1海军工程大学
计算机工程系,武汉市解放大道717号,430033) 摘要:研究了在区分故障严重程度下的软件模块故障倾向预测方法,将故障分为高严重程度和低严重程度 两种类型,用统计分析和机器学习方法分析静态
代码度量与敌障倾向之间的关系。
以公开和私有两种类型的 失效数据集作为实验数据,分析发现,故障的严重程度影响预测性能,预测不同严重程度的故障需要选择不同 的度量和分类模型,预测低严重程度故障的性能好于预测高严重程度故障的性能。
关键词:软件模块故障倾向;故障严重程度;统计分析;机器
学习 中图法分类号:TP393 利用
软件度量信息能有效地预测软件故障, 为5个严重等级,将等级1划分为高严重程度(占通过选取不同的度量、分析方法和数据集等方式, 总故障数的8.5%)和低严重程度〔6〕。
私有数据可建立较好的预测模型。
但这些研究忽略了故障 集来自于某控制
系统,记为AA,采用C语言编的特性,未区分故障的严重程度。
静态
代码度量 写,
代码规模为4 K,包含84个模块和12个故主要包括方法层度量和类层度量〔1〕。
代码行数、 障,分布在11个模块中,严重程度划分为4个等McCabe和Halstead度量是最主要的方法层度 级,分别为致命、严重、一般、轻微,将致命和严重量。
NASA MDP的多数项目已包含了方法层度 划为高严重程度(占总故障数的33.3%),一般和量(http://mdp.ivy.nasa.gov)。
Menzies和Na— 轻微错误划为低严重程度。
两组数据均收集了gappan认为,方法层度量可用于故障倾向预测, 20个度量,分为基本
代码行度量、圈复杂度度量但并没有最好的度量属性,应考虑所有静态
代码 和Halstead度量三种类型。
度量,从中选取部分度量〔2’3〕。
类层度量的主要 1.2数据分析方法度量有CK度量、MOOD度量和QM00D度量。
在获取故障数据后,将故障按严重程度等级Janes和Gyimothy研究了CK度量预测故障倾 进行划分,通过相关分析、一元Logistic回归分析向的能力〔4’5〕。
Zhou在考虑故障严重程度的前提 选取合适的度量,用多元Logistic回归、J48、下,研究了类层度量和类故障倾向之间的关系〔6〕。
Naive Bayes分析度量与故障倾向之间的关系。
本文研究了方法层度量与模块故障倾向之间的关 1.2.1相关分析系。
为了减少分类算法的影响,借鉴文献〔73的方 相关分析是处理变量之间关系的一种统计方法,采用Logistic回归、Naive Bayes和决策树三 法,用于确定两个变量之间关系的密切程度。
常种常用的分类算法构造预测模型。
用的相关分析方法有Pearson相关分析和 Spearman秩相关分析。
前者要求数据满足正态1研究方法 分布或近似正态分布,后者没有限制。
相关性分 析为构造预测模型提供度量选取依据,相关性高1.1数据源 的度量不应同时选人模型,应重点关注相关性低 为了减少数据集对预测性能的影响,采用公 的度量,它们可能包含了其他度量没有的信息。
开和私有两种类型的失效数据集‘81。
公开数据集 1.2.2 Logistic回归分析采用MDP中的JMl数据,故障总数为2 098,分 Logistic回归是一种
常用的统计分析模型, 收稿日期:2010—03—15。
项目来源:国防预研基金资助项目(513270104)。
第35卷第5期 罗云锋等:软件模块故障倾向预测方法研究 563其数学模型如下: 模型性能和效果,若关注错误分类带来的影响,则 lg(p/(1一声))=届+届X一+…+晟X。
(1) I、Ⅱ类错误率是较好的评价指标。
其中,九为自变量的个数;届、角、…、岛是系数;X,、Xz、…、X。
是预测变量。
导出预测系数和权重后, 2 实验结果最后的预测输出值为: 户=g(X)/(1+g(X)) (2) 2.1相关分析其中,g(X)=exp(届+屈Xl+…+晟X。
)。
由于JMl的数据不满足正态分布的要求,故1.2.3机器学习方法 采用Spearman秩相关分析,分析过程在SPSS Naive Bayes是一种简单、有效且在实际应用 13.0中完成。
通过相关性分析可知,度量之间有中较为成功的分类方法,它将未知其类别属性的 的高度相关,有的基本不相关。
对于高度相关的样本数据归类于具有最大后验概率的已知类别属 度量,如Halstead类型中Error—Est、Prog—性中。
Time、Effort等度量,只需要选择其中一个。
而 J48以自顶向下递归的分治方式构造〔9〕,其 对于与其他不相关的度量,如Halstead—Length训练过程是根据训练集{(zi,Yi))构造一棵决策 度量,应当重点关注。
此外,选择度量时,应尽量二叉树,这里z;是第i个采集到的度量数据向量, 减少同种类型中相关性高的度量。
Y;是相应的期望输出。
决策二叉树的所有非叶子 2.2一元Logistic回归分析节点均有两个子节点和一个判定准则。
采用一元Logistic回归预测算法,通过分析1.3评价准则 回归模型中的统计量来比较单个度量与不同严重 准确率是对所有模块正确分类的百分比,I 程度故障的关系,并为多元Logistic回归分析提类错误率是指将原本没有故障模块划分为有故障 供度量选取依据。
表l给出了分析结果。
其中,模块中的百分比,Ⅱ类错误率是指将原本有故障 P值是显著性概率统计量,P值越小,表明回归方模块划分到没有故障的模块中的百分比。
准确率 程越可被接受;R2表示回归方程的拟合程度,R2是对评价模型优劣的基本指标,但无法全面衡量 越大,表明拟合程度越好。
表1单变量分析结果 Tab.1 Results of Univariate Logistic Regression 不区分严重程度故障 低严莆程度故障 高严重程度故障 度量 截距 P值 R2 截距 P值 R2 截距 P值 R2 Lot._B1ank l ● 7 2 1 O O ● O 38 ● 8 1 l O 0 ● O3 0.026 O 0.002 Lot_Code_and—Comments 1 ● 5O 3 O O ● O1 4 ● 593 O O ● O l 0.084 0.005 0.001 Loc_Comments 1 ● 5 65 O 0 ● O 2Z ● 6 5 l O 0 ● 02 0.031 0 0.003 Lot_Executable l 7 57 O O O42 8 3 6 0 O ● O3 0.009 O 0.006 }i ● ● ● 8 23 O 0 O 48 9 1 4 O 0 O4 0.032 O 0.003 Cyclomatic_Complexity ● i ● ● ● Design_Complexity ● 798 O O ● O 42 ● 8 86 O O ● O4 0.035 O 0.002 Essential Complexity ● 6 5O O O ● O25 1 ● 742 0 O ● O2 0.027 0 0.001 Halstead—Content 8 3O 0 0 ● O31 1 8 96 O O ● OZ 0.011 O 0.007 1 ● ● 754 O O O 25 1 8 38 0 O O2 0.015 O 0.002 Halstead—INfficult ● ● ● ● Halstead—Effort ● 5 08 O O ● O 1 6 1 ● 5 92 0 O ● 0 l 6.1×10—6 O O.00l Halstead_Error_Eat 1 ● 665 0 0 ● O 37 1 ● 7 43 O O ● O3 0.762 O 0.006 Halstead—Length 1 ● 7O8 O O ● 0 38 1 ● 7 84 0 O ● O3 0.002 0 0.007 Halstead—LeveI O ● 997 0 0 ● O 35 1 ● O 9 1 0 O ■ O3 —4.95 0 0.006 Halstead—Prog_Time 1 ● 5O8 O 0 ● O 16 1 ● 5 92 0 O ■ O 1 1.1×10—5 0.015 0.001 Halstead_Volume 1 ● 665 O O ● O 37 ● 7 43 O 0 ● 03 2.5×10—4 O 0.006 Num_Operands l ● 7OO O 0 ● O 37 1■1 ● 7 75 O O ● O3 0.005 0 0.008 Num_Operators 1 ● 7O 6 O 0 ● 0 37 1 ● 7 83 O O ● O3 0.003 0 0.006 1 8 9O O O 0 48 1 9 65 O 0 O4 0.025 O 0.009 Num_Unique_Operands ● ● ● ■ Num Unique_Operators 2 ● 0 72 O 0 O 29 2 ● 168 0 O ● O2 0.045 0 0.003 垃=里!!! !:!!! ! !:!!!!:!!! ! !:!!! !:!!! ! !:!!! 从表1可看出,在不区别严重和低严重程度 相关性最大。
这表明故障的严重程度影响预测的情况下,Num—Unique—Operands、Cyelomatic— 性能,预测不同严重程度的故障需选择不同的Complexity、Loc_Total三个度量与故障倾向相 度量。
关性最大,Num—Unique—Operands、Num—Oper— 2.3度量组合用于故障倾向预测ands、Loc_Total三个度量与高严重程度故障的 采用度量组合预测软件模块在不区别严重程 武汉大学学报·信息科学版 2010年5月度、高严重程度和低严重程度故障三种情况下的 取得较好的预测性能),第四组选择Loc—Total作故障倾向,依据相关分析和单变量回归分析结果 为度量基准,如表2所示。
利用Logistic回归、选择度量,每种情况选择四组度量,其中三组包含 J48和Naive Bayes三种分类模型预测故障倾向,3个左右的度量(文献〔2〕指出,3个左右的度量可 分析过程通过WEKA工具完成‘10〕,比较准确率、 表2度量组合 Tab.2 Combination of Software Metrics 度胃组合 不区分故障 Ni:Cyelomatic_Complexity,Num_Unique_Operands,Loc_Executable,Halstead_Length 严重程度 N2:Num_()perands,Lot_Executable,Halstead-Length,Design_Complexity Ns:Cyclomatic_Complexity,Num_Unique_Operands。
Loc_Total 低严重程度 L1:Cyclomatic_Complexity。
Num_Unique—Operands,Loc_Exeeutable,Halstead-Length Lz:Num_Unique—Operands,Loc Executable,Halstead—Length,Design_Complexity Ls:Num_Unique Operands,Cyclomatic_Complexity,Loc_Total 高严重程度 Hi:Num_Operands,Halstead—Length,Loc_Total H2:Num_0lperands。
Halstead—Length,Loc_Executable Hs:Num_Unique一()perands,Halstead—Length,Loc_Total I类错误率和Ⅱ类错误率,结果如图1所示。
对比图1(b)和1(c)可知,高严重程度下的Ⅱ类错误率明显高于低严重程度的。
从总体上来看,J48的Ⅱ类错误率较低,Naive Bayes的I类错误率较低。
可见,故障的严重程度影响预测性能,预测不同严重程度的故障需要选择不同的度量组合和分类模型,预测低严重程度故障的性能好于预测高严重程度故障的性能。
3 故障倾向预测工具原型及应用 依据前面的结论,构造不区别严重程度、高严重程度和低严重程度故障三种情况的预测模型,每种情况有两种模型,模型1对应较低的I类错误率,模型2对应较低的Ⅱ类错误率,高严重程度情况下只关注较低的Ⅱ类错误率。
基于上述模型开发了区分软件故障严重程度的模块故障倾向预测工具原型(以下简称预测工具),并以失效数据集AA作为应用实例。
预测工具采用VC十十6.0开发,提供了Logistic回归、J48和Naive Bayes三种分类算法,算法实现借鉴了
开源工具WE—KA。
预测工具运行过程包括样本信息输入、模型选择、生成模型和结果输出四个步骤。
将工具应用于失效数据集AA,得到的预测结果见表3。
从表3可以看到,若采用JMl作为AA的先验信息,模型预测效果很差,Ⅱ类错误率高,有的甚至.