王少華,馮素梅,陳日罡,張志良
(中國核電工程有限公司,北京 100840)
由于目前市面上針對核電廠安全重要儀控系統開發的軟件較少,核電領域的用戶越來越多地關注基于工業標準IEC 61508-3[1]開發的較為成熟的軟件。但由于這類軟件開發和鑒定過程并不是嚴格依據核電質保流程[2-3],其用于執行A類功能的適用性是一個值得考慮的問題。本文通過對IEC 61508-3與IEC 60880—2009[4]這兩個標準的深入研究,并參考標準NB/T 20054—2011[5]和GB/T 20438—2017[6]進行對比分析,總結出在核電領域應用中,IEC 61508-3沒有達到IEC 60880要求的方面,或者沒有足夠詳細、足夠明確要求的方面。
針對不同安全完整性等級(safety integrity level,SIL)的軟件(依據標準IEC 61508-4,SIL是針對的整體安全功能,軟件自身沒有SIL說法。為了便于分析本文用SIL n表示軟件的系統性能力)[7],IEC 61508-3標準針對軟件生命周期所有活動提出軟件需要滿足的基本屬性,提供實現這些軟件屬性的推薦技術或措施,并且要求在設計開發之前應選擇合適的技術或措施并進行論證,以保證軟件屬性得到有效的滿足。因此,為滿足軟件的系統性能力,可能有不同的組合技術或者措施。本文不能夠分析所有的方案,僅針對IEC 61508-3中對軟件的通用要求以及對SIL3等級強烈推薦的技術要求,并將其與IEC 60880中對執行A類功能的軟件要求進行對比分析;依據對比分析結果,歸納總結出通過SIL3等級認證的軟件需要進一步嚴格要求的內容,從而應用于執行A類功能的系統。
電氣/電子/可編程電子安全有關系統(electrical/electronic/programmable electronic safety-related systems,E/E/PES)的功能安全(IEC 61508)是IEC/TC 65下分技術委員會SC65A“系統方面”的標準。該標準主要針對以E/E/PES組件構成的、用于執行安全功能的系統安全生命周期的所有活動,提出通用的方法,是一般工業級標準。基于這個基本原則,各應用領域根據特定的應用、潛在風險和危險等因素,確定各領域特有的安全要求和措施,制定行業標準,如核電方面的IEC 61513。IEC 61513遵守國際原子能機構(international atomic energy,agency,IAEA)體系下的法規標準要求,結合IEC 61508的基本框架,給出了核動力廠安全重要儀表與控制(instrumentation & control,I&C)系統的總體要求。它是IAEA有關核動力廠安全重要I&C系統的安全文件與IEC相應標準之間的接口,將其他IEC核電I&C標準體系與標準法規緊密聯系在一起[8-10]。
IEC 61508標準共有7部分。其中,IEC 61508-3是關于軟件要求方面的標準。該標準提供安全相關軟件開發過程中各階段的要求和需要開展的活動,包括為避免和控制失效所采取的技術和措施,以及軟件確認、維護和修改、支持工具等方面的要求。IEC 60880(儀表和控制系統中執行A類功能的軟件部分的需求)是被IEC 61513直接引用的TC45下分技術委員會SC45A(核反應堆儀器)的二級標準,規定了核電廠安全重要儀表和控制系統執行A類功能的計算機軟件的要求,涉及軟件的生成和文檔化過程中的每個階段,包括需求、設計和實現、驗證和確認、運行和維護、支持工具和軟件共因失效等方面的要求。它與IEC 62138、IEC 62566一起組成了各類軟件的要求,對應于核電應用領域的IEC 61508-3。
標準所屬組織結構及對應關系如圖1所示。圖1中,陰影部分是本文所重點分析的標準。

圖1 標準所屬組織結構及對應關系圖 Fig.1 Organizational structure of the standard and corresponding diagram
由于IEC 61508標準并非僅僅面向某個特定應用領域而制定,其更具有一般性:針對軟件開發活動的要求,僅闡述了需要滿足的通用屬性;對不同的SIL等級,提供了對應的推薦技術或措施,實現要求軟件屬性的有效性取決于所選擇的方案。因此,本文選取滿足SIL3等級要求的軟件,且假定開發活動充分考慮了標準所強烈推薦的技術和措施,作為本文的分析對象。而IEC 60880明確規定是應用于核安全重要儀控系統的執行A類功能的軟件,對核電領域具體的危險和風險考慮得較為具體,所采取的避免措施更有針對性。因此,該標準中的要求更具有行業特性,且對技術或措施的要求更確定。此外,IEC 61508-3并非孤立的軟件要求標準。它基于IEC 61508-1[11]和IEC 61508-2[12]標準,且多處引用IEC 61508的其他部分。因此,對于IEC 61508的標準的理解,應充分結合其他部分的要求。鑒于以上因素,本文并非針對這兩個標準作逐字逐句的對應分析,而是結合實際工程經驗,對標準作充分的消化理解,以IEC 60880為基準文件,按照軟件生命周期所開展的活動分類進行對比。本文主要分析以下幾個方面:軟件項目一般要求、軟件需求確定、軟件設計和開發過程的要求、軟件驗證和確認、系統確認的軟件方面的要求、軟件修改的要求、支持工具的要求、預防軟件共因失效的措施、預開發軟件的鑒定要求。
利用第2節所述的分析方法,對標準進行綜合分析。
軟件項目的一般要求,主要包括生命周期、軟件類型、項目管理、質保、配置管理和安全防范的要求。這些要求貫穿于整個軟件生命周期,是由具體活動保證的,IEC 61508-3以及IEC 61508-1對這方面的要求沒有本質的區別。針對安裝與運行的軟件要求,以及對因軟件引起共因故障的防御,標準中沒有明確具體的要求。因此,需要遵守IEC 60880的全部要求。以上這些方面的分析在本文中不再進行討論。本文僅針對IEC 61508不能夠完全覆蓋的、或者要求不夠詳盡、不夠具體的方面展開討論,具體分析如下。
在軟件需求方面,IEC 61508-3在運行期間能手動修改的軟件參數、軟硬件之間的約束、自監督和特殊工況的影響等方面的要求,沒有IEC 60880中的要求全面、具體。
軟件需求需要額外重點考慮的要求如表1所示。

表1 軟件需求需要額外重點考慮的要求 Tab.1 Requirements that require additional emphasis in software requirements
在此階段,與IEC 60880相比,IEC 61508-3在通信方面缺少總體性能要求、獨立性要求、確定性要求、數據傳輸完整性要求、接口要求以及冗余設計要求。
為保證設計正確的滿足需求、避免因設計錯誤引起系統性失效,應強制采取自上而下的方法,對操作系統充分的驗證;為保護安全信息,應對存儲內容采取重點保護措施。
IEC 61508-3未明確編碼規則,僅指出應遵守應用領域的編碼標準。因此,應驗證所使用的編碼標準和編碼規則是否滿足IEC 60880的要求。對預開發軟件的配置,缺少可追溯性和可維護性的要求。此外,針對面向應用的語言的新軟件的設計和開發、時間性能以及自動代碼生成,IEC 61508-3并未提出具體的要求。
軟件設計及實現所需額外重點考慮的要求如表2所示。

表2 軟件設計及實現所需額外重點考慮的要求 Tab.2 Requirements that require additional focus in software design and implementation
關于軟件驗證活動的獨立性,IEC 61508-3未對獨立程度作進一步的闡述,僅指出在應用領域的標準中可能有的規定。因此,針對實際的軟件驗證過程,應該評估參與驗證活動的人員要求以及獨立程度。
為了提高應用軟件的質量,標準推薦使用面向應用的語言來實現。針對采用這種方式實現的軟件,IEC 61508-3標準未給出針對性的要求,在遵守通用基本驗證流程的前提下,應特別考慮IEC 60880的要求。
由應用配置數據(如專用于預期應用的數據)對預開發軟件進行配置,以提供A類安全功能的情況;應對該配置的實現進行驗證,而IEC 61508-3沒有針對這方面的內容。
軟件驗證需要額外重點考慮的要求如表3所示。

表3 軟件驗證需要額外重點考慮的要求 Tab.3 Requirements that require additional emphasis in software verification
關于系統集成的軟件方面的要求,主要包括系統集成計劃的軟件相關部分、驗證、缺陷解決規程和報告的要求。IEC 61508-3針對這部分的要求應結合IEC 61508-1和IEC 61508-2。經分析,除了缺陷解決規程,其余的要求基本能夠滿足。IEC 60880對缺陷解決規程的要求更系統,詳細要求見IEC 60880的9.4節。
系統確認的軟件方面的要求,主要包括確認計劃、驗證、報告以及缺陷解決規程。這兩個標準的主要差異有:IEC 60880規定由未參與設計和實現的人員評估確認的結果,IEC 61508-3沒有明確要求;此外,IEC 61508-3也缺少對缺陷解決規程的要求,詳細要求見IEC 60880的10.4節。
關于軟件修改的申請過程,修改執行的要求,兩者要求基本一致。對于交付使用后的軟件修改,IEC 61508-3沒有提供詳盡的介紹,應按照IEC 60880的要求執行。具體要求見IEC 60880的11.3節。
針對軟件工具的要求,主要包括工具的選擇和對工具自身的要求。這兩個標準對工具的類型以及對工具的選擇要求一致。對工具自身要求包括軟件工程環境、工具要求、工具配置管理、翻譯器或編譯器以及應用數據工具的要求。在這些方面,IEC 61508-3存在未能達到IEC 60880的要求的情況。軟件工具需要額外重點考慮的要求如表4所示。

表4 軟件工具需要額外重點考慮的要求 Tab.4 Requirements for software tools that require additional focus
IEC 61508-3標準針對預開發軟件,在以下幾個方面提出要求:執行適宜性評價要求、軟件組件的配置要求以及需要滿足的質量要求。在這些要求中,重點指出預開發軟件組件應明確所提供的安全功能,以及該功能對安全相關系統安全完整性的貢獻、對于非預期功能的限制等,并提出為支持預開發軟件的集成及質量鑒定應提供的資料及要求。以上要求總體上能夠覆蓋IEC 60880關于預開發軟件質量鑒定的要求,但對具體執行細節的要求不夠詳細。因此,建議參考IEC 60880的規定執行鑒定程序。
本文通過IEC 61508-3和IEC 60880的對比分析,討論了具有SIL3資質的數字化儀控系統軟件在核電廠安全重要儀控系統中執行A類功能的適用性情況。從分析結果可知,基于IEC 61508-3開發的SIL3軟件,在軟件項目的一般要求、軟件需求、設計及實現、系統集成和確認的軟件方面,以及軟件修改、軟件工具和對預開發軟件的質量鑒定等方面,與IEC 60880整體要求基本一致。但是,對于在一些更具體和更確定性的要求方面,基于IEEE 61508-3開發的SIL3軟件存在不能完全覆蓋的情況,應對軟件作進一步補充驗證。其主要涉及以下方面:自監督,面向應用的語言的新軟件的設計、實現和驗證;預開發軟件的質量鑒定、配置和驗證;系統集成和確認過程中缺陷處理規程;軟件工具的評價和配置管理,交付運行后軟件的修改。此外,IEC 61508-3針對安裝與運行的軟件,以及避免軟件共因故障的措施這兩個方面,沒有明確詳盡的要求。因此,應對軟件按照IEC 60880的全部要求進行補充驗證。