張 林
(貴州航天電子科技有限公司,貴陽 550009)
嵌入式軟件是嵌入在硬件中的操作系統(tǒng)和開發(fā)工具軟件,它在產(chǎn)業(yè)的具體表現(xiàn)為:芯片設(shè)計制造、嵌入式系統(tǒng)軟件、嵌入式電子設(shè)備開發(fā)、制造。其具有以下特點:
(1)實用性。嵌入式軟件的是為嵌入式系統(tǒng)所服務(wù)的,所以它與外部的硬件的聯(lián)系十分緊密,嵌入式是根據(jù)需求定向開發(fā)的,因此嵌入式軟件都有特別的應(yīng)用性和實用價值。
(2)適用性。一般可以將嵌入式軟件可以看做為一種模塊式軟件,它能非常方便并且十分靈活的運用到各種嵌入式系統(tǒng)中,而不能破壞或改變它原有的系統(tǒng)特性和功能。使用靈活,配置優(yōu)化,升級更換靈活方便。
(3)安全性。為單一的嵌入式軟件開發(fā)病毒和木馬開發(fā)成本較高、開發(fā)難度較大。
(4)小巧性。嵌入式在ROM、RAM或FI。ASH存儲器中,而不是存儲在磁盤在中。要求軟件小巧,占用資源比較少,代碼比較緊湊,可靠。
靜態(tài)測試是指不執(zhí)行程序而去尋找代碼中可能存在的錯誤或者評估代碼的過程,其目的是代碼的標(biāo)準(zhǔn)進(jìn)行質(zhì)量進(jìn)行監(jiān)控,其特點是不必進(jìn)行動態(tài)地運行程序、可以人工檢測、進(jìn)行條件低、對測試人員的要求比較高。課靜態(tài)分析的關(guān)鍵功能是檢查軟件的表示和描述是否一致,沒有沖突或者沒有歧義。它瞄準(zhǔn)的是糾正軟件系統(tǒng)在描述,表示和規(guī)格上的錯誤,因此是任何進(jìn)一步測試執(zhí)行的前提。靜態(tài)分析覆蓋程序語法的詞匯分析,并研究和檢查獨立語句的結(jié)構(gòu)和使用,靜態(tài)測試主要的步驟包括代碼檢查、靜態(tài)結(jié)構(gòu)分析、代碼質(zhì)量度量等[1]。它可以由人工進(jìn)行,充分發(fā)揮人的邏輯思維優(yōu)勢,也可以借助軟件工具自動進(jìn)行。
(1)人工測試:通過是人工閱讀分析以及項目評審的文檔、程序資料等。一些設(shè)計上的邏輯錯誤在機器上不易被發(fā)現(xiàn),需要人工復(fù)查。人工復(fù)查的徹底,一般能檢查出30%-70%左右的編碼及編碼的邏輯設(shè)計錯誤。
(2)計算機輔助分析:設(shè)計一些分析工具對被測程序進(jìn)行靜態(tài)分析,從靜態(tài)分析中提取信息。如檢查局部變量和全局變量、參數(shù)匹配、判斷循環(huán)的嵌套、潛在的死循壞、不執(zhí)行的代碼、過程調(diào)用層次等等。
各大嵌入式行業(yè)比如醫(yī)療、汽車、鐵路、航空航天等的軟件開發(fā)者都會遇到校驗軟件問題(bug)有挑戰(zhàn)的問題,接收用戶或者質(zhì)量檢測部門的反饋的結(jié)果,有時候是昨天已經(jīng)修復(fù)的工作可能產(chǎn)生行動問題。這或許不是一個bug而僅僅是一個邏輯錯誤或低級警告問題,這就會為不太重要的問題耽誤大量時間,靜態(tài)測試可以十分有效的解決這個問題。
由于傳統(tǒng)的白盒測試工具會影響軟件的真實性和實時性,此外還有缺點外部事件的激勵很難進(jìn)入、中斷、輸入輸出事件無法按邏輯進(jìn)行,無法構(gòu)造閉環(huán)測試環(huán)境,基于宿主機/目標(biāo)機的工作方式的‘白盒’測試工具及其目標(biāo)機的地址空間難以做到對用戶全部開發(fā)。
傳統(tǒng)的黑盒測試測試工具同樣也存在這樣的缺陷,黑盒測試要求被測試軟件的運行環(huán)境必須存在,目標(biāo)硬件發(fā)生變化或未開發(fā)完全,就沒辦法對其進(jìn)行測試,其次黑盒測試的成本十分昂貴,外部邏輯信號需要程序員編程并且需要專用計算機處理,多路信號的配置可能滿足不了實際需要,而對采用黑盒測試工具的維護(hù)十分困難、容易損壞。
靜態(tài)測試技術(shù)的人工檢測可以充分的發(fā)揮人的優(yōu)勢,并且行之有效。解鈴還須系鈴人,由于了人與人之間的交流和思維的障礙而造成邏輯錯誤,通過邏輯思維去解決,十分有效,充分的利用了人的思維互補的情形,檢驗出錯誤的效果十分明顯。
靜態(tài)測試技術(shù)軟件輔助的優(yōu)勢在于靜態(tài)測試技術(shù)的軟件Polyspace它提供了靜態(tài)分析的完整功能,包括MISRA C和C++的編碼規(guī)范檢查;包括代碼復(fù)雜度、堆棧大小估計等在內(nèi)的軟件代碼質(zhì)量度量和分析;C和C++代碼中潛在的軟件錯誤檢查,例如程序、數(shù)據(jù)、內(nèi)存和嵌入式軟件信息安全等問題;對軟件代碼的安全性證明,即查找并排除所有可能運行時發(fā)生的錯誤[2]。polyspace對特殊的代碼安全證明能力,可以幫助開發(fā)者實現(xiàn)相當(dāng)于窮舉式的嵌入式白盒測試效果,比如結(jié)合適當(dāng)?shù)牧鞒逃糜谇度胧絾卧獪y試和集成測試階段,可以極大的提高代碼驗證效率[3]。Polyspace如何提高你的效率:
(2)降低20%的測試工作,尤其是魯棒性測試;
(2)減少40%的人工代碼檢查時間;
(3)避免軟件錯誤的發(fā)布而節(jié)省百倍的查找和修復(fù)。
隨著互聯(lián)網(wǎng)的快速發(fā)展,基于硬件的嵌入式軟件開發(fā)已經(jīng)快速應(yīng)用到人類的生活中,嵌入式的軟件擁有了廣闊的發(fā)展前景。在開發(fā)完嵌入式軟件,如何解決嵌入式軟件符合用戶需求和軟件質(zhì)量的難題,嵌入式軟件靜態(tài)測試可能還有一些不足,隨著技術(shù)的發(fā)展,嵌入式軟件靜態(tài)技術(shù)將越來越成熟。