时间:2024-05-04
陆金婷,张嘉烽
(1.江苏工程职业技术学院,江苏 南通 226007;2.中天射频电缆有限公司,江苏 南通 226009)
在软件开发的过程中,软件开发人员常常会遇到各种各样的软件缺陷。软件缺陷的存在,不仅会导致计算机程序或软件系统无法正常实现其功能,还会导致软件制品不能满足软件使用者的需求,从而降低了用户使用软件的满意度。软件缺陷中包含了大量软件开发过程中发生错误时的数据信息。这些数据信息包含着丰富的与软件质量、技术、资源等相关的信息。因此,对软件缺陷信息进行有效的处理分析对软件缺陷的修复以及软件质量的保证具有重要意义。
目前,软件缺陷常常以缺陷报告的形式被提交和管理。在诸如Firefox、Eclipse等大型软件项目中,通常使用缺陷跟踪系统(BTS)来存储、追踪缺陷数据。为方便软件开发人员快速检索所需缺陷信息,BTS自身配备了搜索引擎。当遇到新缺陷时,开发人员可以直接搜索报错信息,也可以组织语言表达需求并输入到搜索引擎检索。搜索引擎使用关键字匹配技术检索BTS并反馈相关缺陷信息。一般来说,检索到的信息应与开发人员的需要关联性很大,应该能够有效解决开发人员遇到的缺陷,但事实并非如此。BTS自带的搜索引擎所采用的关键字匹配技术常常只匹配了用户检索意图中某个或多个关键词,甚至是某个字符,导致返回的结果包含了很多错误信息和无效信息,使开发人员需要花费大量的时间和精力去鉴别返回的内容是否满足需求。此外,缺陷数据之间常常包含着各种各样显式或隐式的关联,这种关键字匹配技术只是单一地比较了缺陷数据本身基于单词级别的相似度,并未考虑到缺陷信息语义之间的匹配和关联。
基于上述问题,本文提出了软件缺陷画像系统,用于软件缺陷信息检索。软件缺陷画像是一种模拟用户画像衍生出来的方法[1]。其主要工作是给软件缺陷信息打标签,并根据用自然语言描述的关于软件缺陷的描述语句来确定软件缺陷,然后检索软件缺陷库中的相关信息,挖掘软件缺陷的潜在信息,并以可视化的方式对软件缺陷进行画像处理。从用户体验上来看,设计一个软件缺陷画像系统有助于用户在众多繁杂的缺陷数据中获取最有效的缺陷信息,从而快速地认识缺陷,对后续的缺陷修复和软件功能完善有重要意义。
软件缺陷画像系统的核心价值在于了解软件缺陷,挖掘软件缺陷信息中隐含的信息,以便软件开发人员能够更好地认识理解软件缺陷。系统的功能模块包含普通画像和深度画像2个模块。普通画像模块包含语义匹配和关键词抽取2个功能;深度画像模块包含实体识别、关系抽取以及相似性缺陷推荐3个功能,如图1所示。
图1 软件缺陷画像系统的功能模块
普通画像模块是本系统的基础功能模块,通过将系统中用户输入的缺陷描述转换成语义向量,并与历史缺陷库中的缺陷信息进行简单的向量计算,完成相应的相似度计算和关键词提取等任务。深度画像模块从理解缺陷信息的角度出发,采用较先进的机器学习技术和神经网络知识,以实体和实体关系标识缺陷,并基于实体和实体关系推荐与原缺陷相关的缺陷,以补充原缺陷信息,这对后续的缺陷修复工作具有重大意义。
普通画像模块包含语义匹配和关键词抽取2个功能,属于本系统的基础功能。
语义匹配功能采用免费的Python第三方库Gensim(topic modeling for humans)模块实现。Gensim模块可以扩展语义,能够完成基于语义结构的纯文本文档分析以及检索文档语义相似等任务,具体操作步骤如下:(1)针对缺陷库中的每一个缺陷,把缺陷的基本属性(Product、Component、Reporter等)、Summary和Description信息放到一个文件中,并利用Gensim模块里面jieba分词工具完成分词、过滤停用词等操作,将其处理成每个缺陷对应的向量表示;(2)将用户输入的缺陷描述视为某个缺陷信息,利用Gensim模块分词、去停用词,并将其转换成对应的向量;(3)从向量的角度出发,利用Gensim模块里面的similarities包计算系统用户输入的缺陷描述和缺陷库中每个缺陷的相似度,得到相似度最高的缺陷。该缺陷视为根据系统输入的缺陷描述信息检索到的缺陷,可以根据该缺陷的相关信息辅助理解新缺陷。
本系统使用TF-IDF算法来抽取软件缺陷的关键词,TF-IDF是一种用于信息检索与数据挖掘的常用加权技术。TF的意思是词频(Term Frequency);IDF的意思是逆文本频率指数(Inverse Document Fre-quency)。词频TF表示关键词在文档中出现的频率;逆文本频率指数IDF表示某个词的常见程度。根据公式(1)来抽取缺陷关键词:
TF-IDF=TF×IDF
(1)
为完成缺陷关键词的挖掘,需确定数据源。此处所采用的数据源是指语义匹配功能所筛选出语音相似度最高的缺陷,对其进行分词、过滤掉常见词并完成缺陷关键词的抽取。
深度画像模块包含实体识别、关系抽取以及相似性缺陷推荐3个功能,属于深度的知识分析加工。
实体识别功能旨在识别缺陷文本中具有领域特定含义的单词,例如:“Ruby”“C#”“Python”“Pascal”“Java”等,这些是属于计算机领域的编程语言类别的单词。明确实体位置并准确识别出实体所属的类别有助于了解缺陷文本中所包含的实体语义关系,是实体识别工作必须完成的目标。此处采用Zhou等[2]提出的方法识别缺陷文本中的实体。
关系抽取功能旨在确定特定实体对之间的关系,以便能够明确缺陷语句的语义关系。例如:针对缺陷文本“WhimbooreportedtheBug1848799”,在识别了实体“Whimboo(People)”和“Bug1848799(BugID)”后,需要能够快速明确2个实体之间的关系,以便能够确定该缺陷文本的语义信息,否则“Whimboo(People)”和“Bug1848799(BugID)”这对实体之间可能存在多种关系,无法界定它们之间的关系,对理解缺陷文本信息的实际含义造成困难。此处采用冯艳红等[3]提出的方法抽取实体对之间的关系,通过谓词并结合语境来表述实体关系。
相似性缺陷推荐功能旨在针对用户输入的缺陷描述信息,基于实体和实体关系进行相似度计算,从而推荐相关的缺陷,用来补充用户所需缺陷的相关信息,辅助理解该缺陷。
在完成了实体识别和关系抽取后,需要构建以实体和实体之间关系为基础的三元组,以Mozilla项目中ID为1848799的某条缺陷信息“WhimbooreportedtheBug1848799”为例,在识别了“Whimboo(People)”和“Bug1848799(BugID)”2个实体以及“BugReporter”这个实体关系后,需要将其表示成三元组的形式“
在完成缺陷三元组构建的基础上,采用TF-IDF和Word Embedding(词嵌)2种向量分别计算缺陷三元组的相似度得分,并将其结果相加得到最终的相似度。根据TF-IDF计算相似度的流程,如图2所示。在将用户输入的缺陷描述信息转换成缺陷三元组后,再将其转换成对应的TF-IDF向量A;同时,将Bug历史缺陷库表示为多个缺陷对应的三元组列表后,再将其转换成每个缺陷对应的TF-IDF向量B。在得到缺陷文本对应的TF-IDF向量后,使用余弦相似度来计算用户输入的缺陷信息和Bug库中每一个历史缺陷基于TF-IDF向量的相似度Score1。余弦相似度计算如公式(2)所示,其中A、B均为TF-IDF向量,Score1计算结果越大,表明A、B2个向量越相似,则对应的缺陷文本相似程度越高。
图2 根据TF-IDF计算相似度流程
(2)
根据Word Embedding向量计算缺陷文本相似度的流程设计,如图3所示。与利用TF-IDF向量计算缺陷文本相似度的流程类似:首先,需要用户输入的缺陷描述文本转换成对应的Word Embedding向量C,并将历史缺陷库中的每个缺陷转换成对应的Word Embedding向量D;其次,使用余弦相似度来计算用户输入的缺陷信息和历史缺陷库中每一个缺陷基于Word Embedding向量的相似度得分Score2。
图3 根据Word Embedding计算相似度流程
对于用户输入的缺陷描述和Bug历史缺陷库中的缺陷,它们的相似度得分Score2可以由公式(3)计算。其中,Word Embedding向量C代表用户输入的缺陷描述对应的词嵌向量;Word Embedding向量D代表历史缺陷库中某个缺陷对应的词嵌向量。
(3)
获取到上述相似度得分Score1和Score2,由于它们采用不同的方法计算,且均考虑到了缺陷信息的文本含义,所以需要将它们融合生成一个最终的相似度得分,依据最终的相似度分数排序推荐与用户输入相似的缺陷报告。由于TF-IDF和Word Embedding 2种方法均是基于缺陷文本计算相似度,方法本身不分好坏,所以将这2种方法在最终的缺陷相似度得分中所占比重设置为0.5,故最终的缺陷相似度得分Score计算公式,如公式(4)所示。
Score=Score1×0.5+Score2×0.5
(4)
本文从缺陷文本信息语义理解的角度设计了软件缺陷画像系统。该系统包含普通画像和深度画像2个模块,集多种功能于一体,为软件开发和维护领域的研究人员高效获取所需缺陷信息提供了便利,提高了用户满意度。后续可通过构建缺陷知识图谱进一步提升缺陷知识获取效率,推动缺陷修复进程。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!