黃丹丹 費(fèi)玉婷
摘 要 隨著社會(huì)的不斷進(jìn)步與發(fā)展,嵌入式軟件的開發(fā)成為我國極為關(guān)注的一項(xiàng)工作,如何有效降低軟件的開發(fā)成本,縮減軟件的開發(fā)周期,提高軟件的整體運(yùn)行質(zhì)量成為眾多企業(yè)重點(diǎn)關(guān)注的一項(xiàng)問題。根據(jù)實(shí)際應(yīng)用與探索表明:靜態(tài)測(cè)試方式的運(yùn)用可以有效提高軟件代碼的整體質(zhì)量以及安全性,為軟件的穩(wěn)定運(yùn)行提供保障。
關(guān)鍵詞 靜態(tài)測(cè)試;嵌入式軟件;靜態(tài)分析;代碼審查
1嵌入式系統(tǒng)的概念及軟件特點(diǎn)
嵌入式系統(tǒng)是指基于計(jì)算機(jī)技術(shù),圍繞應(yīng)用為中心,可對(duì)軟硬件進(jìn)行裁剪工作的系統(tǒng)。其是專門根據(jù)相關(guān)應(yīng)用進(jìn)行打造的系統(tǒng),對(duì)于功能、成本、功耗、可靠性以及體積進(jìn)行嚴(yán)格要求,具有針對(duì)性的、專門的系統(tǒng)。嵌入式系統(tǒng)主要分為軟件和硬件兩部分。
嵌入式軟件是指將相關(guān)的操作系統(tǒng)以及開發(fā)工具軟件在硬件中進(jìn)行嵌入,具體表現(xiàn)為:嵌入式的電子設(shè)備開發(fā)制造工作、芯片的設(shè)計(jì)制造工作以及嵌入式系統(tǒng)軟件的開發(fā)工作等等。其主要具有以下特點(diǎn):一是實(shí)用性的特點(diǎn),嵌入式軟件形成的作用便是為嵌入式系統(tǒng)進(jìn)行服務(wù)的,因此其與外部的硬件通常具有極高的聯(lián)系程度,同時(shí)嵌入式的軟件都是基于不同的需求進(jìn)行有針對(duì)性的開發(fā),因此所有的嵌入式軟件都有其自身特別的實(shí)用價(jià)值。二是適用性的特點(diǎn),在一般的情況下我們可以將嵌入式軟件當(dāng)作是一種模塊式的軟件,特具有便捷、靈活等特點(diǎn),其可以在嵌入式系統(tǒng)運(yùn)行過程中保證自身的特性以及功能不會(huì)受到破壞。三是小巧性的特點(diǎn),嵌入式軟件受其嵌入部位的特殊性因素,其在設(shè)計(jì)過程中就要保障軟件的體型相對(duì)小巧,且其整體資源占用量較小,代碼相對(duì)比較緊湊,整體使用相對(duì)可靠[1]。
2嵌入式軟件靜態(tài)測(cè)試的方法
在以往過程中,對(duì)于嵌入式軟件人們大多采用靜態(tài)以及動(dòng)態(tài)測(cè)試方法相結(jié)合的模式進(jìn)行。但是動(dòng)態(tài)測(cè)試方法在運(yùn)行過程中存在極多隱患,例如:動(dòng)態(tài)測(cè)試方法一般只有在軟件已經(jīng)編制完成并且運(yùn)行過程中才能起到作用,用例質(zhì)量對(duì)于測(cè)試的整體結(jié)果影響極大,并且其不能全面覆蓋所有的運(yùn)行途徑,受到人為因素的影響相對(duì)較大。換句話說動(dòng)態(tài)測(cè)試發(fā)現(xiàn)的問題不夠全面,其過于局限于運(yùn)行的整體現(xiàn)象,同時(shí)還需要一定的時(shí)間對(duì)發(fā)現(xiàn)的問題進(jìn)行重現(xiàn)、調(diào)試以及定位工作,整體測(cè)試工作效率過低。靜態(tài)測(cè)試則大大不同,其是一種相對(duì)高效、投入成本相對(duì)較低的測(cè)試方法,其在對(duì)嵌入式軟件的程序途徑以及靜態(tài)結(jié)構(gòu)進(jìn)行全面分析時(shí)并不需要運(yùn)行代碼,其能夠相對(duì)準(zhǔn)確的發(fā)現(xiàn)代碼存在的質(zhì)量以及安全問題,大大提高軟件代碼的整體規(guī)范性以及正確性。一般情況下嵌入式軟件靜態(tài)測(cè)試的工作大致可以分為靜態(tài)分析以及代碼審查兩部分[2]。
2.1 嵌入式軟件的靜態(tài)分析
嵌入式軟件的靜態(tài)分析工作是指工作人員通過運(yùn)用軟件對(duì)需要被測(cè)源碼的內(nèi)容、結(jié)構(gòu)以及格式在沒有運(yùn)營的情況下進(jìn)行檢測(cè)、分析的過程。經(jīng)過多次的嘗試人們發(fā)現(xiàn)一小部分的模塊中往往會(huì)存在程序中絕大多數(shù)的錯(cuò)誤,即大多數(shù)的源碼遵循“二八定理”(是指程序中80%的錯(cuò)誤大多是由20%的模塊引起的)。當(dāng)軟件處于編碼周期時(shí),其由于沒有形成完整的運(yùn)行代碼,因此不能進(jìn)行動(dòng)態(tài)測(cè)試,這時(shí)工作人員就可以通過靜態(tài)分析的方法對(duì)這20%的模塊進(jìn)行標(biāo)識(shí)、分析工作,靜態(tài)分析方法對(duì)于正在處于編碼周期的軟件是極為重要的。同時(shí)靜態(tài)分析工作可以提取軟件代碼中許多的內(nèi)部信息(包括:編碼違反的規(guī)章、子程序的模塊、代碼中存在的調(diào)用與被調(diào)用的關(guān)系以及扇入與扇出的數(shù)據(jù)等等),這些內(nèi)部的信息可以為隨后的代碼審查工作提供輔助作用,因此靜態(tài)分析工作進(jìn)行的最佳時(shí)間段應(yīng)該處于編譯通過之后、代碼審查工作之前。靜態(tài)分析還可以從檢查層次上來分為語法結(jié)構(gòu)檢查以及語義檢查兩類。語法結(jié)構(gòu)檢查是指工作人員對(duì)軟件上的語法進(jìn)行檢查工作,主要代表是以編程所要遵循的規(guī)則的檢測(cè)功能。語義檢查是指工作人員通過運(yùn)用數(shù)字定理所能提供的相關(guān)規(guī)則對(duì)軟件進(jìn)行動(dòng)態(tài)分析的工作,主要代表是軟件運(yùn)行時(shí)錯(cuò)誤檢測(cè)的功能[3]。
2.2 嵌入式軟件的代碼審查
嵌入式軟件的代碼審查工作是通過借助人工的力量,運(yùn)用代碼檢查單以及代碼走查等方式對(duì)代碼中存在的錯(cuò)誤以及在開發(fā)過程中違反的標(biāo)準(zhǔn)進(jìn)行查找、分析的行為。通過代碼審查工作可以有效查找出部分工具無法發(fā)現(xiàn)的問題,包括:①檢測(cè)代碼是否能夠依照相關(guān)需求的規(guī)格以及設(shè)計(jì)文件的有關(guān)要求進(jìn)行,是否能夠?qū)④浖脑O(shè)計(jì)思路進(jìn)行正確、合理的表達(dá)(包括對(duì)于不同種類以及函數(shù)進(jìn)行正確的分類、分解,對(duì)于外部的接口進(jìn)行正確的選擇等等)。②檢測(cè)代碼的邏輯是否合理,設(shè)計(jì)的算法是否能夠體現(xiàn)最高效,表達(dá)式是否正確以及邏輯變量是否選擇正確,判斷分支是否處理正確等等。③檢測(cè)編碼是否具有較高的可讀性,是否能夠準(zhǔn)確表達(dá)標(biāo)號(hào)、變量名以及函數(shù)名的意義,是否能夠充分、準(zhǔn)確的注釋代碼等等。但是代碼審查工作依舊存在許多隱患,包括:其對(duì)于審查人員自身經(jīng)驗(yàn)具有較高的依賴性,同時(shí)具有相對(duì)耗時(shí)且容易出錯(cuò)的特點(diǎn),而且代碼存在的錯(cuò)誤會(huì)隨著代碼的復(fù)雜程度出現(xiàn)不同程度的掩埋現(xiàn)象,這時(shí)就要借助必要的靜態(tài)分析工具來提高代碼審查的整體高效性以及正確性[4]。
3結(jié)束語
綜上所述,靜態(tài)測(cè)試工作的進(jìn)行不需要依靠代碼的完整性,不需要代碼運(yùn)行就可以發(fā)現(xiàn)其存在的質(zhì)量以及安全問題,而且能夠?qū)Υa程序的全部路徑進(jìn)行全面的分析。工作人員可以在軟件開發(fā)的不同時(shí)期,運(yùn)用靜態(tài)分析方法發(fā)現(xiàn)代碼存在的具體問題,提高軟件開發(fā)的整體效率,因此工作人員在進(jìn)行軟件設(shè)計(jì)及檢測(cè)工作時(shí),盡可能采用動(dòng)態(tài)與靜態(tài)測(cè)試相結(jié)合的模式進(jìn)行相關(guān)檢測(cè)工作,提高軟件的運(yùn)行質(zhì)量。
參考文獻(xiàn)
[1] 白首華,胡天彤.微型嵌入式軟件靜態(tài)缺陷預(yù)測(cè)系統(tǒng)優(yōu)化設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2020,43(10):97-99.
[2] 王銳鑫,趙中華,沈國榮,等.基于模型的嵌入式軟件開發(fā)研究[J].信息與電腦(理論版),2020,32(6):109-111.
[3] 劉穎輝.基于模型設(shè)計(jì)的嵌入式軟件測(cè)試技術(shù)[J].科學(xué)技術(shù)創(chuàng)新,2019(33):80-81.
[4] 劉佳,楊永文,李金華.嵌入式軟件單元測(cè)試方法研究[J].軟件工程,2019,22(8):17-20,13.