我們正處于安全關鍵軟件的成本危機中?,F在需要的增加的功能已經超出了支付其開發費用的能力。例如, 波音 787 計劃需要 650 萬行代碼,設計、開發和測試花費了 40 億美元。
主要安全關鍵項目的趨勢顯示總成本呈指數級增長,軟件在年度開發總預算中占較大比例。使用以前項目中使用的相同技術,下一個大型航空航天項目可能無法負擔。所以,我們能做些什么?
安全認證以及所需的測試和驗證是軟件開發預算的很大一部分。在開發生命周期的早期開始軟件測試,同時利用自動化在成本、風險和進度方面帶來了巨大的收益,如圖 1 所示。
【圖1 | 商業航空項目中每行代碼的軟件開發成本]
創建和發現錯誤的位置以及成本影響
不出所料,大多數缺陷都是在項目開始時引入的,甚至在編寫第一行代碼之前。大多數錯誤是在測試過程中發現并修復的,但很大一部分(高達 20%)是在產品發貨后的操作過程中發現的。在經過認證的系統中,這要么意味著極其昂貴的修復-測試-重新認證周期,要么意味著針對問題的操作員解決方法(圖 2)。
【圖2 | 在不同開發階段引入和檢測到的缺陷百分比]
在項目的整個過程中,發現和修復缺陷的成本會成倍增加。最壞的情況是在產品交付給客戶后修復缺陷。部署后的缺陷修復成本是保守的,不包括對您的品牌造成的損害和現場安全事故的責任(圖 3)。顯然,目標是將檢測到并修復的缺陷移到生命周期的早期——換句話說,“左移”。此外,希望減少傳遞給客戶的缺陷數量(每個領域的現實)。
【圖3 | 在每個開發階段查找和修復錯誤的相對成本。在需求和設計期間是基線 (1x) 和修復缺陷成本最低的地方。]
測試自動化在左移中的作用
安全關鍵軟件行業認識到需要改變做事的方式。太多的項目試圖重新發明輪子,而認證新軟件既耗時又昂貴。
新產品的連接性和功能性的增長意味著方法需要改變。任何安全關鍵項目的很大一部分都是測試,而自動化對于實現安全、安保和質量目標是絕對必要的。以下是測試自動化工具如何支持新的軟件開發方法并提高測試和文檔生產力的示例:
支持敏捷和迭代開發方法: 了解瀑布方法的問題,許多團隊使用更現代的開發方法來提高質量和安全性。測試自動化是任何迭代開發方法的重要組成部分,因為測試套件在模塊、組件等的每個新迭代上運行。測試自動化通過可重復的自動化測試支持這些方法,為每個測試提供不同級別的報告,但也可以累積結果隨著時間的推移。動態分析工具對于檢測難以檢測的運行時錯誤至關重要,而靜態分析在測試開始前檢測缺陷方面起著重要作用。
支持軟件檢查: 檢查是在開發生命周期早期消除缺陷的良好實踐。檢查意味著審查所有內容,而不僅僅是源代碼。例如,檢查需求和設計對于防止系統中的主要錯誤來源至關重要(再次圖 2)。許多錯誤是從字面上設計到系統中的。工具在這個階段發揮的作用較小,但確實提高了代碼審查的有效性。自動化單元測試、動態錯誤檢測和靜態分析在項目的早期編碼階段提供了極大改進的錯誤檢測。自動化測試的結果可以在代碼審查中呈現,從而減少對手動錯誤檢測的依賴,并留出更多時間來檢測不正確的需求和設計決策。
提高測試效率: 手動測試乏味且可重復性較差。結果收集可能是臨時的,盡管結果“正確”,但仍可能遺漏錯誤。實現所需的代碼覆蓋率,這取決于安全標準和項目的關鍵性,很難跟蹤。測試自動化不僅減少了測試的乏味和可重復性,而且高級測試工具的報告功能創建了有關項目狀態的重要管理信息。添加動態分析(在代碼運行時分析代碼(以檢測棘手的運行時錯誤))和靜態分析(在代碼運行之前分析代碼)增加了測試工具的錯誤檢測能力。
自動化編碼標準合規性: 許多安全關鍵項目需要源代碼標準。例如,MISRA 在汽車軟件中很常見,但已在其他行業中獲得認可。一些標準要求代碼符合滿足特定目標的公司標準。在每種情況下,手動強制執行代碼合規性都是乏味且容易出錯的。靜態分析工具可以強制執行合規性,高級工具通過檢測超出格式違規的錯誤更進一步。
自動化認證文檔: 實現軟件安全認證的大部分工作量是記錄流程、驗證和驗證。測試自動化顯著降低了記錄測試結果和覆蓋分析的成本。
加速第三方軟件的重用: 提高生產力的一個關鍵策略是軟件重用。理想情況下,可以使用已經過認證的組件來降低這些子單元的開發成本。項目需要使用 COTS(現成的商業)軟件以及可能的開源和其他源代碼。使用靜態和動態分析工具自動評估該軟件可降低使用這些組件的風險。
提高質量、安全性和保障性: 即使是嚴格的測試方案也可能遺漏嚴重錯誤。例如,僅代碼覆蓋率不足以確保在安全攻擊或多線程代碼情況下的正確行為。靜態分析工具可以在不運行特定測試的情況下檢測源代碼中的錯誤,并且可以發現單元或系統測試中難以發現的安全漏洞等錯誤。動態分析工具可以在測試期間檢測運行代碼中可能反映在測試結果中的錯誤(例如,緩慢的內存泄漏)。系統測試期間的模糊測試和滲透測試可以發現在正常操作條件下遺漏的錯誤??傮w而言,最先進的工具發現的額外缺陷和安全漏洞有助于降低成本、風險以及使其投入生產的 20% 左右的許多錯誤。
左移有什么影響?
很明顯,必須采取一些措施來解決圖 2 中清楚顯示的問題。在生命周期的開始,引入了太多缺陷并且未被發現,而當產品交到客戶手中時,產品中留下了太多缺陷。 采用新的開發方法、重用組件、利用 COTS 和開源以及工具自動化都是提高開發效率的關鍵步驟。
【圖4 | 該圖顯示了改進的開發過程,該過程在生命周期的早期轉移了對錯誤和安全漏洞的檢測。]
從圖 3 中我們知道,每個開發階段的成本都會顯著增加。圖 5 顯示了修復傳統方法與圖 4 中所示方法的缺陷的成本比較。更早發現和修復錯誤,不出所料,成本低于稍后修復它們。在此處介紹的情況下,總體成本差異約為 40%,有利于左移方法。
[圖 5. 該圖顯示了修復傳統方法與左移方法中的錯誤的相對成本。即使總缺陷數量相同,早期檢測也會顯著降低成本。]
認證工具鏈和資格協助的重要性
在安全關鍵項目中使用自動化工具需要對工具本身的信任。產品制造商有責任確信用于創建軟件的流程和工具符合標準要求。工具供應商可以通過在出售給制造商之前獲得安全標準機構認證的工具來提供幫助,或者在無法進行此類預認證的情況下,提供資格援助。然后,他們可以在自己的認證提交中使用工具供應商的認證證據,并減少所需的工作量。例如, Parasoft C/C++test 已通過 TüV SüD 認證,符合 IEC 61508 和 ISO 26262 標準的安全相關軟件開發資格。
在某些軟件安全標準中,例如 DO-178B 和 DO-178C,認證是在系統級別完成的,個別工具和軟件沒有獨立認證。在這些情況下,工具供應商會在文檔和專業服務方面提供鑒定工具包和幫助,從而大大降低鑒定用于項目的工具所需的成本和工作量。
審核編輯:郭婷
-
自動化
+關注
關注
29文章
5596瀏覽量
79407 -
代碼
+關注
關注
30文章
4802瀏覽量
68741 -
線程
+關注
關注
0文章
505瀏覽量
19705
發布評論請先 登錄
相關推薦
評論