0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

靜態(tài)分析可提高效率,降低下游集成成本

星星科技指導(dǎo)員 ? 來源:嵌入式計算設(shè)計 ? 作者:ANDY CHOU ? 2022-11-08 10:53 ? 次閱讀

隨著現(xiàn)代軍事系統(tǒng)越來越依賴軟件,正在采用新技術(shù)來降低成本并增加任務(wù)成功的機會。因此,靜態(tài)分析基于其在運行時之前的深度分析功能,在軟件開發(fā)社區(qū)中越來越受歡迎。

這些靜態(tài)分析工具(增強但不能取代傳統(tǒng)的測試和調(diào)試方法)可在集成發(fā)生之前很久就發(fā)現(xiàn)集成錯誤,從而消除了代價高昂的后期集成問題。

隨著軍事裝備和車輛的日益現(xiàn)代化,它們在技術(shù)上也不可避免地變得更加復(fù)雜。在許多情況下,這些機器代表了硬件和軟件的微妙融合,兩者必須完美地交互。由于這些機器的軟件組件必須在現(xiàn)場盡可能可靠地工作,因此使用多種技術(shù)組合執(zhí)行廣泛的調(diào)試和測試非常重要,以便在缺陷導(dǎo)致長時間延遲或超限之前消除缺陷。這通常是不切實際的,因為在代碼實際實現(xiàn)到最終運行代碼的設(shè)備之前,通常沒有辦法可靠地測試代碼。由于軟件很少在第一次執(zhí)行時完美運行,因此使用傳統(tǒng)的開發(fā)方法和工具返回并修復(fù)錯誤會阻礙生產(chǎn)力,并將寶貴的資源和人員從需要完成的其他項目中轉(zhuǎn)移出來。

例如,波音787夢想客機由于硬件和軟件缺陷而延誤了兩年。這些問題往往是相互交織的。就夢想客機而言,一個特殊的延遲是由于控制制動系統(tǒng)的軟件存在缺陷。重要的是要注意,傳統(tǒng)的測試并沒有在它真正成為一個問題之前發(fā)現(xiàn)這個缺陷,并在開發(fā)過程中造成代價高昂的挫折和其他并發(fā)癥。靜態(tài)分析等現(xiàn)代技術(shù)可以增加內(nèi)存損壞和釋放后用戶等問題被更快地發(fā)現(xiàn)的可能性,并有助于實現(xiàn)DO-178B的設(shè)計保證級別(DAL)。與傳統(tǒng)的V模型相比,靜態(tài)分析是一種更高效、更具成本效益的途徑,與傳統(tǒng)的測試和調(diào)試方法協(xié)同工作,以緩解集成問題和費用。

靜態(tài)分析和開發(fā)過程

軟件開發(fā)往往遵循特定的生命周期。一個例子是航空航天工程中常用的V模型。V 模型代表了一種整體開發(fā)方法,它試圖在一段時間內(nèi)協(xié)調(diào)項目定義和測試過程。該模型從建立項目的范圍開始,包括其操作概念、要求和體系結(jié)構(gòu),以及其設(shè)計的具體細(xì)節(jié)。

這個過程在更高層次上開始非常抽象,并在設(shè)計過程中逐漸完善和詳細(xì)。隨著設(shè)計的實現(xiàn),在開發(fā)周期的后期修復(fù)問題的成本會更高。一旦項目基本完成并正在測試中,回去對其基本方面的維修就變得非常昂貴。

最終,許多軟件問題是由低效的開發(fā)模型和不精確的調(diào)試過程引起的,然后惡化。通過使用靜態(tài)分析等現(xiàn)代技術(shù)盡早消除軟件缺陷,可以提高開發(fā)效率和成本效益。

具體來說,靜態(tài)分析是一種在不運行軟件的情況下查找軟件缺陷的技術(shù)。它的工作原理是檢查產(chǎn)品源代碼,從單個功能開始,一直到模塊,最后是整個程序。靜態(tài)分析可以發(fā)現(xiàn)許多不同類型的缺陷,包括C / C++程序中的內(nèi)存錯誤。例如,靜態(tài)分析可以檢測以下簡單代碼片段中的錯誤:

int a[10];

for(int i = 0; i < 10; i++); {

a[i] = 0;

}

