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