首页> 中国专利> 通过知识学习增强基于分类的软件需求跟踪链接恢复方法及电子装置

通过知识学习增强基于分类的软件需求跟踪链接恢复方法及电子装置

摘要

本发明提供一种通过知识学习增强基于分类的软件需求跟踪链接恢复方法及电子装置,包括:将待确定跟踪关系的软件需求和代码文件中包含的文本和结构信息预处理后,构建得到需求‑代码知识图谱和代码依赖图;对需求‑代码知识图谱的结构和文本信息分别建模,学习得到需求和代码实体的向量;对需求‑代码知识图谱中的三元组的关系建模,得到关系特征向量。对代码依赖图进行挖掘,抽取出推理规则用于发现潜在的需求与代码之间的R2C链接,扩展训练数据规模。本发明能够保证在训练数据较少时仍能得到有效的预测模型,既保证R2C链接恢复的准确度,又降低恢复成本,减少人工标注数据的工作量。

著录项

  • 公开/公告号CN113011461B

    专利类型发明专利

  • 公开/公告日2022-08-05

    原文格式PDF

  • 申请/专利权人 中国科学院软件研究所;

    申请/专利号CN202110195758.5

  • 发明设计人 陈磊;王丹丹;石琳;王青;

    申请日2021-02-19

  • 分类号G06K9/62(2022.01);G06N3/04(2006.01);G06N3/08(2006.01);G06F8/10(2018.01);G06F16/36(2019.01);

  • 代理机构北京君尚知识产权代理有限公司 11200;

  • 代理人邱晓锋

  • 地址 100190 北京市海淀区中关村南四街4号

  • 入库时间 2022-09-06 00:40:17

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-08-05

    授权

    发明专利权授予

说明书

技术领域

本发明属于计算机技术领域,尤其涉及一种通过知识学习增强基于分类的软件需求跟踪链接恢复方法及电子装置。

背景技术

Requirements-to-Code(requirements to code,R2C)是软件需求与代码之间的跟踪关系,它架起在用自然语言描述编写的需求和用编程语言编写的源代码之间存在逻辑抽象的桥梁。R2C的链接可以帮助开发人员更好地理解源代码的逻辑和目的,帮助定位受需求变化影响的代码,从而大大降低软件项目的维护成本。R2C链接还可以用来自动选择相关的测试用例执行,这使得自动化测试项目更加有效。然而,R2C链接在实际工作中经常丢失或错误链接,并且大多数R2C链接是多对多类型,手工建立维护这些R2C链接效率低且容易出错。因此,以自动化技术为手段辅助建立和维护R2C链接获得软件开发人员及其公司的重点关注。尤其针对开放众测环境,众测人员是看不到软件代码的,仅根据众测需求来对待测软件进行测试。测试报告和众测需求的关系容易建议,但是众测需求和软件代码的关系是没有,如果建立了该关系,可以更好的辅助定位缺陷。

自动化需求跟踪恢复方法包含无监督学习与监督学习方法。无监督学习方法主要通过基于信息检索(information retrieval,IR)和无监督的机器学习(machinelearning,ML)的方法计算需求文本与代码文本之间的相似度,依赖预先设定的阈值筛选软件需求所跟踪链接,大大节省了人力成本,但是性能往往不能达到预期。有监督学习方法包括的有监督的ML和深度学习(deep learning,DL)方法可以更有效地通过提取和构建软件需求与代码文件的文本特征,以及训练有效分类器预测软件需求和代码文件之间的跟踪链接,并达到比无监督学习方法更好的性能。以上两种方法都可以基于他们学习的结果结合代码的结构关系来重新排序或定位相关联的代码,以强化恢复R2C跟踪链接。

现有多数自动化的需求跟踪恢复方法都集中在文本信息抽取和显性直接代码依赖的利用上,而这些已有的自动化恢复R2C的方法无法捕获需求与代码之间完整的语义,因为忽略了难以捕获的包含上下文信息的结构语义,导致需求与代码之间语义的缺失;为获得更好的恢复性能需要大量的带标注的数据用于训练有效的预测模型,而获取标注数据是非常费时费力的事情,因此这限制了它们在实际工作中的应用。目前尚无一种公开的可以同时捕获需求与代码之间文本和结构语义,并且使用少量标注数据达到较高性能的需求跟踪恢复方法。

因此,目前急需一种需要捕获更多需求与代码之间语义,少量训练数据、准确率高的需求跟踪链接恢复方案。

发明内容

针对上述问题,本发明提出一种通过知识学习增强基于分类的软件需求跟踪链接恢复方法及电子装置,它不仅能从需求-代码知识图谱中学习包括需求和代码结构关系在内的知识,而且通过代码依赖图自增强训练数据的大小,可以同时捕获文本和结构语义,利用少量训练数据训练有效的预测模型,既保证恢复R2C链接准确性,又降低恢复成本。

