一种智能手机应用开发中的代码缺陷预测方法.pdf

上传人:r5 文档编号:1285606 上传时间:2018-04-12 格式:PDF 页数:17 大小:979.24KB
返回 下载 相关 举报
摘要
申请专利号:

CN201610975788.7

申请日:

2016.11.07

公开号:

CN106502909A

公开日:

2017.03.15

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效IPC(主分类):G06F 11/36申请日:20161107|||公开

IPC分类号:

G06F11/36

主分类号:

G06F11/36

申请人:

南京大学

发明人:

李政亮; 顾庆; 陈道蓄

地址:

210023 江苏省南京市栖霞区仙林大道163号南京大学

优先权:

专利代理机构:

江苏圣典律师事务所 32237

代理人:

贺翔

PDF下载: PDF下载
内容摘要

本发明公开了一种智能手机应用开发中的代码缺陷预测方法,其步骤是:1)整理代码单元,区分标注集和目标集,定义特征指标,提取特征向量;2)基于特征向量对标注集代码单元赋予权重;3)训练带权重分类器,计算目标集代码单元有缺陷概率和无缺陷概率;4)采用自学习策略校准预测结果,重复上述步骤,直到前后两次计算的预测结果近似或达到给定的迭代次数;5)输出目标集中高怀疑率的代码单元。本发明方法使用了其他智能手机应用和目标智能手机应用历史版本的数据,在代码单元层面定义特征指标,应用机器学习技术,预测可能包含缺陷的代码单元,快速准确定位智能手机应用的缺陷代码单元。本发明计算简单,能快速有效地定位缺陷代码,适用于智能手机应用的开发和维护。

权利要求书

1.一种智能手机应用开发中的代码缺陷预测方法,其特征在于包括以下步骤:
1)整理代码单元,区分标注集和目标集,定义特征指标;
2)基于特征指标提取特征向量,并对标注集代码单元赋予权重;
3)训练带权重分类器,计算目标集代码单元有缺陷概率和无缺陷概率;
4)采用自学习策略校准预测结果,重复上述步骤,直到前后两次计算的预测结果近似
或达到给定的迭代次数;
5)输出目标集中高怀疑率的代码单元。
2.根据权利要求1所述的智能手机应用开发中的代码缺陷预测方法,其特征在于,上述
步骤1)的流程是:首先整理目标智能手机应用的代码单元作为目标集,目标集为目标智能
手机应用中未标注的代码单元,所述代码单元对于面向对象语言是指面向对象的类文件,
对于面向过程语言则指单个代码文件;
整理其他智能手机应用的代码单元和目标智能手机应用历史版本的代码单元形成标
注集;其中的其他智能手机应用的选取原则为优先考虑目标智能手机应用开发团队人员之
前开发过的应用,以及与目标智能手机应用功能类似的智能手机应用,其次考虑相同分类
目录下的智能手机应用,对于代码单元类标的获取,是从历史修复记录和缺陷报告中识别
有缺陷代码单元,有缺陷类标为1,其余的为无缺陷代码单元,无缺陷类标为0;由这些代码
单元形成标注集;
然后从智能手机应用的代码和开发过程两方面来定义代码单元的特征指标。
3.根据权利要求2所述的智能手机应用开发中的代码缺陷预测方法,其特征在于,上述
特征指标共有21个,定义如下:



4.根据权利要求1、2或3所述的智能手机应用开发中的代码缺陷预测方法,其特征在
于,步骤2)基于特征向量对标注集代码单元赋予权重,包含对其他智能手机应用的代码单
元以及目标智能手机应用历史版本代码单元赋予权重;
首先,对其他智能手机应用的代码单元赋予权重,具体分为两步:
2.1)计算代码单元适应度
对于目标智能手机应用,每一个代码单元表示为特征向量xi={ai1,ai2,…ai21},其中i
表示代码单元的序号,目标智能手机应用单个特征指标的分布用指标的均值和标准差来表
示:


其中,i表示代码单元的序号,j表示特征指标的序号,m表示目标智能手机应用的代码
单元个数,aij表示代码单元i的第j个属性;
对于其他智能手机应用,其代码单元的适应度计算规则如下:

