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