AUTOMORPHSW Team

IEC 62304 的軟體安全分類怎麼分?A、B、C 三級與它們決定的工作量

IEC 62304 的軟體安全分類怎麼分?A、B、C 三級與它們決定的工作量

醫療器材軟體的世界裡,一個字母決定你接下來一年的工作量:IEC 62304 的軟體安全分類——Class A、B、C。分錯級,要嘛白做一堆文件,要嘛在審查時被打回重來。這套分級的邏輯值得每個進入醫材領域的軟體團隊先搞懂。

分級的依據:軟體失效會傷人到什麼程度

分類問的是一條因果鏈:軟體失效 → 危險狀況 → 傷害,傷害的嚴重度決定等級:

  • Class A:不會造成傷害
  • Class B:可能造成非嚴重傷害
  • Class C:可能造成嚴重傷害或死亡

兩個實務要點藏在細節裡:

  1. 評估時要先假設失效會發生(發生機率不能拿來降級)——能往下降級的路徑是外部風險控制:如果軟體之外有獨立的硬體保護(機械聯鎖、獨立監控電路)能把傷害擋住,等級才可以往下修。這也是為什麼分級是系統層風險管理(ISO 14971)與軟體開發的交會點,不是軟體團隊自己填的表
  2. 分級可以分段:系統拆成多個軟體項目(Item)後,各項目可以有各自的等級——前提是隔離成立(見下)

等級怎麼放大工作量

62304 的過程要求隨等級疊加,粗略地說:

活動ABC
軟體開發計畫、需求分析
架構設計
細部設計(單元層級)
單元實作
單元查證✓(更嚴)
整合與整合測試
系統測試

方向很清楚:等級越高,越往「單元層級」的嚴謹度下探。Class C 要求把設計與查證做到單元粒度——這正是自動化單元測試與覆蓋率工具(VectorCAST 這類)在醫材專案裡的位置:手工做 Class C 的單元查證與紀錄,成本會失控。

隔離設計:把 C 關進小房間

整包軟體都按 Class C 開發是最貴的選項。更聰明的架構是隔離(Segregation):把安全關鍵功能收攏成小而清晰的元件(維持 C 級),其餘部分在證明「其失效不影響安全功能」後取得較低等級。但隔離必須是可論證的技術事實——記憶體保護、執行時間隔離、介面受控——而不是方塊圖上的一條虛線。審查員的標準問題就是:「B 級那塊當掉、寫壞記憶體、吃光 CPU 的時候,C 級那塊為什麼沒事?」

SOUP:來路不明軟體的管理義務

62304 給第三方/既有軟體一個專有名詞:SOUP(Software of Unknown Provenance)——RTOS、協定堆疊、開源函式庫都算。用 SOUP 不被禁止,但要盡義務:明確列管每一項 SOUP 與版本、定義你依賴它的功能與效能需求、評估它的已知異常清單(釋出說明裡那些 bug 對你的裝置有沒有影響)、在風險管理裡處理它的失效模式。版本升級是 SOUP 管理最常破功的地方——升了版沒有重走評估,稽核一翻紀錄就現形。

與車用世界的互相借鏡

做過 ISO 26262 的團隊會發現骨架似曾相識:風險驅動分級(ASIL ↔ Class)、等級放大方法嚴謹度、單元覆蓋率證據(分級邏輯比較見 ASIL 那篇)。差異在生態:62304 與 ISO 14971(風險管理)、IEC 62366(可用性)緊密掛鉤,而「軟體變更後的重新驗證範圍」在醫材監管下(上市後變更管理)更為敏感——追溯與自動化回歸的價值,兩個產業完全相通。


下一步

從分級論證、隔離架構到 Class C 的單元查證自動化,歐特莫夫(Vector Informatik 合作夥伴)把跨產業的證據鏈方法帶進醫材軟體專案。