APP下载

面向物联网软件系统的软件缺陷分配算法研究

2021-04-01苏警

信阳农林学院学报 2021年1期
关键词:开发人员分类器遗传算法

苏警

(安徽电子信息职业技术学院 软件学院,安徽 蚌埠 233000)

物联网产业的发展取决于软件产品的普及。软件涵盖了物联网系统的许多方面,例如物联网终端系统、短距离连接、物联网架构、物联网浏览器、物联网安全性和其他重要应用[1-3]。根据OMA(OPEN MOBILE ALLIANCE)的调查,有60%的物联网企业认为物联网产品依赖于开源软件。根据Vision Mobile的调查,91%的物联网开发人员已使用开放的缺陷存储库寻求帮助来修复缺陷并进一步提高物联网软件的性能和安全性。可靠的软件质量是确保物联网系统高效安全运行的基础。物联网系统的软件可靠性直接影响了信息传输,物联网中物与物之间的通信以及人与物之间的交互将受到很大影响。因此,快速有效地将缺陷分配给合适的开发人员是确保软件质量的关键。但是,随着软件数量的增加,用户的需求也随之增加,并且每天都会发现大量的软件缺陷。管理人员很难将软件缺陷分配给适当的开发人员。以前有关缺陷分类的大多数工作的目标是分析缺陷报告,以帮助开发人员或程序员有效地修复缺陷。针对上述挑战,提出了有效的缺陷报告特征学习模型和有效的缺陷分配机制。

1 软件缺陷分配算法设计

假设数据集中有n个缺陷报告(用S+{s1,…,sn}表示),m个特征/变量(用M+{f1,…,fm}表示)和k个工人(用C={c1,…,ck})。每个样本si可以用向量si={xi1,…,xim}表示,其中xij表示样本si的特征fj的值。每个样本s∈S对应于类别标签ci。缺陷分类框架包括三个主要步骤:软件缺陷信息提取、代表性特征空间构建以及基于GA和推荐的最优整体ELM(Ertreme Learning Machine)分类。为了更好地理解所提出的方法,首先对下面的三个步骤进行简要说明。

软件缺陷信息提取:缺陷报告包含很多信息,但是并非所有信息都有用。仅对可用于提取缺陷分类软件缺陷功能的信息感兴趣。此步骤的目标是过滤一些不相关的信息,例如URL、里程碑、关键字等。在这一步中,将通过去除停用词来完成初始操作。

特征空间构建:使用缺陷信息来构建软件缺陷报告的特征空间。主要对缺陷信息进行预处理,并完成代表特征的多种特征选择。此步骤的目标是选择一组具有代表性的非冗余特征集,这些特征集具有关于显影剂分类的相对最大统计信息。

基于遗传算法的最优ELM分类:根据选择的多样性特征,训练ELM集成分类器。固定剂是用来训练ELM分类机的标签。在这一步中,设计了一种基于ELM的遗传算法,以进一步提高分类器的有效性。该方法可以输出多个加权分类器的平均值。

为了获得性能更好的分类器,没有为每个分类分配相同的权重。在文中,使用基于遗传算法的方法来找到每个分类的最佳权重分配修复者。当产生新的软件缺陷时,会根据经过训练的模型推荐最合适的权重。

1.1 软件缺陷信息提取

大多数现有的研究仅从缺陷报告中提取有关描述和相应贡献者的信息。但是,发现缺陷报告的摘要和注释也提供了大量有价值的软件缺陷信息。摘要概述了缺陷的基本类型和位置,注释是开发人员在修复软件缺陷时进行的交流。因此,除了提取缺陷报告的描述和恢复者的信息外,还收集摘要和注释以提高缺陷分配的准确性。

使用缺陷跟踪系统Bugzilla来获取缺陷报告数据。在Bugzilla中,缺陷报告记录了软件缺陷的详细信息。提取有用的信息(例如摘要的一部分、报告的描述和注释)作为软件缺陷分类的候选属性信息。提取贡献者作为训练样本的标签。但是,在Bugzilla中,并不总是将贡献者分配给真正的软件缺陷修复者。例如,某个缺陷可以是由另一个开发人员修复的,而不是由分配给它的第一个开发人员修复的,并且有关该分配的信息也可能没有及时得到更新。首先,选择处于“解决”状态的缺陷报告数据。为了获得软件缺陷的真实等级,采用以下规则:如果软件缺陷由分配给它的开发人员修复,则假定该开发人员是缺陷的最终真实修复者;如果缺陷未由所分配的开发人员修复,那么则认为将缺陷状态修改为“解决”的人员是最终的修复者。

从缺陷报告中可以看出,大多数缺陷报告都有描述性信息和注释。但是,软件缺陷报告的描述和注释是自然语言描述,其中包含许多无用的信息。当使用向量空间模型表示文本文档时,维度空间可能达到一万个或更多。因此,对原始数据进行预处理并选择有代表性的特征是非常重要的一个步骤。预处理有两个步骤:词干提取和停用词删除。

词干提取是将选定的单词还原成其词干或词根的过程。单词的词干不一定与其词根相同。即使词干本身不是词根,但是词干通常也与词根有关。当将文本文档转换为向量空间模型时,同一单词的描述可能具有不同的形式,必须在数据预处理中统一单词形式。在文中,使用Snowball stemmer算法来进行词干提取。

