CN113011461B - 通过知识学习增强基于分类的软件需求跟踪链接恢复方法及电子装置 - Google Patents
通过知识学习增强基于分类的软件需求跟踪链接恢复方法及电子装置 Download PDFInfo
- Publication number
- CN113011461B CN113011461B CN202110195758.5A CN202110195758A CN113011461B CN 113011461 B CN113011461 B CN 113011461B CN 202110195758 A CN202110195758 A CN 202110195758A CN 113011461 B CN113011461 B CN 113011461B
- Authority
- CN
- China
- Prior art keywords
- code
- requirement
- demand
- dependency
- relation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
- G06F18/2411—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on the proximity to a decision surface, e.g. support vector machines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/36—Creation of semantic tools, e.g. ontology or thesauri
- G06F16/367—Ontology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/10—Requirements analysis; Specification techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Molecular Biology (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Bioinformatics & Computational Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Animal Behavior & Ethology (AREA)
- Databases & Information Systems (AREA)
- Machine Translation (AREA)
Abstract
本发明提供一种通过知识学习增强基于分类的软件需求跟踪链接恢复方法及电子装置,包括:将待确定跟踪关系的软件需求和代码文件中包含的文本和结构信息预处理后,构建得到需求‑代码知识图谱和代码依赖图;对需求‑代码知识图谱的结构和文本信息分别建模,学习得到需求和代码实体的向量;对需求‑代码知识图谱中的三元组的关系建模,得到关系特征向量。对代码依赖图进行挖掘,抽取出推理规则用于发现潜在的需求与代码之间的R2C链接,扩展训练数据规模。本发明能够保证在训练数据较少时仍能得到有效的预测模型,既保证R2C链接恢复的准确度,又降低恢复成本,减少人工标注数据的工作量。
Description
技术领域
本发明属于计算机技术领域,尤其涉及一种通过知识学习增强基于分类的软件需求跟踪链接恢复方法及电子装置。
背景技术
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表示边集合,每个节点vi∈V表示一个实体,它是一个需求或代码元素(包、类、方法或字段),每条边ej∈E是节点之间的一种关系类型,构建为组成知识图谱的三元组(h,r,t),其中h表示头实体(head_entity),r表示关系类型(relation),t表示尾实体(tail_entity),然后提取预处理的需求和代码的文本信息与三元组中相对应的实体关联。
本发明的一实施例包括以下几个子步骤:
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',EDC作为有向边表示直接方法调用依赖关系,ECD作为无向边表示两个类之间的间接数据依赖关系,通过分别计算代码依赖亲密度和类数据依赖亲密度作为边权重。
本发明的一实施例包括以下几个子步骤:
3a)将静态代码分析结果进行解析,获得类与类之间的方法调用结果和类所包含的类数据类型结果;
3b)利用代码中类与类之间的方法调用结果计算代码依赖亲密度(ClosenessDC)。N表示在给定的直接代码依赖中不同方法调用和类使用的数量。WeightedInDegreesink是指来自其他类的方法调用和类使用的数量和本身的方法数量的总和。WeightedInDegreesource是指提供给其他类的方法调用和类使用的数量和本身的方法数量的总和,数值范围为[0,1],具体公式如下:
3c)利用类所包含的类数据类型结果计算类数据依赖亲密度(ClosenessCD)。N'指捕获的所有类数据依赖项的数量,ndt指给定数据类型在所有类数据依赖项中的出现次数。DTi∩DTj是类之间共享的类数据类型,DTi∪DTj是类之间的所有类数据类型,数值范围为[0,1],具体公式如下:
3d)在计算类数据依赖亲密度时,通过设置idtf=1阈值,保留大于等于阈值的类数据类型;
3e)在完成上述操作后,得到所需的代码依赖图。
4、基于需求-代码知识谱图,学习包含上下文语义的结构向量和文本语义的文本向量,并构建需求-代码对的关系特征向量。
本步骤进一步对需求-代码知识谱图建模,从需求-代码知识图谱中学习实体的上下文语义和文本语义,从而捕获完整的语义向量。将实体的语义向量构建为需求-代码之间的关系特征向量,完成对输入训练模型和预测模型特征的抽取。
本发明的一实施例包括以下几个子步骤:
4a)将不带实体文本描述信息的需求-代码知识谱图中三元组输入TransR模型,获得需求-代码知识图谱的结构信息在表示空间的向量。Mr是将实体空间中的实体投射到特定关系空间中的矩阵,L1/L2为L1-范数或L2-范数,具体公式如下:
f(h,r,t)=‖hMr+r-tMr‖L1/L2
4b)TransR模型采用随机梯度下降(SGD)方法使损失函数最小,参数设置为学习速率(learning rate)λ=0.001,间隔(margin)γ=1.0,特征映射维度(dimension offeature map)nf=100,迭代次数(number of epochs)ne=1000;
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)nw=100,特征映射维度(dimension of feature map)nf=100,迭代次数(number of epochs)ne=1000。预训练的词向量采用***(Wikipedia)的词向量或者根据自身需求训练所需的词向量;
4e)将每个实体的结构向量和文本向量连接,获得最终的实体向量;
4f)根据需求-代码知识图谱中的三元组关系,构造两者之间的关系特征向量(feature_vectors)。计算为一对头实体向量(hi)减去尾实体向量(tj)得到关系向量rij作为关系特征向量,具体公式如下:
featrue_vectors=rij=hi-tj
4g)三元组的关系为traceLink,则关系特征向量标签标记为1,其他均为0.
5、基于代码依赖图,抽取推理规则。
本步骤进一步对代码依赖图进行挖掘,抽取推理规则用于强化训练数据。训练集中标记的跟踪链接为建立新的跟踪链接提供了坚实的基础,可以利用代码依赖关系来增加训练集的数量,通过定义了两个推理规则来生成新的跟踪链接来自动增加训练集的数量。
本发明的一实施例包括以下几个子步骤:
5a)如果在需求(ri)和代码(cj)之间有一个R2C链接,并且代码(cj)与代码(ck)是调用关系且它们之间的ClosenessDC大于阈值0.7,那么在需求(ri)和和代码(ck)之间就有一个R2C链接。具体推理规则如下:
R2C(需求(ri),代码(ck))
←R2C(需求(ri),代码(cj))
∧ClosenessDC≥0.7(调用代码(cj),被调用代码(ck))
5b)如果在需求(ri)和代码(cj)之间有一个R2C链接,并且代码(cj)与代码(ck)之间的ClosenessCD大于阈值0.9,那么在需求(ri)和和代码(ck)之间就有一个R2C链接。具体推理规则如下:
R2C(需求(ri),代码(ck))
←R2C(需求(ri),代码(cj))
∧ClosenessCD≥0.9((代码(cj),代码(ck))∨(代码(ck),代码(cj))
5c)在完成上述操作后,得到2条推理规则用于扩展训练数据。
6、通过训练得到的跟踪预测模型
本步骤完成跟踪预测模型的训练,是基于构建的需求(ri)和代码(cj)之间的关系特征向量,即输入模型的特征和通过推理规则扩展的训练集作为输入,训练支持向量机(SVM),其中,将有跟踪关系的特征类别设置为1,反之设置为0,再训练得到带优化参数的二分类预测模型。
本发明的一实施例包括以下几个子步骤:
6a)训练数据依据推理规则产生新的跟踪链接,得到扩展的训练数据;
6b)根据构建的需求和代码元素实体的关系特征向量,以及通过抽取的推理规则扩展的训练集作为输入,训练支持向量机(SVM)二分类模型来预测跟踪链接。SVM分类器的得分函数可以定义为:如果潜在链接是真实链接,则g(hi,tj)为正,否则为负,W为分类器的参数,具体公式如下:
6c)在训练集上最小化目标函数L来学习参数W,其中,X表示所有潜在的跟踪链接,yi,j是真实链接的标签,具体公式如下:
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.可以采用以亲密度分析为基础的推论规则采用不同的阈值设定扩展训练集。
尽管为说明目的公开了本发明的具体内容、实施算法以及附图,其目的在于帮助理解本发明的内容并据以实施,但是本领域的技术人员可以理解:在不脱离本发明及所附的权利要求的精神和范围内,各种替换、变化和修改都是可能的。本发明不应局限于本说明书最佳实施例和附图所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。
Claims (8)
1.一种通过知识学习增强基于分类的软件需求跟踪链接恢复模型构建方法,其特征在于,包括以下步骤:
将软件需求文档和代码文件中的文本信息进行预处理,得到需求/代码预处理文本,并对代码进行静态代码分析得到静态代码分析结果;
使用需求/代码预处理文本和静态代码分析结果,构建需求-代码知识图谱;
通过对需求-代码知识图谱的知识学习,获得需求-代码知识图谱中三元组的关系特征向量;
基于静态代码分析结果构建代码依赖图;
基于代码依赖图抽取推理规则,通过推理规则扩展训练数据;
利用包含需求-代码的三元组关系特征向量和通过推理规则扩展的训练数据,训练需求-代码的跟踪预测模型;
所述使用需求/代码预处理文本和静态代码分析结果,构建需求-代码知识图谱,包括:
定义需求-代码知识图谱中需求/代码元素之间以及需求与代码之间的关系类型,并根据已关联和待关联的需求文档和代码文件关系,以及静态代码分析结果解析获得定义的关系类型;
需求/代码元素作为实体,通过定义的关系类型表示为三元组(头实体,关系类型,尾实体),获得需求-代码知识图谱的三元组;
从需求/代码预处理文本中提取出每个需求/代码元素实体中相应的文本描述信息,关联三元组中实体与其文本描述信息,获得需求-代码知识图谱;
所述基于静态代码分析结果构建代码依赖图,包括:
对代码进行静态代码分析,得到静态代码分析结果;
使用静态代码分析结果,解析得到代码中类与类之间的方法调用结果和类所包含的数据类型结果;
利用代码中类与类之间的方法调用结果计算代码依赖亲密度,同时利用类所包含的数据类型结果计算类数据依赖亲密度;
使用类与类之间的代码依赖亲密度和类数据依赖亲密度构建代码依赖图。
2.根据权利要求1所述的方法,其特征在于,所述通过对需求-代码知识图谱的知识学习,获得需求-代码的关系特征向量,包括:
使用TransR算法建模需求-代码知识图谱中实体结构信息,结合带CNN编码器的DKRL算法建模需求-代码知识图谱中实体文本信息,学习得到需求-代码知识图谱中包含上下文信息的实体结构向量;
只使用带CNN编码器的DKRL算法建模需求-代码知识图谱中实体文本信息,学习得到需求-代码知识图谱中包含文本语义的实体文本向量;
将每个实体的结构向量和文本向量连接,获得最终的实体向量;
依据需求-代码知识图谱三元组关系,使用头实体减去尾实体获得需求文件和代码文件之间和其他实体之间的关系特征向量。
3.根据权利要求1所述的方法,其特征在于,所述基于代码依赖图抽取推理规则,包括:
依据代码依赖亲密度抽取代码依赖图中类与类之间的直接依赖关系,得到基于代码依赖的推理规则;
依据类数据依赖亲密度抽取代码依赖图中类与类之间的间接依赖关系,得到基于数据依赖的推理规则。
4.如权利要求1所述的方法,其特征在于,所述通过推理规则扩展训练数据,包括:
将推理规则输入训练数据,通过推理规则生成新的跟踪链接来自动增加训练集的数量。
5.根据权利要求1所述的方法,其特征在于,所述跟踪预测模型为SVM分类模型。
6.一种通过知识学习增强基于分类的软件需求跟踪链接恢复方法,其特征在于,包括以下步骤:
将待确定跟踪关系的需求和代码的实体向量表达构建为关系特征向量;
将关系特征向量输入采用权利要求1~5中任一项所述方法训练好的需求与代码的跟踪预测模型,预测需求与代码对是否存在跟踪关系。
7.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,所述计算机程序被设置为运行时执行权利要求1-5中任一项所述方法。
8.一种电子装置,其特征在于,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行如权利要求1-5中任一项所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110195758.5A CN113011461B (zh) | 2021-02-19 | 2021-02-19 | 通过知识学习增强基于分类的软件需求跟踪链接恢复方法及电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110195758.5A CN113011461B (zh) | 2021-02-19 | 2021-02-19 | 通过知识学习增强基于分类的软件需求跟踪链接恢复方法及电子装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113011461A CN113011461A (zh) | 2021-06-22 |
CN113011461B true CN113011461B (zh) | 2022-08-05 |
Family
ID=76405260
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110195758.5A Active CN113011461B (zh) | 2021-02-19 | 2021-02-19 | 通过知识学习增强基于分类的软件需求跟踪链接恢复方法及电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113011461B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116225453B (zh) * | 2023-03-16 | 2023-11-10 | 电子科技大学 | 一种增量式需求跟踪性链接恢复方法 |
CN116910646B (zh) * | 2023-07-04 | 2024-02-09 | 南京航空航天大学 | So网站中知识单元的内部链接目的分类方法 |
CN116737111B (zh) * | 2023-08-14 | 2023-10-13 | 深圳海云安网络安全技术有限公司 | 一种基于场景化的安全需求分析方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020058120A1 (en) * | 2018-09-20 | 2020-03-26 | Siemens Aktiengesellschaft | Method and apparatus for determining existence of dependence violation, electronic device, medium and program |
CN111241307A (zh) * | 2020-01-23 | 2020-06-05 | 复旦大学 | 面向软件***的软件项目及第三方库知识图谱构造方法 |
CN111597347A (zh) * | 2020-04-24 | 2020-08-28 | 扬州大学 | 知识嵌入的缺陷报告重构方法及装置 |
CN111949800A (zh) * | 2020-07-06 | 2020-11-17 | 北京大学 | 一种开源项目知识图谱的建立方法和*** |
WO2021008180A1 (zh) * | 2019-07-16 | 2021-01-21 | 扬州大学 | 面向软件缺陷知识的知识搜索方法 |
-
2021
- 2021-02-19 CN CN202110195758.5A patent/CN113011461B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020058120A1 (en) * | 2018-09-20 | 2020-03-26 | Siemens Aktiengesellschaft | Method and apparatus for determining existence of dependence violation, electronic device, medium and program |
WO2021008180A1 (zh) * | 2019-07-16 | 2021-01-21 | 扬州大学 | 面向软件缺陷知识的知识搜索方法 |
CN111241307A (zh) * | 2020-01-23 | 2020-06-05 | 复旦大学 | 面向软件***的软件项目及第三方库知识图谱构造方法 |
CN111597347A (zh) * | 2020-04-24 | 2020-08-28 | 扬州大学 | 知识嵌入的缺陷报告重构方法及装置 |
CN111949800A (zh) * | 2020-07-06 | 2020-11-17 | 北京大学 | 一种开源项目知识图谱的建立方法和*** |
Non-Patent Citations (2)
Title |
---|
An Extended Knowledge Representation Learning Approach for Context-based Traceability Link Recovery: Extended Abstract;Guoshuai Zhao等;《IEEE》;20201010;第22页 * |
Exploring Semantics of Software Artifacts to Improve Requirements Traceability Recovery: A Hybrid Approach;Shiheng Wang等;《APSEC》;20191231;第39-46页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113011461A (zh) | 2021-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110765265B (zh) | 信息分类抽取方法、装置、计算机设备和存储介质 | |
CN113011461B (zh) | 通过知识学习增强基于分类的软件需求跟踪链接恢复方法及电子装置 | |
Pahwa et al. | Stock prediction using machine learning a review paper | |
CN112149399B (zh) | 基于rpa及ai的表格信息抽取方法、装置、设备及介质 | |
US11972216B2 (en) | Autonomous detection of compound issue requests in an issue tracking system | |
US9104709B2 (en) | Cleansing a database system to improve data quality | |
WO2017132071A1 (en) | Methods, systems, and articles of manufacture for automatic fill or completion for application software and software services | |
Diamantopoulos et al. | Software requirements as an application domain for natural language processing | |
CN112748914A (zh) | 一种应用程序开发方法、装置、电子设备和存储介质 | |
KR20200071877A (ko) | 자율 증강형 반복 학습을 이용한 정보 추출 방법 및 시스템 | |
CN113138920A (zh) | 基于知识图谱与语义角色标注的软件缺陷报告分派方法及装置 | |
Yang et al. | An emotion similarity based severity prediction of software bugs: a case study of open source projects | |
CN114138244A (zh) | 模型类文件自动生成方法、装置、存储介质及电子设备 | |
CN113934909A (zh) | 基于预训练语言结合深度学习模型的金融事件抽取方法 | |
CN113312268A (zh) | 一种智能合约代码相似检测方法 | |
Adithya et al. | OntoReq: an ontology focused collective knowledge approach for requirement traceability modelling | |
CN117215935A (zh) | 一种基于多维度代码联合图表示的软件缺陷预测方法 | |
CN116432611A (zh) | 文稿写作辅助方法、***、终端及存储介质 | |
Kalo et al. | Knowlybert-hybrid query answering over language models and knowledge graphs | |
CN116841869A (zh) | 基于代码结构化信息及审查知识的Java代码审查评论生成方法及装置 | |
CN116974554A (zh) | 代码数据处理方法、装置、计算机设备和存储介质 | |
CN110688368A (zh) | 一种构件行为模型挖掘方法与装置 | |
JP2017538226A (ja) | スケーラブルなウェブデータの抽出 | |
CN114491030A (zh) | 技能标签的抽取、候选短语分类模型的训练方法及装置 | |
Yu et al. | Information Security Field Event Detection Technology Based on SAtt‐LSTM |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |