CN112527769B - 一种针对软件变更日志生成方法的自动化质量保证框架 - Google Patents

一种针对软件变更日志生成方法的自动化质量保证框架 Download PDF

Info

Publication number
CN112527769B
CN112527769B CN202011426108.9A CN202011426108A CN112527769B CN 112527769 B CN112527769 B CN 112527769B CN 202011426108 A CN202011426108 A CN 202011426108A CN 112527769 B CN112527769 B CN 112527769B
Authority
CN
China
Prior art keywords
software
change
word
log
historical
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
Application number
CN202011426108.9A
Other languages
English (en)
Other versions
CN112527769A (zh
Inventor
鄢萌
王备
刘忠鑫
徐玲
夏鑫
张小洪
付春雷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chongqing University
Original Assignee
Chongqing University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Chongqing University filed Critical Chongqing University
Priority to CN202011426108.9A priority Critical patent/CN112527769B/zh
Publication of CN112527769A publication Critical patent/CN112527769A/zh
Application granted granted Critical
Publication of CN112527769B publication Critical patent/CN112527769B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/219Managing data history or versioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/22Matching criteria, e.g. proximity measures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/279Recognition of textual entities
    • G06F40/284Lexical analysis, e.g. tokenisation or collocates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/30Computing systems specially adapted for manufacturing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Artificial Intelligence (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Computation (AREA)
  • Evolutionary Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种针对软件变更日志生成方法的自动化质量保证框架。包括如下步骤:基于软件历史变更数据,生成diffh的单词wd和msgref的单词wm的单词向量
Figure DDA0002824906140000011
Figure DDA0002824906140000012
基于协同过滤算法,计算单词wd和wm之间的关联性Rel(wd,wm);构建单词wd的单词映射表
Figure DDA0002824906140000013
基于已构建的单词映射表,分别计算两个质量分数Precisioni和Recalli;基于词频‑逆文档频率(TF‑IDF),生成变更差异向量
Figure DDA0002824906140000017
di;计算待测软件变更日志和历史软件变更之间的相似程度
Figure DDA0002824906140000018
选择与待测软件变更Ci相似度最高的前n个历史软件变更
Figure DDA0002824906140000015
Figure DDA0002824906140000014
计算相关性分数RetScorei;设置阈值Prect、Rect和Rett,对待测软件变更Ci的生成日志
Figure DDA0002824906140000016
的语义相关性进行预测;基于预测结果对软件变更日志进行过滤或者保留。

Description

一种针对软件变更日志生成方法的自动化质量保证框架
技术领域
本发明涉及软件质量保证,尤其涉及一种针对软件变更日志生成方法的自动化质量保证框架。
背景技术
目前,在软件开发和维护期间,开发人员不断地将软件更改diff软件变更到版本控制系统,如Git,以修复缺陷、添加/增强特性或重构,它列出了存储仓库更改前和更改后版本之间的差异。此外,开发人员可以将一个名为软件变更日志(commit message)的自然语言文本附加到每个软件更改中,该文本通常会总结在此更改中发生了什么,以及为什么作此更改,高质量的软件变更日志可以促进对软件变更和软件演进历史的理解。
现有技术存在的不足是:由于训练使用数据的局限性和任务的复杂性,也可能产生不令人满意的软件变更日志。根据之前的研究和人工验证,现软件变更日志生成方法生成的日志中,大约有50%以上是与它们的参考日志在语义上无关的,这种生成的日志称为语义无关的日志。这样语义无关的日志可能会误导开发人员,需要额外的精力来确认和过滤,因此可能会降低开发人员对软件变更日志自动化生成工具的信心,阻碍了软件变更日志自动化生成工具的实际使用。
发明内容
针对现有技术存在的上述问题,本发明要解决的技术问题是:自动生成软件变更日志生成的软件变更日志中,存在大量语义无关的日志。
为解决上述技术问题,本发明采用如下技术方案:软件变更日志生成方法的自动化质量保证框架,包括如下步骤:
S100:构建两个组件,分别是基于协同过滤的组件和基于检索的组件;
通过基于协同过滤的组件,对于待测软件变更Ci的生成日志
Figure GDA0004151374950000011
并分别计算两个质量分数Precisioni和Recalli
通过基于检索的组件计算对于一个待测软件变更Ci与历史软件变更
Figure GDA0004151374950000012
的相关性分数RetScorei
S200:设置阈值Prect、Rect和Rett,预测软件变更Ci的生成日志
Figure GDA0004151374950000013
是否为语义无关的日志;
分别比较Precisioni、Recalli和RetScorei与相应阈值的大小,Precisioni<Prect,或者Recalli<Rect,或RetScorei<Rett,当三个条件中满足任一条件,则预测软件变更Ci的生成日志
Figure GDA0004151374950000021
被预测为语义无关的日志;当三个条件都不满足,则预测软件变更Ci的生成日志
Figure GDA0004151374950000022
被预测为语义相关的日志。
作为优选的,所述S100中通过基于协同过滤的组件,对于待测软件变更Ci的生成日志
Figure GDA0004151374950000023
并分别计算两个质量分数Precisioni和Recalli的具体步骤为:
S110:获取历史软件变更数据和待测软件变更数据,每条历史软件变更数据和每条待测软件变更数据均由变更差异diffh、参考日志msgref和生成日志msggen组成;
S111:从历史软件变更的变更差异diffh中选出包含单词w的软件变更数据记为wd,所有的wd构建成N维的变更差异单词向量
Figure GDA0004151374950000024
从历史软件变更的参考日志msgref中选出包含单词w的软件变更数据记为wm,所述所有的wm构建成N维的参考日志单词向量
Figure GDA0004151374950000025
N为历史软件变更数据的数量;
所述变更差异单词向量
Figure GDA0004151374950000026
定义为:
Figure GDA0004151374950000027
Figure GDA0004151374950000028
表示单词wd在第j个历史软件变更
Figure GDA0004151374950000029
中是否存在;即如果历史软件变更
Figure GDA00041513749500000210
的变更差异
Figure GDA00041513749500000211
包含单词wd,则
Figure GDA00041513749500000212
否则
Figure GDA00041513749500000213
所述参考日志单词向量
Figure GDA00041513749500000214
定义为:
Figure GDA00041513749500000215
Figure GDA00041513749500000216
表示单词wm在第j个历史软件变更
Figure GDA00041513749500000217
中是否存在;若历史软件变更
Figure GDA00041513749500000218
的参考日志
Figure GDA00041513749500000219
包含单词wm,则
Figure GDA00041513749500000220
否则
Figure GDA00041513749500000221
S112:通过协同过滤算法,基于变更差异单词向量
Figure GDA00041513749500000222
和参考日志单词向量
Figure GDA00041513749500000223
利用余弦相似度公式计算单词wd和单词wm之间的关联性Rel(wd,wm),计算公式如下:
Figure GDA00041513749500000224
S113:利用Rel(wd,wm)构建单词wd的单词映射表
Figure GDA00041513749500000225
定义如下:
Figure GDA00041513749500000226
为了减小M的大小,从而加快计算速度,我们默认设置k为10;
S114:设置阈值Ignore-rate对无用的单词进行过滤,利用步骤S113所得单词映射表
Figure GDA00041513749500000227
计算得到待测软件变更Ci中的一个生成日志
Figure GDA00041513749500000228
的两个质量分数Precisioni和Recalli
阈值Ignore-rate表示为单词可以被忽略的概率,若单词对应的出错概率超过该阈值,则认为是无用单词,对其进行过滤;质量分数Precisioni定义为:
Figure GDA0004151374950000031
质量分数Recalli定义为:
Figure GDA0004151374950000032
其中|·|表示一个集合的长度。
作为优选,所述S100中通过基于检索的组件计算对于一个待测软件变更Ci与历史软件变更的相关性分数RetScorei的具体步骤为:
S120:使用词频-逆文档频率,将历史软件变更
Figure GDA0004151374950000033
的变更差异
Figure GDA0004151374950000034
表示为历史软件变更差异向量
Figure GDA0004151374950000035
将待测软件变更Ci的变更差异diffi表示为待测软件变更差异向量di
Figure GDA0004151374950000036
和di分别定义如下:
Figure GDA0004151374950000037
Figure GDA0004151374950000038
其中,#w表示单词的总数量;
Figure GDA0004151374950000039
表示历史软件变更包含单词wd的变更差异diff的数量;#diffi|wd∈diffi表示待测软件变更包含单词wd的变更差异diff的数量;
S121:利用历史软件变更差异向量
Figure GDA00041513749500000310
和待测软件变更差异向量di,基于余弦相似度计算得到待测软件变更Ci和历史软件变更
Figure GDA00041513749500000311
之间的相似程度
Figure GDA00041513749500000312
定义为:
Figure GDA00041513749500000313
其中,
Figure GDA00041513749500000314
表示为
Figure GDA00041513749500000315
和di之间的余弦相似度,
Figure GDA00041513749500000316
待测软件变更差异向量,
Figure GDA00041513749500000317
历史软件变更差异向量;
S122:根据步骤S121得到的相似程度
Figure GDA00041513749500000318
将历史软件变更与待测软件变更Ci进行比较,按照相似度高到低排序,选出前n个历史软件变更,记为
Figure GDA00041513749500000319
S123:利用步骤S122得到的n个历史软件变更
Figure GDA00041513749500000320
计算得到待测软件变更Ci与n个历史软件变更的相关性分数RetScorei,计算公式如下:
Figure GDA00041513749500000321
其中,RetScorei表示待测软件变更Ci与n个历史软件变更数据的相关性分数,di为待测软件变更Ci的变更差异向量,
Figure GDA00041513749500000322
为历史软件变更
Figure GDA00041513749500000323
的变更差异向量,其中,j=top1,top2,……,topn,默认设置n为5。
相对于现有技术,本发明至少具有如下优点:
本发明提出的用于软件变更日志生成方法的自动化质量保证框架(QAcom)能够有效地过滤掉语义不相关的日志,保留语义相关的日志,并通过保证软件变更日志生成方法生成的软件变更日志的质量,可以运用至实际的工作场景。
附图说明
图1为本发明的整体框架图。
具体实施方式
下面对本发明作进一步详细说明。
本发明描述了一种用于软件变更日志生成方法的自动化质量保证框架。该发明是应用于现有的基于神经机器翻译和基于检索的软件变更日志生成方法的插件,具体来说,就是给定一个变更差异diff和其对应的生成日志,通过计算质量分数,用以估计生成的日志和参考日志(估计时未知)之间的语义相关性,并通过过滤低质量分数的生成日志来保证生成的软件变更日志的质量。
本发明中,基于协同过滤组件和检索组件来计算质量分数。首先,基于历史软件变更数据,生成diffh的单词wd和msgref的单词wm的单词向量
Figure GDA0004151374950000041
Figure GDA0004151374950000042
基于协同过滤算法,计算单词wd和wm之间的关联性Rel(wd,wm);构建单词wd的单词映射表
Figure GDA0004151374950000043
基于已构建的单词映射表,分别计算两个质量分数Precisioni和Recalli;基于词频-逆文档频率(TF-IDF),生成变更差异向量
Figure GDA0004151374950000044
di;计算待测软件变更和历史软件变更之间的相似程度
Figure GDA0004151374950000045
选择与待测软件变更Ci相似度最高的前n个历史软件变更
Figure GDA0004151374950000046
Figure GDA0004151374950000047
计算相关性分数RetScorei;设置阈值Prect、Rect和Rett,对待测软件变更Ci的生成日志
Figure GDA0004151374950000048
的语义相关性进行预测;基于预测结果对生成日志进行过滤或者保留。
一种针对软件变更日志生成方法的自动化质量保证框架,其特征在于:包括如下步骤:
S100:构建两个组件,分别是基于协同过滤的组件和基于检索的组件;
通过基于协同过滤的组件,对于待测软件变更Ci的生成日志
Figure GDA0004151374950000049
并分别计算两个质量分数Precisioni和Recalli
所述S100中通过基于协同过滤的组件,对于待测软件变更Ci的生成日志
Figure GDA00041513749500000410
并分别计算两个质量分数Precisioni和Recalli的具体步骤为:
S110:获取历史软件变更数据和待测软件变更数据,每条历史软件变更数据和每条待测软件变更数据均由变更差异diffh、参考日志msgref和生成日志msggen组成;
S111:从历史软件变更的变更差异diffh中选出包含单词w的软件变更数据记为wd,所述所有的wd构建成N维的变更差异单词向量
Figure GDA0004151374950000051
从历史软件变更的参考日志msgref中选出包含单词w的软件变更数据记为wm,所述所有的wm构建成N维的参考日志单词向量
Figure GDA0004151374950000052
N为历史软件变更数据的数量;
所述变更差异单词向量
Figure GDA0004151374950000053
定义为:
Figure GDA0004151374950000054
Figure GDA0004151374950000055
表示单词wd在第j个历史软件变更
Figure GDA0004151374950000056
中是否存在,即如果历史软件变更
Figure GDA0004151374950000057
的变更差异
Figure GDA0004151374950000058
包含单词wd,则
Figure GDA0004151374950000059
否则
Figure GDA00041513749500000510
所述参考日志单词向量
Figure GDA00041513749500000511
定义为:
Figure GDA00041513749500000512
Figure GDA00041513749500000513
表示单词wm在第j个历史软件变更
Figure GDA00041513749500000514
中是否存在,若历史软件变更
Figure GDA00041513749500000515
的参考日志
Figure GDA00041513749500000516
包含单词wm,则
Figure GDA00041513749500000517
否则
Figure GDA00041513749500000518
S112:通过协同过滤算法,基于变更差异单词向量
Figure GDA00041513749500000519
和参考日志单词向量
Figure GDA00041513749500000520
利用余弦相似度公式计算单词wd和单词wm之间的关联性Rel(wd,wm),计算公式如下:
Figure GDA00041513749500000521
S113:利用Rel(wd,wm)构建单词wd的单词映射表
Figure GDA00041513749500000522
定义如下:
Figure GDA00041513749500000523
为了减小M的大小,从而加快计算速度,我们默认设置k为10;
S114:设置阈值Ignore-rate对无用的单词进行过滤,利用步骤S113所得单词映射表
Figure GDA00041513749500000524
计算得到待测软件变更Ci中的一个生成日志
Figure GDA00041513749500000525
的两个质量分数Precisioni和Recalli
阈值Ignore-rate表示为单词可以被忽略的概率,若单词对应的出错概率超过该阈值,则认为是无用单词,对其进行过滤;质量分数Precisioni定义为:
Figure GDA00041513749500000526
质量分数Recalli定义为:
Figure GDA00041513749500000527
其中|·|表示一个集合的长度。
通过基于检索的组件计算对于一个待测软件变更Ci与历史软件变更
Figure GDA00041513749500000528
的相关性分数RetScorei
所述S100中通过基于检索的组件计算对于一个待测软件变更Ci与历史软件变更的相关性分数RetScorei的具体步骤为:
S120:使用词频-逆文档频率,将历史软件变更
Figure GDA00041513749500000529
的变更差异
Figure GDA00041513749500000530
表示为历史软件变更差异向量
Figure GDA00041513749500000531
将待测软件变更Ci的变更差异diffi表示为待测软件变更差异向量di
Figure GDA00041513749500000532
和di分别定义如下:
Figure GDA0004151374950000061
Figure GDA0004151374950000062
其中,#表示单词的总数量;
Figure GDA0004151374950000063
表示历史软件变更包含单词wd的变更差异diff的数量;#diffi|wd∈diffi表示待测软件变更包含单词wd的变更差异diff的数量;
S121:利用历史软件变更差异向量
Figure GDA0004151374950000064
和待测软件变更差异向量di,基于余弦相似度计算得到待测软件变更Ci和历史软件变更
Figure GDA0004151374950000065
之间的相似程度
Figure GDA0004151374950000066
定义为:
Figure GDA0004151374950000067
其中,
Figure GDA0004151374950000068
表示为
Figure GDA0004151374950000069
和di之间的余弦相似度,
Figure GDA00041513749500000610
待测软件变更差异向量,
Figure GDA00041513749500000611
历史软件变更差异向量;
S122:根据步骤S121得到的相似程度
Figure GDA00041513749500000612
将历史软件变更与待测软件变更Ci进行比较,按照相似度高到低排序,选出前n个历史软件变更,记为
Figure GDA00041513749500000613
S123:利用步骤S122得到的n个历史软件变更
Figure GDA00041513749500000614
计算得到待测软件变更Ci与n个历史软件变更的相关性分数RetScorei,计算公式如下:
Figure GDA00041513749500000615
其中,RetScorei表示待测软件变更Ci与n个历史软件变更数据的相关性分数,di为待测软件变更Ci的变更差异向量,
Figure GDA00041513749500000616
为历史软件变更
Figure GDA00041513749500000617
的变更差异向量,其中,j=top1,top2,……,topn,默认设置n为5。
S200:设置阈值Prect、Rect和Rett,预测软件变更Ci的生成日志
Figure GDA00041513749500000618
是否为语义无关的日志;
分别比较Precisioni、Recalli和RetScorei与相应阈值的大小,i<Prect,或者Recalli<Rect,或RetScorei<Rett,当三个条件中满足任一条件,则预测软件变更Ci的生成日志
Figure GDA00041513749500000619
被预测为语义无关的日志;当三个条件都不满足,则预测软件变更Ci的生成日志
Figure GDA00041513749500000620
被预测为语义相关的日志。
实验验证:
本发明选择了三种最先进的软件变更日志生成方法,来验证本发明在预测生成日志的语义相关性方面的性能,分别是NMT、NNGen和PtrGNCMsg。NMT采用神经机器翻译模型,将变更差异diff自动转化为简洁的软件变更日志;NNGen通过使用最近邻算法从历史软件变更中检索软件变更日志;PtrGNCMsg通过指针生成器网络改进了神经机器翻译模型。本发明提出的用于软件变更日志生成方法的自动化质量保证框架称作QAcom。
本发明选择的数据来自网站Github,包含三个公共数据集:Top1000,Cleaned和Top2000。Top1000数据集由NMT方法的作者构建,包含Github上前1000个高星Java项目的软件变更,训练集、验证集和测试集中分别有26208、3000和3000个软件变更数据;Cleaned数据集是由NNGen方法的作者从Top1000数据集中删除了一些有噪声的软件变更之后构建而成的,训练集、验证集和测试集分别包含了22112、2511和2511个软件变更数据;Top2000数据集由PtrGNCMsg方法的作者构建,收集自GitHub上前1001-2081的高星Java项目,其训练集、验证集和测试集中分别有23623、5051和3989个软件变更数据。
本发明同时采用了自动评价方法和人工评价方法:
自动评价:给定软件变更日志生成方法(例如NMT)和数据集,首先在不集成QAcom的情况下训练、验证和测试该方法;通过计算自动评价指标,来度量测试集上的所有生成日志的整体质量。然后在验证集上调整QAcom的阈值;通过这些阈值,应用QAcom来预测和过滤这些生成的日志中语义无关的日志;最后,使用相同的自动化评价指标来评价QAcom保留的日志的整体质量,这也被认为是该方法在QAcom集成下(如NMT+QAcom)的性能。测试集中被QAcom保留的生成日志与所有生成日志的比例,即保留比例也被保留以对比性能。此外,为了保证对比的公平性,本发明添加了一个特殊的对照组,该对照组随机保留生成的日志以满足相同的保留比例,然后计算评价指标。这个随机选择对照组(RS)过程执行10次,然后记录平均性能。自动评价指标为BLEU、METEOR和ROUGE-L。BLEU分数基于公式
Figure GDA0004151374950000071
Figure GDA0004151374950000072
其中
Figure GDA0004151374950000073
表示文本块的修正后的n_gram精确度,而惩罚因子
Figure GDA0004151374950000074
c是生成日志长度,r是参考日志长度;METEOR=(1-pen)×Fmeans,其中pen为惩罚因子,惩罚的是候选翻译中的词序与参考翻译中的词序不同,
Figure GDA0004151374950000075
为可调控的参数,
Figure GDA0004151374950000076
m为候选生成日志中能够被匹配的一元组数量,c和r同BLEU;ROUGE-L计算的是生成日志与参考日志的最长公共子序列长度,长度越长,得分越高,基于F值,
Figure GDA0004151374950000077
其中
Figure GDA0004151374950000078
Figure GDA0004151374950000081
X表示生成日志,Y表示参考日志,LCS(X,Y)表示生成日志与参考日志的最长公共子序列的长度,m表示参考日志的长度,n表示候选日志的长度。
人工评价:同时,本发明邀请了6位参与者(2位博士研究生和4为硕士研究生)对实验结果进行人工评价。所有参与者的专业都是软件工程,并且有4至7年的Java编程经验。他们被要求通过检查参考日志和NMT、NNGen和PtrGNCMsg的生成日志之间的语义相关性,来评价生成日志的质量。具体来说,从每个数据集中随机选择200个软件变更,并将它们随机分成两组。6名参与者也被平均分成两组。每个参与者小组被要求评估来自每个数据集的100个软件变更,即总共300个软件变更。因此,每一个软件变更将被3个参与者打分。参与者被要求对每个生成的日志给出1到5的质量分数,以衡量该日志和参考日志之间的语义相关性。1分表示两个日志之间没有语义关联,5分表示两个日志语义相同。其中,我们认为得分为4分或5分的日志是语义相关的,其余的日志是语义无关的。
为了使得本发明的性能达到最优,首先采用差分进化算法,对Ignore-rate、Prect、Rect和Rett进行调优,其中用于调优的数据集同样为历史软件变更数据,调优约束为(1)保留的生成日志的BLEU分数不低于0.4(2)保留的日志数量尽可能多。对于不同的方法和不同的数据集,最优的阈值如表1所示。
表1.QAcom应用三种日志软件变更方法、三种数据集上的最优阈值
Figure GDA0004151374950000082
人工评价实验结果如表2所示,以NMT方法为例,“NMT”行表示NMT在所有测试集上的性能,即所有的生成日志的总体质量,保留比例为100%。“NMT+RS”行表示随机选择的生成日志的整体质量,其保留比例和QAcom的结果保持一致。“NMT+QAcom”行表示QAcom保留的生成日志的总体质量。在表1中有四个发现:
①在所有情况下,所有的生成日志的整体质量与随机选取的生成日志的质量几乎没有差别,这说明随机选择的操作对生成日志的质量影响不大。
②QAcom保留的生成日志的整体质量明显优于随机选取。例如,在Cleaned数据集中,NMT+QAcom可将NMT+RS的BLEU、METEOR和ROUGE平均提高177%,134%和96%。分别。通过发现①可以推断,相比过滤语义相关信息,QAcom可以过滤出更多的语义无关信息。
③三种集成QAcom的软件变更日志生成方法的BLEU得分都接近或超过阈值调优时使用的约束(1)(即BLEU不低于0.4),这表明QAcom保留的生成日志的整体质量良好。因此,QAcom能够成功地保证其所保留的生成日志的整体质量。
④QAcom的保留比例随着使用的数据集和软件变更日志生成方法的不同而变化。以Top2000数据集为例,在三种软件变更日志生成方法中,PtrGNCMsg+QAcom的保留比例最高。在Cleaned数据集上,PtrGNCMsg+QAcom只保留了16.66%的生成日志,而NMT和NNGen的保留比例分别为24.12%和32.17%。原因可能是PtrGNCMsg的有效性在已清理的数据集上受到了限制。换句话说,PtrGNCmsg无法在Cleaned数据集上生成足够多的语义相关日志。
表2-OAcom在三个数据集上与三种最先进的软件变更日志生成方法集成时的自动评价结果
Figure GDA0004151374950000091
Figure GDA0004151374950000101
人工评估结果如表3所示,“1”到“5”的表示每种软件变更日志生成方法在每个数据集上的最终质量分数的分布。“#保留”列表示保留的日志数量,“平均分数”列表示质量分数的平均分数。首先“#保留”与表2所示的保留比例基本一致。例如,Top1000数据集上NNGen的保留比例为96.13%,NNGen的“#保留”为200中的189。在所有情况下,QAcom都比随机选择(RS)能够过滤出更多语义上不相关的信息,并保留更多语义上相关的信息。此外,在所有情况下,QAcom保留的生成日志中语义相关日志的比率都大于所有生成日志中语义相关日志的比率。此外,QAcom保留的生成日志的平均得分高于原始数据集的平均得分,也高于随机选择对照组的平均得分
表3-OAcom在三个数据集上与三种最先进的软件变更日志生成方法集成时的人工评价结果
Figure GDA0004151374950000102
简而言之,实验结果证明,本发明提出的用于软件变更日志生成方法的自动化质量保证框架(QAcom)能够有效地过滤掉语义不相关的日志,保留语义相关的日志,并通过保证软件变更日志生成方法生成的软件变更日志的质量,可以运用至实际的工作场景,为提高现有软件变更日志生成方法的实用性做出贡献。
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。

Claims (1)

1.一种针对软件变更日志生成方法的自动化质量保证方法,其特征在于:包括如下步骤:
S100:构建两个组件,分别是基于协同过滤的组件和基于检索的组件;
通过基于协同过滤的组件,对于待测软件变更Ci的生成日志并分别计算两个质量分数Precisioni和Recalli,具体步骤为:
S110:获取历史软件变更数据和待测软件变更数据,每条历史软件变更数据和每条待测软件变更数据均由变更差异diffh、参考日志msgref和生成日志msggen组成;
S111:从历史软件变更的变更差异diffh中选出包含单词w的软件变更数据记为wd,所有的wd构建成N维的变更差异单词向量从历史软件变更的参考日志msgref中选出包含单词w的软件变更数据记为wm,所有的wm构建成N维的参考日志单词向量N为历史软件变更数据的数量;
所述变更差异单词向量定义为: 表示单词wd在第j个历史软件变更中是否存在;
所述参考日志单词向量定义为: 表示单词wm在第j个历史软件变更中是否存在;
S112:通过协同过滤算法,基于变更差异单词向量和参考日志单词向量利用余弦相似度公式计算单词wd和单词wm之间的关联性Rel(wd,wm),计算公式如下:
S113:利用Rel(wd,wm)构建单词wd的单词映射表定义如下:
S114:设置阈值Ignore-rate对无用的单词进行过滤,利用步骤S113所得单词映射表计算得到待测软件变更Ci中的一个生成日志的两个质量分数Precisioni和Recalli;Ignore-rate表示单词可以被忽略的概率;质量分数Precisioni定义为: 质量分数Recalli定义为:其中|·|表示一个集合的长度;
通过基于检索的组件计算对于一个待测软件变更Ci与历史软件变更的相关性分数RetScorei,具体步骤为:
S120:使用词频-逆文档频率,将历史软件变更的变更差异表示为历史软件变更差异向量将待测软件变更Ci的变更差异diffi表示为待测软件变更差异向量di和di分别定义如下:
其中,#w表示单词的总数量;表示历史软件变更包含单词wd的变更差异diff的数量;#diffii|wd∈diffii表示待测软件变更包含单词wd的变更差异diff的数量;
S121:利用历史软件变更差异向量和待测软件变更差异向量di,基于余弦相似度计算得到待测软件变更Ci和历史软件变更之间的相似程度定义为:
其中,表示为和di之间的余弦相似度,待测软件变更差异向量,历史软件变更差异向量;
S122:根据步骤S121得到的相似程度将历史软件变更与待测软件变更Ci进行比较,按照相似度高到低排序,选出前n个历史软件变更,记为
S123:利用步骤S122得到的n个历史软件变更计算得到待测软件变更Ci与n个历史软件变更的相关性分数RetScorei,计算公式如下:
其中,RetScorei表示待测软件变更Ci与n个历史软件变更数据的相关性分数,di为待测软件变更Ci的变更差异向量,为历史软件变更的变更差异向量,其中,j=top1,top2,……,topn
S200:设置阈值Prect、Rect和Rett,预测软件变更Ci的生成日志是否为语义无关的日志;
分别比较Precisioni、Recalli和RetScorei与相应阈值的大小,Precisioni<Prect,或者Recalli<Rect,或RetScorei<Rett,当三个条件中满足任一条件,则预测软件变更Ci的生成日志被预测为语义无关的日志;当三个条件都不满足,则预测软件变更Ci的生成日志被预测为语义相关的日志。
CN202011426108.9A 2020-12-09 2020-12-09 一种针对软件变更日志生成方法的自动化质量保证框架 Active CN112527769B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011426108.9A CN112527769B (zh) 2020-12-09 2020-12-09 一种针对软件变更日志生成方法的自动化质量保证框架

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011426108.9A CN112527769B (zh) 2020-12-09 2020-12-09 一种针对软件变更日志生成方法的自动化质量保证框架

Publications (2)

Publication Number Publication Date
CN112527769A CN112527769A (zh) 2021-03-19
CN112527769B true CN112527769B (zh) 2023-05-16

Family

ID=74996742

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011426108.9A Active CN112527769B (zh) 2020-12-09 2020-12-09 一种针对软件变更日志生成方法的自动化质量保证框架

Country Status (1)

Country Link
CN (1) CN112527769B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113282336B (zh) * 2021-06-11 2023-11-10 重庆大学 一种基于质量保证框架的代码摘要集成方法
CN113657121B (zh) * 2021-09-03 2023-04-07 四川大学 一种日志变量语义标注方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103984756A (zh) * 2014-05-29 2014-08-13 重庆大学 基于半监督概率潜在语义分析的软件变更日志分类方法
CN106682169A (zh) * 2016-12-27 2017-05-17 北京奇虎科技有限公司 一种应用标签挖掘方法、装置和应用搜索方法、服务器
CN109062763A (zh) * 2018-07-31 2018-12-21 云南大学 一种从svn日志事件流中动态实时挖掘软件过程活动的方法
CN109190060A (zh) * 2018-07-10 2019-01-11 天津大学 一种基于有效人机交互的服务标注质量优化方法
CN111090460A (zh) * 2019-10-12 2020-05-01 浙江大学 一种基于最近邻算法的代码变更日志自动生成方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11120033B2 (en) * 2018-05-16 2021-09-14 Nec Corporation Computer log retrieval based on multivariate log time series
US11416622B2 (en) * 2018-08-20 2022-08-16 Veracode, Inc. Open source vulnerability prediction with machine learning ensemble
US11055081B2 (en) * 2018-09-17 2021-07-06 International Business Machines Corporation Recommending software project dependency upgrades

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103984756A (zh) * 2014-05-29 2014-08-13 重庆大学 基于半监督概率潜在语义分析的软件变更日志分类方法
CN106682169A (zh) * 2016-12-27 2017-05-17 北京奇虎科技有限公司 一种应用标签挖掘方法、装置和应用搜索方法、服务器
CN109190060A (zh) * 2018-07-10 2019-01-11 天津大学 一种基于有效人机交互的服务标注质量优化方法
CN109062763A (zh) * 2018-07-31 2018-12-21 云南大学 一种从svn日志事件流中动态实时挖掘软件过程活动的方法
CN111090460A (zh) * 2019-10-12 2020-05-01 浙江大学 一种基于最近邻算法的代码变更日志自动生成方法

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
Comparing approaches to analyze refactoring activity on software repositories;Soares, Gustavo等;《JOURNAL OF SYSTEMS AND SOFTWARE》;20130430;第1006-1022页 *
Increasing Precision of Automatically Generated Trace Links;Huebner, Paul等;《Lecture Notes in Computer Science》;20190101;第73-89页 *
基于日志的数据中心内性能事件管理;张圣林;《中国博士学位论文全文数据库 信息科技辑》;20190215;I137-3 *
基于概率潜在语义分析的软件变更分类研究;鄢萌;《中国优秀硕士学位论文全文数据库 信息科技辑》;20140215;I138-160 *
软件仓库的主题挖掘及其在软件维护中的应用研究;鄢萌;《中国博士学位论文全文数据库 信息科技辑》;20180615;I138-25 *

Also Published As

Publication number Publication date
CN112527769A (zh) 2021-03-19

Similar Documents

Publication Publication Date Title
CN112527769B (zh) 一种针对软件变更日志生成方法的自动化质量保证框架
US20040249808A1 (en) Query expansion using query logs
EP3608801A1 (en) Method of rapidly searching element information in a bim model
Liu et al. Has this bug been reported?
CN114218932A (zh) 基于故障因果图谱的航空故障文本摘要生成方法及其装置
CN112732914A (zh) 基于关键词匹配的文本聚类方法、系统、储存介质及终端
CN117688158A (zh) 奖励模型的训练方法、答案评价方法、装置和设备
CN116522912B (zh) 一种包装设计语言模型的训练方法、装置、介质及设备
CN115982429B (zh) 一种基于流程控制的知识管理方法及系统
CN114579606B (zh) 预训练模型数据处理方法、电子设备及计算机存储介质
Yang et al. Knowledge-prompted estimator: A novel approach to explainable machine translation assessment
CN113946651B (zh) 维修知识推荐方法、装置、电子设备、介质及产品
CN115344755A (zh) 数据标准中数据约束条件推荐方法及系统
CN108733824B (zh) 考虑专家知识的交互式主题建模方法及装置
CN113590673A (zh) 基于区块链深度学习的数据热度统计方法
JP7009911B2 (ja) 回答出力プログラム、回答出力方法および情報処理装置
CN116228484B (zh) 基于量子聚类算法的课程组合方法及装置
US20230110007A1 (en) Assessing if records from different data sources represent a same entity
CN117273259B (zh) 在线课程学习路径推荐方法和装置
KR101363335B1 (ko) 문서 분류모델 생성장치 및 방법
CN116703075B (zh) 电力调度决策方法、装置、电子设备及存储介质
CN113282336B (zh) 一种基于质量保证框架的代码摘要集成方法
CN112685324B (zh) 一种生成测试方案的方法及系统
Liu et al. Clustering web surfers with probabilistic models in a real application
CN104361104B (zh) 一种高效的图像检索结果质量评价方法

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