QNX軟件公司淺談:醫(yī)療設(shè)備安全軟件的10項(xiàng)前提
掃描二維碼
隨時(shí)隨地手機(jī)看文章
為醫(yī)療設(shè)備爭取上市批準(zhǔn)是一項(xiàng)艱辛的任務(wù),制造商必須放眼于純技術(shù)性質(zhì)以外的挑戰(zhàn),集中精力培養(yǎng)以軟件為基礎(chǔ)的醫(yī)療設(shè)備開發(fā)所需的環(huán)境和文化。具體來說,應(yīng)該考慮十項(xiàng)醫(yī)療設(shè)備構(gòu)建和審批的重要前提,但這些前提經(jīng)常被人忽略。
1、安全文化
缺乏安全文化普及的公司,不太可能生產(chǎn)出安全的醫(yī)療產(chǎn)品。安全文化不僅僅是允許工程師提出有關(guān)安全問題的文化,而且也是鼓勵(lì)他們從安全的角度去考慮每一個(gè)決定的文化。一個(gè)程序員可能會(huì)有這樣的問題:“我可以用A技術(shù)或B技術(shù)來編寫這個(gè)信息交換,但是對如何平衡A的較好性能和B的較高可靠性沒有把握”,并且知道應(yīng)該和誰來討論這個(gè)決定。而我們必須培養(yǎng)這種文化,來鼓勵(lì)程序員思考此類問題。
2、專家
我們需要專家。定義一個(gè)安全系統(tǒng)必須做什么,并確認(rèn)它達(dá)到了安全要求,都需要專門的培訓(xùn)和經(jīng)驗(yàn)。安全系統(tǒng)一定要簡潔,設(shè)計(jì)一個(gè)簡潔的系統(tǒng)對于任何工程師而言都是最大的挑戰(zhàn)。
歸根結(jié)底,還是需要相關(guān)領(lǐng)域的專家(包括行業(yè)專家、系統(tǒng)架構(gòu)師、軟件設(shè)計(jì)師、流程專家、程序員和驗(yàn)證專家等)來確定要求,選擇合適的設(shè)計(jì)模式并建立、驗(yàn)證系統(tǒng)。
這樣的專業(yè)知識是昂貴的,因?yàn)樗鼇碜越?jīng)驗(yàn)而非課堂:大學(xué)計(jì)算機(jī)工程本科課程很少涉及嵌入式軟件開發(fā),而教授如何創(chuàng)建足夠可靠性嵌入式系統(tǒng)的課程更是鳳毛麟角。
足夠可靠性:
1)沒有哪個(gè)系統(tǒng)是絕對可靠的,我們必須了解如何讓系統(tǒng)實(shí)現(xiàn)足夠的可靠性。
2)接受足夠的可靠性能減少開發(fā)費(fèi)用,并為我們提供可驗(yàn)證安全指標(biāo)的方式。
3)如果我們不了解怎樣才算足夠可靠,就可能設(shè)計(jì)出一個(gè)復(fù)雜的系統(tǒng),從而故障百出且容易崩潰。
自上世紀(jì)九十年代中期以來,軟件設(shè)計(jì)模式和技術(shù)有了很大的進(jìn)步,但是許多設(shè)計(jì)人員尚未接觸到這些變化。圖1顯示的是醫(yī)療監(jiān)測設(shè)備參考設(shè)計(jì)每小時(shí)故障概率的圖表詳情。借此找出風(fēng)險(xiǎn)所在并準(zhǔn)確統(tǒng)計(jì)故障概率往往需要高深的專業(yè)知識。
圖1 醫(yī)療監(jiān)測設(shè)備參考設(shè)計(jì)每小時(shí)故障概率的圖表
3、流程
IEC 62304注重流程,沒有良好的流程,我們無法證明系統(tǒng)達(dá)到了它的安全要求。
對于目前基本上難以衡量的一些內(nèi)容來說,良好的流程是一個(gè)可衡量的相關(guān)因素。衡量一個(gè)流程是否被遵循比較容易;而評估設(shè)計(jì)和代碼的質(zhì)量是否良好就困難得多。雖然不能說一個(gè)好的流程就能保證好產(chǎn)品,但好產(chǎn)品不可能源自低劣的流程則是一個(gè)眾所周知的十事實(shí)。
IEC 62304 列出開發(fā)醫(yī)療設(shè)備所需的流程,不是因?yàn)檫@些流程能夠確保安全的產(chǎn)品,而是因?yàn)椋?/p>
A. 它們提供了可以對開發(fā)參數(shù)進(jìn)行評估的環(huán)境。例如,良好的測試流程有助于測試覆蓋率的統(tǒng)計(jì)。沒有這一流程,則不可能對測試覆蓋率作出任何申明。
B. 它們可提供用以保存安全案例證據(jù)鏈的架構(gòu)。回顧性地生成安全案例是可能的,但是昂貴,而且一定會(huì)需要重新生成曾存在于項(xiàng)目開發(fā)過程中那些未被保留的證據(jù)。
4、明確的要求
安全指標(biāo)必須闡明可靠性的程度,以及達(dá)到這些程度的限制條件。
FDA已經(jīng)認(rèn)識到“展示設(shè)計(jì)和生產(chǎn)常規(guī)的間接流程數(shù)據(jù)的合理性 ”不足以表明軟件的安全性, “注重于展示特定產(chǎn)品設(shè)備安全性的設(shè)備保證措施”也必不可少。這種展示包含于安全案例中,也反映了上述論題,即優(yōu)質(zhì)流程的目的不是保證優(yōu)質(zhì)產(chǎn)品,而是提供用以評估證據(jù)的環(huán)境。
每一個(gè)安全案例主要都會(huì)提出類似“這一系統(tǒng)將在條件C下,以可靠性B的水平,來操作A,如果不能做A,它會(huì)轉(zhuǎn)移到概率為P的設(shè)計(jì)安全狀態(tài)下”這樣的聲明。這一聲明及其相應(yīng)的注意事項(xiàng)都會(huì)被列在系統(tǒng)安全手冊中,以便用于系統(tǒng)更高層次的安全案例中。
一個(gè)系統(tǒng)的可靠性是指其持續(xù)且 及時(shí)準(zhǔn)確回應(yīng)各種情況的能力:是可用性(及時(shí)響應(yīng)要求的頻率)和可靠性(這些響應(yīng)的正確率)的結(jié)合。
安全案例聲明系統(tǒng)的可靠性指標(biāo),提供達(dá)標(biāo)的證據(jù)??煽啃灾笜?biāo)的局限性和指標(biāo)本身一樣重要。例如,一個(gè)醫(yī)療成像系統(tǒng)可以滿足IEC 61508 SIL3要求,實(shí)現(xiàn)不超過8小時(shí)的持續(xù)工作,8小時(shí)后系統(tǒng)必須重置(更新)。由于成像過程通常是短暫的,所以這一限制不會(huì)造成不便,哪怕這個(gè)系統(tǒng)一天要用 24小時(shí)。
5、系統(tǒng)失效
沒有哪個(gè)系統(tǒng)對漏洞免疫,特別是Heisenbugs— 那些“曇花一現(xiàn)”,而當(dāng)我們尋找它們的時(shí)候又“消失無蹤”的神秘漏洞, ;失效狀況終究會(huì)發(fā)生:我們要建立的系統(tǒng)必須能夠恢復(fù)常態(tài)或進(jìn)入其設(shè)計(jì)安全狀態(tài)。
表1 缺陷、錯(cuò)誤和故障分析表
既然所有的系統(tǒng)都將包含缺陷,而缺陷可能導(dǎo)致故障,一個(gè)安全系統(tǒng)就必須包含多道防線:
安全關(guān)鍵型流程的獨(dú)立——找出哪些部件有安全關(guān)鍵性,設(shè)計(jì)時(shí)務(wù)必保證其不受其它零部件的影響。
防止缺陷演變?yōu)殄e(cuò)誤——盡管理想的解決途徑是識別并消除代碼故障,但是實(shí)際上很難做到。要小心Heisenbug,保證軟件的設(shè)計(jì)能夠發(fā)現(xiàn)和封閉缺陷,以免它們演變成錯(cuò)誤。
防止錯(cuò)誤演變?yōu)楣收?mdash;—相對于軟件來說,諸如復(fù)制和多樣化這樣的技術(shù)更適用于硬件,然而謹(jǐn)慎使用依然能夠奏效。
故障檢測和恢復(fù)——在許多系統(tǒng)中,轉(zhuǎn)移到預(yù)定義的設(shè)計(jì)安全狀態(tài),并將恢復(fù)任務(wù)留給更高層次的系統(tǒng)(比如人)是可行的。有些系統(tǒng)則不能如此操作,所以系統(tǒng)必須恢復(fù)或重啟。一般而言,在不明確環(huán)境中企圖恢復(fù),不如選擇帶有快速復(fù)原的crash-only模式。