1.本发明主要涉及到软件工程的验证技术领域,特指一种基于循证软件工程和分类学的软件自动修复评估偏见发现及验证方法。
背景技术:2.作为软件工程领域中的研究热点,软件自动修复技术旨在无人为干预的情况下自动地修复软件中存在的缺陷,其目的是在减轻开发者调试负担、提高软件质量、节约开发成本方面具有巨大价值和重要意义。
3.通常,每提出一个新的软件自动修复技术,都需要相应对其进行一次评估活动,以准确判定其相较以前修复技术的优点和缺点。传统软件自动修复技术的评估由三个步骤组成:
4.s1:选择国际通用的基准缺陷程序数据集,并选择用于评估的软件自动修复技术。
5.s2:对已选定的基准缺陷程序数据集中的每一个缺陷程序,用软件自动修复技术进行修复实验,得到修复结果,即修复得到的补丁程序和修复时间。
6.s3:对修复结果进行分析,比较不同软件自动修复技术之间的优劣。
7.在上述步骤中,评估者常常会在评估过程中引入各种各样的偏见。所述偏见的定义为:自动修复评估中会影响评估结果的任何因素。这样的偏见往往会导致得到的评估结果并不准确。例如,在数据集的选择步骤中,评估者对自动修复技术a选用数据集m,对自动修复技术b选用数据集n,最后对二者的修复结果进行比较,在这种情况下,评估者被认为引入了数据集选择偏见,导致a和b无法得到公平的评估,从而造成了评估结果的失真。
8.因此,自软件自动修复技术兴起以来,偏见研究,即发现和验证软件自动修复评估中存在的偏见,就成为了一个重要的课题。然而,目前的发现偏见的方法严重依赖于研究者对自动修复评估的个人主观认识,目前尚未有一种方法能够支撑系统性的软件自动修复评估偏见发现。
9.在软件自动修复评估的偏见研究中,发现评估偏见之后往往涉及对偏见的验证。传统偏见验证通常由三个步骤组成:
10.s1:对评估偏见所对应的因素进行多种设置。
11.s2:通过控制变量实验,对不同设置的偏见进行自动修复技术评估。
12.s3:收集自动修复技术评估结果,评估该偏见对自动修复技术评估的影响。
13.然而,目前的偏见评估技术在验证一个偏见的时候,往往又引入了其他的偏见,导致最后对偏见的验证结果失真。
14.由上可知,上述传统方式存在以下问题:
15.1、偏见发现效率低:软件自动修复评估可分为三大步骤,即:数据集选择,修复实验,效果评估。由于软件自动修复系统的复杂性,评估者在进行软件自动修复评估时往往会引入各种各样的偏见。现有的偏见发现技术过于依赖研究者对自动修复评估的主观理解,往往一次只能发现一个偏见。目前并未有任何技术能够支撑系统性的偏见发现。
16.2、偏见验证准确性差:在进行偏见验证的过程中,需要采用控制变量法,即除了待验证的偏见,其他能够影响实验结果的因素都需要保持一致。然而,目前的偏见验证技术在验证特定偏见时,往往会忽略掉其他偏见的存在,从而将其他偏见引入到偏见评估实验中,最后影响了偏见验证的准确性。
技术实现要素:17.本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种原理简单、操作简便、验证准确性高的软件自动修复评估偏见发现及验证方法。
18.为解决上述技术问题,本发明采用以下技术方案:
19.一种软件自动修复评估偏见发现及验证方法,其包括:
20.步骤s1:收集相关文献:收集与软件自动修复技术评估相关的文献;
21.步骤s2:筛选文献:对步骤s1收集到的文献进行筛选,得到开展偏见研究的文献;
22.步骤s3:获取已发现的偏见:从步骤s2获取到的偏见研究文献中提取出已发现的偏见;
23.步骤s4:构建树状分类:提出面向自动修复技术评估偏见的树状分类;
24.步骤s5:映射现有偏见:将步骤s3获取到的偏见映射到步骤s4提出的树状中;
25.步骤s6:发现新的偏见:基于步骤s5得到的树状分类偏见映射,发现新的偏见;
26.步骤s7:实现评估软件平台:实现用于评估偏见的软件平台;
27.步骤s8:消除现有偏见:基于步骤s7实现的软件平台,对现有偏见进行消除;
28.步骤s9:验证新的偏见:在对现有偏见进行消除后,在评估软件平台上对新的偏见进行验证。
29.作为本发明方法的进一步改进:所述步骤s1包括:
30.步骤s11:基于布尔运算中的and和or构建搜索字符串;
31.步骤s12:在文献数据库以及学术文献搜索引擎中对步骤s11构造的字符串进行搜索,将搜索到的结果对应的文献进行收集。
32.作为本发明方法的进一步改进:所述步骤s2包括:
33.步骤s21:基于步骤s1已获取到的相关文献,将全文不可用的文献排除在外;
34.步骤s22:将学位论文排除在外。
35.步骤s23:将没有开展偏见研究的文献排除在外。
36.作为本发明方法的进一步改进:所述步骤s3包括:
37.步骤s31:基于s2已获取到的开展偏见研究的文献,对每一项偏见研究,提取其发现并验证的偏见;
38.步骤s32:提取每项偏见研究的基础信息,包含:作者姓名,研究发表的渠道,发表年份;
39.步骤s33:提取该偏见所影响的自动修复技术评估指标,以及影响的力度大小。
40.作为本发明方法的进一步改进:所述步骤s4包括:
41.步骤s41:确定分类的类型为树状分类;
42.步骤s42:确定分类的标准为偏见影响的软件自动修复评估的具体阶段;
43.步骤s43:基于相互独立,完全穷尽的原则,对偏见进行分类,最后得到三层树状分
类。
44.作为本发明方法的进一步改进:所述步骤s5包括:
45.步骤s51:基于步骤s3获取到的已发现偏见,先将其映射到s4得到的分类的第二层分类中;
46.步骤s52:再将已发现偏见进一步映射到s4得到的分类的第三层分类,即最下层分类。
47.作为本发明方法的进一步改进:所述步骤s6包括:
48.步骤s61:基于步骤s4已构建的树状分类及步骤s5得到的已发现偏见映射,发现第三层分类中尚未有任何映射的分类;
49.步骤s62:基于尚未有任何映射的分类,明确对应的尚未被发现的偏见;
50.作为本发明方法的进一步改进:所述步骤s7包括:
51.步骤s71:实现数据集选择模块;
52.步骤s72:实现缺陷定位模块,即将一个标准的缺陷定位技术ochiai实现到软件平台中;
53.步骤s73:实现补丁生成模块;
54.步骤s74:实现补丁验证模块;
55.步骤s75:实现效果评估模块,对偏见评估实验得到的结果,含补丁程序和消耗时间,进行收集和分析。
56.作为本发明方法的进一步改进:所述步骤s8包括:
57.步骤s81:对已发现的偏见,明确出其中可被消除的偏见;
58.步骤s82:对偏见进行消除,即采用统一的配置进行控制变量。
59.作为本发明方法的进一步改进:所述步骤s9的具体步骤为:
60.步骤s91:进行控制变量实验,即实现待验证偏见对应的多种设置;
61.步骤s92:对每一种设置开展软件自动修复技术评估实验;
62.步骤s93:对实验结果进行评估,从而验证偏见对软件自动修复技术评估的影响。
63.与现有技术相比,本发明的优点就在于:
64.1、本发明的软件自动修复评估偏见发现及验证方法,基于循证软件工程中的系统文献回顾方法,对现有已发现的偏见进行系统地理解,随后基于分类学中的树状分类法,将现有偏见一一映射到偏见分类中,以系统地发现新的偏见,目的就在于提高当前的偏见发现效率。
65.2、本发明的软件自动修复评估偏见发现及验证方法,基于系统文献回顾发现的偏见分布,明确可消除的偏见,随后基于分层软件架构,实现偏见评估软件平台,对已明确的可消除偏见进行消除,并为偏见验证提供实验平台,目的就在于提高当前的偏见验证准确性。
66.3、本发明的软件自动修复评估偏见发现及验证方法,提高偏见发现效率:相比于现有严重依赖研究者主观理解的偏见发现技术,本发明同时利用基于循证软件工程中的系统文献回顾方法和基于分类学中的树状分类法,系统地对偏见进行探索,提高了偏见发现效率。
67.4、本发明的软件自动修复评估偏见发现及验证方法,提高偏见验证准确性:相比
于现有技术在验证偏见时忽略其他偏见的存在,从而将偏见引入到偏见评估实验中,影响了偏见验证的准确性,本发明通过系统文献回顾方法构建的偏见分布,对可消除的偏见进行明确,随后实现基于分层软件架构的偏见评估软件平台,对可消除偏见进行消除,而后对待验证偏见进行验证,提高了偏见验证准确性。
附图说明
68.图1是本发明方法的流程示意图。
69.图2是本发明在具体应用实例中构建树状分类的流程示意图。
具体实施方式
70.以下将结合说明书附图和具体实施例对本发明做进一步详细说明。
71.如图1所示,本发明的软件自动修复评估偏见发现及验证方法,其步骤包括:
72.s1:收集相关文献:收集与软件自动修复技术评估相关的文献。
73.s2:筛选文献:对s1收集到的文献进行筛选,得到开展偏见研究的文献。
74.s3:获取已发现的偏见:从s2获取到的偏见研究文献中提取出已发现的偏见。
75.s4:构建树状分类:提出面向自动修复技术评估偏见的树状分类。
76.s5:映射现有偏见:将s3获取到的偏见映射到s4提出的树状中。
77.s6:发现新的偏见:基于s5得到的树状分类偏见映射,发现新的偏见。
78.s7:实现评估软件平台:实现用于评估偏见的软件平台。
79.s8:消除现有偏见:基于s7实现的软件平台,对现有偏见进行消除。
80.s9:验证新的偏见:在对现有偏见进行消除后,在评估软件平台上对新的偏见进行验证。
81.在具体应用实例中,所述步骤s1的具体步骤为:
82.s11:基于布尔运算中的and和or构建搜索字符串:(automated or automatic)and(program or software or fault or bug or defect)and(repair or fix)。
83.s12:在acm digital library(美国计算机协会文献全文数据库),ieee xplore(电气电子工程师学会文献全文数据库),springer link(施普林格文献全文数据库),elsevier science direct(爱思唯尔文献全文数据库),wiley(威立文献全文数据库)这五个文献数据库以及google scholar(谷歌学术)这一学术文献搜索引擎中对s11构造的字符串进行搜索,将搜索到的结果对应的文献进行收集。
84.在具体应用实例中,步骤s2的具体步骤为:
85.s21:基于s1已获取到的相关文献,将全文不可用的文献排除在外。
86.s22:将学位论文排除在外。
87.s23:将没有开展偏见研究的文献排除在外。
88.在具体应用实例中,所述步骤s3的具体步骤为:
89.s31:基于s2已获取到的开展偏见研究的文献,对每一项偏见研究,提取其发现并验证的偏见。
90.s32:提取每项偏见研究的基础信息,包含:作者姓名,研究发表的渠道,发表年份。
91.s33:提取该偏见所影响的自动修复技术评估指标,以及影响的力度大小。
92.在具体应用实例中,所述步骤s4的具体步骤为:
93.s41:确定分类的类型为树状分类。
94.s42:确定分类的标准为偏见影响的软件自动修复评估的具体阶段。
95.s43:基于相互独立,完全穷尽的原则,对偏见进行分类,最后得到三层树状分类,如图2所示。
96.在具体应用实例中,所述步骤s5的具体步骤为:
97.s51:基于s3获取到的已发现偏见,先将其映射到s4得到的分类的第二层分类中。
98.s52:再将已发现偏见进一步映射到s4得到的分类的第三层分类,即最下层分类。
99.在具体应用实例中,所述步骤s6的具体步骤为:
100.s61:基于s4已构建的树状分类及s5得到的已发现偏见映射,发现第三层分类中尚未有任何映射的分类。
101.s62:基于尚未有任何映射的分类,明确对应的尚未被发现的偏见。
102.在具体应用实例中,所述步骤s7的具体步骤为
103.s71:实现数据集选择模块,即将两个国际通用的缺陷程序数据集defects4j和quixbugs实现到软件平台中。
104.s72:实现缺陷定位模块,即将一个标准的缺陷定位技术ochiai实现到软件平台中。
105.s73:实现补丁生成模块,即将四个补丁生成算法,含tbar,simfix,nopol和dynamoth,实现到软件平台中。
106.s74:实现补丁验证模块,即将三个补丁验证策略,含朴素策略,测试用例优先策略,测试用例选择策略,实现到软件平台中。
107.s75:实现效果评估模块,对偏见评估实验得到的结果,含补丁程序和消耗时间,进行收集和分析。
108.在具体应用实例中,所述步骤s8的具体步骤为:
109.s81:对已发现的偏见,明确出其中可被消除的偏见。
110.s82:对偏见进行消除,即采用统一的配置进行控制变量。
111.在具体应用实例中,所述步骤s9的具体步骤为:
112.s91:进行控制变量实验,即实现待验证偏见对应的多种设置。
113.s92:对每一种设置开展软件自动修复技术评估实验。
114.s93:对实验结果进行评估,从而验证偏见对软件自动修复技术评估的影响。
115.以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。
技术特征:1.一种软件自动修复评估偏见发现及验证方法,其特征在于,包括:步骤s1:收集与软件自动修复技术评估相关的文献;步骤s2:筛选文献:对步骤s1收集到的文献进行筛选,得到开展偏见研究的文献;步骤s3:获取已发现的偏见:从步骤s2获取到的偏见研究文献中提取出已发现的偏见;步骤s4:构建树状分类:提出面向自动修复技术评估偏见的树状分类;步骤s5:映射现有偏见:将步骤s3获取到的偏见映射到步骤s4提出的树状中;步骤s6:发现新的偏见:基于步骤s5得到的树状分类偏见映射,发现新的偏见;步骤s7:实现用于评估偏见的软件平台;步骤s8:消除现有偏见:基于步骤s7实现的软件平台,对现有偏见进行消除;步骤s9:验证新的偏见:在对现有偏见进行消除后,在评估软件平台上对新的偏见进行验证。2.根据权利要求1所述的软件自动修复评估偏见发现及验证方法,其特征在于,所述步骤s1包括:步骤s11:基于布尔运算中的and和or构建搜索字符串;步骤s12:在文献数据库以及学术文献搜索引擎中对步骤s11构造的字符串进行搜索,将搜索到的结果对应的文献进行收集。3.根据权利要求2所述的软件自动修复评估偏见发现及验证方法,其特征在于,所述步骤s2包括:步骤s21:基于步骤s1已获取到的相关文献,将全文不可用的文献排除在外;步骤s22:将学位论文排除在外;步骤s23:将没有开展偏见研究的文献排除在外。4.根据权利要求3所述的软件自动修复评估偏见发现及验证方法,其特征在于,所述步骤s3包括:步骤s31:基于s2已获取到的开展偏见研究的文献,对每一项偏见研究,提取其发现并验证的偏见;步骤s32:提取每项偏见研究的基础信息,包含:作者姓名,研究发表的渠道,发表年份;步骤s33:提取该偏见所影响的自动修复技术评估指标,以及影响的力度大小。5.根据权利要求1-4中任意一项所述的软件自动修复评估偏见发现及验证方法,其特征在于,所述步骤s4包括:步骤s41:确定分类的类型为树状分类;步骤s42:确定分类的标准为偏见影响的软件自动修复评估的具体阶段;步骤s43:基于相互独立,完全穷尽的原则,对偏见进行分类,最后得到三层树状分类。6.根据权利要求5所述的软件自动修复评估偏见发现及验证方法,其特征在于,所述步骤s5包括:步骤s51:基于步骤s3获取到的已发现偏见,先将其映射到s4得到的分类的第二层分类中;步骤s52:再将已发现偏见进一步映射到s4得到的分类的第三层分类,即最下层分类。7.根据权利要求6所述的软件自动修复评估偏见发现及验证方法,其特征在于,所述步骤s6包括:
步骤s61:基于步骤s4已构建的树状分类及步骤s5得到的已发现偏见映射,发现第三层分类中尚未有任何映射的分类;步骤s62:基于尚未有任何映射的分类,明确对应的尚未被发现的偏见。8.根据权利要求1-4中任意一项所述的软件自动修复评估偏见发现及验证方法,其特征在于,所述步骤s7包括:步骤s71:实现数据集选择模块;步骤s72:实现缺陷定位模块,即将一个标准的缺陷定位技术ochiai实现到软件平台中;步骤s73:实现补丁生成模块;步骤s74:实现补丁验证模块;步骤s75:实现效果评估模块,对偏见评估实验得到的结果,含补丁程序和消耗时间,进行收集和分析。9.根据权利要求1-4中任意一项所述的软件自动修复评估偏见发现及验证方法,其特征在于,所述步骤s8包括:步骤s81:对已发现的偏见,明确出其中可被消除的偏见;步骤s82:对偏见进行消除,即采用统一的配置进行控制变量。10.根据权利要求1-4中任意一项所述的软件自动修复评估偏见发现及验证方法,其特征在于,所述步骤s9的具体步骤为:步骤s91:进行控制变量实验,即实现待验证偏见对应的多种设置;步骤s92:对每一种设置开展软件自动修复技术评估实验;步骤s93:对实验结果进行评估,从而验证偏见对软件自动修复技术评估的影响。
技术总结本发明公开了一种软件自动修复评估偏见发现及验证方法,包括:步骤S1:收集相关文献;步骤S2:筛选文献;步骤S3:获取已发现的偏见:从步骤S2获取到的偏见研究文献中提取出已发现的偏见;步骤S4:构建树状分类:提出面向自动修复技术评估偏见的树状分类;步骤S5:映射现有偏见:将步骤S3获取到的偏见映射到步骤S4提出的树状中;步骤S6:发现新的偏见:基于步骤S5得到的树状分类偏见映射,发现新的偏见;步骤S7:实现评估软件平台;步骤S8:消除现有偏见:基于软件平台,对现有偏见进行消除;步骤S9:验证新的偏见:在对现有偏见进行消除后,在评估软件平台上对新的偏见进行验证。本发明具有原理简单、操作简便、验证准确性高等优点。验证准确性高等优点。验证准确性高等优点。
技术研发人员:毛晓光 杨德亨 陈立前 何枷瑜 易昕
受保护的技术使用者:中国人民解放军国防科技大学
技术研发日:2022.03.16
技术公布日:2022/7/5