有時人類很難看到軟件代碼中的問題,因為他們看到的是他們想要看到的東西,而不是實際存在的東西。當(dāng)編譯器將此代碼轉(zhuǎn)換為可執(zhí)行程序時,編譯器以機械和精確的方式讀取源代碼,忽略縮進(jìn)和間距等人為提示。編譯器將按以下方式讀取示例:

int a[10];

for(int i = 0; i < 10; i++)

;

{

a[i] = 0;

}

如圖所示重新格式化代碼后,導(dǎo)致程序具有完全不同的含義的額外“;”字符突然變得更加明顯。如果此錯誤在最終程序中仍未糾正,則當(dāng) i = 10 時,數(shù)組訪問 a[i] 將僅執(zhí)行一次。結(jié)果是分配給數(shù)組末尾的內(nèi)存位置,這可能會導(dǎo)致程序崩潰。

靜態(tài)分析像編譯器一樣機械而精確地檢查代碼。但是,靜態(tài)分析器不會盲目地將代碼轉(zhuǎn)換為可執(zhí)行程序,而是查找代碼功能與開發(fā)人員最初預(yù)期的工作方式不同的路徑。靜態(tài)分析可以通過模式匹配等簡單技術(shù)或過程間數(shù)據(jù)流分析和布爾滿足性等高級技術(shù)來完成。無論使用何種技術(shù),靜態(tài)分析都是定制的,用于查找人類開發(fā)人員可能忽略或出錯的情況。這為全面的逐行代碼審計提供了一種更有效的替代方案,這對于大型軟件系統(tǒng)來說并不具有成本效益。

將靜態(tài)分析和傳統(tǒng)調(diào)試相結(jié)合

與功能測試等傳統(tǒng)方法相比,靜態(tài)分析呈現(xiàn)出一組不同的權(quán)衡。傳統(tǒng)測試只能檢測實際測試的代碼中的錯誤,而靜態(tài)分析可以在沒有任何測試的情況下發(fā)現(xiàn)所有代碼中的缺陷。有時,通過測試發(fā)現(xiàn)的錯誤很難重現(xiàn)并查明源代碼中的特定問題。靜態(tài)分析可以以可重復(fù)、可預(yù)測的方式發(fā)現(xiàn)問題,并且始終指向代碼中的特定位置。另一方面,傳統(tǒng)測試可以發(fā)現(xiàn)靜態(tài)分析無法發(fā)現(xiàn)的功能錯誤,因為靜態(tài)分析不會嘗試將程序的行為與預(yù)期結(jié)果進(jìn)行比較。靜態(tài)分析在分析深層程序?qū)傩詴r也會失去精度,因此可能會遺漏一些缺陷。因此,靜態(tài)分析旨在增強傳統(tǒng)方法的有效性,而不是直接取代它們。

由于靜態(tài)分析適用于現(xiàn)有的工具集和編譯器,因此無需更改當(dāng)前的開發(fā)實踐。靜態(tài)分析可以在編寫第一行代碼后立即開始的項目期間頻繁應(yīng)用(即使在夜間構(gòu)建上)。從本質(zhì)上講,如果項目的代碼庫可以成功編譯,則可以使用靜態(tài)分析來調(diào)試它,并在項目交付給質(zhì)量保證人員進(jìn)行最終測試之前很久就消除問題。

靜態(tài)分析的集成優(yōu)勢

靜態(tài)分析在面向團隊的環(huán)境中也運行良好。開發(fā)人員可以使用靜態(tài)分析來檢查彼此的貢獻(xiàn)是否一致,并檢查由不同團隊成員編寫的代碼引起的沖突。這可以適用于單個項目,甚至可以擴展到需要多個項目之間集成以創(chuàng)建復(fù)雜系統(tǒng)的更大場景。

靜態(tài)分析不僅可以找到簡單的代碼缺陷;如前所述,它能夠在不同組件集成在一起之前分析它們之間的相互作用。在軟件開發(fā)的V模型中,測試和驗證從單個組件開始。當(dāng)這些組件滿足其低級規(guī)格時,它們將集成在一起,以便根據(jù)系統(tǒng)要求進(jìn)行更高級別的測試。如果嚴(yán)格按照此理想執(zhí)行軟件集成,則集成階段會帶來很高的風(fēng)險,因為各個組件將是第一次交互。這些交互可能會暴露原始項目規(guī)范的問題,特別是關(guān)于如何將系統(tǒng)需求和體系結(jié)構(gòu)轉(zhuǎn)換為詳細(xì)的設(shè)計要求和源代碼。靜態(tài)分析工具可以在編寫軟件組件后立即分析它們之間的交互,在實現(xiàn)階段捕獲其中一些昂貴的集成問題。這些工具通過跨過程邊界分析代碼來查找應(yīng)用程序編程接口 (API) 使用中的問題,即使過程位于不同的軟件組件中,也可以實現(xiàn)此目的。

