摘" 要: 為了解決面向開源軟件缺陷自定位系統(tǒng)存在定位精準度低的問題,在保留原定位系統(tǒng)結(jié)構(gòu)的基礎(chǔ)上,設(shè)計基于執(zhí)行軌跡的軟件缺陷自定位系統(tǒng)。在硬件結(jié)構(gòu)部署方面,采用AM2301型號芯片設(shè)計信號傳感器,聯(lián)合校準系數(shù),設(shè)置總線接口,實現(xiàn)信號自動傳輸。下位機內(nèi)部鑲嵌Galileo GN100型號定位芯片,通過NMEA?0183V4.1協(xié)議獲取數(shù)據(jù)信息,設(shè)置固定標記點,集合線性部件進行軟件缺陷位置定位與控制。通過通信接口電路,使上位機RS 232串口通信接收下位機傳送的信息。依據(jù)下位機執(zhí)行軌跡組織、軌跡選擇、懷疑率計算結(jié)果,設(shè)計評價報告標準,獲取缺陷位置坐標,經(jīng)由上位機顯示具體缺陷位置信息。在Windows平臺進行系統(tǒng)測試,由測試結(jié)果可知,該系統(tǒng)定位精準度最高可達到93%,滿足人們對軟件可信度高標準的要求。
關(guān)鍵詞: 執(zhí)行軌跡; 軟件缺陷定位; 信號傳感器; 軟件設(shè)計; 硬件設(shè)計; 精準度測試
中圖分類號: TN919?34; TP391" " " " " " " " " "文獻標識碼: A" " " " " " " " " " "文章編號: 1004?373X(2019)21?0094?05
Abstract: In order to solve the problem of low positioning accuracy in open source software defect self?positioning system, a software defect self?positioning system based on execution trajectory is designed on the premise of retaining the original positioning system structure. In terms of hardware structure deployment, AM2301 chip is used to design signal sensor and, joint calibration coefficient, and set up the bus interface to realize signal automatic transmission. Galileo GN100 positioning chip is embedded in the lower computer, obtain data information according to NMEA?0183V4.1 protocol, and set the fixed marker points. The linear components are assembled to achieve location and control of software defects. With the communication interface circuit, the upper computer RS 232 serial communication is used to receive the information transmitted by the lower computer. According to the results of executive trajectory organization, trajectory selection and suspicion rate calculation of the lower computer, the evaluation report standard is designed, so as to obtain the coordinates of defect location. The specific defect location information is displayed by means of upper computer. The system test was carried out on Windows platform." The test results show that the positioning accuracy of the system can reach 93%, which meets people′s high standard requirement of software reliability.
Keywords: executive trajectory; software defect; localization; signal sensor; software design; hardware design; precision test
0" 引" 言
軟件可靠性是軟件研發(fā)的重點,用戶對于軟件可信度要求隨著計算機技術(shù)的迅速發(fā)展越來越高。軟件中隱含的缺陷數(shù)目與系統(tǒng)可靠性具有直接關(guān)系,缺陷定位是軟件應(yīng)用可持續(xù)發(fā)展的主要步驟[1]。采用面向開源軟件缺陷自定位系統(tǒng)的設(shè)計,需要程序員對目前軟件運行狀態(tài)進行分析,直到找到缺陷位置[2]。該系統(tǒng)不僅要求程序員熟練掌握軟件內(nèi)部結(jié)構(gòu),而且定位精準度較低,無法滿足人們要求。
一個良好的設(shè)計方案需要通過測試分析階段所產(chǎn)生的信息來確定軟件中缺陷的位置,因此,提出基于執(zhí)行軌跡的軟件缺陷自定位系統(tǒng)設(shè)計。從缺陷不同角度發(fā)現(xiàn)軟件存在的不同缺陷,由于程序員對程序進行了一定修改,并引入一定缺陷,導(dǎo)致程序版本間的差異分解為修改集合形式,通過對集合中的原程序進行修改,可定位到缺陷位置。
1" 硬件結(jié)構(gòu)設(shè)計
基于執(zhí)行軌跡的軟件缺陷自定位系統(tǒng)硬件結(jié)構(gòu)如圖1所示。
硬件結(jié)構(gòu)由故障定位裝置、信號傳感器、定位主機、顯示屏組成,通過定位裝置中的記錄模塊接收軟件缺陷故障信號,一旦到達初始位置,啟動定位系統(tǒng)時鐘單元記錄信號到達時間。確定軟件存在缺陷后,定位裝置將缺陷記錄到定位裝置中,通過下位機采集相關(guān)缺陷信息,再傳至上位機中,由顯示屏顯示具體信息[3]。
1.1" 信號傳感器
傳感器能夠?qū)⒏惺艿降能浖毕菪畔凑找欢ㄒ?guī)律轉(zhuǎn)換為信號形式,滿足信息傳輸、處理、顯示與記錄要求,是實現(xiàn)自動控制的主要環(huán)節(jié)[4]。因此,采用AM2301型號芯片為信號傳感器主要芯片,它是一款含有已經(jīng)校準的數(shù)字信號復(fù)合傳感器,具有可靠性和穩(wěn)定性。該傳感器內(nèi)部在檢測信號處理過程中,調(diào)用校準系數(shù),設(shè)置總線接口,使系統(tǒng)變得簡易[5]。
1.2" 故障定位裝置
故障定位裝置主要應(yīng)用于小電流接地形式,一旦系統(tǒng)檢測出軟件缺陷,那么該裝置能夠快速、準確地獲取缺陷位置信息。該裝置包括記錄模塊、下位機和上位機,依據(jù)記錄的缺陷信息,利用下位機進行缺陷信息收集與定位,并將結(jié)果傳至上位機中[6]。
1.2.1" 下位機
下位機能夠直接控制裝置獲取裝置狀況,讀取裝置狀態(tài)模擬量,轉(zhuǎn)化為數(shù)字信號形式反饋給上位機。下位機內(nèi)部鑲嵌Galileo GN100型號定位芯片,通過NMEA?0183V4.1協(xié)議能夠精準獲取數(shù)據(jù)信息,同時了解軟件運行狀態(tài)信息[7?9]。
當有不規(guī)則遮擋物存在時,該芯片可通過運營商基站信息進行快速定位[10]。芯片參數(shù)如表1所示。
在Galileo GN100型號定位芯片支持下,設(shè)計系統(tǒng)電路。系統(tǒng)電路主要由定位控制電路和通信電路組成,具體設(shè)計如下所示。
1) 定位控制電路
設(shè)置固定標記點,集合線性部件進行軟件缺陷位置定位與控制,電路設(shè)計如圖2所示。
圖2中設(shè)置穩(wěn)定環(huán)路電路,縮短動力響應(yīng)時間,通過功率運算放大器修正輸出數(shù)據(jù)。采用三相異步電動機具有較高的電動勢,在晶體管處施加50 V電壓,適當轉(zhuǎn)動電機方向,能夠保證兩個光電管電流大小一致[11]。
如果瞬時運動切換到放大器輸入端時,電動機應(yīng)按照順時針方向旋轉(zhuǎn),輸出正常電動勢;如果瞬時運動未達到設(shè)定的標記點時,[C2]上電荷需為電動機提供動力,此時電動機應(yīng)按照逆時針方向旋轉(zhuǎn),輸出高電動勢[12]。依據(jù)不同電容選擇合適阻尼,實現(xiàn)軟件缺陷精準定位。
2) 通信電路
通信接口電路設(shè)計如圖3所示。
由圖3可知,該電路由從機、鎖存器、隨機存取器和接口器件組成。在該電路中,各個從機與上位機直接連接,一旦從機數(shù)量過多,那么上位機就會出現(xiàn)頻繁的響應(yīng)情況,由此說明系統(tǒng)正在定位。
1.2.2" 上位機
上位機可根據(jù)下位機傳送過來的信息操控主機,通常上位機具備RS 232串口通信,采用該種通信方式適合工業(yè)控制雙線通信,還可實現(xiàn)PLC與上位機的通信[13]。
1.3" 顯示屏
使用電壓互感器提取軟件缺陷信號,傳送至客戶端進行統(tǒng)一處理,經(jīng)過AT?16型號觸發(fā)器可將正弦信號轉(zhuǎn)換為方波信號。經(jīng)過轉(zhuǎn)換后的信號傳遞給單片機,單片機接口與計算機接口相連接,可顯示出軟件缺陷信息。
2" 軟件設(shè)計
整個系統(tǒng)技術(shù)路線的設(shè)計是通過上位機軟件和下位機軟件來實現(xiàn)的,其中,上位機主機運行軟件可接收來自下位機傳送過來的定位信息,針對該信息采用執(zhí)行軌跡方法進行軟件缺陷定位。
2.1" 下位機軟件
下位機軟件工作流程如下所示:
1) 初始化程序
中斷服務(wù)開啟驅(qū)動,設(shè)置源地址。
2) 基于執(zhí)行軌跡的缺陷自定位
定位過程分為三步,分別是執(zhí)行軌跡組織、軌跡選擇、懷疑率計算,通過整理初始源地址信息,按照一定組織方式測試信息執(zhí)行軌跡。選擇用于定位的執(zhí)行軌跡濾除信息中存在的噪聲信息,分析選定的執(zhí)行軌跡,計算語句塊中的懷疑率,由此實現(xiàn)高精準缺陷自定位。具體執(zhí)行方案如下所示:
① 執(zhí)行軌跡組織
執(zhí)行軌跡是測試所執(zhí)行語句塊中的序列,通過動態(tài)切片技術(shù)收集被測試的序列。如果出現(xiàn)信息量過大的問題,需按照代碼靜態(tài)結(jié)構(gòu)組織執(zhí)行軌跡。
將程序看成一個向量,其中每一維對應(yīng)的程序是一個語句塊,按照二值向量和多值向量組織缺陷定位執(zhí)行軌跡。
二值向量:分析該向量中的語句塊是否被執(zhí)行,如果被執(zhí)行,則向量中的維數(shù)值為1;否則,為0。設(shè)[sus]為懷疑率,[j]為測試用例,則執(zhí)行公式為:
[w1j=1,sus" is" executed" by" j0,sus" is" not" executed" by" j] (1)
多值向量:如果該向量中語句塊被執(zhí)行了[λ]次,那么對應(yīng)維數(shù)的值為[λ];否則,為0,執(zhí)行公式為:
[w2j=λ,sus" is" executed" by" j0,sus" is" not" executed" by" j] (2)
以下執(zhí)行軌跡,都是按照上述兩種向量方式組織執(zhí)行的。
② 軌跡選擇
在執(zhí)行過程中,存在大量冗余測試用例,由此形成大量冗余信息,降低了系統(tǒng)定位精準度。為了對程序中存在的多個缺陷進行高精準定位,可通過測試用例執(zhí)行的相似性執(zhí)行軌跡。
執(zhí)行軌跡間距離越小,執(zhí)行軌跡越相似,對于多值向量可以按照向量元素值大小進行排序。通過計算排列間相互轉(zhuǎn)換步數(shù),獲取執(zhí)行軌跡間距離。由于選擇的軌跡只能關(guān)注語句塊之間的關(guān)系,因此,需計算執(zhí)行軌跡間排序距離。
設(shè)執(zhí)行軌跡為:
對向量元素排序后為:
直接利用次數(shù)參數(shù)計算,受到語句塊循環(huán)影響較大,及時發(fā)現(xiàn)執(zhí)行次數(shù)相對關(guān)系,能夠完整體現(xiàn)執(zhí)行軌跡間的相似性。
③ 懷疑率計算
將測試用例中與某個語句塊相關(guān)的用例組成一個集合,分析該集合中通過測試和未通過測試的懷疑率。如果集合中未通過測試用例執(zhí)行比例大,則說明該語句塊具有較高的懷疑率;否則,懷疑率較低。
各語句塊懷疑率計算公式如下:
式中:[Raj]表示語句塊[aj]所在的模塊;[Tfb]表示經(jīng)過執(zhí)行[b]模塊未通過測試的數(shù)量;[Tgb]表示經(jīng)過執(zhí)行[b]模塊通過測試的數(shù)量;[Tfaj]為執(zhí)行[aj]未通過測試的數(shù)量;[Tgaj]為執(zhí)行[aj]通過測試的數(shù)量。
依據(jù)上述計算的[sus]懷疑率結(jié)果,將語句塊按照大小順序排列。
3) 計算坐標
將獲取的懷疑率結(jié)果進行歸一化整理,計算出缺陷位置坐標。
4) 定位報告評價
針對軟件缺陷自定位的意義在于縮短程序員找到缺陷位置的時間,根據(jù)步驟3)中的缺陷位置坐標,報告定位到實際缺陷情況,此時用所必需的審查語句塊來評價系統(tǒng)定位效果,語句塊數(shù)量越少,則說明定位效果越好。
依據(jù)坐標,將語句塊按照由近及遠的方式排序,并依次進行編號處理,根據(jù)實際缺陷語句塊編號給系統(tǒng)未定效果進行打分,分數(shù)越高,則說明定位精準度越高。
如果報告的分數(shù)超過90分,則說明程序員只需審核10%的語句塊就能快速找到軟件中的缺陷位置,計算公式為:
式中:[p]表示語句塊總數(shù);[q]表示缺陷語句塊總數(shù)。
5) 顯示程序
通過硬件結(jié)構(gòu)中的顯示屏,顯示程序完成缺陷位置坐標。
2.2" 上位機軟件
上位機程序流程如圖4所示。
下位機通過以太網(wǎng)與上位機連接,讀取下位機傳送過來的信息進行解析,形成信息包,讀取下位機坐標數(shù)據(jù),顯示軟件缺陷位置信息,實現(xiàn)顯示功能。
3" 實驗分析
對于系統(tǒng)測試分析就是對軟件缺陷進行自定位精準度的測試,在已知缺陷條件下,分析系統(tǒng)定位精準度,如果測試結(jié)果精準度越高,則說明該系統(tǒng)性能越好。
3.1" 軟硬件環(huán)境
在Windows 7.0平臺設(shè)計實驗軟硬件環(huán)境,如表2所示。
3.2" 精準度測試結(jié)果與分析
當軟件處于正常使用情況下,軟件缺陷定位分別在冷啟動和熱啟動條件下,將面向開源軟件缺陷自定位系統(tǒng)與基于執(zhí)行軌跡的軟件缺陷自定位系統(tǒng)進行對比分析,結(jié)果如下所示。
1) 冷啟動
直接按重啟動按鈕進行冷啟動,兩種系統(tǒng)獲取的缺陷信號波動幅值如圖5所示。
面向開源軟件缺陷自定位系統(tǒng)幅值變化較大,在時間為0.47 ms時,幅值達到最低為-0.40;在時間為0.03 ms時,幅值達到最高為0.59;基于執(zhí)行軌跡的軟件缺陷自定位系統(tǒng)幅值變化較小,在時間為0.08 ms時,幅值達到最低為0;在時間為0.03 ms時,幅值達到最高為0.59。
2) 熱啟動
使用鍵盤Ctrl+Alt+Del進行熱啟動,兩種系統(tǒng)獲取的缺陷信號波動幅值結(jié)果如圖6所示。
面向開源軟件缺陷自定位系統(tǒng)幅值變化在熱啟動情況下變化幅度變大,但具有一定規(guī)律性,在[-0.7,0.8]幅值內(nèi)進行上下波動;基于執(zhí)行軌跡的軟件缺陷自定位系統(tǒng)幅值變化較小,也具有一定規(guī)律性,在[-0.1,0.2]幅值內(nèi)進行上下波動。
在不同啟動模式下,為了進一步驗證基于執(zhí)行軌跡的軟件缺陷自定位系統(tǒng)具有精準的定位效果,需對這兩種系統(tǒng)再次進行對比分析,結(jié)果如表3所示。
分析表3可知,在冷啟動模式下,面向開源軟件缺陷自定位系統(tǒng)定位精準度最高為50%,而基于執(zhí)行軌跡的軟件缺陷自定位系統(tǒng)定位精準度最高為90%;在熱啟動模式下,面向開源軟件缺陷自定位系統(tǒng)定位精準度最高為67%,而基于執(zhí)行軌跡的軟件缺陷自定位系統(tǒng)定位精準度最高為93%。由此說明,基于執(zhí)行軌跡的軟件缺陷自定位系統(tǒng)定位精準度較高。
4" 結(jié)" 語
針對以往采用的面向開源軟件缺陷自定位系統(tǒng)存在定位精準度低的問題,設(shè)計了基于執(zhí)行軌跡的軟件缺陷自定位系統(tǒng),詳細設(shè)計系統(tǒng)的硬件結(jié)構(gòu)和軟件功能,并把傳統(tǒng)系統(tǒng)與本文系統(tǒng)進行對比,由此證實本文系統(tǒng)設(shè)計的合理性。
目前,軟件缺陷定位系統(tǒng)還需進行深化設(shè)計,比如,如何在海量數(shù)據(jù)中提高系統(tǒng)定位精準度,或者在有限數(shù)據(jù)條件下分析軟件缺陷,并精準定位缺陷位置,這些問題都需要進一步完善。
參考文獻
[1] 王子勇,王燾,張文博,等.一種基于執(zhí)行軌跡監(jiān)測的微服務(wù)故障診斷方法[J].軟件學(xué)報,2017,28(6):1435?1454.
WANG Ziyong, WANG Tao, ZHANG Wenbo, et al. A fault diagnosis method for micro?service based on execution trajectory monitoring [J]. Journal of software, 2017, 28(6): 1435?1454.
[2] 郭文生,汪勇,楊霞,等.Codecomb:基于符號執(zhí)行的嵌入式軟件測試案例自動生成與缺陷檢測[J].小型微型計算機系統(tǒng),2017,38(6):1250?1255.
GUO Wensheng, WANG Yong, YANG Xia, et al. Codecomb: automatic generation and defect detection of embedded software test cases based on symbol execution [J]. Minicomputer system, 2017, 38(6): 1250?1255.
[3] 胡蕓,胡國祥,胡世港,等.嵌入式軟件缺陷的自動定位技術(shù)實現(xiàn)[J].現(xiàn)代電子技術(shù),2017,40(18):79?82.
HU Yun, HU Guoxiang, HU Shigang, et al. Realization of automatic positioning technology for embedded software defects [J]. Modern electronics technique, 2017, 40(18): 79?82.
[4] 曹鶴玲,姜淑娟.基于Chameleon聚類分析的多錯誤定位方法[J].電子學(xué)報,2017,45(2):394?400.
CAO Heling, JIANG Shujuan. Multi?Error location method based on Cameleon cluster analysis [J]. Journal of electronics, 2017, 45(2): 394?400.
[5] 王博,白曉穎,陳文光,等.基于執(zhí)行序列的嵌入式軟件時序異常檢測[J].計算機學(xué)報,2017,40(12):2635?2657.
WANG Bo, BAI Xiaoying, CHEN Wenguang, et al. Sequence anomaly detection of embedded software based on execution sequence [J]. Journal of computer science, 2017, 40(12): 2635?2657.
[6] 杜曉婷,王楠.基于上下文的飛控軟件老化缺陷定位方法研究[J].計算機科學(xué)與探索,2017,11(8):1214?1223.
DU Xiaoting, WANG Nan. Research on context?based flight control software aging defect location method [J]. Computer science and exploration, 2017, 11(8): 1214?1223.
[7] 趙慧嫻,吳新偉.一種電動執(zhí)行器控制系統(tǒng)設(shè)計與應(yīng)用[J].儀表技術(shù)與傳感器,2017,20(4):83?87.
ZHAO Huixian, WU Xinwei. Design and application of an electric actuator control system [J]. Instrument technology and sensors, 2017, 20(4): 83?87.
[8] 閆麗景,單征,賈珣,等.基于行為軌跡的軟件動態(tài)可信度量[J].計算機應(yīng)用研究,2017,34(2):539?542.
YAN Lijing, SHAN Zheng, JIA Xun, et al. Software dynamic credibility measurement based on behavior trajectory [J]. Computer applied research, 2017, 34(2): 539?542.
[9] 王恒迪,郝琳博,楊建璽,等.軸承外觀缺陷檢測系統(tǒng)的設(shè)計與實現(xiàn)[J].現(xiàn)代制造工程,2018(5):156?161.
WANG Hengdi, HAO Linbo, YANG Jianxi, et al. Design and implementation of bearing appearance defect detection system [J]. Modern manufacturing engineering, 2018(5): 156?161.
[10] 楊金旭,李策,夏勝,等.基于磁致伸縮導(dǎo)波的管道缺陷檢測系統(tǒng)[J].儀表技術(shù)與傳感器,2017(6):95?97.
YANG Jinxu, LI Ce, XIA Sheng, et al. Pipeline defect detection system based on magnetostrictive guided wave [J]. Instrument technology and sensors, 2017(6): 95?97.
[11] 常曦,薛建新,張卓,等.面向收斂的并發(fā)程序執(zhí)行軌跡靜態(tài)簡化方法[J].軟件學(xué)報,2017,28(5):1107?1117.
CHANG Xi, XUE Jianxin, ZHANG Zhuo, et al. Static simplification method for convergence?oriented parallel program execution trajectory [J]. Journal of software, 2017, 28(5): 1107?1117.
[12] 唐念剛,張勇.AOP技術(shù)在Web系統(tǒng)日志和事物管理中的應(yīng)用[J].電子設(shè)計工程,2017(16):42?45.
TANG Niangang,ZHANG Yong. Log and transaction management in Web system based on Aspect?Oriented Programming [J]. Electronic design engineering, 2017(16): 42?45.
[13] 郝世選.復(fù)雜軟件程序運行異常源點準確定位仿真分析[J].計算機仿真,2018,35(8):327?330.
HAO Shixuan.Simulation analysis of abnormal source location for complex software program operation [J]. Computer simulation, 2018, 35(8): 327?330.