在嵌入式開發(fā)中,嵌入式系統(tǒng)軟件的代碼質(zhì)量標(biāo)準(zhǔn)遠(yuǎn)高于游戲、照片編輯器和其他軟件,這不是秘密。在硬件失控導(dǎo)致了很多悲劇的情況下,需求增加了,最多的情況是,大量的錢都是白白花掉的。
例如,法國的Arianespace公司就因員工10年的工作損失、70億美元的損失以及查明誰犯了錯(cuò)誤的令人厭煩的審判程序而逍遙法外。該公司在商業(yè)基礎(chǔ)上提供太空發(fā)射服務(wù),它的阿麗亞娜4號(hào)火箭已經(jīng)成功發(fā)射了100多次,然而,下一個(gè)型號(hào)阿麗亞娜5號(hào)在第一次發(fā)射時(shí)就爆炸了。由于軟件錯(cuò)誤,火箭在起飛40秒后被摧毀。確切地說,導(dǎo)致這一結(jié)果的原因有幾個(gè):
開發(fā)人員重新使用了Ariane 4的軟件模塊,然而,Ariane 5的操作條件與第四款不同。
l Ariane 5系統(tǒng)檢測到錯(cuò)誤,但無法正確處理。
l 第五種型號(hào)的錯(cuò)誤模塊沒有正確測試。
MISRA標(biāo)準(zhǔn)旨在提高嵌入式系統(tǒng)程序的安全性、可移植性和可靠性。MISRA最初是為汽車工業(yè)制造的。然而,如今這些標(biāo)準(zhǔn)被用于醫(yī)療器械開發(fā)、電信、軍事項(xiàng)目等。在嵌入式開發(fā)中,它們基本上是開發(fā)軟件時(shí)要遵循的一套規(guī)則和建議。
然而,MISRA并不是萬能藥。你不應(yīng)該把它看作是一個(gè)從錯(cuò)誤中拯救軟件的靈丹妙藥。為了最大限度地減少出現(xiàn)bug的風(fēng)險(xiǎn),必須將MISRA與其他軟件分析和檢查方法(包括靜態(tài)代碼分析)一起使用。靜態(tài)代碼分析器是用于檢測源代碼中的錯(cuò)誤和潛在漏洞的工具。使用靜態(tài)代碼分析器將幫助您發(fā)現(xiàn)大多數(shù)程序員都不知道的錯(cuò)誤模式,它也有助于檢測錯(cuò)誤,這些錯(cuò)誤在代碼審查期間并不容易發(fā)現(xiàn)。此外,一些靜態(tài)分析器支持MISRA,因此您可以節(jié)省檢查代碼是否符合標(biāo)準(zhǔn)的時(shí)間。
然而,僅僅使用靜態(tài)代碼分析器檢查一次項(xiàng)目,修復(fù)錯(cuò)誤并忘掉它是不夠的。你應(yīng)該明智地使用它。如果一個(gè)分析器被用于一個(gè)大型項(xiàng)目,它可能會(huì)發(fā)出很多警告。但您不應(yīng)該急于修復(fù)它們——暫時(shí)隱藏分析器的消息,關(guān)注在進(jìn)一步嵌入式開發(fā)過程中出現(xiàn)的新消息就足夠了。其他警告可能被視為技術(shù)債務(wù),您可以隨時(shí)修復(fù)。然而,將MISRA與分析器一起使用最不痛苦的選擇是在開發(fā)之初就開始使用它們。