原創|使用教程|編輯:鄭恭琳|2021-01-27 14:25:27.610|閱讀 228 次
概述:我們使用安全性至關重要的軟件面臨成本危機,這意味著所需的增強功能已經超出了為其開發支付費用的能力。例如,波音787計劃需要650萬行代碼,設計、開發和測試成本為4,000,000,0000美元。重大安全關鍵項目的趨勢表明,總成本呈指數增長,其中軟件占開發總預算的比例逐年上升。使用先前項目中使用的相同技術,下一個大型航空航天項目可能會負擔不起。所以,我們能做些什么?
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
我們使用安全性至關重要的軟件面臨成本危機,這意味著所需的增強功能已經超出了為其開發支付費用的能力。例如,波音787計劃需要650萬行代碼,設計、開發和測試成本為4,000,000,0000美元。重大安全關鍵項目的趨勢表明,總成本呈指數增長,其中軟件占開發總預算的比例逐年上升。使用先前項目中使用的相同技術,下一個大型航空航天項目可能會負擔不起。所以,我們能做些什么?
安全認證以及所需的測試和驗證是軟件開發預算的很大一部分。在利用自動化的同時,將軟件的測試向左移動(即,在軟件開發生命周期的早期)會在成本,風險和進度方面帶來很大的好處。下面的圖1顯示了用于商業航空公司軟件開發的每千行代碼的百萬美元成本(波音和空中客車公司的數據),清楚地表明了呈指數級增長。
圖1:民航項目中每行代碼的軟件開發成本。數據取自空中客車公司和波音公司的項目指標。
毫不奇怪,大多數缺陷都是在開始時甚至在編寫第一行代碼之前就引入到項目中的。在測試過程中發現并修復了大多數錯誤,但是在產品被出售和運送后,在操作過程中發現了很好的百分比(多達20%!)。在經過認證的系統中,這要么意味著耗費巨大的修復-測試-重新認證周期,要么意味著運營商針對該問題的解決方法。圖2顯示了在軟件開發生命周期的每個階段引入和檢測到的錯誤的相對百分比。
圖2:顯示在開發的不同階段引入和檢測到的缺陷百分比的圖表。
在生命周期的早期修復缺陷是最便宜的,而在項目的整個過程中發現和修復缺陷的代價則成倍增加。在操作中,將產品運送到客戶手中后,修復成本最高。部署后的缺陷修復成本是保守的,并且不包括因現場安全事件而對您的品牌造成的損害和責任。圖3顯示了在生命周期的每個階段修復缺陷的相對成本。顯然,目標是將已檢測到并已修復的缺陷移到生命周期的早期,換句話說,移至“左移”。此外,我們希望減少缺陷的數量,將其傳達給客戶(在每個領域中都是現實)。
圖3:在每個開發階段查找和修復錯誤的相對成本。在需求和設計過程中,基線(1x)是修復缺陷的成本最低的地方。圖2和圖3的來源:SAVI在2012 INCOSE SE大會上的演講。
安全性至關重要的軟件行業認識到需要改變工作方式。太多的項目正在重新發明輪子,并且認證全新的軟件既耗時又昂貴。新產品的連接性和功能的增長意味著需要改變方法。在這篇文章中,我們不會介紹所有建議的技術,而是專注于測試自動化在轉移減少,檢測和修復缺陷及安全漏洞方面所扮演的角色。
在任何對安全至關重要的項目中,很大一部分都是測試,而自動化對于實現安全性、保障性和質量目標是絕對必要的。這是測試自動化工具支持新軟件開發方法并提高測試和文檔生產率的方式的示例:
支持敏捷和迭代開發方法:了解瀑布方法的問題,許多團隊正在使用更現代的開發方法來提高質量和安全性。測試自動化是任何迭代開發方法的重要組成部分,因為測試套件是在模塊,組件等的每個新迭代上運行的。測試自動化通過可重復的自動化測試來支持這些方法,從而為每個測試提供不同級別的報告,而且可以累加隨著時間的流逝。動態分析工具對于檢測難以檢測到的運行時錯誤至關重要,而靜態分析在測試開始之前檢測缺陷中起著重要作用。
支持軟件檢查:在開發生命周期的早期消除缺陷的最佳實踐之一是檢查。檢查意味著檢查所有內容,而不僅僅是源代碼。例如,檢查需求和設計對于防止系統中主要的bug源至關重要(請參見圖2)。從字面上看,許多錯誤是設計到系統中的。工具在此階段的作用較小,但確實可以提高代碼審查的效率。自動化的單元測試,動態錯誤檢測和靜態分析在項目的早期編碼階段提供了大大改進的錯誤檢測。自動化測試的結果可以顯示在代碼審查中,從而減少了對手動錯誤檢測的依賴,并為檢測不正確的需求和設計決策留出了更多時間。
提高測試效率:手動測試是乏味且重復性較差。盡管結果“正確”,但結果收集可能是臨時性的,可能會遺漏錯誤。實現所需的代碼覆蓋率(根據安全標準和項目的關鍵程度而變化)很難跟蹤。測試自動化不僅使測試少了很多繁瑣和可重復的工作,而且先進的測試工具的報告功能還可以創建有關項目狀態的重要管理信息。添加動態分析和動態分析可以在運行時分析代碼(以檢測棘手的運行時錯誤),而靜態分析可以在運行之前分析代碼,從而大大提高了測試工具的錯誤檢測能力。
自動化編碼標準合規性:許多安全關鍵項目需要源代碼標準。例如,MISRA在汽車軟件中很常見,但在其他行業已經得到認可。一些標準要求代碼符合滿足特定目標的公司標準。在每種情況下,手動執行編碼合規性都是乏味且容易出錯。靜態分析工具是執行合規性的理想之選,而高級工具則可以檢測出超出格式違規的錯誤,從而走得更遠。
自動化認證文檔:獲得軟件安全認證的很大一部分工作是在文檔化過程,驗證和驗證中。測試自動化降低了記錄測試結果和覆蓋率分析的成本。
加速第三方軟件的重用:提高生產力的關鍵策略是重用軟件。理想情況下,可以使用已經認證的組件來降低這些子單元的開發成本。項目需要使用COTS(現成的商用)軟件以及可能的開源和其他源代碼。使用靜態和動態分析工具自動評估該軟件可降低使用這些組件的風險。
改善質量,安全性和安全性:即使是嚴格的測試方案也可能會遺漏嚴重錯誤。例如,僅代碼覆蓋率還不足以確保在發生安全攻擊或多線程代碼時的正確行為。靜態分析工具可以在不運行特定測試的情況下檢測源代碼中的錯誤,并且可以找到在單元或系統測試中很難發現的錯誤,例如安全漏洞。動態分析工具可以在測試期間檢測運行代碼中的錯誤,這些錯誤可能會反映在測試結果中(例如,內存泄漏緩慢)。在系統測試期間進行的模糊測試和滲透測試可以發現在正常操作條件下遺漏的錯誤。總體而言,最新工具發現的其他缺陷和安全漏洞可幫助降低成本,風險以及進入生產環境的20%左右的許多錯誤。
顯然,必須采取一些措施來解決如圖2所示的問題。在生命周期的開始階段,引入了太多的缺陷,并使其無法被發現,并且在制造和制造產品時,產品中留下了太多的缺陷。在客戶手中(或視情況而定在飛機或汽車中)。采用新的開發方法,重用組件,利用COTS和開源以及工具自動化都是提高開發生產力的關鍵步驟。
假設使用最先進的工具進行開發過程,可以在生命周期的早期發現并修復更多的缺陷,那么單元測試將非常有效,從而幫助減少了將其付諸生產的錯誤。在圖4中,一個假設的示例顯示了整個生命周期中缺陷檢測的變化——在整個生命周期的早期,大部分缺陷檢測和修復都向左移動。
圖4:該圖顯示了改進的開發過程,該過程在生命周期的早期轉移了對錯誤和安全漏洞的檢測。
從上面的圖3我們知道,成本在每個開發階段都會大幅增加。下面的圖5顯示了將傳統方法中的缺陷修復成本與圖4中所示的改進后的新方法進行成本對比的結果,毫不奇怪的是,盡早發現并修復錯誤的成本要比后來修復這些問題的成本低。在這里介紹的情況下,總成本差異約為40%,這有利于左移方法。
圖5:該圖顯示了修復傳統方法與左移方法時的相對成本。即使總缺陷數量相同,早期檢測也可以顯著降低成本。
在對安全至關重要的項目中使用自動化工具需要對工具本身的信任。產品制造商有責任確保用于創建軟件的過程和工具符合標準的要求。工具供應商可以通過在銷售給制造商之前使工具獲得安全標準機構的認證來提供幫助,或者在無法進行此類預認證的情況下,提供資格協助。然后,他們可以在自己提交的文件中使用工具供應商的認證證據,從而減少所需的工作量。(例如,Parasoft C/C++test已通過TüVSüD認證,符合IEC 61508和ISO 26262標準的安全相關軟件開發要求。)
在某些軟件安全標準(例如DO-178B和DO-178C)中,認證是在系統級別上進行的,單個工具和軟件并非獨立認證。在這些情況下,工具供應商會提供鑒定工具包和有關文檔和專業服務的幫助,從而大大降低了鑒定用于項目的工具所需的成本和精力。
安全關鍵軟件肯定會陷入成本危機。大型、新的、對安全至關重要的項目開發成本過高,以至于它們可能無法盈利。開發安全性至關重要的軟件需要新的方法,并且這種工作必須減少在軟件開發生命周期后期發現的錯誤數量。將缺陷和安全漏洞的檢測和修復盡可能早地轉移到生命周期中,可以大大降低成本。測試自動化在提高測試效率和結果方面發揮著作用,并且是安全關鍵軟件開發新方法的重要組成部分。
測試自動化在左移中的作用
左移有什么影響?
認證工具鏈和資格協助的重要性
結論
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn