隨著網(wǎng)絡(luò)戰(zhàn)越來(lái)越成為常態(tài)的一部分,許多(如果不是大多數(shù))軍事嵌入式系統(tǒng)本質(zhì)上對(duì)安全和/或安保至關(guān)重要。為了應(yīng)對(duì)這種日益增加的風(fēng)險(xiǎn),軍事系統(tǒng)應(yīng)該按照一些行業(yè)最嚴(yán)格的軟件開發(fā)標(biāo)準(zhǔn)來(lái)構(gòu)建,以確保其安全、可靠和功能準(zhǔn)確的運(yùn)行,這是有道理的。遵循這些標(biāo)準(zhǔn)提供了雙重好處。它不僅可以降低安全和安保風(fēng)險(xiǎn),還可以降低成本。軟件開發(fā)標(biāo)準(zhǔn)提高了可維護(hù)性、可升級(jí)性、可重用性和可測(cè)試性,提供了長(zhǎng)期利益,特別是考慮到這些系統(tǒng)的典型生命周期。
為了滿足提高安全性和安全性、一致性并簡(jiǎn)化未來(lái)維護(hù)和測(cè)試的需求,軟件開發(fā)組織必須考慮標(biāo)準(zhǔn)化軟件開發(fā)流程和明確定義的軟件語(yǔ)言使用。如果這種環(huán)境沒(méi)有明確定義,那么未來(lái)當(dāng)然會(huì)有巨大的潛在問(wèn)題。
讓我們看看 C 語(yǔ)言中的這個(gè)問(wèn)題,它以極其靈活的方式定義了運(yùn)算符、語(yǔ)法、函數(shù)等。可以編寫可能有效但其他人幾乎無(wú)法理解的代碼,并且可能包含在某些情況下造成嚴(yán)重破壞的復(fù)雜性和隱藏錯(cuò)誤。像C++、Java甚至Ada這樣的語(yǔ)言——都在軍事嵌入式系統(tǒng)中使用——不加選擇地使用,可能會(huì)導(dǎo)致類似的不受支持的條件。編碼標(biāo)準(zhǔn)為軟件開發(fā)提供了一種一致的、相互理解的語(yǔ)言和方法,可幫助開發(fā)人員避免軟件語(yǔ)言定義中的任何歧義,并確保團(tuán)隊(duì)正確完成編碼。
擁有這種基于標(biāo)準(zhǔn)的方法會(huì)帶來(lái)立竿見影的好處。編碼標(biāo)準(zhǔn)有助于定義一組可以在整個(gè)團(tuán)隊(duì)中理解和使用的實(shí)踐。通過(guò)協(xié)作處理一組通用的編碼結(jié)構(gòu)和實(shí)踐,團(tuán)隊(duì)成員可以使用相同的方法輕松進(jìn)行通信,并在整個(gè)軟件開發(fā)組織中生成更加一致、可維護(hù)和可測(cè)試的代碼。
在軍事和航空航天領(lǐng)域,現(xiàn)在有一些程序必須遵循DO-178C,這是一種開發(fā)安全關(guān)鍵航空電子設(shè)備應(yīng)用的軟件標(biāo)準(zhǔn)。DO-178C 要求公司使用編碼標(biāo)準(zhǔn)來(lái)確保安全關(guān)鍵型應(yīng)用程序建立在更安全、更安全的代碼之上。MISRA、CERT C/C++ 和 CWE 等標(biāo)準(zhǔn)有助于首先消除輸入代碼的缺陷和安全漏洞。對(duì)于定義了許多變體的 C 等語(yǔ)言,編碼標(biāo)準(zhǔn)可確保一致、可維護(hù)的實(shí)踐,有助于降低風(fēng)險(xiǎn)并支持未來(lái)的可重用性和可測(cè)試性。
做對(duì)了
不用說(shuō),任何這樣的編碼標(biāo)準(zhǔn)集都將非常詳細(xì),需要不斷關(guān)注。檢查以確保標(biāo)準(zhǔn)實(shí)際上已得到完全遵守可能是一項(xiàng)更加艱巨的任務(wù),并且只能通過(guò)使用自動(dòng)化工具可靠地實(shí)現(xiàn)。代替人工檢查,自動(dòng)檢查是通過(guò)對(duì)源代碼的靜態(tài)分析來(lái)完成的,應(yīng)該在整個(gè)代碼構(gòu)建過(guò)程中完成。只有當(dāng)該工具能夠快速且易于理解的操作向開發(fā)人員準(zhǔn)確展示他們需要了解的合規(guī)性時(shí),這才變得實(shí)用(或可以忍受)。
尋找一種靜態(tài)分析工具,該工具可讓您從已建立的標(biāo)準(zhǔn)以及組織內(nèi)采用的規(guī)則中進(jìn)行選擇。這些優(yōu)勢(shì)使同一項(xiàng)目的團(tuán)隊(duì)能夠根據(jù)他們一直在使用的同一組實(shí)踐和標(biāo)準(zhǔn)將他們的結(jié)果匯集在一起。試圖弄清楚其他人試圖做什么的問(wèn)題、對(duì)話和解釋要少得多。雖然不能完全量化,但這意味著花更少的時(shí)間在理解代碼和溝通上,這在項(xiàng)目的整個(gè)生命周期中可以節(jié)省大量資金。
自動(dòng)檢查合規(guī)性可加快迭代開發(fā)工作。在安全性方面,編碼標(biāo)準(zhǔn)有助于解決整體安全難題的一部分。它們不解決加密、隔離、隔離問(wèn)題,也不確保數(shù)據(jù)在靜態(tài)和傳輸過(guò)程中得到保護(hù)等,但它們確實(shí)有助于避免可能被利用的細(xì)微編碼錯(cuò)誤。這樣的標(biāo)準(zhǔn)將消除臭名昭著的心血錯(cuò)誤,這種錯(cuò)誤是由于未能限制變量的大小而引起的——這種風(fēng)險(xiǎn)在軍事系統(tǒng)中是無(wú)法證明的。為深入分析而設(shè)置的工具還可以收集有關(guān)代碼的內(nèi)部信息,并了解更深入的主題,例如真正的數(shù)據(jù)耦合和控制耦合,這是安全和安保關(guān)鍵應(yīng)用所必需的。
動(dòng)態(tài)測(cè)試超越了靜態(tài)分析,因?yàn)樗婕皩?shí)際編譯和運(yùn)行帶有輸入的代碼并查找預(yù)期的輸出。動(dòng)態(tài)單元和集成測(cè)試需要一組測(cè)試向量和一個(gè)測(cè)試工具,這些工具派生自對(duì)靜態(tài)分析獲得的代碼的深刻理解。該線束是一個(gè)軟件,它圍繞著被測(cè)代碼,能夠顯示測(cè)試輸入和提取結(jié)果輸出。
標(biāo)準(zhǔn) — 基礎(chǔ)!
將編碼標(biāo)準(zhǔn)視為過(guò)程的一部分和基礎(chǔ)。采用團(tuán)隊(duì)理解的一組標(biāo)準(zhǔn),結(jié)合強(qiáng)大的工具支持,可以使工作流程更順暢,并生成當(dāng)前和未來(lái)團(tuán)隊(duì)可以理解的代碼。因?yàn)樗强衫斫獾模钥梢院苋菀椎刈R(shí)別可能需要調(diào)整或修改的區(qū)域,從而更容易維護(hù)。而且,深入的分析可以極大地減輕設(shè)置和執(zhí)行詳細(xì)測(cè)試的負(fù)擔(dān),以充分向開發(fā)人員(或合規(guī)組織)保證其工作的堅(jiān)實(shí)功能。
所以,是的,編碼標(biāo)準(zhǔn)對(duì)于形成堅(jiān)實(shí)的軟件質(zhì)量過(guò)程的基礎(chǔ)是必要的。遵守嚴(yán)格編碼標(biāo)準(zhǔn)的開發(fā)組織將創(chuàng)建更加一致、可維護(hù)、可重用和可測(cè)試的代碼。最終,這將產(chǎn)生更高質(zhì)量的應(yīng)用軟件。
審核編輯:郭婷
-
嵌入式
+關(guān)注
關(guān)注
5086文章
19140瀏覽量
305863 -
C++
+關(guān)注
關(guān)注
22文章
2110瀏覽量
73689
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論