王锡金
摘要:针对传统方法修复时间慢的问题,提出多通道三维界面软件边缘模糊缺陷自动修复方法。采用正交缺陷分类方法识别边缘模糊缺陷,再提出混合交叉策略,使得搜索方向偏离适应度低的解,在此基础上,设计多通道三维界面软件边缘模糊缺陷自动修复流程,通过补丁生成、变异规则修改、编译、补丁应用和补丁验证等步骤,修复多通道三维界面软件边缘模糊缺陷。由此,完成多通道三维界面软件边缘模糊缺陷自动修复方法的设计。最后,进入实验部分,给出6个软件程序,测试2个方法的修复时间,实验结果表明,所提方法的平均确认时间在9.2 s左右,传统方法的平均确认时间在12.2 s左右,说明所提方法的修复时间更高,且符合设计需求。
关键词:多通道三维界面软件;自动修复技术;修复时间;修复工具;补丁;编译
中图分类号:TP311.53文献标志码:A
文章编号:2095-5383(2020)04-0034-04
A Method for Automatically Repairing Blur Edges of
Multi-Channel 3D Interface Software
WANG Xijin
(Art Design College, Suihua University, Suihua 152061, China)
Abstract:
Aiming at the slow repair time of traditional methods, a method for automatically repairing fuzzy edges of multi-channel 3D interface software was proposed. Orthogonal defect classification method was used to identify edge blur defects, and then a hybrid crossover strategy was proposed to make the search direction deviate from the solution with low adaptability. On this basis, an automatic repair process for edge blur defects of multi-channel 3D interface software was designed. Through the steps of patch generation, mutation rule modification, compilation, patch application and patch verification, the blur edge of multi-channel 3D interface software was repaired. Sofar, the design of the automatic repair method for the blur edge defect of the multi-channel 3D interface software was completed.Finally, in the experimental part, six software programs were given to test the repair time of the two methods. The experimental results show that the average confirmation time of the proposed method is about 9.2 s, and the average confirmation time of the traditional method is about 12.2 s. It shows that the proposed method has a higher repair time and meets the design requirements.
Keywords:
multi-channel 3D interface software; automatic repair technology; repair efficiency; repair tool; patch; compilation
軟件自动修复是软件工程领域研究的重点,也因此得到了学术界和工业界的广泛关注。近几年涌现出了很多自动修复技术工具,值得一提的是在2009年国际软件工程会议上,曾有人提出使用遗传算法自动生成修复补丁,再构建工具原型genprog[1]。通过相关报告的实践成果可以看出,genprog可以修复软件中的106个软件缺陷,并成功修复了55个缺陷。该成果推进了软件自动修复技术的发展。但就当前的软件自动修复技术而言,还存在一定的局限性,这是因为自动修复技术对自身修复的缺陷没有一个清晰的定义。为此,本文提出多通道三维界面软件边缘模糊缺陷自动修复方法。传统的自动修复方法采用directx修复工具,虽然修复了105个缺陷中的一部分,但却没有对这些缺陷进行详细的分析。在本次的研究中,将有针对性的对多通道三维界面软件边缘模糊缺陷进行自动修复。多通道三维界面软件边缘模糊缺陷自动修复方法主要包括3个步骤:第1步,对软件边缘模糊缺陷进行扫描处理;第2步,提出多通道三维界面软件边缘模糊缺陷自动修复策略;第3步,针对自动修复技术的局限性,设计自动修复流程。最后,设置对比实验,验证多通道三维界面软件边缘模糊缺陷自动修复方法的可行性。
1 软件边缘模糊缺陷识别
在自动修复前,需要识别多通道三维界面软件的缺陷,识别过程为:
第1步,先采用正交缺陷分类方法识别缺陷,再结合缺陷分布与软件开发过程,描述缺陷类型[2]。该方法不仅能够提取缺陷的关键特性,还能分析缺陷原因。
第2步,根据以下6个属性识别缺陷:A活动:发现缺陷时,所进行的实际活动;B触发:当缺陷暴露时,所处的环境和条件是否与周围有所关联;C影响:该缺陷是否会对用户造成严重的影响;D目标:正确指出改正错误的位置[3];E缺陷类型:实际修复的缺陷类型;F缺陷来源:正确指出缺陷来源以及是否出现过内部代码的编写中。软件边缘模糊缺陷6个属性内容如表1所示。
2 软件边缘模糊缺陷自动修复策略
2.1 混合交叉策略执行
先识别边缘模糊缺陷,再针对上述6个缺陷属性,提出混合式交叉策略,该策略可以更好地加速遗传算法的收敛性[4]。自动修复的目的是为了找到一个正确的补丁,该补丁中包含种群位置和个体正确执行的变异算子。在遗传算法的选择阶段结束后,要计算种群适应度值,并按照适应值顺序排序。再计算适应度函数,找到正确的个体位置,并将其作为修复补丁。在本次研究中,应用2种交叉方式,处理种群中的所有个体。混合式交叉策略具体执行过程如图1所示。
在处理适应度较高的个体时,要采用固定位置的单点交叉方式;在处理适应度较低的个体时,要采用随机位置的单点交叉方式[5]。执行过程:第1步,在染色体中寻找一个位置,如果父染色体适应度大于设定阈值,就需要保护基因,就可以进行固定位置的单点交叉,如果父染色体适应度小于设定阈值,就可以随机进行单点交叉方式[6]。第2步,将染色体X1选取的基因,作为下一个染色体P1的前一个基因。第3步,将染色体X2选取的基因作为下一个染色体P2的前一个基因。第4步,采用相同的方式,组成X2的前一个基因和X1的后一个基因。2020年第4期
2.2 补丁生成
完成上述工作后,在固定位置的交叉方式中,选择新的组合,将适应度值为前10%的个体作为新的变异算子索引,需要注意的是,这些个体应对的变异程序中的变异位置不变,但采取的变异操作过程要改变。最后,按照适应度解的方向选择差异较大的基因,使得搜索方向偏离适应度低的解,利用混合交叉策略的好处在于,该策略可以更大程度地打乱多样性的个体,保证索引的基因具有较高的价值[7]。
先识别边缘模糊缺陷,再运用混合交叉策略,打乱多样性个体,使搜索方向偏离适应度低的解。在此基础上,设计边缘模糊缺陷自动修复流程,具体设计过程如下:
第1步,补丁生成,其过程如图2所示。
在处理多文件源代码程序时,要编译一个函数计算过程,再根据定义的上下文定义信息,生成一个新的中间文件。为了简化提取过程,利用编译器搜索每1个源代码文件的上下文信息,在搜索的过程中要按照提供的指令自动提取上下文信息。否则会脱离原有程序源代码。
第2步,根据给定的变异规则修改某一中间文件,在实际修复的过程中,要根据错误定位前端所提供的可疑代码位置信息修改。
第3步,在分析原始代码中间文件时,要对比修改前与修改后的差异,再通过弱重变异生成新的可执行程序。为了验证所生成的候选补丁的有效性,要更新原始可执行程序,将候选的补丁文件单独编译存入链接库。为确保编译过程的独立性,加入编译所需要的上下文信息,生成的文件由2部分组成,其中一部分为被修改过的函数代码部分,可以顺利实现独立编译的上下文信息。
第4步,运用正规编译器,将候选的补丁文件编译存入动态链接库文件。若编译失败,即可认为无效补丁,若编译成功,即可认定为新的补丁。
第5步,补丁应用,先安装工具,实现补丁文件动态更新,在程序执行时,所有函数的调用都会被拦截到另外一个指定的函数当中,被制定的函数有一个独立的动态链接库文件[8]。
第6步,补丁验证,利用WautoRepair验证补丁的有效性。验证过程:采用正测试用例集和反测试用例集检查补丁更新过程的程序,检验修复软件错误是否被引入新的错误,若检查结果显示未引入,说明该补丁是可以使用的[9]。若检查结果显示引入,说明该补丁未能有效修复软件边缘模糊缺陷。
2.3 自动修复流程设计
多通道三维界面软件边缘模糊缺陷自动修复流程如图3所示。
在本次設计中,采用补丁动态更新的方式将被调用的函数代码封装在一个独立库文件当中,在程序执行时,即可跳动这些文件。在调用的过程中,要设置拦截调换机制,并从用户的角度,利用补丁动态更新的方式,实现多通道三维界面软件边缘模糊缺陷自动修复。由此,完成多通道三维界面软件边缘模糊缺陷自动修复方法的设计[10]。
3 实验分析
完成多通道三维界面软件边缘模糊缺陷自动修复方法的设计后,进入实验部分,分别测试传统的多通道三维界面软件边缘模糊缺陷自动修复方法与所提方法的修复时间。
3.1 实验环境
实验选用软件的具体信息,如表2所示。
表1中给出在实验中各个基准程序的编译方式是不同的,故在补丁有效性校验的过程中,要选择1个反测试用例,验证2个自动修复方法的修复时间。
3.2 实验结果
传统的多通道三维界面软件边缘模糊缺陷自动修复方法与所提的多通道三维界面软件边缘模糊缺陷自动修复方法的实验统计结果,如表3和表4所示。
从实验结果可以看出,所提的多通道三维界面软件边缘模糊缺陷自动修复方法平均确认时间在9.2 s左右,传统的多通道三维界面软件边缘模糊缺陷自动修复方法平均确认时间在10 s左右,由此可知,所提方法的修复时间更短,而且绝大部分都能够通过正测试和反测试用例的验证。由此,证明所提方法的可行性。
4 结束语
针对传统的多通道三维界面软件边缘模糊缺陷自动修复方法存在的问题,提出多通道三维界面软件边缘模糊缺陷自动修复方法。先采用正交缺陷分类方法,分类软件边缘模糊缺陷的属性,再根据6个属性的对应取值识别软件缺陷。为保证遗传算法的拥有更好的收敛性,提出混合交叉策略,在完成上述工作后,设计多通道三维界面软件边缘模糊缺陷自动修复流程。由此,完成本次的设计。最后,通过实验验证所提的自动修复方法的可行性。实验结果表明,所提方法符合设计要求。
参考文献:
[1]田阳雨,罗军,金鹰.基于电荷泵技术的三维器件的界面电荷特性研究[J].半导体技术,2019,44(7):127-128.
[2]殷昊,李寿山,贡正仙.基于多通道LSTM的不平衡情绪分类方法[J].中文信息学报,2018,32(1):458-459.
[3]石端虎,刚铁,赵洪枫.双面T形焊件中单侧投影重合缺陷的自动判别方法[J].焊接学报,2019,66(4):46-49.
[4]史小婉,马于涛.一种基于文本分类和评分机制的软件缺陷分配方法[J].计算机科学,2017,45(11):457-458.
[5]张辉,金侠挺.基于曲率滤波和改进GMM的钢轨缺陷自动视觉检测方法[J].仪器仪表学报,2018,32(4):78-79.
[6]闵永智,程天栋,马宏锋.基于多特征融合与AdaBoost算法的轨面缺陷识别方法[J].铁道科学与工程学报,2017,33(12):254-255.
[7]肖静,游世辉.基于小波变换的发动机表面缺陷图像去噪方法的研究[J].表面技术,2018,25(12):78-79.
[8]游桂贞,刘布麒,周权强.自动化测试技术在网络控制软件测试中的应用[J].机车电传动,2017,25(5):128-129.
[9]池宝涛,张见明,鞠传明.基于T-Spline的全自动几何拓扑修复方法[J].自动化学报,2019,45(8):76-77.
[10]李振松,杜建伟,党纪红.基于DSP平台的航天器软件在轨维护实现方法研究[J].空间控制技术与应用,2017,36(6):132-133.