原創|行業資訊|編輯:鄭恭琳|2020-12-21 10:16:39.640|閱讀 633 次
概述:為了從一開始就在您的軟件中提高質量,請使用靜態分析——軟件工程師可以執行的最簡單、最有效的方法來防止缺陷并強化代碼,同時加快應用程序交付。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
為了從一開始就在您的軟件中提高質量,請使用靜態分析——軟件工程師可以執行的最簡單、最有效的方法來防止缺陷并強化代碼,同時加快應用程序交付。
在對任何類型的系統進行工程設計時,盡早(并經常)檢查缺陷和修復錯誤使團隊可以顯著減少添加到項目中的下游工作量,并且是避免在此過程中出現多頭麻煩的可靠方法。
在軟件開發中,不是一開始就設計出更好的軟件,而是試圖落入一個通用的陷阱中,并試圖簡單地對軟件項目的質量進行測試(通常是在最后)。但是,重要的是要避免采用這種方法的誘惑,這種方法依賴于單元或功能測試來測試產品的質量。為了從一開始就在軟件中提高質量,開發人員可以通過采用靜態分析來控制軟件工程師可以執行的最簡單和最有效的方式,以防止缺陷并強化代碼,同時加快應用程序交付。
靜態代碼分析(或靜態分析)是軟件開發中的軟件測試活動,其中分析源代碼以查找已知與軟件錯誤或安全漏洞相關的結構。當檢測到高風險構造時,靜態分析工具會報告違規行為,以供開發人員查看和修復。
在我們回顧靜態分析的一些主要優點之前,讓我們先回顧一下靜態分析的不同類型以及它們之間的區別。靜態分析有幾種主要類型,每種類型都有其優點和缺點。每個項目的條款如下。
基于模式的靜態分析
靜態分析工具以最簡單的形式掃描源代碼,并根據一組或多組規則對其進行檢查。例如,當實際使用空字符“\0”時,工程師有時會錯誤地使用字符串“\0”。此錯誤可能導致內存損壞,并導致程序崩潰或執行其他令人討厭的事情。靜態分析工具會在代碼中查找這些模式,并將其報告為可能的錯誤。這種靜態分析稱為基于模式的靜態分析。有些模式是簡單的語法檢查器,類似于編寫時的拼寫檢查器。其他模式可能更加復雜,可以分析和檢測與細微問題相關的完整模式。這種靜態分析幾乎不會遭受誤報。
現代軟件工程標準,例如汽車工業軟件可靠性協會(MISRA)和聯合打擊戰斗機(JSF),是基于這樣的思想:應避免使用對安全性至關重要的代碼中的某些構造,因為此類系統中的代碼可能會出現問題。
通過為“不安全”設施提供“更安全”的替代方案,可以避免已知的低級功能問題。本質上,程序是在超集的“安全”子集中編寫的。
來自聯合打擊戰斗機飛行器C++編碼標準–簡介
流分析
流分析(有時稱為控制流分析或數據流分析)有些不同。這種類型的代碼分析根據一組規則檢查有問題的構造,同時模擬決策路徑以更深入地研究應用程序并消除難以發現的缺陷,例如空指針取消引用、緩沖區溢出以及諸如污染數據的安全缺陷。流分析之所以出色,是因為它可以發現真正的錯誤,但是一定數量的誤報始終是此方法的一部分。
其他分析類型
還有其他類型的靜態分析可以實現不同類型的目標。例如,指標分析工具可測量代碼特征,例如代碼行和復雜性。覆蓋率分析工具跟蹤單元和應用程序測試,以更好地了解代碼的測試程度。當作為自動化開發測試過程的一部分一起使用時,這些類型的分析可提供對應用程序安全性,保障性和可靠性的明顯了解。
軟件的狀態變得越來越復雜。例如,今天,平均每輛汽車可能包含1000多個執行代碼的MCU和多達1億行代碼!如此大的電子表面積,尤其是在安全性至關重要的應用中,例如汽車、醫療設備或航空電子設備,要求對軟件采取嚴格的工程方法,以便接近無缺陷的代碼。
好消息是,OWASP,CERT和MITER等組織致力于研究和發布編程最佳實踐,以幫助軟件工程師在其軟件項目中取得成功。也有針對特定行業的標準組織(例如MISRA,專注于汽車軟件系統),其發布監管機構通常要求的最佳實踐。這些最佳做法可以作為規則編入靜態分析工具中,您可以選擇將其作為組織策略的一部分實施,以供開發人員遵循。
使用能夠在與開發過程集成的同時實現這些編程標準的靜態分析工具至關重要。從業務角度看,如果無法使用至少一個靜態分析工具來檢查您的工作,則會大大增加部署或發布應用程序的風險。缺陷可能導致惡意黑客可以利用可利用的代碼來使系統崩潰,暴露敏感數據等。對于安全性至關重要的軟件,軟件漏洞的后果可能更加嚴重。
在桌面上運行靜態分析將帶來一些好處,并且可能適用于小型團隊或項目。但是,在大型組織中,靜態分析也應該作為夜間構建和持續集成的一部分進行自動化。當實現為開發過程的組成部分時,使用靜態分析來分析代碼可帶來許多好處,其中包括:
更快的開發周期
從項目的早期階段開始就始終執行靜態分析,可以使您在補救成本最低的情況下發現并修復系統缺陷。與不進行分析而快速開發軟件相比,該過程最初可能花費更多的時間,但是效率的提高在整個開發生命周期中都呈指數級增長。請記住,在周期的后期可能難以解決一些更危險的錯誤,因此及早發現它們至關重要。
好的靜態分析工具還包括有關正在實施的編程標準的描述性文檔,可擴展軟件工程師的編程知識和專業開發。隨著時間的流逝,對這些標準的遵守會通過不斷的反饋來改善程序員,從而提高了代碼的平均質量。如果您的靜態分析工具具有更廣泛的生態系統,可以自動確定缺陷修復任務的優先級,那么您將能夠更快地交付該軟件。
降低缺陷率
靜態分析可幫助您及早發現并修復缺陷,從而可以防止下游出現系統性缺陷。使用早期檢測策略,您可以更輕松地實施缺陷預防策略,從而降低了開發生命周期中的缺陷率。(值得一試的工具:Parasoft C/C++test,它不僅報告靜態分析違規情況,而且還與非常復雜的分析平臺集成,可以使您對報告的缺陷的所有實例及其對缺陷的整體影響有更廣泛的了解。代碼庫的質量。)
連續的提高
DevOps術語通常用于描述一系列實踐,這些實踐有助于跨部門的協作和交流,以幫助組織優化和加速其開發和交付過程。通過在部門之間共享知識和任務,組織可以創建一個有效的流程來加速SDLC,同時改善質量流程。
但是,為了使該方法有效,必須實施一個自動反饋循環,以使質量策略在需求從創建到生產的過程中始終如一地應用。
自動化的靜態分析不僅是反饋循環的機制,而且還生成其他部門在DevOps模型下有效訪問和協作所需的數據。尤其是與單元測試和回歸測試一起使用時,靜態分析起著一些作用,包括:
結果,靜態分析成為持續、自動化過程改進的媒介。它為開發人員提供了一種理解和檢查在發行期間檢測到的錯誤的方法,或為質量檢查提供了一種方法,以確定是否有一種方法可以強化代碼并消除將來出現這些缺陷的可能性。
市場上有幾種靜態分析工具,范圍從開源實用程序到完整的開發測試套件。Parasoft的軟件測試解決方案提供了一個集成平臺,可以自動為多種編碼語言提供廣泛的軟件質量實踐,同時提供有意義的、全面的報告以及由Parasoft DTP支持的智能分析選項。
對于C和C++,除了全面的靜態代碼分析功能和超過2200條規則(市場上所有工具中的大多數,基于MISRA,MISRA C++,FDA,Scott Meyers的Effective C++,Effective STL的實現),和其他已建立的資源),Parasoft C/C++test為您的開發測試實踐提供了統一的解決方案。它生成并執行單元測試;支持多種類型的代碼覆蓋,包括行、語句、塊、路徑、決策(分支)、簡單條件和MC / DC覆蓋;提供運行時分析,并隨附符合功能安全標準的工具鑒定套件。
Parasoft還具有對Java語言(使用Parasoft Jtest)和.NET語言(對Parasoft dotTEST)的完全靜態代碼分析支持。就像C和C++一樣,它們是完全集成的解決方案,不僅提供靜態分析,而且還為您提供了全面的解決方案,以提高效率并簡化軟件測試。用戶可以在桌面上使用Parasoft靜態分析來分析代碼,也可以將其集成到自動構建中,從而使您能夠連續自動地防止缺陷。
為了獲得增強協作和效率的自動化工作流,這些靜態分析引擎與Parasoft DTP集成在一起,后者提供了將質量集成到SDLC中的工作流,因此您可以定義開發策略,然后自動執行非功能性要求。例如,在構建過程中將自動執行靜態分析,將違規情況報告給DTP,并在處理后將結果發送回工程師的IDE,以進行補救。
DTP還執行智能分析,這些分析使這些工作流能夠自動評估軟件開發的質量和風險。例如,DTP可以查找與編程過程相關的系統性問題,或者將初級工程師生成的嚴重違反代碼的行為與一組單元測試和覆蓋率信息相關聯,以確定與模塊相關的風險有多大。如果相關性指向高于特定閾值的風險水平,則違規行為可能會觸發特定的連續過程改進工作流,除了正常的缺陷修復任務外,還涉及對等代碼審查和其他分析。
靜態代碼分析是確保應用程序按預期運行的重要部分。它不僅提高了整個開發團隊的速度,而且降低了與發布潛在危險軟件有關的風險。雖然某些分析總比沒有分析要好,但是應該將靜態分析集成到更大的軟件測試基礎結構中,以最大程度地提高實踐的有效性。Parasoft在C/C++test,Jtest和dotTEST中提供了企業級代碼分析和測試套件,并在DTP中提供了高級分析和報告系統。結合使用這些技術,軟件工程團隊可以加快軟件交付速度,同時確保其應用程序按預期運行。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn