999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

專業領域軟件的代碼審查方法研究

2016-09-06 01:46:05周景科
電子產品可靠性與環境試驗 2016年3期
關鍵詞:數據處理方法

周景科

(工業和信息化部電子第五研究所,廣東 廣州 510610)

?

專業領域軟件的代碼審查方法研究

周景科

(工業和信息化部電子第五研究所,廣東廣州510610)

代碼審查是發現軟件的缺陷、保證軟件的質量的重要手段。現今對特定專業領域的軟件進行代碼審查時一般采用傳統的代碼審查方法,但傳統的代碼審查方法仍存在一些問題,基于此,提出了一種專業領域軟件的代碼審查方法。結果表明,該方法在實際的工程應用中能夠有效地發現軟件的缺陷,顯著地提高軟件測試效率。

代碼審查;專業領域;軟件測試

0 引言

隨著嵌入式軟件復雜程度的增加、規模的增大,作為一種保證軟件質量的手段,軟件測試越來越受人們的重視[1]。代碼審查是一種高效的軟件測試手段,通過代碼審查能夠盡早地發現軟件的缺陷,找出動態測試難以發現或隔離的軟件缺陷[2]。而且越早發現缺陷,越有利于降低軟件測試的成本。代碼審查的另一個優點是,其能夠為動態測試設計和使用測試用例提供思路。

現今對特定專業領域 (例如:雷達、電子對抗和武器等)的軟件進行代碼審查時主要采用傳統的代碼審查方法。這種方法主要關注代碼本身的邏輯問題,與專業領域知識相隔離,不易發現與功能邏輯相關的有價值的問題。此外,在實際工程中,由于未對特定專業領域軟件的代碼審查方法進行歸納總結,從而造成了同一專業領域的軟件的不同的測試項目的代碼審查工作之間的可借鑒性不強,效率不高。

1 傳統的代碼審查方法

傳統的代碼審查是由程序員和測試員組成的審查小組,通過閱讀、討論和分析等方式對程序進行靜態的檢查的過程。代碼審查是一種正式的檢查和評估方法,其利用一種逐步地檢查源代碼中有無邏輯或語法錯誤的方法來檢查軟件中的缺陷。通常,代碼審查的內容包括以下幾項:檢查代碼和設計的一致性;檢查代碼對標準的遵循情況和可讀性;檢查代碼的邏輯表達的正確性;檢查代碼結構的合理性[3]。

傳統的代碼審查的一個重要手段是建立代碼審查單。審查單可以保證程序遵照精確的規程進行。下面列舉了一個C語言通用代碼審查單所包含的檢查項目。

a)檢查是否存在數據引用錯誤。數據引用錯誤是指由未經正確聲明和初始化的變量、常量、數組、字符串或記錄導致的軟件缺陷。

b)檢查是否存在數據聲明錯誤。數據聲明缺陷是由不正確的聲明或使用變量和常量引起的。

c)檢查是否存在計算錯誤。計算錯誤是指錯誤的數學計算問題,例如:除數為零、運算優先級錯誤和運算溢出等。

d)檢查是否存在比較和判斷錯誤。應特別關注文中使用的比較和判斷用語,例如:小于、大于、等于、不等于、真、假。比較和判斷錯誤很可能是邊界問題導致的。

e)檢查是否存在控制流程錯誤。控制流錯誤出現的原因是編程語言中循環等控制結構未按預期的方式工作。它們通常都是由計算或者比較錯誤直接或間接地造成的。

f)檢查是否存在子程序參數錯誤。子程序參數錯誤的來源是軟件子程序不正確地傳遞數據。

g)檢查是否存在輸入/輸出錯誤。輸入/輸出錯誤包括文件的讀取、接收鍵盤或鼠標輸入錯誤,以及向打印機或屏幕等輸出設備寫入錯誤。

h)檢查是否存在一致性錯誤。主要指程序與設計文檔不一致的錯誤。

隨著電子信息行業的快速發展,軟件的規模及復雜度劇增,與此同時軟件的測試壓力及質量風險也在倍增。但受國內軟件行業整體成熟度的限制,軟件研制企業在軟件測試方面的投入普遍偏低,軟件測試從業人員普遍存在對被測專業領域不夠熟悉,技術能力一般,人員結構偏年輕,測試項目經驗十分有限等問題。

使用傳統的代碼審查方法對特定專業領域的軟件進行代碼審查時,主要依據通用代碼審查單逐項進行檢查。這種方法主要存在以下兩個問題。

a)通用代碼審查單主要關注代碼本身的語法和邏輯問題,與專業領域知識相隔離,因而難以發現有價值的問題。例如:針對雷達專業領域,由于其軟件本身的功能具有復雜性,因此測試人員需要具備較強的雷達領域的專業知識,且熟悉雷達軟件的主要功能和雷達系統的工作流程。若僅采用傳統的代碼審查方法建立通用的審查單,而未結合雷達的功能進行分析,則將難以發現與雷達功能邏輯相關的有價值的問題。

b)同一專業領域不同項目的代碼審查工作的可借鑒性不強,代碼審查效率不高。在實際的工程項目中,同一專業領域的不同項目之間通常具有類似性和相關性。而傳統的代碼審查方法,每次實施新項目時,都只是根據通用代碼審查單進行審查,未結合專業領域的知識對功能要素進行歸納總結,造成了項目間的可借鑒性不強,代碼審查效率不高。

2 專業領域軟件的代碼審查方法

針對傳統的代碼審查方法存在的問題,本文提出了一種專業領域軟件的代碼審查方法。即在傳統的代碼審查方法的基礎上,將通用代碼審查單與特定專業領域的知識相結合,建立一種基于特定專業領域的代碼審查單。該方法的具體實施步驟如下所述。

a)針對不同語言的軟件建立通用代碼審查單知識庫。

b)根據特定的專業領域,將軟件的功能進行劃分,建立專業領域代碼審查要素知識庫。

c)將第一步和第二步中的知識庫進行融合,將第二步的專業領域要素加入到第一步建立的通用代碼審查單中,形成基于專業領域的代碼審查單。

以下是建立雷達數據處理專業的代碼審查單的一個應用實例。

雷達是一種用于檢測和定位反射物體 (例如:飛機、艦船、航天飛機、車輛、行人和自然環境)的電磁系統[4]。常見的嵌入式雷達系統由處理機、天線單元、發射單元和接收單元組成,其結構如圖1所示,在下文中將天線單元、發射單元和接收單元統稱為各分機。

圖1 雷達系統結構圖

處理機是雷達的核心部分。處理機中駐留雷達數據處理軟件和信號處理軟件。數據處理軟件主要完成雷達系統的調度和控制,接收上位機的控制指令并向其返回雷達狀態信息,控制各分機進行工作和自檢并接收各分機返回的狀態信息和自檢結果,控制信號處理軟件的工作模式和向信號處理軟件發送載機姿態數據,接收信號處理軟件發送的目標信息進行點跡、航跡處理等[5]。

根據雷達數據處理軟件的功能需求及特點,結合工程經驗,本文闡述了建立雷達數據處理軟件代碼審查單的方法。即:1)建立通用C語言代碼審查單知識庫,見第1章a)~h);2)將雷達數據處理軟件的功能進行劃分,建立雷達數據處理專業代碼審查要素知識庫,見2.1部分;3)建立雷達數據處理專業代碼審查單,見2.2部分。

2.1建立雷達數據處理專業代碼審查要素知識庫

2.1.1初始化檢查

初始化檢查主要檢查雷達數據處理軟件開始工作時,系統的軟硬件是否處于正確的初始狀態。檢查要點如下所述。

a)定時器初始化。雷達數據處理軟件采用定時器來控制整個雷達系統的時序,故定時器初始設置尤為重要。應重點關注定時周期的設置。

b)中斷初始化。重點關注中斷觸發方式和中斷使能設置。

c)接口初始化。由于數據處理軟件和各分機軟件之間有通信接口,由此需要依據需求及設計文檔,檢查接口數據傳輸的波特率、奇偶校驗等的設置是否正確。

d)系統默認工作參數初始化。雷達上電后若未接收到上位機發送的控制指令,一般會采用默認工作方式。此時應依據需求和設計文檔,檢查默認參數的設置是否正確。一般應檢查雷達的工作方式、量程、方位、俯仰和輻射開關等信息等。

