樊曉東
(國核工程有限公司,上海 200233)
三代核電的代表堆芯APl000系列采用非能動安全理念,通過簡化電廠配置,降低對能動裝置的需求,進一步提高了核電廠的安全性。全廠唯一的安全級儀控系統(tǒng)—保護和安全監(jiān)測系統(tǒng)(PMS)采用全數(shù)字化儀控平臺,簡化了控制邏輯,提高了集約化、智能化水平。為進一步提高核電運行的安全性、可靠性及經(jīng)濟性,核電廠儀控系統(tǒng)的主流趨勢是從模擬系統(tǒng)向數(shù)字系統(tǒng)過渡。數(shù)字化儀控系統(tǒng)由于硬軟件集成度高,系統(tǒng)質(zhì)量驗證的難度大為提高。其中軟件準確性、可靠性保證主要依靠的是貫穿整個安全級軟件生命周期的質(zhì)量管理,主體工作為獨立驗證與確認(IV & V)。
以AP1000保護與安全監(jiān)測系統(tǒng)為例,核電廠數(shù)字化保護系統(tǒng)實現(xiàn)反應堆事故停堆功能、專設安全觸發(fā)功能以及1E級數(shù)據(jù)處理功能。安全級儀控系統(tǒng)的軟件用于驅(qū)動硬件實現(xiàn)核電廠安全功能。根據(jù)設計要求,為保證可以對軟件功能進行可靠驗證,保護與安全監(jiān)測系統(tǒng)中運行的軟件必須采用明確的模塊化功能結構,基于安全功能單元實現(xiàn)。為了便于驗證與測試,每一個安全功能單元內(nèi)部按照數(shù)據(jù)處理的不同邏輯以子模塊的形式劃分,一般情況下,每一個安全功能單元都要經(jīng)過信號輸入、初步處理、表決邏輯、優(yōu)先級選擇及數(shù)據(jù)控制等幾個步驟,這些都需要通過軟件來實現(xiàn)。軟件是數(shù)字化儀控系統(tǒng)相較基于模擬技術實現(xiàn)的儀控系統(tǒng)的最大不同。軟件錯誤僅靠系統(tǒng)集成后的外部功能測試是難以被完全識別的,因而軟件設計者必須關注軟件開發(fā)過程中的質(zhì)量控制,與整個軟件開發(fā)過程緊密結合、貫穿軟件全生命周期的獨立驗證與確認活動是保證軟件功能完備、具有高可信度、高質(zhì)量水平的重要手段。
在基于核質(zhì)保體系的管理框架下,針對安全級軟件的IV & V要求嚴格按照既定程序?qū)浖ο筮M行質(zhì)量控制,是平行于整個軟件開發(fā)工作中的長期獨立的任務。IV & V工作必須覆蓋軟件設計、開發(fā)、測試、維護整個生命周期,以驗證符合性且排除潛在問題,涵蓋從最初的軟件定義到后期的維護升級的全程,并且需要同時考慮軟件本身以及其與整個系統(tǒng)的集成。
保護與安全監(jiān)測系統(tǒng)是在AP1000核電廠中唯一的安全級系統(tǒng),集成了電廠所有的安全功能的控制功能,直接關系到整個核電廠的安全。原則上,軟件開發(fā)包括IV & V活動必須遵循我國核安全法規(guī)相關規(guī)定以及被其背書的行業(yè)標準,這意味著每項具體的V & V活動均需對照相應的要求進行全面策劃并精準執(zhí)行。我國核安全法規(guī)HAF102中針對核安全級軟件的開發(fā)明確提出了獨立驗證與確認要求,并在核安全法規(guī)配套的導則HAD102第16分卷中提供了指導性的參考模型。在實際運用中,HAD102/16因缺乏具體的實施細則指導,實踐性較差,因此國內(nèi)外廠家在開展軟件IV & V活動過程中更多是使用成熟的行業(yè)標準,如IEC 60880—2006以及IEEE 1012—2004等。在AP1000安全級儀控系統(tǒng)軟件開發(fā)過程中,相應的IV & V活動參照IEEE體系開展。
獨立性是安全級軟件IV & V工作的前提,只有確保相關活動在技術、財務以及行政上的獨立性,才能使IV & V發(fā)揮作用,給出客觀有效的結論。AP1000儀控系統(tǒng)供貨商在軟件開發(fā)實踐中組建了在行政、財務和技術方面(指的是測試技術)獨立于研發(fā)部門的V & V團隊,以實現(xiàn)IEEE標準中對IV & V獨立性的要求。事實上,IV & V團隊在開展相關工作時需要與設計研發(fā)團隊緊密合作,然而IV & V獨立性要求又使得V & V團隊必須與研發(fā)團隊在業(yè)務上進行隔離,因此相關管理架構的制定一般需要由企業(yè)高級別管理者直接介入。
為了規(guī)范數(shù)字化核電廠安全級系統(tǒng)軟件的獨立驗證與確認工作,美國核管會通過引用IEEE的相關標準推出了一些可被用于開發(fā)安全級軟件的過程模型。AP1000保護與安全監(jiān)測系統(tǒng)(PMS)的軟件開發(fā)過程應用了其中的瀑布模型。相應的,其IV & V活動參照IEEE 1012—1988標準中的各項要求開展。瀑布模型將軟件系統(tǒng)開發(fā)的生命周期過程分為定義階段、需求階段、設計階段(也可以進一步拆分為概念設計、基礎設計和詳細設計)、開發(fā)階段、測試階段以及運維階段。此模型通過將復雜的軟件開發(fā)過程劃分為承上啟下、互相作用的幾個階段,以便開發(fā)團隊根據(jù)不同的階段制定開發(fā)計劃以及相對應的IV & V計劃,提高了管理效率。
項目定義階段又稱項目啟動策劃階段,軟件開發(fā)項目定義階段主要工作內(nèi)容為項目范疇定義、初步項目開展計劃以及確定初始需求基線。從IV & V的角度來看,此階段的主要任務是確定IV & V工作范圍以及初步開展計劃,主要有以下幾個工作內(nèi)容:①通過項目大綱確定IV & V的工作內(nèi)容,制定軟件IV & V計劃;②確立IV & V團隊與項目管理團隊的聯(lián)絡接口以及管理關系;③審核初步需求基線,確定所有制定的系統(tǒng)要求與用戶的需求文件(系統(tǒng)規(guī)格書)相符,所有的要求足夠明確,可以通過測試或分析來驗證。
需求核對階段開展的基礎是系統(tǒng)需求文件的發(fā)布,安全級軟件項目需求文件一般以系統(tǒng)規(guī)格書的形式出現(xiàn)。其V & V活動主要是驗證設計團隊根據(jù)上級系統(tǒng)需求文件制定,細化的各類技術要求文件是否覆蓋了系統(tǒng)設計規(guī)格書中所有的需求。從宏觀層面看,軟件需求包括軟件功能邏輯需求、硬件對軟件需求和軟件集成需求。在開展此階段工作時開發(fā)者需確認這3方面的需求是否滿足系統(tǒng)需求說明,同時也要確保識別的需求可以通過某種方法進行有效的驗證。因此需求驗證的關鍵任務之一是要制定出一個可追溯的技術要求體系,建立所有技術要求與上級需求間的映射關系,從而便于驗證與確認工作的開展。
系統(tǒng)設計階段的軟件IV & V工作主要是針對各模塊的概要設計與詳細設計的驗證,通過審查、評估等活動,確認軟件的設計實現(xiàn)了需求核對階段所制定的軟件功能要求,這不僅包括了功能性需求,同時也包括非功能性需要。在針對安全級軟件設計文件進行審核的過程中,除了可以采用軟件設計規(guī)范以及系統(tǒng)技術要求規(guī)范書進行審查外,還需依據(jù)核領域的國家法規(guī)和行業(yè)標準進行審查,以保證所設計的軟件可以實現(xiàn)既定的核安全相關功能。
軟件開發(fā)IV & V階段的目標是驗證軟件設計是否準確地轉(zhuǎn)化為成品代碼、是否全面實現(xiàn)功能,同時還要核實是否引入了額外的可能會影響到所需求功能的代碼。在此階段IV & V活動的常見的實現(xiàn)形式為靜態(tài)分析和人工代碼走查,以確保源代碼準確、有序及可被測試等特性,同時也需要對可追溯性進行驗證。在針對代碼進行審查后,需要根據(jù)每一項功能需求制定系統(tǒng)集成測試的測試案例以及相應的接受準則。
此階段IV & V工作的重點是確認所有既定的功能要求已得到實現(xiàn),并通過前一階段制定的測試案例以及驗收準則進行驗證,即通常所說的系統(tǒng)集成測試。在集成測試過程中,一般通過獨立運行每一個功能邏輯通道來驗證軟件與相應的硬件可以可靠實現(xiàn)所要求執(zhí)行的功能。在驗證與確認過程中,IV & V需關注軟件對需求的符合性、覆蓋性,即軟件可以正確地實現(xiàn)系統(tǒng)需求,而又不引入新的不確定性。
維護升級階段的V & V活動主要針對的是軟件投用后的維護工作。軟件開發(fā)工作的結束并不意味著軟件生命周期的結束,由于功能擴展需要、設計變更需要,軟件即使在開發(fā)完成投運后還是可能會有大量的修改或升級。此階段IV & V的工作主要是確認軟件的修改不會影響以往軟件IV & V相關工作的有效性,同時對軟件中新的功能要素進行補充的IV & V。
在安全級軟件研發(fā)過程中,審查、分析和測試是IV & V的3種主要方法。
對軟件研發(fā)過程各階段產(chǎn)生的文檔以及產(chǎn)品的審查,主要包括各階段任務輸入輸出文件。常見的審查對象如系統(tǒng)需求規(guī)范書、軟件功能說明書、需求矩陣、第三方工具認證文件、設計規(guī)范、代碼文本、測試大綱、測試規(guī)程、工廠測試報告、回歸分析報告、階段總結報告,任務報告等。審查工作的有效性取決于IV & V團隊的能力與經(jīng)驗,常用的手段為核對表。IV & V團隊中高級別管理人員會在核對表中逐項列出要求審查人員關注的要素,并對審查結果進行復核。核對表適用于所有IV & V任務。
(1)需求跟蹤。需求跟蹤分析的作用是確保所有較低層次的需求(含延伸需求、隱性需求和集合需求)和要求與高一層次的需求相對應,確保所有上級需求均通過低層次的要求的滿足得到了實現(xiàn)。需求可跟蹤性分析一般通過需求跟蹤矩陣的工具實現(xiàn),通過在矩陣中記錄各個階段的需求以及其與需求源之間的關系。
(2)問題跟蹤系統(tǒng)。問題跟蹤系統(tǒng)(RITS)是一種類似不符合項管理流程的工具,用于記錄與跟蹤所有在IV & V審核分析以及系統(tǒng)測試過程中發(fā)生的問題,包括問題整改以及關閉驗證。軟件研發(fā)過程中產(chǎn)生的問題從本質(zhì)上說就是需求的不滿足。問題跟蹤系統(tǒng)與需求跟蹤矩陣作用互補,主要用于軟件開發(fā)后期及測試階段,對尚未得到滿足的需求以及技術要求進行跟蹤處理。
(3)風險/影響分析。風險/影響分析是對某一階段或任務進行定性分析、定量分析、評價和規(guī)劃風險應對,避免軟件開發(fā)前期過程中的潛在隱患進一步擴大進而演變成后期無法解決的問題,及時地采取保守措施或是建立監(jiān)控機制,從而有效管控風險。風險/影響分析矩陣是最常用的工具,目前已有較多的第三方軟件提供具備相應功能的管理平臺。風險/影響分析結論是軟件開發(fā)決策以及項目管理的重要參考依據(jù)。
用于實現(xiàn)特定功能的軟件都需要通過測試進行驗證。對于安全級軟件,其測試必須覆蓋所有的功能分支,即測試案例應保證使每一個軟件模塊內(nèi)的所有分支均至少得到一次驗證。另外,除了針對功能進行的測試外,也需要設計一定的框架測試以確保程序中不包含不需要的額外功能,并對非功能性的軟件要求(如穩(wěn)定性)進行驗證。系統(tǒng)測試采用從下至上的方式。先進行低層次部件級測試,然后再逐層開展高一級的測試。
(1)軟件子模塊測試。軟件子模塊測試是對系統(tǒng)中的一個處理器或控制節(jié)點的軟件功能進行的獨立測試。軟件子模塊測試主要目的是根據(jù)軟件子模塊的單一功能要求對一定范圍內(nèi)的代碼集合進行功能測試,包括軟件模塊響應時間,確保底層的功能符合性。
(2)通道集成測試。通道集成測試在硬軟件集成后開展,通常以一組機柜或單一功能通道為單位,先測試每個機柜,然后將執(zhí)行某一類特定功能回路相關的所有機柜連接起來進行整個功能通道的測試。機柜的輸入和輸出間關系是通道集成測試對象,包括一定范圍內(nèi)系統(tǒng)內(nèi)部的通信、通道級的響應時間等。
(3)系統(tǒng)集成測試。系統(tǒng)集成測試在儀控系統(tǒng)集成完成后開展,對所有機柜以及功能通道之間的通信、數(shù)據(jù)傳遞、控制邏輯、冗余特性、負荷裕度、容錯性能、魯棒性進行整體驗證,并測試系統(tǒng)級應用整體響應時間、人機接口界面(包括操控性)與外部儀控系統(tǒng)的接口通訊等。
不同于常規(guī)核電設備,安全級儀控系統(tǒng)軟件需要通過專門的獨立驗證與確認活動來確保軟件質(zhì)量。對核安全級軟件IV & V,核電技術領先的發(fā)達國家已建立了較為完善的法規(guī)標準體系、具備較高的可操作性,因此深入研究國外現(xiàn)有成熟的IV & V管理體系,并參照制定適合我國的核電廠數(shù)字化儀控系統(tǒng)IV & V標準體系具有十分重要的現(xiàn)實意義。