通過靜態(tài)分析最大限度地提高效率

軟件正被用于以曾經(jīng)不可能的方式改進(jìn)智能炸彈和無人駕駛無人機等軍事系統(tǒng)。靜態(tài)分析工具,例如Coverity提供的分析工具,也是這一趨勢的一部分。靜態(tài)分析工具與傳統(tǒng)的測試和調(diào)試方法結(jié)合使用時,可在運行時之前有效地分析軟件并檢測代碼錯誤,從而最大限度地降低風(fēng)險和成本,同時最大限度地提高軟件開發(fā)投資的價值。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1617

    瀏覽量

    49015
  • 無人機
    +關(guān)注

    關(guān)注

    226

    文章

    10301

    瀏覽量

    179125
收藏 人收藏

    評論

    相關(guān)推薦

    藍(lán)牙定位系統(tǒng):實現(xiàn)精準(zhǔn)定位、提高效率的利器

    在當(dāng)今數(shù)字化的時代,精準(zhǔn)定位技術(shù)在各個領(lǐng)域發(fā)揮著至關(guān)重要的作用。其中,藍(lán)牙定位系統(tǒng)以其獨特的優(yōu)勢,成為了提高效率的強大工具。 藍(lán)牙定位系統(tǒng)的工作原理基于藍(lán)牙信號的強度和傳播特性。通過在特定區(qū)域內(nèi)
    的頭像 發(fā)表于 10-14 10:14 ?194次閱讀
    藍(lán)牙定位系統(tǒng):實現(xiàn)精準(zhǔn)定位、<b class='flag-5'>提高效率</b>的利器

    D類放大器中用于提高效率的 Y 橋應(yīng)用說明

    電子發(fā)燒友網(wǎng)站提供《D類放大器中用于提高效率的 Y 橋應(yīng)用說明.pdf》資料免費下載
    發(fā)表于 09-13 11:03 ?0次下載
    D類放大器中用于<b class='flag-5'>提高效率</b>的 Y 橋應(yīng)用說明

    取得平衡:提高效率并控制EMI的汽車設(shè)計

    電子發(fā)燒友網(wǎng)站提供《取得平衡:提高效率并控制EMI的汽車設(shè)計.pdf》資料免費下載
    發(fā)表于 08-28 11:58 ?0次下載
    取得平衡:<b class='flag-5'>可</b><b class='flag-5'>提高效率</b>并控制EMI的汽車設(shè)計

    加裝德國進(jìn)口高精度主軸 智能手機殼「高質(zhì)量高效率」鉆孔銑槽

    智能手機殼加工需高精度主軸,采用德國進(jìn)口4060ER-S主軸,高轉(zhuǎn)速、大功率滿足高速高效需求,保證加工精度穩(wěn)定性,提高效率和可靠性,降低生產(chǎn)成本和運營
    的頭像 發(fā)表于 07-02 15:15 ?193次閱讀
    加裝德國進(jìn)口高精度主軸 智能手機殼「高質(zhì)量<b class='flag-5'>高效率</b>」鉆孔銑槽

    ACM8625P全集成高效率D類立體聲音頻放大器英文手冊

    脈寬調(diào)制架構(gòu),能根據(jù)信號大小動態(tài)調(diào)整脈寬,在保證音頻性能的前提下,降低靜態(tài)功耗,提高效率。? 出色的音頻性能:THD+N(總諧波失真加噪聲)≤0.04%(1W,1kHz,PVDD=12V),SNR(信噪比)為114dB(加權(quán))
    發(fā)表于 06-24 14:09 ?7次下載

    GaNSense?半橋IC提高效率降低成本,賦能電機集成逆變器

    電機驅(qū)動系統(tǒng)消耗了歐洲近50%的電力 ,因此政府制定了相關(guān)法規(guī)和標(biāo)準(zhǔn),以確保盡可能高效地使用電力,同時盡量減少對電網(wǎng)的影響和擾亂。
    的頭像 發(fā)表于 05-30 14:38 ?497次閱讀
    GaNSense?半橋IC<b class='flag-5'>可</b><b class='flag-5'>提高效率</b>并<b class='flag-5'>降低成本</b>,賦能電機<b class='flag-5'>集成</b>逆變器

    立柱碼垛機飼料碼垛生產(chǎn)車間提高效率降低成本#

    碼垛機器人
    jf_01290382
    發(fā)布于 :2024年04月16日 10:03:52

    提高效率的DC電源模塊設(shè)計技巧

    BOSHIDA ?提高效率的DC電源模塊設(shè)計技巧 設(shè)計高效率的BOSHIDA ?DC電源模塊可以幫助減少能源浪費和提高系統(tǒng)功耗,以下是一些設(shè)計技巧: 1. 選擇高效率的功率轉(zhuǎn)換器:選擇
    的頭像 發(fā)表于 02-26 14:27 ?485次閱讀
    <b class='flag-5'>提高效率</b>的DC電源模塊設(shè)計技巧

    什么是電源模塊效率 如何計算 提高效率的方法

    什么是電源模塊效率 如何計算 提高效率的方法 BOSHIDA博士達(dá) 電源模塊效率是指輸入電能轉(zhuǎn)換為輸出電能的比例,通常以百分比表示。高效率的電源模塊能夠最大限度地將輸入電能轉(zhuǎn)化為有用的
    的頭像 發(fā)表于 02-02 09:44 ?962次閱讀

    搬運機器人已經(jīng)成為提高效率、降低成本的關(guān)鍵技術(shù)

    物流、制造業(yè)和倉儲等領(lǐng)域,搬運機器人已經(jīng)成為提高效率、降低成本的關(guān)鍵技術(shù)。近年來,隨著技術(shù)的不斷突破,搬運機器人正朝著更加智能、高效和可靠的方向發(fā)展。
    的頭像 發(fā)表于 01-22 12:00 ?488次閱讀
    搬運機器人已經(jīng)成為<b class='flag-5'>提高效率</b>、<b class='flag-5'>降低成本</b>的關(guān)鍵技術(shù)

    分布式無紙化交互系統(tǒng)的優(yōu)勢:提高效率降低成本

    首先,分布式無紙化交互系統(tǒng)能夠顯著提高會議的效率。通過電子化的方式傳遞和展示會議材料,避免了紙質(zhì)文件的打印、分發(fā)等繁瑣流程,從而大幅提升了會議的效率。此外,與會者可以通過電子設(shè)備隨時查閱會議材料
    的頭像 發(fā)表于 01-15 14:18 ?313次閱讀

    提高系統(tǒng)效率的幾個誤解解析

    中斷任務(wù)特別多的話,這個沒退出來,后面又接踵而至,一會兒系統(tǒng)就將崩潰了。如果任務(wù)數(shù)量多但很頻繁的話,CPU的 很大精力都用在進(jìn)出中斷的開銷上,系統(tǒng)效率極為低下,如果改用查詢方式反而極大提高效
    發(fā)表于 01-15 07:29

    今日推薦-YB2414高效率同步降壓轉(zhuǎn)換器

    YB2414高效率同步降壓轉(zhuǎn)換器 概述: YB2414是一款高效率500 kHz同步降壓DC-DC轉(zhuǎn)換器,能夠提供4A/5A電流。 YB2414可在4.5V至18V的寬輸入電壓范圍內(nèi)工作,并集成
    發(fā)表于 01-13 12:14

    帶有快速體二極管的MOSFET器件通過LLC拓?fù)浜虵REDFET來提高效率

    帶有快速體二極管的MOSFET器件通過LLC拓?fù)浜虵REDFET來提高效率
    的頭像 發(fā)表于 12-08 17:35 ?648次閱讀
    帶有快速體二極管的MOSFET器件通過LLC拓?fù)浜虵REDFET來<b class='flag-5'>提高效率</b>

    如何使用自增自減運算提高效率

    使用自增自減運算提高效率 在使用到加一和減一操作時盡量使用增量和減量操作符,因為增量符語句比賦值語句更快,原因在于對大多數(shù)CPU來說,對內(nèi)存字的增、減量操作不必明顯地使用取內(nèi)存和寫內(nèi)存的指令,比如
    的頭像 發(fā)表于 11-21 11:29 ?494次閱讀