本发明的技术方案为:

一种通过知识学习增强基于分类的软件需求跟踪链接恢复模型构建方法,包括以下步骤:

将软件需求文档和代码文件中的文本信息进行预处理,得到需求/代码预处理文本;

对代码进行静态代码分析,得到静态代码分析结果;

使用需求/代码预处理文本,以及静态代码分析结果,构建需求-代码知识图谱;

通过对需求-代码知识图谱的知识学习,获得需求-代码的关系特征向量;

基于静态代码分析结果构建代码依赖图;

基于代码依赖图抽取推理规则,通过推理规则扩展训练数据;

利用需求-代码的关系特征向量和通过推理规则扩展的训练数据,训练需求与代码的跟踪预测模型。

一种通过知识学习增强基于分类的软件需求跟踪链接恢复方法,包括以下步骤:

将待确定跟踪关系的需求和代码的实体向量表达构建为关系特征向量;

将关系特征向量输入训练好的需求与代码的跟踪预测模型,预测需求-代码对是否存在跟踪关系。

进一步地,所述使用需求/代码预处理文本和静态代码分析结果,构建需求-代码知识图谱,包括:

1)定义需求-代码知识图谱中需求/代码元素之间以及需求与代码之间的关系类型,并根据已关联的需求文档和代码文件关系,以及静态代码分析结果和需求文档关系分析结果解析获得定义的关系类型;

2)需求/代码元素作为实体,通过定义的关系类型表示为一个三元组(头实体(head_entity),关系类型(relation),尾实体(tail_entity)),获得需求-代码知识图谱中的三元组;

3)从需求/代码预处理文本中提取出每个需求/代码元素实体中相应的文本描述信息,关联三元组中实体与其文本描述信息,获得需求-代码知识图谱。

进一步地,所述通过对需求-代码知识图谱的知识学习,获得需求-代码的关系特征向量,包括:

使用TransR算法建模需求-代码知识图谱中实体结构信息,结合使用带CNN编码器的DKRL算法建模需求-代码知识图谱中实体文本信息,学习得到需求-代码知识图谱中包含实体上下文信息的结构向量;

只使用带CNN编码器的DKRL算法建模需求-代码知识图谱中实体文本信息,学习得到需求-代码知识图谱中实体的文本向量;

将每个实体的结构向量和文本向量连接,获得最终的实体向量;

依据需求-代码知识图谱三元组关系,使用头实体减去尾实体获得需求文件和代码文件之间和其他实体之间的关系特征向量。

进一步地,所述基于静态代码分析结果构建代码依赖图,包括:

1)对代码进行静态代码分析,得到静态代码分析结果;

2)使用静态代码分析结果,解析得到代码中类与类之间的方法调用结果和类所包含的数据类型结果;

3)利用代码中类与类之间的方法调用结果计算代码依赖亲密度(codedependency closeness),同时利用类所包含的数据类型结果计算类数据依赖亲密度(class data dependency closeness);

4)使用类与类之间的代码依赖亲密度和类数据依赖亲密度构建代码依赖图。

进一步地,所述基于代码依赖图抽取推理规则,包括:

依据代码依赖亲密度抽取代码依赖图中类与类之间的直接依赖关系,得到基于代码依赖的推理规则;

依据类数据依赖亲密度抽取代码依赖图中类与类之间的间接依赖关系,得到基于数据依赖的推理规则。

一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述所述的方法。

一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述所述的方法。

与现有技术相比,本发明的有益效果如下:

一方面通过构建需求-代码知识图谱,建模获得需求与代码的文本和结构特征信息,完成对需求与代码的语义学习得到对应完整语义的向量表达,并根据学习得到的需求与代码的向量表达构建两者之间的关系特征向量。另一方面,通过构建的代码依赖图抽取出推理规则,完成对训练数据的自动化扩展。既保证R2C链接恢复的准确度,又降低恢复成本,减少人工标注数据的工作量。

附图说明

图1为通过知识学习增强基于分类的软件需求跟踪链接恢复方法的流程图。

具体实施方式

以下结合附图,通过具体实施方式对本方法作进一步说明。

本发明的方法流程如图1所示,其具体步骤为:

一、获取跟踪预测模型

一方面,由于现有方法仅抽取文本信息和利用代码显性直接依赖,忽略了难以捕获的包含上下文信息的结构语义,导致需求与代码之间语义表示的缺失。通过构建和建模需求-代码知识图谱并学习需求和代码实体的向量表示,从而为需求和代码实体的语义表示添加了上下文的结构语义。这使得需求与代码之间语义表示更加完整。另一方面,由于大量的训练数据会提高模型的精度与普适性,现有已标注的关联数据量较少,需要通过自动化的方法对训练数据集进行扩充。从现有已知的少量训练数据中根据推理规则,生成新的训练数据用于强化模型的训练,通过训练可以得到跟踪预测模型。

1、自动化的运行数据预处理,并获得预处理的需求文件和源代码文件的文本信息和静态代码分析结果。

本发明的一实施例包括以下几个子步骤:

1a)删除字符:对所有文本(需求文件和源代码文件)执行标记化(Tokenization)操作,删除非字母字符、标点符号、停用词、无意义的术语;

1b)分词:从需求文件和源代码文件中的标识符中提取有意义的单词。标识符是连接两个或多个单词(或缩写)或任何其他分隔符(如下划线)的复合词.采用骆驼拼写法拆分复合词;

1c)翻译:当需求和源代码包含非英语单词时,将需求和源代码的文本内容翻译成英语;

1d)采用Java开发工具(JDT)来分析源代码,获得静态代码分析结果;

1e)在完成上述操作后,得到所需的预处理的需求文件和源代码文件的文本信息和静态代码分析结果。

2、基于预处理的需求文件和源代码文件的文本信息和静态代码分析结果,将其进行解析和提取关联关系,构建需求-代码知识图谱。

本步骤是跟踪预测准备阶段,使用自动化或者手动的方法进行解析和提取关联关系,将获得的关联关系定义为知识图谱的关系类型,需求-代码知识图谱定义为有向图G=(V,E),其中V表示节点集合,E表示边集合,每个节点v

本发明的一实施例包括以下几个子步骤:

2a)将已关联的需求文档和代码文件进行解析,获得需求之间的关联关系和需求与代码的关联关系;将静态代码分析结果进行解析,获得代码中所包含的关联关系;

2b)定义需求-代码知识图谱中代码元素之间以及需求与代码关系类型,包括14种关系类型contain(类A属于其对应的包B)、extend(子类A继承父类B)、implement(子类A实现接口父类B)、hasMethod(方法A是类B包含的方法)、hasField(字段A是类B包含的字段)、fieldType(字段A的类型是类B包含的字段类型)、parameterType(类A有一个参数类型为类B的方法)、returnType(类A有一个返回类型为类B的方法)、methodCall(方法A被方法B调用)、throw(类A有一个异常类型为类B的方法),includes(需求A包含需求B)、extends(需求A是需求B的扩展)、implies(需求A依赖需求B)以及需求和代码的跟踪关系traceLink(需求A与代码B有跟踪链接),并根据已关联和待关联的需求文档和代码文件关系,以及静态代码分析结果解析获得定义的关系类型;

2c)需求和代码元素作为实体,通过定义的关系类型表示为一个三元组(头实体(head_entity),关系类型(relation),尾实体(tail_entity)),获得需求/代码元素-需求/代码元素三元组;

2d)从需求/代码预处理文本中提取出每个需求/代码元素实体中相应的文本描述信息:需求的描述,类和方法的注释,获得获得需求/代码元素-需求/代码元素三元组中实体与其文本描述信息的关联;

2e)在完成上述操作后,得到所需的需求-代码知识图谱。

3、基于预处理的静态代码分析结果,将其进行解析和提取类之间的交互信息,构建代码依赖图。

本步骤是跟踪预测准备阶段,使用自动化或者手动的方法获取类与类之间的方法调用结果和类所包含的类数据类型结果构建代码依赖图。代码依赖图捕获类之间的交互程度,定义为G'=(V',E'),V'是一组类,图中包含两种边E',E

本发明的一实施例包括以下几个子步骤:

3a)将静态代码分析结果进行解析,获得类与类之间的方法调用结果和类所包含的类数据类型结果;

3b)利用代码中类与类之间的方法调用结果计算代码依赖亲密度(Closeness

3c)利用类所包含的类数据类型结果计算类数据依赖亲密度(Closeness

3d)在计算类数据依赖亲密度时,通过设置idtf=1阈值,保留大于等于阈值的类数据类型;

3e)在完成上述操作后,得到所需的代码依赖图。

4、基于需求-代码知识谱图,学习包含上下文语义的结构向量和文本语义的文本向量,并构建需求-代码对的关系特征向量。

本步骤进一步对需求-代码知识谱图建模,从需求-代码知识图谱中学习实体的上下文语义和文本语义,从而捕获完整的语义向量。将实体的语义向量构建为需求-代码之间的关系特征向量,完成对输入训练模型和预测模型特征的抽取。

本发明的一实施例包括以下几个子步骤:

4a)将不带实体文本描述信息的需求-代码知识谱图中三元组输入TransR模型,获得需求-代码知识图谱的结构信息在表示空间的向量。M

f(h,r,t)=‖hM

4b)TransR模型采用随机梯度下降(SGD)方法使损失函数最小,参数设置为学习速率(learning rate)λ=0.001,间隔(margin)γ=1.0,特征映射维度(dimension offeature map)n

