開發(fā)安全有效的醫(yī)療設(shè)備軟件
Green Hills軟件公司 Jim McElroy
符合軟件質(zhì)量行業(yè)標(biāo)準(zhǔn)對醫(yī)療器械的發(fā)展是至關(guān)重要的。集成的開發(fā)工具的使用可以大大減少開發(fā)時間,并提高產(chǎn)品質(zhì)量、安全性和可靠性。
今天,由于市場對設(shè)備功能的需求更加豐富,對成本效益的要求更加苛刻,因此,醫(yī)療設(shè)備正變得越來越復(fù)雜。內(nèi)窺鏡的市場就是一個很好的例子。隨著復(fù)雜性的增加,設(shè)備制造商們需要縮短開發(fā)時間,推向市場的產(chǎn)品必須安全可靠,這是進(jìn)入市場的基本要求。此外,經(jīng)驗(yàn)表明,如果內(nèi)窺鏡手術(shù)可以更快地進(jìn)行,病人可能恢復(fù)較快,而外科醫(yī)生和工作人員也能夠在同一時間內(nèi)執(zhí)行更多的任務(wù)。對于設(shè)備制造商來說,要實(shí)現(xiàn)這些更高層次的目標(biāo),就必須使用合適的軟件開發(fā)工具,就必須采用可靠和安全的操作系統(tǒng)(OS)進(jìn)行調(diào)試和驗(yàn)證關(guān)鍵的軟件組件。
對于第二類和第三類醫(yī)療器械的開發(fā)商來說,及時地開發(fā)出安全有效的設(shè)備是一個很大的挑戰(zhàn)。而這一挑戰(zhàn)的核心是病人和設(shè)備操作人員的安全性。要開發(fā)出安全可靠的設(shè)備,就必需面對一些壓力,即上市的窗口、競爭、開發(fā)成本、供應(yīng)商的成本,以及合規(guī)性問題。為了應(yīng)付這些壓力,醫(yī)療設(shè)備軟件開發(fā)商們從工具和程序的開發(fā)中,過渡到業(yè)界認(rèn)可的開發(fā)工具、操作系統(tǒng)和業(yè)界標(biāo)準(zhǔn)的軟件開發(fā)。
一直到2009年,大部分的醫(yī)療設(shè)備軟件開發(fā)機(jī)構(gòu)都依賴于未針對醫(yī)療設(shè)備軟件開發(fā)優(yōu)化的軟件開發(fā)方法、工具、流程及標(biāo)準(zhǔn)。不過,現(xiàn)在有些公司,如史賽克內(nèi)窺鏡(Stryker Endoscopy),它利用行業(yè)標(biāo)準(zhǔn),如IEC 62304,來進(jìn)行軟件開發(fā)和維護(hù),以最迅速的方式開發(fā)出安全有效的設(shè)備,又保障了產(chǎn)品質(zhì)量,更重要的是保障了病人和操作人員的安全。基于IEC 62304,軟件開發(fā)機(jī)構(gòu)可以充分利用國際認(rèn)可的標(biāo)準(zhǔn),提供一個設(shè)計(jì)和維護(hù)醫(yī)療設(shè)備軟件生命周期過程、活動和任務(wù)的框架(圖1)。
圖1 IEC62304 V型方法,需要系統(tǒng)要求和軟件應(yīng)用設(shè)計(jì)之間的可追溯性
要想成功地開發(fā)復(fù)雜的醫(yī)療設(shè)備,有幾個核心的要素。首先是有效地利用標(biāo)準(zhǔn),特別是專門為醫(yī)療設(shè)備軟件開發(fā)而制定的標(biāo)準(zhǔn),并且降低整個開發(fā)過程中的風(fēng)險。此外,選擇適當(dāng)?shù)挠布筒僮飨到y(tǒng)技術(shù)對整體項(xiàng)目的成功也至關(guān)重要。正是因?yàn)槿绱?,史賽克?nèi)窺鏡公司(Stryker Endoscopy)才選擇了Green Hills Software公司的實(shí)時操作系統(tǒng)(RTOS),這是業(yè)界公認(rèn)的操作系統(tǒng)技術(shù),史賽克內(nèi)窺鏡公司相信它會提供良好的安全性和可靠性。除了以上的操作系統(tǒng)層,軟件應(yīng)用程序也十分復(fù)雜,因此,我們的開發(fā)團(tuán)隊(duì)還依靠Green Hills成熟的Multi軟件開發(fā)工具,以測試和驗(yàn)證應(yīng)用程序,確?;颊甙踩?。
除了具有一個可以簡化審批程序的、堅(jiān)實(shí)的軟件開發(fā)框架以外,IEC 62304還執(zhí)行了嚴(yán)格的架構(gòu)軟件設(shè)計(jì),將所有的軟件進(jìn)行了安全分類。根據(jù)其潛在的危險,軟件被分為“A”,“B”,或“C”。 “C”類軟件最不安全,可導(dǎo)致嚴(yán)重傷害或死亡。
開發(fā)團(tuán)隊(duì)可以利用這些分類,從概念上區(qū)別關(guān)鍵應(yīng)用和非關(guān)鍵應(yīng)用??梢岳貌僮飨到y(tǒng)的分離核心架構(gòu),在運(yùn)行時,實(shí)現(xiàn)這一概念的區(qū)分,分割各種應(yīng)用程序(圖2)。因此,該系統(tǒng)更具內(nèi)在安全性,更具可靠性,這是因?yàn)槊恳粋€分區(qū)的故障都將被隔離,并不影響另一個分區(qū)上運(yùn)行的應(yīng)用程序。許多開發(fā)人員認(rèn)為,在多任務(wù)使用一個單一的地址空間時,這種方法大大地改進(jìn)了安全性和可靠性。此外,通過分區(qū),使得多個應(yīng)用程序可以共享相同的處理資源,不再需要單獨(dú)的物理硬件資源,節(jié)省了材料費(fèi)用。在這一架構(gòu)設(shè)計(jì)中,IEC 62304將系統(tǒng)分解成軟件單元,使系統(tǒng)可以更好地進(jìn)行單元和系統(tǒng)驗(yàn)證。更重要的是,OS技術(shù)還為不同的地址空間提供了非常規(guī)則整潔的應(yīng)用方式,使其可以高效地相互溝通。這一架構(gòu)繪制清晰,能夠輕易地識別軟件項(xiàng)目之間的接口,以滿足IEC 62304的要求。
圖2 分離核架構(gòu)模型
所選擇的操作系統(tǒng)(OS)采用了一個真正的實(shí)時調(diào)度程序,支持多個優(yōu)先級。這使得團(tuán)隊(duì)可以使用速率單調(diào)算法來指定所有任務(wù)的優(yōu)先級,以最大限度地提高系統(tǒng)的調(diào)度,以確保所有的關(guān)鍵時刻的約束條件得到滿足。此外,該團(tuán)隊(duì)還采用操作系統(tǒng)的分區(qū)架構(gòu),以創(chuàng)建一個健康監(jiān)測。該操作系統(tǒng)通過提供相互地址空間的通信平臺,可以很容易地與正在運(yùn)行的應(yīng)用程序溝通,以監(jiān)控系統(tǒng)中的所有關(guān)鍵和非關(guān)鍵任務(wù)的狀態(tài),這就可以不斷地檢查故障,進(jìn)行健康監(jiān)測,在故障發(fā)生時,使關(guān)鍵任務(wù)進(jìn)入安全狀態(tài)。此外,該團(tuán)隊(duì)還利用分區(qū)分離,建立了一個專門的地址空間,以處理在手術(shù)室中史賽克內(nèi)窺鏡公司其它設(shè)備的通信。通過采用專用的接口總線,史賽克公司的產(chǎn)品可以相互溝通,進(jìn)行無縫集成,實(shí)現(xiàn)數(shù)據(jù)共享和通用控制。通過實(shí)施分區(qū)的地址空間,無論是軟件還是硬件都可以模塊化,并很容易地移植到未來采用相同操作系統(tǒng)的任何設(shè)備。
在此特定設(shè)備的設(shè)計(jì)中,史賽克內(nèi)窺鏡公司雖然沒有在結(jié)構(gòu)上設(shè)計(jì)虛擬化應(yīng)用,但其選定的操作系統(tǒng)也支持虛擬化,從而使各種客戶機(jī)操作系統(tǒng)可以與主機(jī)操作系統(tǒng)同時運(yùn)行。有了這一功能,在未來,史賽克產(chǎn)品可以將不同的操作系統(tǒng)用于不同水平的功能。例如,Android可以運(yùn)行在虛擬機(jī),進(jìn)行用戶界面控制,而在另一個虛擬機(jī)上運(yùn)行的該操作系統(tǒng)(OS)將負(fù)責(zé)所有的安全,或與安全有關(guān)的功能。
從架構(gòu)設(shè)計(jì)階段到詳細(xì)設(shè)計(jì)階段和實(shí)施階段,其綜合、完整的開發(fā)環(huán)境(IDE)使團(tuán)隊(duì)在必要時,可以迅速地開發(fā)、測試和重復(fù)迭代應(yīng)用程序,即軟件項(xiàng)目可以插入到適當(dāng)?shù)牟僮飨到y(tǒng)(OS)分區(qū)。ARM目標(biāo)模擬器具有巨大的價值,它可以遠(yuǎn)在硬件平臺出現(xiàn)之前,對設(shè)計(jì)進(jìn)行早期驗(yàn)證,節(jié)省了大量的時間和金錢。在分區(qū)里操作的軟件項(xiàng)目,就成為可重復(fù)使用的軟件組件,可以用在未來的醫(yī)療器械中。此外,關(guān)于測試和原型設(shè)計(jì)的用戶界面,IDE和操作系統(tǒng)可以使團(tuán)隊(duì)快速地讓用戶界面進(jìn)入“模擬”設(shè)計(jì),確保正確的互動式操作(通過Swell Software的PEG+ GUI軟件解決方案,和PEG窗口生成器屏幕設(shè)計(jì))??捎眯允窃O(shè)備安全運(yùn)行的一個關(guān)鍵因素,而UI原型設(shè)計(jì)使團(tuán)隊(duì)可以確保令人滿意的功能。
影響代碼質(zhì)量的因素很多,包括工程師寫代碼的質(zhì)量,開發(fā)工具,以及隨后的軟件開發(fā)。根據(jù)IEC 62304規(guī)定,每個單位都有自己的驗(yàn)證過程。作為這一過程的一部分,本團(tuán)隊(duì)使用IDE的優(yōu)化調(diào)試和測試技術(shù)。按照公認(rèn)的最佳做法,本團(tuán)隊(duì)在整個軟件開發(fā)過程中使用了靜態(tài)分析工具,從而,消除了通過編譯器或代碼審查而不容易被發(fā)現(xiàn)的模糊缺陷。這類缺陷包括緩沖區(qū)溢出、資源泄漏和NULL指針的解除引用。未來,本團(tuán)隊(duì)將利用IDE內(nèi)置的靜態(tài)分析工具(靜態(tài)分析工具和調(diào)試器之間具有緊密的耦合)來確??焖俚牡邪l(fā)。這樣,在編譯時就具有了自動執(zhí)行靜態(tài)分析的能力,而不是在編譯后再進(jìn)行人工靜態(tài)分析。雖然靜態(tài)分析工具有助于提高代碼的質(zhì)量,但單憑靜態(tài)分析工具來保障應(yīng)用程序的質(zhì)量是不夠的。
本團(tuán)隊(duì)還利用IDE代碼模制工具(profiler tool),給出一個完整的代碼執(zhí)行報(bào)告,明確指出哪個應(yīng)用程序代碼行已經(jīng)執(zhí)行。本團(tuán)隊(duì)還可以使用此信息來設(shè)計(jì)單元測試,準(zhǔn)確地執(zhí)行所有的應(yīng)用程序代碼元素,與人工比較節(jié)省了時間、精力和金錢。此外,所有的文檔都自動生成,訪問方便。在典型的嵌入式軟件開發(fā)中,大部分的時間花在了修復(fù)少數(shù)幾個故障上,在這種情況下,此調(diào)試環(huán)境使本團(tuán)隊(duì)既可以解決與任務(wù)優(yōu)先級相關(guān)的問題(圖3),也可以解決較低層次的問題。它能夠使用跟蹤數(shù)據(jù)來調(diào)試以前或以后的故障,可以容易地找出通常很難找出的問題,并確定原因。這種能力對醫(yī)療器械的安全性是至關(guān)重要的。總的來說,這些工具提供了一種輕松地進(jìn)行檢查的能力,可用于故障排序、數(shù)據(jù)、流控制、資源分配、自我診斷和內(nèi)存管理。