e)故障狀態標志位。雷達數據處理軟件將本機和各分機自檢結果上報給上位機。結合程序上下文,分析故障情況下標志位為0還是1,檢查初始故障狀態標志位設置是否正確。

2.1.2中斷處理檢查

由于無操作系統,故雷達數據處理軟件使用中斷的方式進行系統控制和調度。若中斷處理不當,可能導致整個系統崩潰或進入死循環。在嵌入式雷達數據處理軟件中,主要有定時器中斷和接口通信中斷兩類中斷。

a)定時器中斷處理。軟件采用定時器控制時序,一般會采用在定時中斷中設置一個全局計數變量自加進行計時,在程序主循環中根據該計數變量的值來進行分時操作。應重點檢查對此全局變量賦值的語句。以下舉例一個典型的問題。

在中斷函數中,控制上電自檢時間的計數變量為g_uBitcnt。通過在程序中查找該變量的賦值和使用處發現,程序維護自檢也采用同一變量g_u-Bitcnt進行計數,而在接收上位機自檢控制命令中斷中又將該變量清零。經分析得出若在上電自檢過程中,上位機下發維護自檢命令,則上電自檢的計數變量g_uBitcnt將被清零,導致上電自檢無法按正常時序進行。發現問題后經修改,將上電自檢計數全局變量改為g_uPowerupBitcnt,和維護自檢計數變量加以區分。修改前和修改后的程序如表1所示。

b)接口通信中斷。雷達數據處理軟件的接口中斷主要包括與上位機軟件的指令通信中斷、與各分機的通信中斷等。應重點檢查各中斷的優先級設置是否合理。此外,還應考慮中斷嵌套的情況。考慮在上位機進行異常操作時,例如:在執行上位機工作模式切換指令的中斷服務程序時,又收到上位機的自檢指令中斷,此時中斷優先級的設置是否合理。

表1 修改前、后的程序

2.1.3自檢功能檢查

自檢是雷達數據處理軟件的重要功能。常見的自檢方式主要有上電自檢、周期自檢和維護自檢等。雷達數據處理軟件主要實現對處理機和各分機單元的自檢,并將自檢結果上報給上位機軟件。主要檢查項如下。

a)檢查自檢對象是否完整。依據軟件需求規格說明和軟件設計說明,檢查自檢對象是否完整。

b)檢查上電自檢完成后是否能進入某一特定的工作模式。

c)檢查維護自檢與正常工作模式之間的關系是否正確。根據用途,雷達軟件一般具有多種工作模式。通過分析自檢函數,檢查軟件是否在任意工作模式下都能夠進行維護自檢,以及自檢完成后是否能回到原工作模式。

d)檢查自檢項是否被人為屏蔽。在軟件開發的過程中,常會因調試原因而屏蔽某些自檢項。因此,在代碼審查時,應檢查是否有自檢項被人為注釋的情況。

e)檢查自檢標志位的設置是否正確。依據接口控制文件或接口需求規格說明,檢查自檢標志位是否與接口協議一致。

2.1.4通信接口檢查

通信是雷達數據處理軟件的重要功能。一般分為與上位機的通信和與各分機的通信兩種。主要檢查以下內容。

a)底層數據傳輸設置是否正確。包括通信速率和奇偶校驗位設置是否正確。

b)應用層通信協議是否符合接口協議。依據接口協議,檢查應用層通信數據包的各字段是否與接口協議一致。

c)檢查通信異常時的處理策略是否合理。檢查是否有握手、通信超時重傳或上報故障等通信機制。

d)檢查軟件對異常通信報文的處理是否合理。數據處理軟件可能接收到上位機或分機發送的異常的報文,例如:報文頭、報文尾和校驗位錯誤等,檢查軟件是否對異常的報文進行屏蔽,使用默認值或上次收到的報文值。

2.1.5控制功能檢查

控制功能是雷達數據處理軟件的一個重要功能,其主要實現對信號處理軟件和各分機軟件的控制。主要檢查以下內容。