4c)将带实体文本描述信息的需求-代码知识谱图中三元组输入DKRL模型,结合TransR所学习的结构信息和CNN编码器处理文本描述信息,同时获得需求-代码知识图谱的结构向量和文本向量。T是正确的三元组,T'是不正确的三元组,由训练生成三元组的关系表示。当边的关系类型为traceLink时,需求实体被一个随机的其它需求实体替换,或者类实体被一个随机的其它类实体替换。对于其它边类型,无论是头实体或尾实体被一个随机实体取代。γ是一个边界超参数。采用随机梯度下降(SGD)方法使损失函数最小,具体公式如下:

4d)DKRL模型参数设置为学习速率(learning rate)λ=0.001,间隔(margin)γ=1.0,窗口大小(window size)k=2,词向量维度(dimension of word embedding)n

4e)将每个实体的结构向量和文本向量连接,获得最终的实体向量;

4f)根据需求-代码知识图谱中的三元组关系,构造两者之间的关系特征向量(feature_vectors)。计算为一对头实体向量(h

featrue_vectors=r

4g)三元组的关系为traceLink,则关系特征向量标签标记为1,其他均为0.

5、基于代码依赖图,抽取推理规则。

本步骤进一步对代码依赖图进行挖掘,抽取推理规则用于强化训练数据。训练集中标记的跟踪链接为建立新的跟踪链接提供了坚实的基础,可以利用代码依赖关系来增加训练集的数量,通过定义了两个推理规则来生成新的跟踪链接来自动增加训练集的数量。

本发明的一实施例包括以下几个子步骤:

5a)如果在需求(r

R2C(需求(r

←R2C(需求(r

∧Closeness

5b)如果在需求(r

R2C(需求(r

←R2C(需求(r

∧Closeness

5c)在完成上述操作后,得到2条推理规则用于扩展训练数据。

6、通过训练得到的跟踪预测模型

本步骤完成跟踪预测模型的训练,是基于构建的需求(r

本发明的一实施例包括以下几个子步骤:

6a)训练数据依据推理规则产生新的跟踪链接,得到扩展的训练数据;

6b)根据构建的需求和代码元素实体的关系特征向量,以及通过抽取的推理规则扩展的训练集作为输入,训练支持向量机(SVM)二分类模型来预测跟踪链接。SVM分类器的得分函数可以定义为:如果潜在链接是真实链接,则g(h

6c)在训练集上最小化目标函数L来学习参数W,其中,X表示所有潜在的跟踪链接,y

6d)在完成上述操作后,得到带优化参数的SVM分类器模型。

二、根据跟踪预测模型,预测需求和代码的跟踪关系

1)将待确定跟踪关系的需求和代码的实体向量表达构建为关系特征向量;

2)将关系特征向量输入训练好的SVM分类模型,预测该需求-代码对是否存在跟踪关系,如果存在跟踪关系标签设置为1,反之设置为0。

本发明在三个开源基准数据集(数据集下载地址网址:CoEST TraceabilityDatasets:http://sarec.nd.edu/coest/datasets.html.)上与最先进的ALCATRAL作为基线进行比较,它使用基于熵的主动学习机制来减少训练数据,并在现有较少的训练集的情况下获得最佳性能。以F1值作为评价指标,两者比较结果见表1。

表1.与ALCATRAL比较结果

表1中,加粗的值显示了K2Trace获得与ALCATRAL基线可比较的结果的训练数据的最低百分比。带下划线的值表示数据集的总体最佳结果。K2Trace是本发明提出的方法,KL是K2Trace的简写。ACL为对比基线方法的简写,全称是ALCATRAL。

结果表明本发明的方法优于最先进的方法ALCATRAL。在最小训练集(10%)的情况下,我们的方法提供了平均23.7%的性能提高;仅使用30%的数据集进行训练可获得的结果超过ALCATRAL最好的结果。

本发明的另一实施例提供一种存储介质(如ROM/RAM、磁盘、光盘),所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行本发明的方法。

本发明的另一实施例提供一种电子装置(计算机、服务器、智能手机等),包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行本发明的方法。

本发明的其它实施方式:

1.可以构建类似本发明定义的需求-代码知识图谱,新增/删除不同的实体关系;再利用TransR+DKRL扩展的知识表示学习算法的其他知识表示学习算法进行关系特征向量的构建;

2.可以采用以亲密度分析为基础的推论规则采用不同的阈值设定扩展训练集。

尽管为说明目的公开了本发明的具体内容、实施算法以及附图,其目的在于帮助理解本发明的内容并据以实施,但是本领域的技术人员可以理解:在不脱离本发明及所附的权利要求的精神和范围内,各种替换、变化和修改都是可能的。本发明不应局限于本说明书最佳实施例和附图所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号