其中,i表示代码单元的序号,j表示特征指标的序号,h(aij)为1,如果|aij-uij|<3δi,否
则h(aij)为0,aij表示代码单元i的第j个属性,k表示特征指标个数,即k=21;
2.2)计算代码单元权重
基于代码单元的适应度,其权重计算公式如下:
wi=Si/k(k-Si+1) (4)
其中,i表示代码单元序号,k表示特征指标个数,即k=21,Si表示代码单元i的适应度,
wi取值范围在0到1之间;
然后,对目标智能手机应用历史版本的代码单元进行权重赋值,如果没有历史版本数
据,则不考虑;
历史版本代码单元的权重计算方法如下:
wi=e1-d (5)
其中,i表示代码单元序号,d表示目标智能手机应用历史版本距当前开发版本的版本
距离,目标智能手机应用历史版本距离当前开发版本距离越大,权重越小,wi范围在0到1之
间,若只相隔1个版本,则wi值为1。
5.根据权利要求4所述的智能手机应用开发中的代码缺陷预测方法,其特征在于,步骤
3)的流程为:输入带权重的所有已标注类标的其他智能手机应用代码单元和目标智能手机
应用代码单元的特征向量,训练带权重分类器,对于目标集代码单元,将特征向量提交给训
练好的分类器,计算目标集代码单元有缺陷的概率P(y=1)以及无缺陷的概率P(y=0);对目标集
代码单元打上标签,如果P(y=1)>P(y=0),则预测代码单元有缺陷,类标为1,反之,预测代码单
元无缺陷,类标为0。
6.根据权利要求5所述的智能手机应用开发中的代码缺陷预测方法,其特征在于,步骤
4)的流程为:计算目标集代码单元的置信度η=|P(y=1)-P(y=0)|,选取置信度最高的10%代码
单元,将其加入到标注集;新加入标注集的目标智能手机应用代码单元的权重设为最高权
重,其设置如下:
wi=1 (6)
其中,i表示代码单元的序号。
最后,采用新的标注集和目标集,重复步骤3),直到前后两次预测结果近似,即预测标
签出现偏差的代码单元比例不超过ε,优选值3%,或者迭代次数达到T次,优选值30为止。
7.根据权利要求6所述的智能手机应用开发中的代码缺陷预测方法,其特征在于,步骤
5)的流程为:输出目标集中高怀疑率的代码单元,将预测结果以r=P(y=1)-P(y=0)值为标准,
从大到小排列,排在前列的代码单元将视为可能存在缺陷的代码单元,由开发者重点关注
和检查。

说明书

一种智能手机应用开发中的代码缺陷预测方法

技术领域

本发明涉及智能手机的应用程序开发领域,具体为一种智能手机应用开发中的代
码缺陷预测方法,该方法基于海量的开源代码和缺陷信息预测智能手机应用代码单元是否
包含缺陷,从而快速定位缺陷代码单元,有效提高智能手机应用缺陷修复效率和代码质量。

背景技术

随着科技的发展,智能手机已经成为人们互相联系、娱乐、了解时事的重要工具,
对现代人来说是必不可少的。随之而来的,智能手机应用的数量也飞快增加,功能逐渐多样
化。至2016年为止,智能手机应用数量已超300万,每年还有大量的智能手机应用登陆应用
商店,智能手机应用的开发者总数已超38.8万。智能手机应用已经与社会生活的方方面面
关联起来。

当前智能手机系统的主流是android和ios,智能手机应用主要是基于android和
ios平台开发的,一般用面向对象语言(如Java、C++和Objective-C等)开发。不同于传统软
件,像Firefox,eclipse等,大多数智能手机应用本身代码量不大,并且一般由比较小的团
队及开发经验不充足的人员开发。同时,相对于传统软件应用来说,智能手机应用通常具有
更多版本。为了增强竞争性,吸引更多用户,开发者持续更新应用并发布新版本,增加新功
能。有些智能手机应用版本更新超过200次。当前智能手机应用竞争很激烈,许多智能手机
应用有相似的功能,例如在google play上光天气预报的智能手机应用就有超过250个,在
app sotre上与天气相关的智能手机应用也超过150个。因此,智能手机用户对质量问题更
加缺少容忍性。智能手机应用代码质量和缺陷修复效率至关重要。

智能手机应用在开发和维护过程中不可避免地产生软件缺陷。代码审查是开发调
试过程中一件耗时耗力的工作。目前,缺陷代码查找以经验判定为主,多利用交互式的调试
工具,需要大量人工干预,人工定位,耗费大量时间和成本,依赖个人经验且不可重复。

发明内容

本发明所要解决的技术问题是提供一种智能手机应用开发中的代码缺陷预测方
法,该方法计算简单,通用性和扩展性强,可以有效定位缺陷代码,提高缺陷修复效率。

为实现上述目的,本发明采用如下的步骤:

1)整理代码单元,区分标注集和目标集,定义特征指标;

2)基于特征指标提取特征向量,并对标注集代码单元赋予权重;

3)训练带权重分类器,计算目标集代码单元有缺陷概率和无缺陷概率;

4)采用自学习策略校准预测结果,重复上述步骤,直到前后两次计算的预测结果
近似或达到给定的迭代次数;

5)输出目标集中高怀疑率的代码单元。

上述步骤1)中整理代码单元,定义特征指标,提取特征向量的处理流程是:首先整
理目标智能手机应用的代码单元作为目标集,目标集为目标智能手机应用中未标注的代码
单元,所述代码单元对于面向对象语言是指面向对象的类文件,对于面向过程语言则指单
个代码文件;

整理其他智能手机应用的代码单元和目标智能手机应用历史版本的代码单元形
成标注集接着选择其他智能手机应用;其他智能手机应用的选取一般优先考虑目标智能手
机应用开发团队人员之前开发过的应用,以及与目标智能手机应用功能类似的其他智能手
机应用,其次可以考虑相同分类目录下(例如游戏、社交通讯、便捷生活等)的智能手机应
用,对于代码单元类标的获取,代码单元类标是指代码单元是否包含缺陷,是从历史修复记
录和缺陷报告中识别有缺陷代码单元,有缺陷类标为1,其余的为无缺陷代码单元,无缺陷
类标为0;由这些代码单元形成标注集。

然后定义代码单元的特征指标,主要从智能手机应用的代码和开发过程两方面来
考虑。共有21个特征指标,定义如下:

表1代码单元特征指标




上述步骤2)中对标注集代码单元赋予权重的处理流程是:首先,对其他智能手机
应用的代码单元赋予权重,具体分为两步:

1)计算代码单元适应度

对于目标智能手机应用,每一个代码单元可表示为特征向量xi={ai1,ai2,…ai21},
其中i表示代码单元的序号。目标智能手机应用单个特征指标的分布可以用指标的均值和
标准差来表示:



其中,i表示代码单元的序号,j表示特征指标的序号,m表示目标智能手机应用的
代码单元个数。

对于其他智能手机应用,其代码单元的适应度计算规则如下:


其中,i表示代码单元的序号,j表示特征指标的序号,h(aij)为1,如果|aij-uij|<3
δi,否则h(aij)为0,aij表示代码单元i的第j个属性,k表示特征指标个数(即k=21)。

2)计算代码单元权重

基于代码单元的适应度,其权重计算公式如下:

wi=Si/k(k-Si+1) (4)

其中,i表示代码单元序号,k表示特征指标个数(即k=21),Si表示代码单元i的适
应度。wi取值范围在0到1之间。

然后,对目标智能手机应用历史版本的代码单元进行权重赋值,如果没有历史版
本数据,则不考虑。

历史版本代码单元的权重计算方法如下:

wi=e1-d (5)

其中,i表示代码单元序号,d表示目标智能手机应用历史版本距当前开发版本的
版本距离。目标智能手机应用历史版本距离当前开发版本距离越大,权重越小。wi范围在0
到1之间。若只相隔1个版本,则wi值为1。

上述步骤3)训练带权重分类器的处理流程是:输入带权重的所有已标注类标的其
他智能手机应用代码单元和目标智能手机应用代码单元的特征向量,训练带权重分类器,
优选transfer bayse分类器,对于目标集代码单元,将特征向量提交给训练好的分
类器,计算目标集代码单元有缺陷的概率P(y=1)以及无缺陷的概率P(y=0)

对目标集代码单元打上标签,如果P(y=1)>P(y=0),则预测代码单元有缺陷,类标为1,
反之,预测代码单元无缺陷,类标为0。

上述步骤4)采用自学习策略校准预测结果的处理流程是:计算目标集代码单元的
置信度η=|P(y=1)-P(y=0)|,选取置信度最高的10%代码单元,将其加入到标注集。

新加入标注集的目标智能手机应用代码单元的权重设置如下(设为最高权重):

wi=1 (6)

其中,i表示代码单元的序号。

最后,采用新的标注集和目标集,重新训练带权重分类器,直到前后两次预测结果
近似,即预测标签出现偏差的代码单元比例不超过ε(优选值3%),或者迭代次数达到T次
(优选值30)为止。

上述步骤5)输出高怀疑率的代码单元的处理流程是:将预测结果以r=P(y=1)-
P(y=0)值为标准,从大到小排列。排在前列的代码单元将视为可能存在缺陷的代码单元,由
开发者重点关注和检查。

本发明方法借鉴其他智能手机应用和目标智能手机应用历史版本数据,在代码单
元层面定义特征指标,采用带权重分类器训练学习,同时采用自学习策略校准预测结果,在
目标智能手机应用历史数据较少时,也可以有效训练分类器,快速准确定位缺陷代码;适用
于智能手机应用的开发和维护。带权重的分类器在具有不同权重的实例训练集上训练,使
权重较大的实例有更大的概率分类准确或者具有更大的训练权重。自学习策略采用半监督
迭代式训练方法,将前一轮迭代的结果应用到下一轮训练中,从而提高分类准确率。本发明
方法计算简单,通用性和扩展性强,适用于不同类型的编程语言;对不同规模智能手机应
用,能快速查找缺陷代码单元,有效提高智能手机应用缺陷修复效率和代码质量。因此,本
发明的目标是设计一种用于智能手机应用开发的缺陷预测方法,基于智能手机应用的开发
过程和代码特征,来辅助缺陷查找和修正。

附图说明

图1是智能手机应用开发中代码缺陷预测方法的总体框架。

图2是训练带权重分类器的流程图。

图3是应用自学习策略完成预测结果校准的流程图。

具体实施方式

图1所示是智能手机应用开发中代码缺陷预测方法的总体框架。方法的输入是其
他智能手机应用的源代码文件,历史修复记录和缺陷报告,目标智能手机应用的源代码文
件,目标智能手机应用的历史修复记录和缺陷报告。方法的输出是按照缺陷概率从大到小
排序的代码单元。本发明方法包含以下五个步骤:1)整理代码单元,区分标注集和目标集,
定义特征指标,提取特征向量;2)基于特征向量对标注集代码单元赋予权重;3)训练带权重
分类器,计算目标集代码单元有缺陷概率和无缺陷概率;4)采用自学习策略校准预测结果,
重复上述步骤,直到前后两次计算的预测结果近似或达到给定的迭代次数;5)输出目标集
中高怀疑率的代码单元。

本发明方法的第一个步骤是整理代码单元,定义特征指标,提取特征向量。目前,
智能手机应用主要由面向对象语言(例如Java、C++和Objective-C等)开发,代码单元一般
指面向对象的类文件,如果用面向过程语言(例如C等)开发,则指单个代码文件。

首先整理目标智能手机应用的代码单元作为目标集,其中代码单元指单个代码文
件,通常对应一个类的定义;接着选择其他智能手机应用:为了使其他智能手机应用的代码
单元分布特征与目标智能手机应用的分布近似。其他智能手机应用的选取一般优先考虑目
标智能手机应用开发团队人员之前开发过的应用,以及与目标智能手机应用功能类似的其
他智能手机应用,其次可以考虑相同分类目录下(例如游戏、社交通讯、便捷生活等)的智能
手机应用。

然后定义代码单元的特征指标,指标将用于其他智能手机应用代码单元的权重设
置以及训练预测模型。下表1所示为定义的代码单元特征指标:





表1代码单元特征指标

以上21个指标组成代码单元的特征指标,主要从智能手机应用的代码和开发过程
两方面来考虑。

对于代码单元类标的获取,可以从历史修复记录和缺陷报告中识别有缺陷代码单
元,其余的为无缺陷代码单元(有缺陷类标为1,无缺陷类标为0)。这些代码单元形成标注
集。标注集包含其他智能手机应用的代码单元和目标智能手机应用历史版本的代码单元,
目标集为目标智能手机应用未标注的代码单元。

本发明方法的第二个步骤是基于特征向量对标注集代码单元赋予权重,包含对其
他智能手机应用的代码单元以及目标智能手机应用历史版本代码单元赋予权重。

首先,对其他智能手机应用的代码单元赋予权重,具体分为两步:

1)计算代码单元适应度

对于目标智能手机应用,每一个代码单元可表示为特征向量xi={ai1,ai2,…ai21},
其中i表示代码单元的序号。目标智能手机应用单个特征指标的分布可以用指标的均值和
标准差来表示:



其中,i表示代码单元的序号,j表示特征指标的序号,m表示目标智能手机应用的
代码单元个数,aij表示代码单元i的第j个属性。

对于其他智能手机应用,其代码单元的适应度计算规则如下:


其中,i表示代码单元的序号,j表示特征指标的序号,h(aij)为1,如果|aij-uij|<3
δi,否则h(aij)为0,aij表示代码单元i的第j个属性,k表示特征指标个数(即k=21)。

2)计算代码单元权重

基于代码单元的适应度,其权重计算公式如下:

wi=Si/k(k-Si+1) (4)

其中,i表示代码单元序号,k表示特征指标个数(即k=21),Si表示代码单元i的适
应度。wi取值范围在0到1之间。

然后,对目标智能手机应用历史版本的代码单元进行权重赋值,如果没有历史版
本数据,则不考虑。

历史版本代码单元的权重计算方法如下:

wi=e1-d (5)

其中,i表示代码单元序号,d表示目标智能手机应用历史版本距当前开发版本的
版本距离。目标智能手机应用历史版本距离当前开发版本距离越大,权重越小。wi范围在0
到1之间。若只相隔1个版本,则wi值为1。

本方明方法的第三个步骤是基于带权重的标注集训练带权重分类器,计算目标集
代码单元有缺陷概率和无缺陷概率。处理流程如图2所示。

输入带权重的所有已标注类标的其他智能手机应用代码单元和目标智能手机应
用代码单元的特征向量,训练带权重分类器,优选transfer bayse分类器,对于目标
集代码单元,将特征向量提交给训练好的分类器,计算目标集代码单元有缺陷的概率P(y=1)
以及无缺陷的概率P(y=0)

对目标集代码单元打上标签,如果P(y=1)>P(y=0),则预测代码单元有缺陷,类标为1,
反之,预测代码单元无缺陷,类标为0。

本方明方法的第四个步骤是采用自学习策略,迭代一定次数,实现对目标集代码
单元的缺陷预测。处理流程如图3所示。

计算目标集代码单元的置信度η=|P(y=1)-P(y=0)|,选取置信度最高的10%代码单
元,将其加入到标注集。

新加入标注集的目标智能手机应用代码单元的权重设置如下(设为最高权重):

wi=1 (6)

其中,i表示代码单元的序号。

最后,采用新的标注集和目标集,重复步骤3),直到前后两次预测结果近似,即预
测标签出现偏差的代码单元比例不超过ε(优选值3%),或者迭代次数达到T次(优选值30)
为止。

本方明方法的第五个步骤是输出目标集中高怀疑率的代码单元,将代码单元按有
缺陷概率大小从大到小排列。

将预测结果以r=P(y=1)-P(y=0)值为标准,从大到小排列。排在前列的代码单元将视
为可能存在缺陷的代码单元,由开发者重点关注和检查。

本发明方法有效利用了其他智能手机应用和目标智能手机应用历史版本数据,在
代码单元层面定义特征指标,并根据其他智能手机应用对目标智能手机应用的适应度,对
其他智能手机应用代码单元实例赋予不同的权重,使其他智能手机应用的代码单元和目标
智能手机应用代码单元分布相似,在目标智能手机应用历史数据较少时,也可以有效训练
分类器,快速准确定位缺陷代码。本发明方法能够对有缺陷的代码单元进行有效预测,适用
于智能手机应用的开发和维护。本发明方法计算简单,通用性和扩展性强,适用于不同类型
的编程语言;对不同规模智能手机应用,能快速查找缺陷代码单元,有效提高智能手机应用
缺陷修复效率和代码质量。

本发明方法的具体应用途径很多,以上所述仅是本发明的优选实施方式。应当指
出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干
改进,这些改进也应视为本发明的保护范围。本发明具体应用途径很多,以上所述仅是本发
明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理
的前提下,还可以作出若干改进,这些改进也应视为本发明的保护范围。

一种智能手机应用开发中的代码缺陷预测方法.pdf_第1页
第1页 / 共17页
一种智能手机应用开发中的代码缺陷预测方法.pdf_第2页
第2页 / 共17页
一种智能手机应用开发中的代码缺陷预测方法.pdf_第3页
第3页 / 共17页
点击查看更多>>
资源描述

《一种智能手机应用开发中的代码缺陷预测方法.pdf》由会员分享,可在线阅读,更多相关《一种智能手机应用开发中的代码缺陷预测方法.pdf(17页珍藏版)》请在专利查询网上搜索。

本发明公开了一种智能手机应用开发中的代码缺陷预测方法,其步骤是:1)整理代码单元,区分标注集和目标集,定义特征指标,提取特征向量;2)基于特征向量对标注集代码单元赋予权重;3)训练带权重分类器,计算目标集代码单元有缺陷概率和无缺陷概率;4)采用自学习策略校准预测结果,重复上述步骤,直到前后两次计算的预测结果近似或达到给定的迭代次数;5)输出目标集中高怀疑率的代码单元。本发明方法使用了其他智能手机应。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1