系统将在处理自然语言数据之前或之后过滤掉一些单词或短语,这些单词或短语称为停用词。通常,停用词是人类语言中的功能词,这些功能词极为常见。与其他词相比,功能词没有实际含义[4]。尽管这些停用词无法单独表示文档的相关程度,但是这些停用词将占用相当大的空间。在提取的软件缺陷报告中,大多数单词是停用词。因此,构建了一个停止列表,然后根据该列表过滤数据,以减小数据维度和数据大小。

1.2 多样化特征空间构建

如果将原始数据直接映射到向量空间,则所有维度的特征都将产生高维向量。此外,噪声还增加了空间的复杂性,并影响了分类的准确性[5-6]。因此,在保留重要特征的同时,筛选那些无意义的特征(例如冗余特征或不相关特征)。根据信息增益(IG)来选择特征,以减小特征空间的尺寸和噪声,以提高分类的效率和准确性。IG的公式如下:

(1)

在实验中,通过IG方法选择了一个特征子集,以减小向量空间的维数并滤除噪声。下一步,对不同频率的特征词加权,以提高软件缺陷报告的分类准确度。

使用TF-IDF方法计算不同重要术语的权重值[7],对于给定的特征词ti,该词的tfij值可以表示为:

(2)

在上式中,nij是此特征词出现在文档dj中的次数,分母表示文件中出现的所有单词的频率之和。此单词的idfi值为:

(3)

|D|是文件集中文件的总数,|j∶ti∈dj|表示包含特征词ti的文件的数目。文件dj中特征词ti的权重wij可以表示为:

(4)

maxj{tfkj}是文件dj中特征词tf的最大数目。用上述方法计算所有特征词的权重,并通过建立向量空间模型进行归一化。经过特征选择处理后,选择了前k个特征作为代表特征。

1.3 基于遗传算法的特征选择和基于极限学习机的分类

由于许多现实世界中的数据是多类的,并且会出现类不平衡的现象,因此可以采用集成了多个学习器的ELM以提高准确性。

在ELM中,权重是随机设置的。权重也会在一定程度上影响分类的准确性。实际上,对于表现良好的分类器,权重可以设置为较高。提出了一种基于遗传算法(GA)的方法,以探索适合每个分类器的权重系数。

遗传算法是一种随机搜索优化技术。在GA中,搜索空间以染色体形式编码。所有的染色体组成了种群。每个染色体都与一个适应度函数相关联,该函数表示该染色体的优劣程度。

给定训练实例r,预期输出为d(r),第x个ELM的实际输出为ox(r)。在训练期间,希望x的实际输出应与运行的ELM的输出一致。此外,设Va为验证集和a=[a1,…,aM]为权重系数。根据文献[8],与a对应的集成ELM估计的泛化误差为:

(5)

(6)

在每个后续的生成过程中,都需要某种选择方法来使用适应度函数判断染色体的质量,以便选择最佳解决方案。采用轮盘赌轮作为选择策略,即每个染色体与选择概率相关。如果ft是总体中个体t的适应度,则选择个体t被选中的概率为:

(7)

(8)

每个染色体都有一个概率为δm突变过程,δm的表达式:

(9)

对于染色体中的每个位置,以概率δm使用从Laplacian分布中得出的随机变量替换原有的值。

2 实验评估

实验使用了两个包含了物联网软件缺陷报告的真实数据集,即Bugzilla和Eclipse,以评估ELM分类器的性能。Bugzilla的样本数(即缺陷报告数量)为5200,每个开发人员的平均缺陷报告数量为62,每个开发人员平均的注释数量为5.65;Eclipse的样本数为4100,每个开发人员的平均缺陷报告数量为43,每个开发人员平均的注释数量为5.26。选择50%的样本作为训练集,选择50%作为测试集。

表1和2分别给出了在两个真实数据集上本算法与现有算法在不同特征提取方法下的准确度比较。基于遗传算法的特征提取方法在所有分类器上提供最高的准确性,这主要是因为该方法所选择的特征可以被视为提供了所有原始特征的最小但最具代表性的覆盖范围,提供的冗余信息少于其他方法。

表1 Bugzilla数据集的准确度对比

表2 Eclipse数据集的准确度对比

3 结论

随着世界物联网产业的飞速发展,快速有效地消除软件中的缺陷对于物联网企业的增长至关重要。本研究提出了一种基于ELM的软件缺陷分配算法,根据实验结果,知道基于ELM的缺陷分类器的性能比现有的算法更好。在未来的工作中,我们将改进基于ELM的分类器。将充分考虑倍增还原器修复缺陷的能力,并针对每个软件缺陷推荐一些最合适的还原器,从而提高缺陷分配的准确性,尤其是对于物联网企业的成长。

猜你喜欢

开发人员分类器遗传算法
学贯中西(6):阐述ML分类器的工作流程
基于遗传算法的高精度事故重建与损伤分析
基于朴素Bayes组合的简易集成分类器①
基于动态分类器集成系统的卷烟感官质量预测方法
基于遗传算法的模糊控制在过热汽温控制系统优化中的应用
Semtech发布LoRa Basics 以加速物联网应用
一种自适应子融合集成多分类器方法
基于遗传算法的智能交通灯控制研究
后悔了?教你隐藏开发人员选项
基于改进多岛遗传算法的动力总成悬置系统优化设计