在當(dāng)今汽車的安全性、可靠性和效率方面,汽車軟件系統(tǒng)發(fā)揮著日益重要的作用。為此,工程團(tuán)隊(duì)需要專注于為高級(jí)駕駛輔助系統(tǒng) (ADAS)、電池管理系統(tǒng)、穩(wěn)定性控制和類似應(yīng)用提供創(chuàng)新功能。此外,他們往往還需要證明符合 ISO 26262 和 ISO/SAE 21434 標(biāo)準(zhǔn),以此確保滿足功能安全和網(wǎng)絡(luò)安全要求。
作為一家全球頂級(jí)汽車供應(yīng)商,F(xiàn)icosa International 致力于開發(fā)適用于各種汽車應(yīng)用的軟件。在為確保符合行業(yè)標(biāo)準(zhǔn)而建立的流程中,F(xiàn)icosa的工程團(tuán)隊(duì)使用 Polyspace 靜態(tài)代碼分析產(chǎn)品來(lái)衡量并提升代碼質(zhì)量,并將這一做法貫穿于從實(shí)現(xiàn)到單元驗(yàn)證、集成和鑒定測(cè)試的整個(gè)開發(fā)生命周期。Ficosa 使用的許多流程都是依據(jù)一組明確定義的軟件質(zhì)量目標(biāo)建立的。這些目標(biāo)圍繞著正在開發(fā)的組件的關(guān)鍵程度和項(xiàng)目的成熟度而制定。軟件質(zhì)量目標(biāo)清楚地闡明了 Polyspace 靜態(tài)分析度量和編碼規(guī)范(如 MISRA 和 CERT/CWE)的驗(yàn)收標(biāo)準(zhǔn)和閾值,以及運(yùn)行時(shí)錯(cuò)誤。目前,在每次進(jìn)行軟件更改時(shí),都會(huì)自動(dòng)評(píng)估并強(qiáng)制實(shí)施這些標(biāo)準(zhǔn),作為 Ficosa 軟件開發(fā)過(guò)程不可或缺的一部分。因此,最大限度地減少了代碼質(zhì)量評(píng)估的主觀性,同時(shí)提高了整個(gè)軟件開發(fā)生命周期的總體開發(fā)效率。
本文的作者是來(lái)自 Ficosa International 的 David Tuset、Roger Marsal 和 Yolanda Guasch。
Ficosa International 的 Polyspace 使用歷程
2010 年,我們開始研究一個(gè)與車輛通信模塊有關(guān)的項(xiàng)目。作為此項(xiàng)目要求的一部分,我們需要利用靜態(tài)分析來(lái)檢查 MISRA C 合規(guī)性。經(jīng)過(guò)對(duì)市售靜態(tài)分析產(chǎn)品的全面評(píng)估,我們根據(jù)性能和成本選擇了 Polyspace 產(chǎn)品。與此同時(shí),我們還在逐步實(shí)現(xiàn) Automotive SPICE (ASPICE) 能力 2 級(jí)合規(guī)性。我們開始使用 Polyspace Bug Finder 和 Polyspace Code Prover 進(jìn)行靜態(tài)分析,從而為軟件單元驗(yàn)證活動(dòng)提供支持。
很快,我們的工程團(tuán)隊(duì)就開始涉足 ADAS 的其他領(lǐng)域。客戶也開始要求我們實(shí)現(xiàn) ASPICE 3 級(jí)合規(guī)性。我們同時(shí)啟動(dòng)了多個(gè)項(xiàng)目,這些項(xiàng)目要求滿足 ISO 26262 的功能安全標(biāo)準(zhǔn)。不久之后,我們的一些客戶又開始要求進(jìn)行 CERT C 合規(guī)性和常見(jiàn)弱點(diǎn)枚舉 (CWE) 檢查,以確保符合安全編碼標(biāo)準(zhǔn);具體到我們的情況,客戶要求實(shí)現(xiàn) ISO 21434 合規(guī)性。
Polyspace 產(chǎn)品的靜態(tài)分析有助于我們支持上述各項(xiàng)活動(dòng)。但從組織的角度來(lái)看,我們?nèi)狈θ娴挠?jì)劃,以明確定義我們?yōu)榱舜_保軟件質(zhì)量要在開發(fā)和驗(yàn)證活動(dòng)中應(yīng)用的方法、度量和閾值以及何時(shí)應(yīng)用它們。沒(méi)有形式化框架的一個(gè)缺點(diǎn)是,開發(fā)團(tuán)隊(duì)往往要等到項(xiàng)目后期才執(zhí)行靜態(tài)分析,而不是從項(xiàng)目伊始就系統(tǒng)化地執(zhí)行這項(xiàng)分析。如果僅在開發(fā)后期進(jìn)行靜態(tài)分析,其結(jié)果就可想而知了,一定包含許多違規(guī)行為,其中包括諸多不符合 MISRA C 的情況。由于在發(fā)現(xiàn)問(wèn)題時(shí)項(xiàng)目已經(jīng)接近尾聲,因此,很難通過(guò)解決這些問(wèn)題或證明其合理性來(lái)糾正如此多的違規(guī)行為。
為了應(yīng)對(duì)這一挑戰(zhàn),我們抓住了 2020 年新冠疫情期間活躍項(xiàng)目相對(duì)空閑的機(jī)會(huì),全面分析了 Ficosa International 如何才能在可靠性、功能安全和網(wǎng)絡(luò)安全等多個(gè)方面最好地實(shí)現(xiàn)我們自己和客戶的軟件質(zhì)量目標(biāo)。根據(jù)此分析,我們最終得到了一個(gè)軟件質(zhì)量目標(biāo)文檔。目前,我們的團(tuán)隊(duì)使用該文檔作為確保所交付軟件系統(tǒng)質(zhì)量的依據(jù)。
制定軟件質(zhì)量目標(biāo)
在 Ficosa International 的軟件質(zhì)量目標(biāo)文檔中,我們定義了在驗(yàn)證我們開發(fā)的軟件時(shí)應(yīng)用的各種度量和規(guī)則,包括基于 MISRA C、CERT C 和 CWE 的度量和規(guī)則,以及圈復(fù)雜度和注釋密度等軟件度量。
接下來(lái),我們根據(jù)所驗(yàn)證代碼的來(lái)源、正在開發(fā)的組件的類型及其成熟度定義了應(yīng)用度量和規(guī)則的標(biāo)準(zhǔn)。
例如,我們針對(duì)第三方代碼、現(xiàn)有代碼、自動(dòng)生成的代碼和手寫代碼制定了不同的目標(biāo)(圖 1)。對(duì)于第三方代碼,我們只運(yùn)行強(qiáng)制性的 MISRA C 規(guī)則,并假設(shè)這種類型的代碼附帶其他補(bǔ)充性質(zhì)量證據(jù)。而對(duì)于現(xiàn)有代碼、生成的代碼和手寫代碼,我們強(qiáng)制實(shí)施越來(lái)越嚴(yán)格的規(guī)則集。根據(jù) ISO 26262 的汽車安全完整性等級(jí) (ASIL) 要求和 ISO/SAE 21434 的網(wǎng)絡(luò)安全保證等級(jí) (CAL) 要求,在功能安全或網(wǎng)絡(luò)安全方面受到影響的組件需要進(jìn)行額外的檢查。
圖 1. Ficosa International 依據(jù)軟件組件類型和項(xiàng)目成熟度制定的軟件質(zhì)量目標(biāo)。
此外,在組件從早期開發(fā)(“A 樣本”)階段推進(jìn)到中間階段、倒數(shù)第二個(gè)階段和最終交付(“B、C 和 D 樣本”)階段的過(guò)程中,我們還針對(duì)項(xiàng)目制定了更嚴(yán)格的目標(biāo)。最后,對(duì)于集成的代碼,我們提供了單獨(dú)的精簡(jiǎn)規(guī)則和度量子集。也就是說(shuō),一組通過(guò)各自軟件質(zhì)量目標(biāo)評(píng)估的組件現(xiàn)在可合并成為更大系統(tǒng)的一部分。這在簡(jiǎn)化復(fù)雜軟件的靜態(tài)分析時(shí)非常有用。
將靜態(tài)分析集成到開發(fā)工作流中
我們一旦擁有明確定義軟件質(zhì)量目標(biāo)的文檔,就開始使用 Polyspace 靜態(tài)分析產(chǎn)品將這些目標(biāo)集成到我們的開發(fā)和測(cè)試過(guò)程中(圖 2)。
圖 2. Ficosa International 的代碼實(shí)現(xiàn)和驗(yàn)證過(guò)程,突出顯示靜態(tài)分析和后續(xù)更正。
在此過(guò)程中,一個(gè)關(guān)鍵步驟是當(dāng)開發(fā)人員在 Git(我們的版本控制系統(tǒng))中發(fā)出拉取請(qǐng)求時(shí)引入了一項(xiàng)要求。為了使拉取請(qǐng)求獲得批準(zhǔn),除了單元測(cè)試之外,代碼還必須成功通過(guò) Polyspace Bug Finder 和 Polyspace Code Prover 的某些靜態(tài)分析檢查。這一變化使得我們的整體工作流得到了顯著改進(jìn),因?yàn)樗⒘艘环N門控機(jī)制,確保開發(fā)人員只有在根據(jù)適當(dāng)?shù)能浖|(zhì)量目標(biāo)徹底驗(yàn)證其代碼,并解決靜態(tài)分析期間識(shí)別的任何問(wèn)題或證明其合理性后,才能成功完成拉取請(qǐng)求。
在軟件集成和測(cè)試期間,可以使用 Polyspace 產(chǎn)品根據(jù)集成代碼的軟件質(zhì)量目標(biāo)執(zhí)行靜態(tài)分析。在此階段,僅基于系統(tǒng)級(jí)規(guī)則和集成的軟件度量,對(duì) MISRA C 合規(guī)性和代碼度量執(zhí)行檢查。特別要關(guān)注集成級(jí)別的問(wèn)題,如共享內(nèi)存的并發(fā)訪問(wèn)、死代碼和關(guān)鍵運(yùn)行時(shí)錯(cuò)誤。
隨著我們?cè)絹?lái)越多地使用 Jenkins 來(lái)實(shí)現(xiàn)持續(xù)集成和持續(xù)交付 (CI/CD),Polyspace 產(chǎn)品支持的頻繁靜態(tài)分析和持續(xù)反饋將發(fā)揮重要作用,可確保我們的開發(fā)人員和集成商使源代碼與軟件質(zhì)量目標(biāo)保持一致。此外,通過(guò) Polyspace Access Web 界面,我們所有團(tuán)隊(duì)都可以訪問(wèn)集中式數(shù)據(jù)庫(kù)以查看靜態(tài)代碼分析結(jié)果,并監(jiān)控達(dá)成交付質(zhì)量目標(biāo)水平的進(jìn)度。
開發(fā)功能安全產(chǎn)品時(shí),需要考慮的另一個(gè)重要方面是,確保軟件工具不會(huì)在大規(guī)模生產(chǎn)軟件中引入錯(cuò)誤或無(wú)法檢測(cè)到錯(cuò)誤。ISO 26262 明確要求執(zhí)行軟件工具鑒定過(guò)程,以根據(jù)工具的關(guān)鍵程度對(duì)其進(jìn)行分類,并執(zhí)行必要的活動(dòng)來(lái)鑒定他們。對(duì)于 Polyspace 產(chǎn)品,MathWorks 提供了一個(gè)認(rèn)證套件,可為 Bug Finder 和 Code Prover 提供項(xiàng)目級(jí)支持。
主要優(yōu)勢(shì)
在根據(jù) ISO 26262 和 ISO/SAE 21434 標(biāo)準(zhǔn)開發(fā)和交付汽車軟件的過(guò)程中,使用 Polyspace 產(chǎn)品依據(jù)明確定義的軟件質(zhì)量目標(biāo)為 Ficosa International 帶來(lái)了諸多重要優(yōu)勢(shì)。
其中一個(gè)優(yōu)勢(shì)是,我們開發(fā)人員的開發(fā)技能得到了穩(wěn)步提升。Polyspace 產(chǎn)品能夠提供詳細(xì)及時(shí)的反饋,幫助開發(fā)人員了解如何以及從何處提高代碼質(zhì)量,進(jìn)而使他們成長(zhǎng)為更嫻熟也更高效的開發(fā)人員。事實(shí)上,根據(jù)我們現(xiàn)有的流程,開發(fā)人員別無(wú)選擇,只能了解并解決通過(guò)靜態(tài)分析檢測(cè)到的問(wèn)題。
我們獲得的另一個(gè)重要優(yōu)勢(shì)是,簡(jiǎn)化了 ASPICE 和 ISO 26262 的外部質(zhì)量評(píng)估或其他客戶要求的合規(guī)性目標(biāo)。如今,我們所做的一切都更容易得到驗(yàn)證,因?yàn)槲覀冇忻鞔_的軟件質(zhì)量目標(biāo)以及相應(yīng)的報(bào)告(例如說(shuō)明 MISRA 和 CERT 偏差問(wèn)題比過(guò)去少得多),還有證明我們的代碼已通過(guò)客觀質(zhì)量標(biāo)準(zhǔn)的證據(jù)。
也許,最重要的是,Polyspace 產(chǎn)品幫助我們實(shí)現(xiàn)了質(zhì)量目標(biāo),同時(shí)提高了效率(或至少保持效率不變)。通常,當(dāng)治理團(tuán)隊(duì)或類似小組更改他們所在組織的開發(fā)工作流,引入我們所實(shí)施的那種早期驗(yàn)證步驟時(shí),開發(fā)人員會(huì)將他們需要完成的附加步驟視為額外工作。然而,借助 Polyspace 產(chǎn)品,我們能夠向我們的團(tuán)隊(duì)證明,為每個(gè)拉取請(qǐng)求執(zhí)行靜態(tài)分析的附加步驟實(shí)際上提高了他們的效率。他們可以更高效、更自信地交付高質(zhì)量的代碼,因?yàn)橥ㄟ^(guò)靜態(tài)分析發(fā)現(xiàn)的所有錯(cuò)誤都在開發(fā)過(guò)程的早期階段得到了消除,而不必等到最后階段才來(lái)解決。
除了 Ficosa 法可賽,還有很多其他的主機(jī)廠和供應(yīng)商也在使用 Polyspace,來(lái)解決他們軟件質(zhì)量的問(wèn)題。
例如沃爾沃汽車也選用了 Polyspace 來(lái)提高開發(fā)速度和軟件質(zhì)量,并通過(guò)了 ISO 26262 和 ISO/SAE 21434 的認(rèn)證。
審核編輯:湯梓紅
-
電池管理系統(tǒng)
+關(guān)注
關(guān)注
41文章
534瀏覽量
33900 -
代碼
+關(guān)注
關(guān)注
30文章
4874瀏覽量
69932 -
adas
+關(guān)注
關(guān)注
310文章
2221瀏覽量
209592
原文標(biāo)題:通過(guò) Polyspace 靜態(tài)代碼分析簡(jiǎn)化 ASPICE、ISO 26262 和 ISO/SAE 21434 的遵循過(guò)程
文章出處:【微信號(hào):MATLAB,微信公眾號(hào):MATLAB】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
International Technology roadm
The New Personal International
CSA International正式在中國(guó)成立首家測(cè)試認(rèn)證
國(guó)際電信聯(lián)盟(ITU,International Telec
CSA International發(fā)布電動(dòng)工具新標(biāo)準(zhǔn)
VoIP術(shù)語(yǔ)-International Telecommu
什么是Digi International
International Rectifier的電源管理技術(shù)解決方案
關(guān)于Polyspace應(yīng)用到基于模型的設(shè)計(jì)可能性分析和介紹

關(guān)于Polyspace靜態(tài)分析的具體作用分析和介紹

ADSP-BF70xBlackfin-FintionSecurities International Processor硬件參考

STM32的ADC學(xué)習(xí)歷程

舜宇車載光學(xué)榮獲“FICOSA最佳供應(yīng)商”大獎(jiǎng)
如何使用Polyspace Code Prover來(lái)統(tǒng)計(jì)堆棧

評(píng)論