正在加载图片...
·328 智能系统学报 第5卷 样本;K(x,x)为核函数,核函数采用径向基函数, all nodes n);size keys)=size(contents);graphg is 如下式所示) acyclic.常见的不变量形式有程序的前置条件、后置 k(,)=exp(-Y‖x:-x‖2). (2) 条件、循环不变量和类不变量6。 利用支持向量机工具箱即可对式(1)的模式分 2.2程序潜在错误预测框架 类,对(2)的模式排序.本方法使用了LibSVM工具 在该方法中用类似C语言中的关系表达式描 包,LibSVM是台湾大学林智仁副教授等开发设计的 述不变量,这样可以使用多种方法检测不变量,利用 一个简单、易于使用和快速有效的SVM模式识别与 工具解析多种格式描述的不变量成为关系表达式的 回归的软件包,包含C-SVC,nu-SVC等多种支持向 形式.本文提出的基于不变量程序潜在错误预测方 量机工具的实现,这个软件包可以通过互联网直接 法的体系结构框图如图1所示,他主要由2部分组 从相关的网站上获取, 成:通过支持向量机训练得到能够辨识潜在错误的 模式和被测程序通过模式辨识得到可揭错误属性 2基于不变量的程序潜在错误预测框架 (fault--revealing properties).该方法包括如下步骤: 1)将含有已知错误的代码经过词法语法分析 合肥工业大学李嘉研究了基于支持向量机的软 检测编配得到含有错误的属性不变量,将去除错误 件可靠性早期预测,在提出模型的基础上,设计了一 后的代码经过词法语法分析检测编配得到去除错误 个软件可靠性早期预测软件系统,该预测系统把支 后的属性不变量; 持向量机引人软件可靠性早期预测领域,可以对软 2)将1)所述的含有错误的属性不变量和去除 件存在的缺陷数进行预测.但该系统不能对缺陷进 错误后的属性不变量分别经过槽的替换得到支持向 行具体的定位,只能给软件开发人员一个预测的缺 量机输入的特征向量,其中槽包括变量类型槽、运算 陷数量].本文提出的的方法是对单个程序属性, 符类型槽、属性类型槽和程序变量槽,下同; 通过辨识能得到存在错误的的程序属性,并通过该 3)将2)所述的特征向量经过SVM模式识别与 程序属性定位程序中的潜在错误, 回归进行机器学习得到能够辨识潜在错误的模型; 2.1程序不变量 4)将用户程序依次经过词法语法分析检测编 所谓不变量就是一些用于描述在程序运行时保 配、槽后得到用户程序的属性特征向量,将用户程序 持不变的性质的逻辑断言,它经常出现在断言声明、 属性与3)所述的能够辨识潜在错误的模型匹配去 形式化描述中,例如:y=4·x+3;x>abs(y);ar 除可揭示性错误。 ray a contains no dup licates;n=n:child:parent(for 含有已知错 含行错误属 通过槽 使刀支 误的代码 性的不变量 转换为 持向量 能够辩 支特向 机工具 识潜在 量机输 LibSVM 错误的 去除错误后 预处 去除属性后 入的特 进行机 模型 的代码 理 的不变量 征向量 器学习 词法 语法 通过槽 分析 转换为 程序属性 支持向 使用支持向 可揭 用户程序 量机工具 不变量 量机输 误 LibSV Mi进 属性 入的特 征向量 行分类 分类 图1程序潜在错误预测框图 Fig.1 The diagram of program potential error prediction 2.3属性转换为机器学习特征向量 在对机器算法的输入之前,每个属性都需要转 机器学习算法使用特征向量作为输入,因此研 换成为特征向量,另外,属性如果在当前存在于有缺 究需要将用不变量体现的属性转换为特征向量的形 陷的程序中时,称为可揭错误的属性,如果属性在有 式.特征向量是一些关于布尔型(bool),整型(int), 缺陷的和无缺陷的版本中都出现了,称为不可揭错 浮点型(oat)等的值,它被认为在多维空间中的一 误属性,如图2所示,左边的椭圆代表含有错误代码 个点.每维(dimension)被叫做一槽(slot)[]. 的属性,右边的椭圆代表去除已知错误代码的属性
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有