行業(yè)合規(guī)標(biāo)準(zhǔn)MISRA如何幫助C/C++代碼程序員高效地編寫(xiě)代碼?
MISRA標(biāo)準(zhǔn)包含編寫(xiě)軟件的準(zhǔn)則和代碼規(guī)則。汽車(chē)、航空航天和國(guó)防、醫(yī)療、工業(yè)自動(dòng)化和鐵路等行業(yè)都使用該標(biāo)準(zhǔn)來(lái)幫助他們的開(kāi)發(fā)人員編寫(xiě)源代碼,以確保軟件的安全、安保和可靠性。
由于嵌入式軟件工程師使用C和C++編程語(yǔ)言來(lái)編寫(xiě)安全關(guān)鍵型軟件的代碼,MISRA標(biāo)準(zhǔn)的創(chuàng)建者為使用這兩種語(yǔ)言的編碼者建立了這些標(biāo)準(zhǔn)。
在20世紀(jì)90年代初,電子產(chǎn)品在汽車(chē)中變得越來(lái)越重要。作為這些電子產(chǎn)品的一個(gè)組成部分的嵌入式軟件也是如此。因此,工程師和制造商開(kāi)始意識(shí)到,無(wú)論是出于安全還是商業(yè)原因,軟件的可靠性是至關(guān)重要的。今天的挑戰(zhàn)甚至更大,因?yàn)橐惠v汽車(chē)的軟件可能涉及超過(guò)1億行的編碼。
MISRA的功能安全編碼標(biāo)準(zhǔn)
今天,開(kāi)發(fā)團(tuán)隊(duì)采用編碼標(biāo)準(zhǔn)作為定義、管理和利用一組編碼實(shí)踐的方法,其首要目標(biāo)是一致性。編碼規(guī)則的主要目的是限制語(yǔ)言的使用,這樣可以防止開(kāi)發(fā)人員做一些 "錯(cuò)誤 "的事情,并可能產(chǎn)生潛在的危險(xiǎn)。
開(kāi)發(fā)人員可以通過(guò)采取合理的語(yǔ)言使用限制來(lái)避免軟件中的許多缺陷。這導(dǎo)致了風(fēng)格的統(tǒng)一,這在軟件項(xiàng)目中作為一種紀(jì)律是很有價(jià)值的。
常用的MISRA C和C++語(yǔ)言指南和規(guī)則
每個(gè)MISRA標(biāo)準(zhǔn)都包含了一套編碼參數(shù)和規(guī)則,以及支持材料。支持材料是標(biāo)準(zhǔn)的補(bǔ)充部分,提供了任何想獲得符合性的程序員所必需的重要背景信息。 讓我們看看當(dāng)前的C和C++ MISRA編碼標(biāo)準(zhǔn)本身和簡(jiǎn)要說(shuō)明:
- MISRA C++ 2008:雖然C仍然是主流的編碼語(yǔ)言,但這個(gè)版本談到了C++的使用增加。注意:許多企業(yè)選擇以AUTOSAR C++ 14為標(biāo)準(zhǔn),它涵蓋了C++的最新變化。事實(shí)上,AUTOSAR和MISRA聯(lián)手制作了下一代的標(biāo)準(zhǔn)。
- MISRA C 2012:該版本于2013年發(fā)布,也被稱(chēng)為MISRA C3,進(jìn)一步發(fā)展了MISRA C標(biāo)準(zhǔn)。它吸取了14年來(lái)與成千上萬(wàn)的組織和用戶(hù)互動(dòng)的經(jīng)驗(yàn),包括了一些新的規(guī)則,彌補(bǔ)了一些漏洞,并改進(jìn)了以前存在的規(guī)則背后的解釋和描述。該標(biāo)準(zhǔn)擴(kuò)展了對(duì)C99的支持,并保持了對(duì)C90、C11和C18的支持。它還做出了一些改進(jìn),降低了合規(guī)的復(fù)雜性和成本。
- MISRA合規(guī)性2020:這份現(xiàn)行文件為完成MISRA編碼標(biāo)準(zhǔn)的合規(guī)性設(shè)定了一個(gè)框架。它取代了以前版本的標(biāo)準(zhǔn)中的合規(guī)性和流程及偏差要求。
使用Parasoft靜態(tài)分析實(shí)現(xiàn)MISRA合規(guī)性
MISRA編碼標(biāo)準(zhǔn)提供了全面的規(guī)則和指導(dǎo)方針,因此公司可以保護(hù)他們的應(yīng)用程序免受運(yùn)行時(shí)錯(cuò)誤和軟件故障的影響,并使它們不太容易出現(xiàn)安全和安全漏洞。符合MISRA標(biāo)準(zhǔn)有助于改進(jìn)語(yǔ)法,創(chuàng)建代碼一致性,并促進(jìn)可移植性。對(duì)于不使用靜態(tài)分析(或SAST-靜態(tài)應(yīng)用安全測(cè)試)解決方案或工具的團(tuán)隊(duì)來(lái)說(shuō),驗(yàn)證合規(guī)性可能會(huì)有問(wèn)題。Parasoft簡(jiǎn)化了這一過(guò)程,這對(duì)于確保及時(shí)的軟件交付和編碼安全至關(guān)重要。
在整個(gè)軟件開(kāi)發(fā)生命周期中應(yīng)用MISRA合規(guī)性是很重要的,包括在代碼實(shí)現(xiàn)期間進(jìn)行左移測(cè)試和加快代碼審查。這不僅提供了質(zhì)量改進(jìn),還提供了進(jìn)度度量、持續(xù)可追溯性和強(qiáng)制執(zhí)行。根據(jù)2020年MISRA合規(guī)性自動(dòng)記錄和合規(guī)性報(bào)告也是節(jié)省資源和時(shí)間的一個(gè)關(guān)鍵因素,也是解決違規(guī)問(wèn)題時(shí)避免沮喪的一個(gè)關(guān)鍵因素。
像Parasoft這樣的工具可以被配置成檢測(cè)整個(gè)MISRA標(biāo)準(zhǔn)的子集。這減少了分析產(chǎn)生的噪音量,并增加了對(duì)解決嚴(yán)重違規(guī)問(wèn)題的關(guān)注。
合規(guī)報(bào)告
與公司實(shí)現(xiàn)MISRA合規(guī)性相關(guān)的問(wèn)題之一是缺乏證明合規(guī)性的標(biāo)準(zhǔn)機(jī)制。為了解決這個(gè)問(wèn)題,MISRA發(fā)布了“MISRA合規(guī)性2020:實(shí)現(xiàn)對(duì)MISRA編碼指南的合規(guī)性”,這是最新的更新,提供了“MISRA合規(guī)性”的更具體定義,并確定了證明符合MISRA標(biāo)準(zhǔn)所需的幾個(gè)交付件。
- 指南合規(guī)性總結(jié)。總體項(xiàng)目合規(guī)性的強(qiáng)制性主要記錄。GCS包括每個(gè)指南的條目、其符合性水平、任何偏差和/或重新分類(lèi)。
- 指南重新分類(lèi)計(jì)劃。必須遵循所有強(qiáng)制性準(zhǔn)則來(lái)實(shí)現(xiàn)合規(guī)性。但是,必需和咨詢(xún)指南可以重新分類(lèi)為更嚴(yán)格的類(lèi)別(例如從咨詢(xún)到必需),但只有咨詢(xún)指南可以重新分類(lèi)為不太嚴(yán)格的類(lèi)別(例如從咨詢(xún)到禁用)。
- 偏差報(bào)告。您的項(xiàng)目可能存在偏離指導(dǎo)方針或違反規(guī)則的情況,如果這些偏離是合理的,并記錄在報(bào)告中,且不影響安全,則仍然被認(rèn)為是合規(guī)的。
- 指南實(shí)施計(jì)劃。演示如何驗(yàn)證每個(gè)MISRA指南。在MISRA符合Parasoft的背景下,GEP將MISRA指南映射到Parasoft代碼分析規(guī)則和DTP功能。
Parasoft——領(lǐng)先的自動(dòng)化測(cè)試工具,滿(mǎn)足絕大多數(shù)行業(yè)標(biāo)準(zhǔn)
鑒定工具的目的是證明它們對(duì)預(yù)期的使用是有效的。它包括證明團(tuán)隊(duì)如何對(duì)其進(jìn)行資格認(rèn)證以及背后的理由。Parasoft C/C++test和我們的報(bào)告工具Parasoft DTP已經(jīng)通過(guò)了TüV SüD的認(rèn)證,可用于安全關(guān)鍵型應(yīng)用,而且對(duì)于一些最嚴(yán)格的工藝標(biāo)準(zhǔn),如DO-178B/C及其要求,存在一個(gè)工具鑒定套件。
從開(kāi)發(fā)到質(zhì)量檢查,Parasoft的技術(shù)通過(guò)集成靜態(tài)和運(yùn)行時(shí)分析,單元、功能和API測(cè)試,以及服務(wù)虛擬化,在不犧牲質(zhì)量和安全性的情況下加快軟件交付,節(jié)約交付成本。
強(qiáng)大的報(bào)告和分析功能可幫助用戶(hù)快速查明有風(fēng)險(xiǎn)的代碼區(qū)域,并了解新代碼更改如何影響其軟件質(zhì)量,而突破性的技術(shù)將人工智能和機(jī)器學(xué)習(xí)添加到軟件測(cè)試中,使組織更容易采用和擴(kuò)展跨開(kāi)發(fā)和測(cè)試團(tuán)隊(duì)的有效的軟件測(cè)試實(shí)踐。
Parasoft針對(duì)C/C++、Java、.NET和嵌入式的開(kāi)發(fā)測(cè)試都有著30多年的深入研究,很多全國(guó)500強(qiáng)企業(yè)使用Parasoft的產(chǎn)品實(shí)現(xiàn)了軟件快速、高質(zhì)量的交付。