a)檢查控制對象與控制內容的一致性。例如:數據處理軟件能夠控制信號處理軟件工作在不同的工作模式下,控制發射機軟件工作在不同的輻射狀態下,此外,其還能夠控制接收機使用的波形碼和頻段號等,因此對控制功能進行檢查時,應首先對這些控制對象與控制內容的一致性進行檢查。檢查控制命令的發送對象是否正確,例如:是否存在把發送給接收機的控制命令發送給發射機的問題。

b)檢查控制命令與接口協議的一致性。依據接口協議,檢查數據處理軟件發送的控制命令的格式和內容是否與接口協議保持一致。

2.1.6點跡、航跡處理功能檢查

點跡、航跡處理是雷達數據處理軟件的一個關鍵功能,主要實現點跡預處理、航跡起始和航跡關聯等功能。主要進行如下檢查。

a)檢查點跡預處理的判斷條件是否正確。例如:檢查速度窗、角度窗和距離窗的值是否設置正確,進行波束相關的雷達幀數是否正確。以下舉例一個典型的問題:程序中距離窗的門限值與設計文檔不一致。該門限值設置偏小,這可能導致將同一個目標識別為不同目標,從而影響雷達的功能。在實際測試中,應依據設計文檔,檢查各門限值設置是否正確。

b)檢查航跡起始的條件是否正確。例如:測量和潛在航跡的判斷距離門限、角度門限是否設置正確等。

2.2建立雷達數據處理專業代碼審查單

在建立通用C語言代碼審查單知識庫和雷達數據處理專業代碼審查要素知識庫后,將兩個知識庫的要素進行融合,形成基于專業領域的代碼審查單。以下是基于雷達數據處理專業領域的代碼審查單的一部分內容。

a)檢查數據引用。檢查雷達上電默認工作參數變量、數組等是否正確聲明和初始化。

b)檢查控制流程。檢查定時器相關的控制流程是否正確,軟件是否能按預期的時間進行系統調度。

c)依據軟件設計說明書,檢查典型的邊界,例如:角度邊界、高度邊界、距離邊界和速度邊界等邊界值的設置是否與設計說明書一致。

d)檢查是否存在比較錯誤。檢查波束相關的速度窗、角度窗和距離窗的判斷條件是否正確。

e)檢查子程序參數。檢查控制命令的發送對象是否正確。

……

3 專業領域軟件的代碼審查效率

普通測試工程師分別采用傳統代碼審查方法與專業領域的代碼審查方法對實際工程中不同代碼規模的項目數據進行了測試,得到的代碼審查數據統計表和統計圖分別如表2和圖2-3所示。

從表2和圖2可以觀察到,對不同代碼規模的項目進行審查時,采用專業領域代碼審查方法比采用傳統代碼審查方法發現的有價值的問題的千行代碼缺陷率均有大幅度的提高。從表2和圖3可以觀察到,對不同代碼規模的項目進行審查時,采用專業領域代碼審查方法明顯比采用傳統代碼審查方法所需工時短,且代碼規模越大,節省工時就越多,代碼審查效率也就越高。

表2 代碼審查數據統計表

圖2 代碼規模與分別采用兩種不同的方法發現的有價值的問題的千行代碼缺陷率之間的關系圖

圖3 代碼規模與采用兩種方法所需工時之間的關系圖

4 結束語

本文針對傳統的代碼審查方法存在的問題,提出了一種基于專業領域的軟件代碼審查方法。在實際工程應用中,使用該方法有益于測評機構內代碼審查實踐經驗的有效傳遞。一般情況下,測試人員采用該方法對專業領域的軟件進行代碼審查時,可以快速地適應繁重復雜的測評工作,顯著地提高測試效率,充分地發現深層次的軟件缺陷,從而保證被測軟件的質量。

[1]RON Patton.軟件測試 [M].張小松,王玨,曹越,等譯.北京:機械工業出版社,2006.

[2]黎連業,王華,李淑春.測試技術 [M].北京:清華大學出版社,2009.

[3]黎連業,王華,李淑春.測試技術 [M].北京:清華大學出版社,2006.

[4]MERRILL I Sko1nik.雷達系統導論 [M].左群,徐國良,馬林,等譯.北京:電子工業出版社,2010.

[5]何友,修建娟,關欣.雷達數據處理及應用 (第三版)[M].北京:電子工業出版社,2013.

