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

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

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

利用醫(yī)療設(shè)備軟件的靜態(tài)代碼分析

星星科技指導(dǎo)員 ? 來源:嵌入式計算設(shè)計 ? 作者:嵌入式計算設(shè)計 ? 2022-06-19 10:07 ? 次閱讀

醫(yī)療設(shè)備使用的軟件代碼比以往任何時候都多。然而,雖然軟件為醫(yī)療設(shè)備提供了更多的功能和靈活性,但它也帶來了額外的復(fù)雜性,從而增加了故障風(fēng)險。今天大約 20% 的醫(yī)療設(shè)備召回是由軟件缺陷引起的,而且這個數(shù)字還在上升。

聯(lián)邦藥物管理局 (FDA) 監(jiān)督在美國銷售的醫(yī)療器械的質(zhì)量,希望發(fā)布醫(yī)療器械的公司必須獲得 FDA 510(k) 許可。在調(diào)查上市后失敗的同時,F(xiàn)DA 更加注重預(yù)防,并建議將靜態(tài)代碼分析作為方法的一部分。

復(fù)雜缺陷檢測的價值

現(xiàn)代靜態(tài)代碼分析工具使用復(fù)雜的技術(shù)來分析源代碼以檢測潛在的軟件缺陷。工具嘗試分析代碼中的所有邏輯路徑,提供比傳統(tǒng)測試形式更多的路徑和代碼覆蓋率。靜態(tài)分析工具不需要任何測試用例,甚至可以對代碼片段進行操作,發(fā)現(xiàn)潛在的程序崩潰、緩沖區(qū)溢出、內(nèi)存泄漏、數(shù)據(jù)損壞等。靜態(tài)分析通常運行迅速,并且可以在相對較短的時間內(nèi)報告一系列潛在的錯誤(參見圖 1)。

圖 1:靜態(tài)分析可以在軟件開發(fā)生命周期的早期發(fā)現(xiàn)潛在問題。

pYYBAGKuhROAQr7PAAHx4iOBxwU673.png

由于各種原因,靜態(tài)分析工具確實會產(chǎn)生一些錯誤的結(jié)果,通常稱為誤報和誤報。當(dāng)靜態(tài)分析工具認(rèn)為有錯誤而沒有錯誤時,就會發(fā)生誤報。誤報是應(yīng)該報告錯誤但沒有報告。

大多數(shù)現(xiàn)代靜態(tài)分析工具必須在可接受的精度水平和可接受的運行時間之間找到盡可能多的好結(jié)果之間進行微妙的權(quán)衡。換句話說,在大量誤報中發(fā)現(xiàn)每個問題的嘈雜工具的價值可能有限,就像只發(fā)現(xiàn)一小部分問題的高度準(zhǔn)確的工具一樣(參見圖 2)。

