余俊輝 何 鵬 霍雨佳 陳 靜
(中國核動力研究設(shè)計院 設(shè)計所,四川 成都 610041)
先進堆芯測量系統(tǒng)作為中國自主化三代核電站的一個關(guān)鍵系統(tǒng),其中一個重要部分,水位溫度測量部分簡稱ICCMS,需要在事故及事故后執(zhí)行燃料組件出口溫度及壓力容器水位測量功能,系統(tǒng)所使用的用戶軟件質(zhì)量將直接影響到系統(tǒng)能否正常執(zhí)行其必要的安全功能,而目前軟件V&V是公認的保證軟件安全性與可靠性的有效手段。因此在一個安全級軟件的開發(fā)過程中,需要根據(jù)相關(guān)法規(guī)和標準的要求,根據(jù)系統(tǒng)用戶軟件的特點,制定合理的V&V方案和技術(shù)路線,來確保軟件的質(zhì)量滿足要求。
數(shù)字化系統(tǒng)與傳統(tǒng)模擬系統(tǒng)的故障失效機理有很大不同,大部分軟件的故障是在設(shè)計階段引入的,因此軟件的故障具有潛在性。另外,由于軟件是無法證明不含錯誤的,因此軟件的質(zhì)量只能靠嚴格的開發(fā)過程和必要的驗證和確認(V&V)來保證。
IEEE、IAEA、和IEC等機構(gòu)發(fā)布了多個標準對軟件V&V的要求進行了說明,IEEE std7-4.3.2作為IEEE Std 603的擴展和補充,經(jīng)過NRC的確認成為了安全級系統(tǒng)軟件標準。IEC60880是國際公認的安全級軟件的設(shè)計標準,其中部分涉及V&V的基本要求和一般方法。IAEA從質(zhì)量保證、安全設(shè)計和軟件要求三方面層層遞進說明了保證軟件質(zhì)量的重要性,同時其也聲明IAEA NS-G-1.1的內(nèi)容與IEEE std 1012在內(nèi)容上是一致的。IEEE1012關(guān)于V&V的要求較為完整,其根據(jù)軟件的重要性程度分為了4個等級。
我國目前還沒有發(fā)布關(guān)于安全級軟件V&V的相應(yīng)標準,但已將IEEE7-4.3.2等效為國家推薦標準GB/T13629,將IAEA NS-G-1.1等效為我國核安全導(dǎo)則HAD 102/16,因此,也就承認IEEE1012作為V&V的標準。
在核電廠安全級軟件V&V活動中,國內(nèi)廣泛采用的是IEEE Std 1012,根據(jù)該標準的要求一個完整的V&V應(yīng)該包括獲取階段V&V、概念階段V&V、需求階段V&V、設(shè)計階段V&V、實現(xiàn)階段V&V、測試階段V&V和安全階段V&V。其中關(guān)鍵階段包括了需求、設(shè)計和實現(xiàn)三個階段。
其中需求階段V&V需要明確軟件的具體需求,通過驗證來明確軟件功能、軟件外部接口、維護要求和性能等要求。設(shè)計階段V&V要求通過評審軟件設(shè)計文件,對系統(tǒng)功能轉(zhuǎn)化為成軟件設(shè)計體系和部件的過程進行嚴格的驗證和確認,以此來保證軟件設(shè)計的正確性、一致性、完成性等。實現(xiàn)階段V&V要求對設(shè)計轉(zhuǎn)化為軟件代碼或軟功能圖進行驗證和確認,同時對軟件進行可追蹤性分析。
先進堆芯測量系統(tǒng)屬于核電廠事故后監(jiān)測系統(tǒng)的一部分,為安全級系統(tǒng),對反應(yīng)堆的安全運行具有重要的作用。該系統(tǒng)用戶軟件的開發(fā)環(huán)境采用圖形化的安全級軟件開發(fā)工具SCADE進行開發(fā),該系統(tǒng)的主要功能如下:
(1)處理來自燃料組件出口的熱電偶溫度信號,計算出平均溫度、最高溫度和區(qū)域溫度最高差值等信息。
(2)根據(jù)堆芯溫度以及反應(yīng)堆壓力計算堆芯過冷裕度。
(3)堆芯水位信號的采集和處理,并給出關(guān)鍵點水位的報警信息。
(4)系統(tǒng)故障監(jiān)測和故障報警。
在進行具體的V&V活動之前首先要了解軟件的設(shè)計特點,先進堆芯測量系統(tǒng)用戶軟件采用的是SCADE軟件,是一款圖形化的安全級軟件開發(fā)工具,軟件在設(shè)計完成后會通過經(jīng)過安全級驗證的工具模塊自動的將SCADE模型轉(zhuǎn)換為C代碼,避免了手工編碼。
關(guān)于軟件級別的劃分,對應(yīng)于IEC 60880應(yīng)劃分為A級,即核電廠安全重要儀表和控制系統(tǒng)執(zhí)行A類功能的計算機軟件,而對應(yīng)于標準IEEE 1012應(yīng)劃分為4級,即該級別軟件必須正確執(zhí)行其功能,否則會導(dǎo)致嚴重的后果且無法緩解。
根據(jù)IEEE Std 1012-2012的要求,在V&V正式活動開始前要制定軟件V&V計劃(SVVP),該文檔是開展各項V&V活動的依據(jù)和指南,其中主要包括V&V活動組織結(jié)構(gòu)、V&V具體方法、過程,V&V過程中使用的工具等。圖1給出了SVVP中定義的本系統(tǒng)用戶軟件的V&V模型。
圖1 用戶軟件V&V模型
需求階段V&V活動主要是從準確性、完整性、可讀性和可追溯性等方面對需求文檔進行驗證,關(guān)鍵是要驗證軟件需求是否完整和準確的覆蓋了系統(tǒng)設(shè)計時分配給軟件的功能。本階段V&V活動主要是采取如文檔審查和評審等人工驗證(Verify)的手段,并且通過功能矩陣來保證系統(tǒng)功能的全覆蓋。
需求階段V&V活動的輸入文件包括了 《ICCMS數(shù)據(jù)處理柜用戶軟件研制任務(wù)書》和《ICCMS數(shù)據(jù)處理柜用戶軟件需求說明書》輸出文件包括了V&V問題報告單、《ICCMS數(shù)據(jù)處理柜用戶軟件V&V階段報告(需求)》和V&V獨立驗證模型。
軟件設(shè)計的目的是將需求信息轉(zhuǎn)換為軟件層次的實現(xiàn),設(shè)計階段V&V主要是證明軟件需求是否被正確完整體現(xiàn)在軟件設(shè)計中,確保軟件的設(shè)計能夠正確實現(xiàn)系統(tǒng)的功能需求和性能需求。
設(shè)計階段V&V活動的輸入文件包括 《ICCMS數(shù)據(jù)處理機柜軟件需求說明書》、《ICCMS數(shù)據(jù)處理機柜軟件設(shè)計說明書》和V&V獨立驗證模型。輸出文件包括了V&V問題報告單和《ICCMS數(shù)據(jù)處理柜用戶軟件V&V階段報告(設(shè)計)》。
另外,在本階段V&V團隊與設(shè)計團隊分別根據(jù)需求文件分別開發(fā)了設(shè)計模型和V&V模型,該開發(fā)過程采用的是背靠背的方式。主要驗證手段與需求階段類似,但是不同的是需要根據(jù)SCADE自身的編碼規(guī)則對軟件進行審查,以評估其是否符合編碼規(guī)范。
實現(xiàn)階段V&V的主要活動是軟件功能測試、模型對比測試以及覆蓋率測試。軟件實現(xiàn)階段的主要內(nèi)容是進行軟件的功能測試,,其主要目的是確認軟件實現(xiàn)的功能與上游設(shè)計輸入的一致性。因此在這一階段的主要任務(wù)是設(shè)計測試用例(Test Case),本項目針對每一個功能設(shè)計了一組測試用例,通過測試用例的測試結(jié)果來說明軟件實現(xiàn)的功能是否一致。
模型對比測試,是將相同的Test case應(yīng)用到設(shè)計模型和V&V模型中,將兩個模型的輸出結(jié)果進行對比,對于輸出結(jié)果不一致的情況進行分析并形成報告單。最后對軟件進行覆蓋率測試,保證軟件的測試達到100%全路徑覆蓋。
標準中關(guān)于V&V只是一個總體的要求,由于軟件不可能進行無窮盡的測試,因此只能根據(jù)具體軟件開發(fā)過程以及軟件自身的特點來制定盡可能合理的V&V計劃。本系統(tǒng)用戶軟件的V&V活動制定過程中除了滿足標準的相關(guān)要求外,還形成了一些獨有的V&V方法和策略,對提高本系統(tǒng)應(yīng)用軟件的質(zhì)量起到了積極的作用。
在需求階段,經(jīng)過V&V團隊驗證的軟件需求規(guī)格書是軟件設(shè)計階段的唯一正式設(shè)計輸入。軟件設(shè)計團隊和V&V團隊均以該文件為輸入根據(jù)分別建立設(shè)計模型和V&V模型,其中設(shè)計模型為最終用戶軟件所使用的模型,而V&V模型只用來定義預(yù)期的輸出。在設(shè)計階段要對兩個模型進行人工比對,對比后兩個模型不一致的部分可以兩類,一類問題主要是由雙方對需求規(guī)格書的理解不一致或者雙方的人因錯誤造成的,這類問題必須進行對錯誤的模型進行修改。另一類是兩個模型使用的基礎(chǔ)模塊不一致,但通過人工驗證認為其實現(xiàn)的功能是一直的,對于這類問題則不需要修改。在實現(xiàn)階段需要將相同的測試用例分別輸入兩個模型中,最后對輸出結(jié)果進行核實,圖2是兩個模型輸出一致的情況,從圖中可見兩個模型的輸出一致且重合成為一條線。圖3是兩個模型輸出不一致的情況。
圖2 輸出曲線一致
圖3 輸出曲線不一致
通過上述描述可知,背靠背的驗證方式對提升軟件的質(zhì)量存在明顯的優(yōu)勢,首先兩個團隊獨立開發(fā)模型,這種多樣化的設(shè)置可以大大避免人因的共模錯誤,另外雙方通過背靠背的方式對需求文件進行解讀,視同為對需求文件進行了二次驗證,需求錯誤的減少可以將軟件錯誤處理在萌芽階段,很好的提高了V&V的效率。
雖然在標準中對于圖形化軟件的全路徑覆蓋測試并沒有詳細的要求,但是全路徑覆蓋測試仍然是評估軟件質(zhì)量以及通過核安全當局審查的有效手段,但是由于圖形化軟件的固有特點,人工很難完成對于軟件的全路徑覆蓋測試。
借助于SCADE的MCDC工具,本軟件V&V活動中實現(xiàn)了全路徑的覆蓋測試,該工具是基于MC/DC覆蓋率準則制定的,其定義為:每個入口點和出口點至少要喚醒一次,判定中每個條件的所有可能結(jié)果至少出現(xiàn)一次,每個判定本身的所有可能結(jié)果也至少出現(xiàn)一次,并且每個條件都能單獨影響判定結(jié)果?;谠摐蕚?cè),本系統(tǒng)用戶軟件的測試覆蓋率達到了89.89%(見圖4),其中剩余的10.1%是常數(shù)節(jié)點相關(guān)部分無需覆蓋,因此可以認為達到了100%全覆蓋測試。
圖4 覆蓋率測試結(jié)果
軟件是否完整、正確的反應(yīng)了系統(tǒng)需求規(guī)格書中規(guī)定的軟件功能是軟件V&V活動的重要內(nèi)容。本項目采取了基于基線的功能追蹤矩陣對軟件功能進行驗證。基本思路是從需求階段開始建立功能代碼,以該代碼為唯一功能識別符在后續(xù)的設(shè)計階段、實現(xiàn)階段以及集成測試階段對相關(guān)功能進行追蹤。
唯一功能識別符的采用以及功能矩陣的應(yīng)用能夠保證系統(tǒng)功能完整的體現(xiàn)在軟件中,另外在背靠背的開發(fā)過程中能夠保證雙方對功能驗證的一致性。
安全級軟件的開發(fā)過程需要有相應(yīng)的V&V流程來保證軟件的質(zhì)量與可靠性,這已經(jīng)是業(yè)內(nèi)以及核安全監(jiān)管當局的共識。通過先進堆芯測量系統(tǒng)用戶軟件V&V活動的進行,一套完整的安全級軟件V&V流程被建立。本文在分析相關(guān)V&V標準要求的基礎(chǔ)上,對先進堆芯測量系統(tǒng)的V&V流程進行了討論。該流程在每個階段嚴格遵守相關(guān)的法規(guī)和標準,在不同階段均開展了相應(yīng)的V&V活動。同時,根據(jù)軟件自身的特點,通過背靠背開發(fā)、全路徑覆蓋測試和功能追蹤等方法的應(yīng)用對先進堆芯測量系統(tǒng)軟件進行了完整的V&V活動,有效的保證了軟件的質(zhì)量和可靠性。
[1]IEEE Std 1012,IEEE Standard for Software Verification and Validation[S].
[2]劉真,孫永濱,李季學(xué).核電廠數(shù)字化安全儀控軟件的V&V實現(xiàn)[J].核科學(xué)與工程,2010,12,30-13.
[3]楊岐.核電廠數(shù)字化儀表與控制系統(tǒng)的應(yīng)用現(xiàn)狀與發(fā)展趨勢[J].核動力工程,1998,19(2)-129.
[4]何正熙,李白,吳峻,等.秦山二期擴建工程堆芯冷卻檢測系統(tǒng)設(shè)計[J].核動力工程,2008,29(1):5-9.