Research on Code Inspection Method of Software in Particular Fields

Zhou Jing-ke
(CEPREI,Guangzhou 510610,China)

Code inspection is an important way to find software defects and ensure software qua1ity.Nowadays,traditiona1 code inspection method is usua11y used in the code inspection of therefore,software in particu1ar fie1ds,but there are sti11 some prob1ems in the traditiona1 code inspection,so a code inspection method of software in particular fields is proposed.It turns out that the method can effective1y find software defects and significant1y improve the efficiency of software testing in engineering practice.

code inspection;particu1ar fie1d;software testing

TP 311.55

A

1672-5468(2016)03-0039-06

10.3969/j.issn.1672-5468.2016.03.008

2016-01-19

2016-05-09

周景科 (1987-),女,四川自貢人,工業和信息化部電子第五研究所軟件質量工程研究中心工程師,碩士,主要從事軟件測評工作。

猜你喜歡
數據處理方法
認知診斷缺失數據處理方法的比較:零替換、多重插補與極大似然估計法*
心理學報(2022年4期)2022-04-12 07:38:02
ILWT-EEMD數據處理的ELM滾動軸承故障診斷
水泵技術(2021年3期)2021-08-14 02:09:20
學習方法
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
MATLAB在化學工程與工藝實驗數據處理中的應用
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
Matlab在密立根油滴實驗數據處理中的應用
基于POS AV610與PPP的車輛導航數據處理
主站蜘蛛池模板: 高清色本在线www| 中日韩一区二区三区中文免费视频 | 日本成人不卡视频| 91久久偷偷做嫩草影院精品| 97无码免费人妻超级碰碰碰| 亚洲欧美另类日本| 欧美三級片黃色三級片黃色1| 亚洲男人的天堂久久香蕉 | 欧美一级黄片一区2区| 亚洲天堂高清| 国产成人福利在线视老湿机| 亚洲av无码成人专区| 日韩av高清无码一区二区三区| 国产亚洲高清在线精品99| 亚洲国产精品VA在线看黑人| 九九热精品在线视频| 亚洲人人视频| 日本免费新一区视频| 亚洲丝袜第一页| 婷婷激情亚洲| 欧美激情成人网| 午夜一区二区三区| 日本在线视频免费| 日韩欧美国产三级| 亚洲无码高清免费视频亚洲| 日韩AV无码一区| AV在线麻免费观看网站| 亚洲无码精品在线播放| 综合亚洲网| 亚洲第一区欧美国产综合| 中文字幕久久波多野结衣| 欧美午夜一区| 国产另类视频| 亚洲中文字幕手机在线第一页| 综合成人国产| 久久毛片基地| 亚洲精品久综合蜜| 操国产美女| 国产人在线成免费视频| 欧美精品v欧洲精品| 一本一本大道香蕉久在线播放| 毛片在线看网站| 成人中文在线| 亚洲日本一本dvd高清| 成人噜噜噜视频在线观看| 无码区日韩专区免费系列| 美女扒开下面流白浆在线试听 | 欧美成人手机在线观看网址| 亚洲人成在线精品| 久久精品无码国产一区二区三区| aa级毛片毛片免费观看久| 国产浮力第一页永久地址| 久久99蜜桃精品久久久久小说| 中国精品久久| 激情成人综合网| 亚洲天堂网2014| AⅤ色综合久久天堂AV色综合| 免费一级毛片在线播放傲雪网| 日韩黄色精品| 亚洲AV无码久久精品色欲| 日本不卡在线视频| 国产jizz| 国产自在线拍| 国产成在线观看免费视频| 无遮挡一级毛片呦女视频| 怡春院欧美一区二区三区免费| 青青操视频在线| 中文无码日韩精品| 九九热免费在线视频| 国产污视频在线观看| 亚洲福利视频一区二区| 中文天堂在线视频| 国产亚洲精品va在线| 黄色片中文字幕| 在线观看国产网址你懂的| 日韩精品久久无码中文字幕色欲| 国产一区二区福利| 亚洲国产天堂久久综合| 四虎在线观看视频高清无码 | 伊人久久久大香线蕉综合直播| 国产美女无遮挡免费视频| 日韩在线视频网站|