圖 2:靜態(tài)分析工具不會發(fā)現(xiàn)所有錯誤(誤報),并且會報告一些并非真正的錯誤(誤報)。使遺漏的錯誤和錯誤報告最小化的是良好的分析算法和適當(dāng)?shù)姆治稣{(diào)整。

pYYBAGKuhSSAKxNGAAD0qKhD0fE292.png

現(xiàn)代靜態(tài)分析工具已經(jīng)改進了分析技術(shù),可以以足夠的準(zhǔn)確度生成有用的結(jié)果。大多數(shù)組織認(rèn)識到靜態(tài)分析工具雖然不完善,但在大多數(shù)軟件開發(fā)過程中都提供了重要的價值。

充分利用靜態(tài)分析工具

現(xiàn)代靜態(tài)分析工具對大多數(shù)醫(yī)療設(shè)備制造商來說都是相對較新的。對于許多首次在其流程中實施靜態(tài)分析的組織而言,了解最佳實踐有助于在最短的時間內(nèi)以最少的返工量充分利用工具。

調(diào)音

靜態(tài)分析工具提供了適用于所有類型代碼庫的通用設(shè)置,雖然它們可以立即發(fā)現(xiàn)好的錯誤,但只需針對代碼調(diào)整工具就可以大大改善結(jié)果(參見圖 3)。這有助于找到更多相關(guān)的錯誤并減少通過誤報進行的搜索,這會浪費時間并導(dǎo)致開發(fā)人員疲勞。

圖 3:幾乎每個靜態(tài)分析部署都應(yīng)該從一個可靠的調(diào)優(yōu)項目開始。調(diào)整會帶來更多更好的錯誤和更少的誤報。

poYBAGKuhSyAFDf1AAGMPQG7dRI791.png

許多靜態(tài)分析工具都有自己的源代碼解析器,它們可能無法理解或無法訪問所有代碼。將系統(tǒng)配置為分析所有代碼或調(diào)整系統(tǒng)以識別分析時無法訪問的接口——例如單獨驗證的第三方庫——確保結(jié)果是最佳和可重復(fù)的。實現(xiàn) 100% 的代碼覆蓋率對于堵住可能增加風(fēng)險的漏洞非常重要。

調(diào)優(yōu)有助于發(fā)現(xiàn)真正的問題。例如,告訴靜態(tài)分析工具內(nèi)存分配機制是如何工作的,或者程序何時退出,這樣工具就不會繼續(xù)沿著特定路徑跟蹤問題,這有助于發(fā)現(xiàn)新問題并剔除錯誤問題。這可能是一個繁瑣的過程,需要特定的專業(yè)知識,但從長遠(yuǎn)來看會有所回報。

調(diào)優(yōu)通常是一個持續(xù)的過程,應(yīng)定期審查,以確保一致地使用配置并跟上代碼和環(huán)境的變化。如果不進行持續(xù)調(diào)整,開發(fā)人員可能會錯過一些重要的錯誤,并且團隊將浪費時間檢查誤報。

配置檢查器

許多靜態(tài)分析工具附帶數(shù)百個檢查,涵蓋從并發(fā)性到安全性到 C 和 C++ 陷阱的一系列問題。許多人不一定適用于給定的應(yīng)用程序。例如,為什么在分析 C 代碼時打開 C++ 特定檢查?確定正確的檢查器集需要一些試驗和錯誤以及專業(yè)知識,以了解什么是最劃算的。需要考慮的一些領(lǐng)域是:哪些類型的檢查器會導(dǎo)致真正的問題,哪些檢查器容易產(chǎn)生噪音,哪些檢查器可以配置為有用。一旦一個好的集合最終確定,將其鎖定,以便記錄并始終如一地運行。

在一個說明檢查器價值的真實示例中,客戶希望確保他們的靜態(tài)分析系統(tǒng)始終如一地運行,并要求在系統(tǒng)出現(xiàn)差異時立即收到警報。開發(fā)人員創(chuàng)建了一個測試套件,其中包含每個檢查器的測試用例。每當(dāng)他們更改系統(tǒng)時,他們都會運行測試套件以確保每個檢查器確實按預(yù)期運行。如果結(jié)果失敗,他們知道他們有需要解決的配置問題。如果測試通過,開發(fā)人員會將結(jié)果放入他們的設(shè)計歷史文件中,以證明系統(tǒng)按照他們記錄的方式工作。該測試套件不僅為客戶提供了責(zé)任和保證,而且還降低了他們的維護和管理成本。

過程

一旦實現(xiàn)了全面覆蓋、調(diào)整了系統(tǒng)并定義了分析的廣度,開發(fā)人員就可以開始更有效地使用靜態(tài)分析。對于醫(yī)療設(shè)備,一個典型的目標(biāo)是檢查報告的每一個問題。每個問題都可以通過多種不同的方式進行分類:

一個必須解決的問題。它將有一個適當(dāng)?shù)膬?yōu)先級來描述它的重要性以及在軟件開發(fā)過程中必須如何解決它。

正確標(biāo)記的問題,但不太可能表現(xiàn)為現(xiàn)實世界的錯誤,通常是因為該工具做出了不正確的環(huán)境假設(shè)。這些類型的分類標(biāo)志著潛在的調(diào)整機會。

被錯誤地標(biāo)記為錯誤的問題,無論是誤報還是分析工具中的徹底錯誤。這些問題也預(yù)示著調(diào)整機會。

