王錫金
摘要:針對傳統(tǒng)方法修復時間慢的問題,提出多通道三維界面軟件邊緣模糊缺陷自動修復方法。采用正交缺陷分類方法識別邊緣模糊缺陷,再提出混合交叉策略,使得搜索方向偏離適應度低的解,在此基礎(chǔ)上,設(shè)計多通道三維界面軟件邊緣模糊缺陷自動修復流程,通過補丁生成、變異規(guī)則修改、編譯、補丁應用和補丁驗證等步驟,修復多通道三維界面軟件邊緣模糊缺陷。由此,完成多通道三維界面軟件邊緣模糊缺陷自動修復方法的設(shè)計。最后,進入實驗部分,給出6個軟件程序,測試2個方法的修復時間,實驗結(jié)果表明,所提方法的平均確認時間在9.2 s左右,傳統(tǒng)方法的平均確認時間在12.2 s左右,說明所提方法的修復時間更高,且符合設(shè)計需求。
關(guān)鍵詞:多通道三維界面軟件;自動修復技術(shù);修復時間;修復工具;補丁;編譯
中圖分類號: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
軟件自動修復是軟件工程領(lǐng)域研究的重點,也因此得到了學術(shù)界和工業(yè)界的廣泛關(guān)注。近幾年涌現(xiàn)出了很多自動修復技術(shù)工具,值得一提的是在2009年國際軟件工程會議上,曾有人提出使用遺傳算法自動生成修復補丁,再構(gòu)建工具原型genprog[1]。通過相關(guān)報告的實踐成果可以看出,genprog可以修復軟件中的106個軟件缺陷,并成功修復了55個缺陷。該成果推進了軟件自動修復技術(shù)的發(fā)展。但就當前的軟件自動修復技術(shù)而言,還存在一定的局限性,這是因為自動修復技術(shù)對自身修復的缺陷沒有一個清晰的定義。為此,本文提出多通道三維界面軟件邊緣模糊缺陷自動修復方法。傳統(tǒng)的自動修復方法采用directx修復工具,雖然修復了105個缺陷中的一部分,但卻沒有對這些缺陷進行詳細的分析。在本次的研究中,將有針對性的對多通道三維界面軟件邊緣模糊缺陷進行自動修復。多通道三維界面軟件邊緣模糊缺陷自動修復方法主要包括3個步驟:第1步,對軟件邊緣模糊缺陷進行掃描處理;第2步,提出多通道三維界面軟件邊緣模糊缺陷自動修復策略;第3步,針對自動修復技術(shù)的局限性,設(shè)計自動修復流程。最后,設(shè)置對比實驗,驗證多通道三維界面軟件邊緣模糊缺陷自動修復方法的可行性。
1 軟件邊緣模糊缺陷識別
在自動修復前,需要識別多通道三維界面軟件的缺陷,識別過程為:
第1步,先采用正交缺陷分類方法識別缺陷,再結(jié)合缺陷分布與軟件開發(fā)過程,描述缺陷類型[2]。該方法不僅能夠提取缺陷的關(guān)鍵特性,還能分析缺陷原因。
第2步,根據(jù)以下6個屬性識別缺陷:A活動:發(fā)現(xiàn)缺陷時,所進行的實際活動;B觸發(fā):當缺陷暴露時,所處的環(huán)境和條件是否與周圍有所關(guān)聯(lián);C影響:該缺陷是否會對用戶造成嚴重的影響;D目標:正確指出改正錯誤的位置[3];E缺陷類型:實際修復的缺陷類型;F缺陷來源:正確指出缺陷來源以及是否出現(xiàn)過內(nèi)部代碼的編寫中。軟件邊緣模糊缺陷6個屬性內(nèi)容如表1所示。
2 軟件邊緣模糊缺陷自動修復策略
2.1 混合交叉策略執(zhí)行
先識別邊緣模糊缺陷,再針對上述6個缺陷屬性,提出混合式交叉策略,該策略可以更好地加速遺傳算法的收斂性[4]。自動修復的目的是為了找到一個正確的補丁,該補丁中包含種群位置和個體正確執(zhí)行的變異算子。在遺傳算法的選擇階段結(jié)束后,要計算種群適應度值,并按照適應值順序排序。再計算適應度函數(shù),找到正確的個體位置,并將其作為修復補丁。在本次研究中,應用2種交叉方式,處理種群中的所有個體。混合式交叉策略具體執(zhí)行過程如圖1所示。
在處理適應度較高的個體時,要采用固定位置的單點交叉方式;在處理適應度較低的個體時,要采用隨機位置的單點交叉方式[5]。執(zhí)行過程:第1步,在染色體中尋找一個位置,如果父染色體適應度大于設(shè)定閾值,就需要保護基因,就可以進行固定位置的單點交叉,如果父染色體適應度小于設(shè)定閾值,就可以隨機進行單點交叉方式[6]。第2步,將染色體X1選取的基因,作為下一個染色體P1的前一個基因。第3步,將染色體X2選取的基因作為下一個染色體P2的前一個基因。第4步,采用相同的方式,組成X2的前一個基因和X1的后一個基因。2020年第4期
2.2 補丁生成
完成上述工作后,在固定位置的交叉方式中,選擇新的組合,將適應度值為前10%的個體作為新的變異算子索引,需要注意的是,這些個體應對的變異程序中的變異位置不變,但采取的變異操作過程要改變。最后,按照適應度解的方向選擇差異較大的基因,使得搜索方向偏離適應度低的解,利用混合交叉策略的好處在于,該策略可以更大程度地打亂多樣性的個體,保證索引的基因具有較高的價值[7]。
先識別邊緣模糊缺陷,再運用混合交叉策略,打亂多樣性個體,使搜索方向偏離適應度低的解。在此基礎(chǔ)上,設(shè)計邊緣模糊缺陷自動修復流程,具體設(shè)計過程如下:
第1步,補丁生成,其過程如圖2所示。
在處理多文件源代碼程序時,要編譯一個函數(shù)計算過程,再根據(jù)定義的上下文定義信息,生成一個新的中間文件。為了簡化提取過程,利用編譯器搜索每1個源代碼文件的上下文信息,在搜索的過程中要按照提供的指令自動提取上下文信息。否則會脫離原有程序源代碼。
第2步,根據(jù)給定的變異規(guī)則修改某一中間文件,在實際修復的過程中,要根據(jù)錯誤定位前端所提供的可疑代碼位置信息修改。
第3步,在分析原始代碼中間文件時,要對比修改前與修改后的差異,再通過弱重變異生成新的可執(zhí)行程序。為了驗證所生成的候選補丁的有效性,要更新原始可執(zhí)行程序,將候選的補丁文件單獨編譯存入鏈接庫。為確保編譯過程的獨立性,加入編譯所需要的上下文信息,生成的文件由2部分組成,其中一部分為被修改過的函數(shù)代碼部分,可以順利實現(xiàn)獨立編譯的上下文信息。
第4步,運用正規(guī)編譯器,將候選的補丁文件編譯存入動態(tài)鏈接庫文件。若編譯失敗,即可認為無效補丁,若編譯成功,即可認定為新的補丁。
第5步,補丁應用,先安裝工具,實現(xiàn)補丁文件動態(tài)更新,在程序執(zhí)行時,所有函數(shù)的調(diào)用都會被攔截到另外一個指定的函數(shù)當中,被制定的函數(shù)有一個獨立的動態(tài)鏈接庫文件[8]。
第6步,補丁驗證,利用WautoRepair驗證補丁的有效性。驗證過程:采用正測試用例集和反測試用例集檢查補丁更新過程的程序,檢驗修復軟件錯誤是否被引入新的錯誤,若檢查結(jié)果顯示未引入,說明該補丁是可以使用的[9]。若檢查結(jié)果顯示引入,說明該補丁未能有效修復軟件邊緣模糊缺陷。
2.3 自動修復流程設(shè)計
多通道三維界面軟件邊緣模糊缺陷自動修復流程如圖3所示。
在本次設(shè)計中,采用補丁動態(tài)更新的方式將被調(diào)用的函數(shù)代碼封裝在一個獨立庫文件當中,在程序執(zhí)行時,即可跳動這些文件。在調(diào)用的過程中,要設(shè)置攔截調(diào)換機制,并從用戶的角度,利用補丁動態(tài)更新的方式,實現(xiàn)多通道三維界面軟件邊緣模糊缺陷自動修復。由此,完成多通道三維界面軟件邊緣模糊缺陷自動修復方法的設(shè)計[10]。
3 實驗分析
完成多通道三維界面軟件邊緣模糊缺陷自動修復方法的設(shè)計后,進入實驗部分,分別測試傳統(tǒng)的多通道三維界面軟件邊緣模糊缺陷自動修復方法與所提方法的修復時間。
3.1 實驗環(huán)境
實驗選用軟件的具體信息,如表2所示。
表1中給出在實驗中各個基準程序的編譯方式是不同的,故在補丁有效性校驗的過程中,要選擇1個反測試用例,驗證2個自動修復方法的修復時間。
3.2 實驗結(jié)果
傳統(tǒng)的多通道三維界面軟件邊緣模糊缺陷自動修復方法與所提的多通道三維界面軟件邊緣模糊缺陷自動修復方法的實驗統(tǒng)計結(jié)果,如表3和表4所示。
從實驗結(jié)果可以看出,所提的多通道三維界面軟件邊緣模糊缺陷自動修復方法平均確認時間在9.2 s左右,傳統(tǒng)的多通道三維界面軟件邊緣模糊缺陷自動修復方法平均確認時間在10 s左右,由此可知,所提方法的修復時間更短,而且絕大部分都能夠通過正測試和反測試用例的驗證。由此,證明所提方法的可行性。
4 結(jié)束語
針對傳統(tǒng)的多通道三維界面軟件邊緣模糊缺陷自動修復方法存在的問題,提出多通道三維界面軟件邊緣模糊缺陷自動修復方法。先采用正交缺陷分類方法,分類軟件邊緣模糊缺陷的屬性,再根據(jù)6個屬性的對應取值識別軟件缺陷。為保證遺傳算法的擁有更好的收斂性,提出混合交叉策略,在完成上述工作后,設(shè)計多通道三維界面軟件邊緣模糊缺陷自動修復流程。由此,完成本次的設(shè)計。最后,通過實驗驗證所提的自動修復方法的可行性。實驗結(jié)果表明,所提方法符合設(shè)計要求。
參考文獻:
[1]田陽雨,羅軍,金鷹.基于電荷泵技術(shù)的三維器件的界面電荷特性研究[J].半導體技術(shù),2019,44(7):127-128.
[2]殷昊,李壽山,貢正仙.基于多通道LSTM的不平衡情緒分類方法[J].中文信息學報,2018,32(1):458-459.
[3]石端虎,剛鐵,趙洪楓.雙面T形焊件中單側(cè)投影重合缺陷的自動判別方法[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]肖靜,游世輝.基于小波變換的發(fā)動機表面缺陷圖像去噪方法的研究[J].表面技術(shù),2018,25(12):78-79.
[8]游桂貞,劉布麒,周權(quán)強.自動化測試技術(shù)在網(wǎng)絡(luò)控制軟件測試中的應用[J].機車電傳動,2017,25(5):128-129.
[9]池寶濤,張見明,鞠傳明.基于T-Spline的全自動幾何拓撲修復方法[J].自動化學報,2019,45(8):76-77.
[10]李振松,杜建偉,黨紀紅.基于DSP平臺的航天器軟件在軌維護實現(xiàn)方法研究[J].空間控制技術(shù)與應用,2017,36(6):132-133.