現(xiàn)在,,利用高級(jí)醫(yī)療器械比以往任何時(shí)候都更有助于醫(yī)療從業(yè)人員輕松,、準(zhǔn)確地做出診斷。然而,,他們對(duì)器械的依賴程度也引發(fā)了確保器械安全性和質(zhì)量的擔(dān)憂,。
值得注意地是,,醫(yī)療器械嚴(yán)重依賴第三方和早期軟件,亦即“未知系譜的軟件(SOUP)”,。該SOUP構(gòu)成了新發(fā)展的基礎(chǔ),,其現(xiàn)在可能符合新醫(yī)療器械要求或者政府推行的現(xiàn)代編碼標(biāo)準(zhǔn)、客戶需求或者僅僅是開發(fā)組織內(nèi)的持續(xù)改進(jìn)政策,。在滿足新標(biāo)準(zhǔn)和進(jìn)一步開發(fā)新功能的同時(shí),,對(duì)利用SOUP價(jià)值的需要提出了它自己的獨(dú)特挑戰(zhàn)。
FDA于1992至1998年間對(duì)3140次醫(yī)療器件召回事件進(jìn)行的分析顯示,其中有242次(占7.7%)可歸因于軟件故障,。在所有軟件召回事件中,,192次(占79%)是因軟件升級(jí)后引入的軟件缺陷而起。產(chǎn)品升級(jí)過程中引入的高誤差率讓政府醫(yī)療器械機(jī)構(gòu)不僅要集中精力開發(fā)新產(chǎn)品,,還要關(guān)注后期維護(hù)和軟件變更對(duì)現(xiàn)有系統(tǒng)的影響,。
因此,很多公司改變方法,,改善軟件過程,,采用歐盟和美國(guó)近期簽署的醫(yī)療產(chǎn)品設(shè)計(jì)標(biāo)準(zhǔn)IEC 62304。IEC 62304引進(jìn)了一種基于風(fēng)險(xiǎn)的合規(guī)性結(jié)構(gòu),,可以確保醫(yī)學(xué)應(yīng)用符合其風(fēng)險(xiǎn)評(píng)估適用標(biāo)準(zhǔn)的要求,。該合規(guī)性結(jié)構(gòu)可以分成A~C類,其中C類軟件故障可能導(dǎo)致死亡或重傷,。
IEC 62304軟件開發(fā)生命周期
IEC 62304著眼于軟件開發(fā)過程,,定義了大部分軟件開發(fā)與驗(yàn)證活動(dòng)。該過程包括軟件開發(fā)規(guī)劃,、需求分析、架構(gòu)設(shè)計(jì),、軟件設(shè)計(jì),、單元實(shí)現(xiàn)與驗(yàn)證、軟件集成與集成測(cè)試,、系統(tǒng)測(cè)試和軟件發(fā)布之類的活動(dòng),。
該標(biāo)準(zhǔn)不僅概括了開發(fā)生命周期的各個(gè)階段的要求,還顧及了維護(hù)過程,、軟件變更對(duì)現(xiàn)有系統(tǒng)的影響和實(shí)現(xiàn)軟件變更所涉及的風(fēng)險(xiǎn),。IEC 62304還直接從規(guī)劃、需求分析,、架構(gòu)設(shè)計(jì),、維護(hù)和風(fēng)險(xiǎn)管理階段開始詳細(xì)介紹了SOUP項(xiàng)目的作用。
EIC 62304和SOUP
可重新用于新器件開發(fā)的SOUP軟件已流行起來,,因?yàn)獒t(yī)療器械現(xiàn)在傾向于采用通用嵌入式硬件,,以及操作系統(tǒng),面向USB,、以太網(wǎng)或制圖的器件驅(qū)動(dòng)器,、文件系統(tǒng)、網(wǎng)絡(luò)堆棧等,。在醫(yī)療器械中使用SOUP有其優(yōu)勢(shì),,因?yàn)橹圃焐炭梢詫⒕性趹?yīng)用軟件上。
然而,由于應(yīng)用需要運(yùn)行專用功能,,所以醫(yī)療器械內(nèi)的SOUP增加了挑戰(zhàn)難度,。大多數(shù)SOUP模塊都由第三方供應(yīng)商提供,而他們不遵守任何軟件過程和軟件標(biāo)準(zhǔn),,甚至不記錄代碼,。雖然它解決了平臺(tái)挑戰(zhàn),但SOUP是在緊迫的時(shí)間表內(nèi)開發(fā)而來,,并且強(qiáng)調(diào)的是生產(chǎn)率,,而不是標(biāo)準(zhǔn)兼容性。在進(jìn)行系統(tǒng)測(cè)試以便檢驗(yàn)功能性時(shí),,SOUP項(xiàng)目通常表現(xiàn)出代碼覆蓋率極差的特點(diǎn),,并且留下了很多未使用的代碼路徑。圖1中的藍(lán)色曲線代表進(jìn)行了功能測(cè)試的代碼,。采用該代碼時(shí),,不同的數(shù)據(jù)和情形有可能第一次使用很多未經(jīng)測(cè)試的路徑,從而產(chǎn)生意料之外的結(jié)果,。圖1中的紅點(diǎn)曲線表示現(xiàn)場(chǎng)運(yùn)行應(yīng)用時(shí)使用的代碼,。
圖1 傳統(tǒng)功能測(cè)試可能無法檢驗(yàn)代碼的很多部分。藍(lán)色曲線表示傳統(tǒng)功能測(cè)試使用的代碼,;紅點(diǎn)曲線表示應(yīng)用現(xiàn)場(chǎng)運(yùn)行時(shí)使用的代碼,;綠點(diǎn)曲線表示代碼增強(qiáng),其傾向于使用先前未遇到的數(shù)據(jù)組合,,從而出現(xiàn)進(jìn)入先前未使用路徑的可能性,。
歐洲軟件和系統(tǒng)提案之“利用經(jīng)驗(yàn)驅(qū)動(dòng)測(cè)試(PET)檢驗(yàn)誤碼性能”計(jì)劃調(diào)查了這種現(xiàn)象,并且同意采用的代碼通常帶有很多誤碼的觀點(diǎn),。PET旨在將發(fā)布后報(bào)告的漏洞數(shù)量減少50%和將每找出一個(gè)漏洞所耗費(fèi)的測(cè)試工作時(shí)間縮短40%,。有意思的是,PET超過了該標(biāo)準(zhǔn),,將報(bào)告的漏洞數(shù)減少了75%,,將測(cè)試效率提高了46%。PET的發(fā)現(xiàn)表明可以利用較新的測(cè)試方法(如靜態(tài)和動(dòng)態(tài)分析)找出大量漏洞,,即使代碼已經(jīng)通過了功能系統(tǒng)測(cè)試并于隨后發(fā)布,。
那么,可以采用先前通過功能測(cè)試的SOUP做進(jìn)一步測(cè)試,。即使它運(yùn)行良好,,代碼的某些部分也可能未曾使用過,即使是產(chǎn)品正在現(xiàn)場(chǎng)使用的時(shí)候,。如果SOUP代碼需要作進(jìn)一步開發(fā)以便于后來的修訂或新應(yīng)用,,那么先前從未碰到的數(shù)據(jù)組合也可能會(huì)使用先前未使用的代碼路徑,,從而產(chǎn)生意料之外的結(jié)果。圖1中的綠點(diǎn)曲線表示對(duì)SOUP代碼進(jìn)行增強(qiáng)時(shí)使用的代碼,。
為了克服這種潛在弱點(diǎn),,需要進(jìn)行詳細(xì)的結(jié)構(gòu)覆蓋率分析,以確保早期軟件內(nèi)不存在未使用的代碼,。IEC 62304要求測(cè)試早期軟件的功能覆蓋率和結(jié)構(gòu)覆蓋率,,還要詳細(xì)分析增加這類軟件可能引入的風(fēng)險(xiǎn)。功能覆蓋率確保軟件能夠按照系統(tǒng)設(shè)計(jì)要求運(yùn)行,,而結(jié)構(gòu)覆蓋率則確保使用了所有代碼并且能夠正常運(yùn)行,。
IEC 62304要求整合到醫(yī)療器械設(shè)計(jì)中的所有SOUP項(xiàng)目均符合功能和性能要求規(guī)范。醫(yī)療器械制造商需要確保任意SOUP項(xiàng)目的正常運(yùn)行,,還要保證它們符合功能和性能要求,。
IEC 62304軟件開發(fā)過程始于軟件開發(fā)規(guī)劃,包括所用SOUP項(xiàng)目的詳細(xì)計(jì)劃,。這些細(xì)節(jié)介紹了如何將SOUP項(xiàng)目整合到現(xiàn)有系統(tǒng)中,、如何管理SOUP相關(guān)風(fēng)險(xiǎn)和軟件配置、以及變更管理如何影響系統(tǒng),。
緊接著是軟件需求管理,、架構(gòu)設(shè)計(jì)、集成測(cè)試,、系統(tǒng)測(cè)試,、風(fēng)險(xiǎn)管理、維護(hù)和變更管理階段,。在軟件開發(fā)生命周期的各個(gè)階段,都需要保持所有階段之間的可追蹤性,。
傳統(tǒng)的軟件開發(fā)觀點(diǎn)表明了各個(gè)階段如何進(jìn)入下一個(gè)階段,,可能還帶有前幾個(gè)階段的反饋信息,以及配置管理與過程的周邊架構(gòu),??勺粉櫺员灰暈楦鱾€(gè)階段間關(guān)系的一部分。然而,,很少規(guī)定記錄跟蹤鏈路的機(jī)制,。
實(shí)際上,雖然由于先進(jìn)工具技術(shù)投資,,各個(gè)階段都能夠有效實(shí)施,,但是這些工具很少能夠自動(dòng)提高階段間可追蹤性。因此,,在整個(gè)項(xiàng)目進(jìn)行的過程中,,其間鏈路的維護(hù)就變得越來越差,。最終的結(jié)果就是需求與設(shè)計(jì)之間的交叉檢驗(yàn)缺失或者流于表面,以及最終系統(tǒng)的機(jī)能不全,。為了獲得真正的自動(dòng)可追蹤性,,則需要需求跟蹤矩陣(RTM)。RTM是各個(gè)項(xiàng)目的核心,,是很多開發(fā)標(biāo)準(zhǔn)(包括IEC 62304)的關(guān)鍵所在,。
需求跟蹤與SOUP
需求跟蹤矩陣是一種用于管理和跟蹤需求的習(xí)慣做法,在管理軟件需求和系統(tǒng)所用SOUP項(xiàng)目方面起著重要作用,。RTM能夠通過醫(yī)療器械應(yīng)用的架構(gòu)設(shè)計(jì)在與SOUP有關(guān)的高級(jí)需求之間實(shí)現(xiàn)可追蹤性(圖2),。
圖2 需求跟蹤矩陣(RTM)在開發(fā)生命周期模型中起著重要作用,即使是在SOUP項(xiàng)目是系統(tǒng)的一部分的時(shí)候,。各個(gè)階段的典型產(chǎn)物都直接與需求矩陣相連,,各個(gè)階段的變更都會(huì)自動(dòng)更新RTM。
為了確保SOUP能夠滿足IEC 62304規(guī)定的系統(tǒng)級(jí)要求,,醫(yī)療器械制造商需要規(guī)定:
? 預(yù)期用途所需的SOUP項(xiàng)目的功能和性能要求
? 讓SOUP項(xiàng)目正常運(yùn)行所需的系統(tǒng)硬件和軟件的生產(chǎn)規(guī)范
? 證明醫(yī)療器械架構(gòu)能夠讓任意SOUP項(xiàng)目正常運(yùn)行所需的詳情
大多數(shù)情況下,,SOUP項(xiàng)目是作為源代碼提供的,但是不帶設(shè)計(jì)文件,,這樣就很難分析它們,。使用現(xiàn)代測(cè)試工具有助于實(shí)現(xiàn)早期代碼設(shè)計(jì)可視化。
不論它是否應(yīng)用于語句模塊,、進(jìn)程(或類),、應(yīng)用和/或系統(tǒng),現(xiàn)代測(cè)試工具提供的系統(tǒng)可視化設(shè)施功能都非常強(qiáng)大,。應(yīng)用和系統(tǒng)實(shí)體的分層示意圖如圖3a內(nèi)的靜態(tài)調(diào)用圖所示,;圖3b內(nèi)的靜態(tài)流程圖展示了整個(gè)程序模塊的控制流程。利用彩色編碼圖對(duì)于了解SOUP極有好處,。這類調(diào)用圖和流程圖只是綜合分析代碼內(nèi)使用的所有參數(shù)和數(shù)據(jù)對(duì)象的一部分優(yōu)勢(shì),。
圖3 靜態(tài)調(diào)用圖(a)和流程圖(b)以圖形的形式分別說明了代碼的結(jié)構(gòu)和邏輯。
需求管理和跟蹤已經(jīng)證明了它們?cè)谲浖_發(fā)生命周期內(nèi)的優(yōu)勢(shì),,能夠確保實(shí)現(xiàn)所有需求和所有開發(fā)成果都可以追溯到一個(gè)或多個(gè)需求,。同樣的,需求管理與跟蹤可以保證根據(jù)系統(tǒng)要求添加和驗(yàn)證SOUP項(xiàng)目,。
RTM在架構(gòu)設(shè)計(jì)和SOUP項(xiàng)目之間實(shí)現(xiàn)了可追蹤性,。由于這些項(xiàng)目都包含在源代碼內(nèi)并且現(xiàn)在需要按照IEC 62304的要求進(jìn)行系統(tǒng)級(jí)合規(guī)性測(cè)試,所以代碼驗(yàn)證就成了制造商的責(zé)任,。
大多數(shù)SOUP項(xiàng)目都不嚴(yán)謹(jǐn),,從而為系統(tǒng)集成商提高了嚴(yán)格驗(yàn)證與風(fēng)險(xiǎn)分析要求。由于SOUP驗(yàn)證非常耗時(shí),,所以開發(fā)人員一開始通常需要滿足一系列編碼標(biāo)準(zhǔn),,再逐漸采用其他規(guī)則,。雖然測(cè)試工具只辨別而不糾正代碼內(nèi)存在的違規(guī)之處和本征誤差,但是它們確實(shí)通過指出問題所在而加快了代碼糾正速度,。
IEC 62304希望醫(yī)療器械制造商評(píng)估SOUP項(xiàng)目供應(yīng)商提供的軟件異常列表,,以便確定已知異常是否會(huì)引發(fā)事件,進(jìn)而導(dǎo)致出現(xiàn)危險(xiǎn)情形,。
測(cè)試工具的靜態(tài)分析能力能夠確定異常及其對(duì)軟件系統(tǒng)的影響,。如果確定了SOUP供應(yīng)商提供的列表以外的任何其他異常,則應(yīng)告知相應(yīng)供應(yīng)商以解決問題,。
靜態(tài)分析和異常糾正完成后,,進(jìn)行動(dòng)態(tài)分析(包括系統(tǒng)、集成度和單元測(cè)試)以便驗(yàn)證SOUP項(xiàng)目的功能和結(jié)構(gòu)覆蓋率,。雖然全系統(tǒng)功能測(cè)試提供了SOUP項(xiàng)目的功能簡(jiǎn)介,,但是它不測(cè)試所有代碼路徑。測(cè)試工具確定使用過的軟件部分,,并且重點(diǎn)突出需要注意的區(qū)域,,要對(duì)這些區(qū)域進(jìn)行單元測(cè)試以便保證各個(gè)單元都能夠獨(dú)立運(yùn)行。
進(jìn)行功能測(cè)試與結(jié)構(gòu)覆蓋率分析能夠確保使用了所有代碼路徑和驗(yàn)證了多個(gè)單元之間的接口,。它還有助于確保系統(tǒng)能夠按照設(shè)計(jì)要求運(yùn)行,,即使集成了SOUP項(xiàng)目。值得注意的是,,IEC 62304要求SOUP項(xiàng)目驗(yàn)證遵循軟件規(guī)劃期間制定的集成計(jì)劃,,再一次表明IEC 62304強(qiáng)調(diào)的重點(diǎn)在于確保醫(yī)療軟件升級(jí)不會(huì)引入誤碼。
根據(jù)先前制定的測(cè)試計(jì)劃,,RTM在對(duì)SOUP項(xiàng)目進(jìn)行的各種分析之間實(shí)現(xiàn)了可追蹤性,。該測(cè)試計(jì)劃包括有待執(zhí)行的測(cè)試用例以及基于系統(tǒng)要求的預(yù)期結(jié)果。利用RTM,,項(xiàng)目經(jīng)理可以評(píng)估整合的SOUP項(xiàng)目的影響以及它們?nèi)绾斡绊懴到y(tǒng)安全,。
SOUP項(xiàng)目維護(hù)
醫(yī)療器械行業(yè)的很多意外都與醫(yī)療器械系統(tǒng)的服務(wù)或維護(hù)有關(guān),包括軟件更新和升級(jí)不當(dāng),。在這里,,SOUP項(xiàng)目還起著重要作用,,因?yàn)檫@些項(xiàng)目由不同的供應(yīng)商提供并且需要驗(yàn)證,。
在IEC 62304中,軟件維護(hù)過程和軟件開發(fā)過程一樣重要,。強(qiáng)調(diào)維護(hù)旨在抑制產(chǎn)品發(fā)布以后(如軟件維護(hù)期間)引入的高醫(yī)療器械軟件缺陷率,。
維護(hù)過程要求,制造商監(jiān)控組織內(nèi)部和用戶提供的已發(fā)布產(chǎn)品相關(guān)的反饋信息,。必須記錄和分析該反饋信息,,以便確定是否存在問題,。發(fā)現(xiàn)問題時(shí),應(yīng)編寫和分析問題報(bào)告,,以便確定SOUP項(xiàng)目是否增加了問題的嚴(yán)重性,。如果SOUP就是問題所在,則必須將該問題傳達(dá)給相應(yīng)的供應(yīng)商,,以便通過升級(jí)或補(bǔ)丁來解決問題,。
IEC 62304要求制造商制定規(guī)程,以便評(píng)估和實(shí)現(xiàn)SOUP項(xiàng)目升級(jí),、漏洞修復(fù),、補(bǔ)丁和報(bào)廢。必須分析和驗(yàn)證每個(gè)升級(jí),、漏洞修復(fù)和補(bǔ)丁,,以便確定這些升級(jí)是否引入了其它潛在的、可能導(dǎo)致出現(xiàn)危險(xiǎn)情形的因素,。一如往常,,必須確定是否需要采取其它軟件風(fēng)險(xiǎn)控制措施。
維護(hù)期間,,要求制造商分析SOUP項(xiàng)目變更,,以便確定軟件修訂是否會(huì)干擾現(xiàn)有的風(fēng)險(xiǎn)控制措施。制造商必須制定獨(dú)特的配置項(xiàng)目和版本識(shí)別機(jī)制,。對(duì)于使用的各種SOUP配置項(xiàng)目,,制造商需要記錄標(biāo)題、SOUP制造商名稱和獨(dú)特的SOUP標(biāo)志符,。該標(biāo)識(shí)符可以確定醫(yī)療器械軟件內(nèi)包含的軟件配置項(xiàng)目及其版本,。
通過采用IEC 62304的高級(jí)軟件過程,公司能夠更好地開發(fā)安全的產(chǎn)品,,避免代價(jià)高昂的召回,,確保相同的開發(fā)過程能夠鞏固維護(hù)和升級(jí)過程。