這些案例中的每一個都必須仔細(xì)審查。尤其應(yīng)檢查誤報的正確性。每個問題都需要自由文檔,并且需要一個強大的數(shù)據(jù)保留政策來實現(xiàn)全面問責(zé)。如果在流程后期發(fā)現(xiàn)重大錯誤,這些分類缺陷報告可能會在審計過程中或在回顧中重新審查。組織通常會回到靜態(tài)分析缺陷以查看主要錯誤是如何通過該過程的。它可能標(biāo)志著一個中斷的過程或一個調(diào)整分析以找到更好的錯誤的機會。

使用模式

靜態(tài)分析通常在開發(fā)人員沙箱構(gòu)建中和/或通過中央構(gòu)建運行(參見圖 4)。至少,在發(fā)布之前分析和評估結(jié)果是有意義的。但是,軟件開發(fā)組織不應(yīng)該等到最后一刻才解決可能存在的大量錯誤,特別是當(dāng)這些錯誤本可以作為規(guī)范流程的一部分更早地解決時。否則,團隊可能會錯過最后期限并在最壞的時間更改代碼。

圖 4:靜態(tài)分析可以根據(jù)業(yè)務(wù)需求、環(huán)境和使用的工具以多種不同方式部署。

pYYBAGKuhTWANb-jAAI0dlyrCkE521.png

組織通常將靜態(tài)分析自動化作為夜間構(gòu)建或持續(xù)集成構(gòu)建的一部分。通過這種方式,可以經(jīng)常審查結(jié)果并在結(jié)果出現(xiàn)時加以處理。其他人則通過使開發(fā)人員能夠在沙盒環(huán)境中分析他們正在處理的代碼來更早地執(zhí)行錯誤發(fā)現(xiàn)過程。開發(fā)人員可以立即獲得有關(guān)其代碼更改質(zhì)量的反饋,然后在簽入前修復(fù)和驗證缺陷。循環(huán)時間越快,代碼庫中的代碼就越干凈。

無論在哪里運行,技術(shù)環(huán)境都需要保持一致,以確保結(jié)果相同。中央和開發(fā)人員構(gòu)建需要保持一致。對分析設(shè)置的輕微更改可能會導(dǎo)致報告更多結(jié)果,并且組織不需要審查更多可能主要是誤報的問題的額外負(fù)擔(dān)。為開發(fā)人員創(chuàng)建一個高度自動化的系統(tǒng)將有助于確保一致性。

許多醫(yī)療設(shè)備公司不僅將源代碼檢查到其存儲庫中,還檢查其實際環(huán)境。這樣,可追溯性是可用的。靜態(tài)分析可執(zhí)行文件和所有相關(guān)配置、狀態(tài)和其他相關(guān)項目也應(yīng)定期檢查,以確保一致性和問責(zé)制。

處理積壓

大多數(shù)組織在開發(fā)大量代碼后開始使用靜態(tài)分析。通常,代碼越多,報告的錯誤就越多。因此,在推出靜態(tài)分析時,管理層必須預(yù)先分配時間來處理最初積壓的錯誤。

最好在開發(fā)周期中盡早進行靜態(tài)分析,以盡量減少積壓,然后創(chuàng)建一個流程來處理積壓,與由于日常代碼更改導(dǎo)致的日常流入錯誤流分開處理。審查缺陷需要時間,應(yīng)該在開發(fā)人員之間適當(dāng)分配,或者外包給一個單獨的團隊來挑選需要工作的缺陷。

文化

所有開發(fā)團隊在技術(shù)技能水平以及團隊中每個人如何定義質(zhì)量方面都存在差異。在培訓(xùn)和指導(dǎo)課程中,最常見的論點是:

“是的,這絕對是一個錯誤,但代碼一直在工作,所以我們不想更改它?!?/p>

“我們不應(yīng)該讓這樣的代碼出現(xiàn)在我們的產(chǎn)品中?!?/p>

“這種情況在現(xiàn)實生活中永遠(yuǎn)不會發(fā)生?!?/p>

“如果我們將來將產(chǎn)品移植到另一個平臺,這將成為一個錯誤?!?/p>

“如果你在這上面多花幾分鐘,你就會發(fā)現(xiàn)這顯然是一個錯誤?!?/p>

靜態(tài)分析將提供各種類型的錯誤,從必須解決的關(guān)鍵問題到警告。一些組織希望投機取巧,只為可證明的錯誤更改代碼。其他人則主動清理代碼并提高質(zhì)量,甚至“修復(fù)”警告。團隊?wèi)?yīng)該在處理靜態(tài)分析結(jié)果的方式上保持一致。審查結(jié)果、培訓(xùn)/指導(dǎo)和頻繁的溝通是成功的關(guān)鍵。

如果使用得當(dāng),靜態(tài)分析已被證明在提高安全關(guān)鍵代碼的軟件質(zhì)量方面非常有效。盡管不嚴(yán)格要求批準(zhǔn),但 FDA 承認(rèn)其有效性。通過適當(dāng)?shù)囊?guī)劃、專業(yè)知識和現(xiàn)實的投資,靜態(tài)分析應(yīng)該會產(chǎn)生可觀的投資回報,并有助于向市場提供安全的代碼。

審核編輯:郭婷

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

    關(guān)注

    8

    文章

    1790

    瀏覽量

    58626
  • C++
    C++
    +關(guān)注

    關(guān)注

    21

    文章

    2100

    瀏覽量

    73453
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4722

    瀏覽量

    68230
收藏 人收藏

    評論

    相關(guān)推薦

    汽車異構(gòu)硬件平臺開發(fā)如何進行靜態(tài)代碼分析

    先進的靜態(tài)代碼分析工具,其新版本中引入的多CCT功能為開發(fā)人員提供了強大的支持,該功能不僅簡化了多編譯器環(huán)境下的代碼分析過程,還可以極大增強
    的頭像 發(fā)表于 10-09 16:15 ?424次閱讀
    汽車異構(gòu)硬件平臺開發(fā)如何進行<b class='flag-5'>靜態(tài)</b><b class='flag-5'>代碼</b><b class='flag-5'>分析</b>

    Perforce靜態(tài)分析工具2024.2新增功能:Helix QAC全新CI/CD集成支持、Klocwork分析引擎改進和安全增強

    ?和Klocwork的最新版本對靜態(tài)分析工具進行了重大改進,通過盡早修復(fù)錯誤、降低開發(fā)成本和加快發(fā)布速度,使開發(fā)團隊實現(xiàn)左移。本文中,我們將概述2024.2版本的新特性和新功能。CI/CD和左移以
    的頭像 發(fā)表于 10-08 16:22 ?204次閱讀
    Perforce<b class='flag-5'>靜態(tài)</b><b class='flag-5'>分析</b>工具2024.2新增功能:Helix QAC全新CI/CD集成支持、Klocwork<b class='flag-5'>分析</b>引擎改進和安全增強

    淺談醫(yī)療用電設(shè)備配電系統(tǒng)設(shè)計及經(jīng)濟性分析

    程瑜 安科瑞 摘要:醫(yī)療用電設(shè)備的配電系統(tǒng)設(shè)計是醫(yī)院建筑電氣設(shè)計的關(guān)鍵性部分,其系統(tǒng)可靠性、安全性直接影響醫(yī)療效果。通過分析該類負(fù)荷的重要性及分類場所中斷供電時間等要素,闡述了較為完善
    的頭像 發(fā)表于 08-06 15:39 ?510次閱讀
    淺談<b class='flag-5'>醫(yī)療</b>用電<b class='flag-5'>設(shè)備</b>配電系統(tǒng)設(shè)計及經(jīng)濟性<b class='flag-5'>分析</b>

    SD NAND技術(shù)在穿戴醫(yī)療設(shè)備中的創(chuàng)新應(yīng)用及影響

    隨著科技的不斷進步,可穿戴醫(yī)療設(shè)備在個體健康監(jiān)測和健康管理中扮演著越來越關(guān)鍵的角色。這些設(shè)備不僅要求實時監(jiān)控用戶的生理參數(shù),如心率、血壓等,還需求能夠長時間保存大量的生物數(shù)據(jù)以供后續(xù)分析
    的頭像 發(fā)表于 07-31 11:02 ?251次閱讀

    DevOps中的質(zhì)量門工作原理,以及靜態(tài)代碼分析Klocwork和Perforce Helix QAC在質(zhì)量門中的實踐應(yīng)用

    如何使用靜態(tài)代碼分析工具(如Klocwork 和 Helix QAC)實現(xiàn)質(zhì)量門。 什么是質(zhì)量門? 質(zhì)量門是在IT或開發(fā)項目中實施的檢查點,這些檢查點要求在進入下一個開發(fā)階段之前達到最低標(biāo)準(zhǔn)。質(zhì)量門可以阻止不合格
    的頭像 發(fā)表于 07-29 15:12 ?294次閱讀

    IAR通過多架構(gòu)認(rèn)證的靜態(tài)分析工具加速代碼質(zhì)量自動化

    公司推出經(jīng)TüV SüD認(rèn)證的C-STAT靜態(tài)分析工具,適用于最新發(fā)布的IAR Embedded Workbench for RISC-V V3.30.2功能安全版。
    的頭像 發(fā)表于 06-19 15:49 ?319次閱讀

    探討AI編寫代碼技術(shù),以及提高代碼質(zhì)量的關(guān)鍵:靜態(tài)代碼分析工具Perforce Helix QAC &amp; Klocwork

    軟件開發(fā)人員夜不能寐的事情比比皆是。如今,他們最關(guān)心的問題不再是如何用自己喜歡的語言(C、C++、Erlang、Java 等)表達最新的算法,而是人工智能(AI)。 本文中,我們將介紹AI編寫代碼
    的頭像 發(fā)表于 06-05 14:10 ?351次閱讀

    覲嘉-醫(yī)療設(shè)備合集-客戶來訪視頻

    醫(yī)療設(shè)備
    jf_03961089
    發(fā)布于 :2024年03月11日 10:25:28

    傲穎- 醫(yī)療設(shè)備合集客戶-來訪視頻

    醫(yī)療設(shè)備
    jf_12990097
    發(fā)布于 :2024年03月11日 09:12:25

    代碼審計怎么做?有哪些常用工具

    代碼審計是一種通過檢查源代碼來發(fā)現(xiàn)潛在的安全漏洞的方法。 下面是常用的源代碼審計工具: 1、Fortify:通過內(nèi)置的五大主要分析引擎,對源代碼
    發(fā)表于 01-17 09:35

    Helix QAC—軟件靜態(tài)測試工具

    Helix QAC是Perforce公司(原PRQA公司)產(chǎn)品,主要用于C/C++代碼的自動化靜態(tài)分析工作,可以提供編碼規(guī)則以及信息安全相關(guān)檢查、代碼質(zhì)量度量、
    的頭像 發(fā)表于 01-10 17:35 ?614次閱讀
    Helix QAC—<b class='flag-5'>軟件</b><b class='flag-5'>靜態(tài)</b>測試工具

    TorchFix:基于PyTorch的代碼靜態(tài)分析

    TorchFix是我們最近開發(fā)的一個新工具,旨在幫助PyTorch用戶維護健康的代碼庫并遵循PyTorch的最佳實踐。首先,我想要展示一些我們努力解決的問題的示例。
    的頭像 發(fā)表于 12-18 15:20 ?1020次閱讀

    什么是軟件成分分析(SCA)?

    的安全風(fēng)險至關(guān)重要。那么,如何管理開源代碼呢?軟件成分分析(SCA)又是如何管理開源代碼的呢?文章速覽:什么是軟件成分
    的頭像 發(fā)表于 11-25 08:04 ?969次閱讀
    什么是<b class='flag-5'>軟件</b>成分<b class='flag-5'>分析</b>(SCA)?

    嵌入式軟件的問題分析

    解決問題之前,可以先把軟件降級,降級到相對穩(wěn)定,沒有嚴(yán)重故障的版本。 3、比較相鄰版本之間的代碼改動 如果不容易復(fù)現(xiàn)的故障,確認(rèn)在升級了某個軟件版本之后才出現(xiàn)的,而其他現(xiàn)場條件都沒有變化,且
    發(fā)表于 11-17 09:29

    如何利用單片機(MCU)來降低醫(yī)療設(shè)備的功耗要求

    電子發(fā)燒友網(wǎng)站提供《如何利用單片機(MCU)來降低醫(yī)療設(shè)備的功耗要求.pdf》資料免費下載
    發(fā)表于 11-16 14:58 ?1次下載
    如何<b class='flag-5'>利用</b>單片機(MCU)來降低<b class='flag-5'>醫(yī)療</b><b class='flag-5'>設(shè)備</b>的功耗要求