丁义行 谷鹏飞 毛从吉 王升超
(环境保护部核设施安全监管司1,北京 100035;深圳中广核工程设计有限公司2,广东 深圳 518172;环境保护部核与辐射安全中心3,北京 100082)
从20 世纪70 年代开始,数字化仪控系统逐渐替代传统的模拟仪控系统,数字化仪控系统不仅在常规工业领域得到了广泛应用,在核电厂安全级仪控系统中应用数字计算机亦有近10 年的历史。数字化仪控系统是以计算机、网络通信为基础的分布式控制系统,引入和开发了面向状态的诊断技术、符合人因工程要求的人机界面和先进的主控室等现代技术,还采用了系统化的控制室功能分析和分配等设计技术以及面向核电厂运行安全状态的操作员支持系统等。数字化仪控系统主要具有以下优点:①控制精度高,运算能力强;②数据传输可靠性高;③易于扩展和配置;④便于维护和管理;⑤设备功能集成度高。目前,核电厂安全级仪控系统中广泛采用软件控制逻辑,在现场仪表和执行器中采用内置微处理器,通过软件实现数字化测量和控制也成为一种趋势。
数字化仪控系统的广泛应用大大提高了核电厂的运行和维护经济性,但是与模拟仪控系统相比,数字化仪控系统设备也给核电厂的安全运行带来了一些新的风险。例如数字化硬件设备的抗干扰问题以及软件共模故障等方面的问题,尤其是软件的质量和可靠性问题已成为数字化仪控系统在核电厂广泛应用过程中必须要解决的问题。
核安全法规HAF 102(2004)对基于计算机的系统在安全重要系统中的应用以及安全级软件设计开发方面作了相关要求,其包含了对应标准的制定实施和为了保证软件质量和可靠性所应采取的技术手段。导则HAD 102/16(2004)是核电厂基于计算机的安全重要系统软件在生命周期的各个阶段。为了安全论证提供收集证据和编制文件的指导性标准文件,其通过技术考虑、安全管理要求的应用和项目计划来为系统软件的开发奠定基础;分别从计算机系统需求和设计、软件的需求设计和实现两个方面详细介绍了系统设计和软件开发所应遵循的总则性要求,并提供了相关建议。核安全法规HAF 003(1991)及对应导则HAD 003/06(1986)则主要对安全级物项的质量保证作了相关要求。由于我国与核电厂安全级数字化仪控系统软件相关的标准主要是参考国际上核电发达国家(如美国)的标准所制定,比如GB/T 13629(2008)就是参考美国IEEE 7 -4.3.2(2003)转化而来,因此,根据核安全法规导则对核电厂安全级数字化仪控系统软件设计开发所作出的要求,主要对国际上或其他发达国家与安全级数字化仪控系统软件的相关标准及导则进行研究,进而对比分析了与软件生命周期相关的标准及导则。此外,还对贯穿于软件全生命周期、能有效保证软件安全性和可靠性的V&V 活动的相关标准及导则进行了较为详细的介绍,为安全级软件执行体系建立提供参考。本文对核电厂安全级数字化仪控系统软件相关的标准研究脉络如图1 所示。
图1 安全级数字化仪控系统软件相关标准Fig.1 Software-related standards for safety level digitized I&C systems
核电厂安全级数字化仪控系统与传统的模拟仪控系统最根本的差异就在于软件的使用,安全级数字化仪控系统执行其安全功能所需要的软件称为安全级软件(1E 级)。安全级数字化仪控系统执行其安全功能的可靠性依赖于安全级软件的可靠性。
核电厂安全级数字化仪控系统中所包含的软件,按照其所执行的功能可以分为系统软件和应用软件。系统软件是指仪控系统计算机或设备中运行的、用于支持计算机系统及相关应用软件(程序)运行和维护的软件,应用软件是指被设计来满足用户特定需求的软件[1]。
传统的仪控系统硬件可以通过试验、检查等手段验证其设计、质量和可靠性,而数字化仪控系统软件的可靠性和安全性主要依靠制定严密、完整的软件开发计划及过程管理大纲,严格按照经批准的管理程序实施软件开发过程和软件V&V 过程来保证。在R. G.1.152(2006)中就明确提出,为保证安全级系统软件质量,必须具备质量保证计划以及开展软件V&V[2]。软件V&V 是贯穿于软件生命周期全过程的、用于确认软件生命周期各个阶段的活动输出满足此活动的要求、系统可以执行其预期的功能且满足用户需求的一组系统化、工程化的活动[1]。
核电厂安全级数字化仪控系统的软件V&V 是保证安全级数字化仪控系统安全性和可靠性的必要环节,通过V&V 全流程验证的软件才能确保安全级数字化仪控系统的安全性和可靠性,安全级数字化仪控系统才能被允许应用到核电厂工程。目前,美国、法国等核电发达国家,已根据各自的核电技术特点、工业发展水平、理论研究情况、实施经验积累等,建立起了适合其国家核电建设过程中安全级数字化仪控系统软件V&V 活动的法规标准;国际原子能机构及相关标准组织在各国法规标准研究的基础上,也形成了一系列软件V&V 相关的法规标准体系。而我国与安全级数字化仪控系统软件相关的法规标准建立时间较晚,主要参考上述国家组织的标准转化建立,但体系不统一,内容还不够完善。因此,研究国际上成熟完善的相关标准,建立安全级数字化保护仪控系统软件开发和V&V技术标准体系架构和实施方法、制定适合我国国情的安全级数字化仪控系统软件的安全审查与评价规范,是推进我国核安全级DCS 产品自主研发工作和打破国外对我国在役和新建核电厂安全级数字化仪控系统(DCS)产品垄断的关键。
IEC 12207(1995)具有很大的适用性,其在很高层次上描述了软件的生命周期,且具体叙述了软件生命周期所必须包含的最小执行集,但没有详细阐明在软件生命周期的各个阶段该如何去开展相应的任务和活动。
在IEEE 7 -4.3.2(2010)和IEEE 1012(2004)中,均引述了IEC 12207(1995)中所描述的软件生命周期,如图2 所示。
其具体分为采购过程、供货过程、开发过程(该过程包括概念阶段、需求阶段、设计阶段、实现阶段、集成测试阶段、安装调试阶段)、运行过程、维护过程、组织过程和其他支持性过程(如文档编制、配置管理、质量保证、联合评审等)[3],并针对上述软件生命周期过程提出了软件生命周期活动和任务的执行准则。其中,管理过程及相关的管理V&V 活动和任务贯穿于软件整个生命周期,在软件生命周期的各个阶段均需完成相关的V&V 活动和任务。这些V&V 活动和任务具体该如何执行以及执行过程中的一些关注项,将在下面章节中提到。
图2 IEC 12207(1995)软件生命周期过程Fig.2 The software life cycle process in IEC 12207(1995)
此外,在IEEE 1074(1995)中描述了开发软件的生命周期过程,并提供了构成开发软件生命周期过程的系列活动。美国核管会通过R. G. 1.173(1997)认可了IEEE 1074(1995)中所描述的软件生命周期过程的开发方法和过程,但是在R.G. 1.173(1997)中也特别指出美国核管会不认可IEEE 1074(1995)中的附件。附件分别介绍了4 种软件生命周期过程的筹划、软件项目管理的定制模板以及过程之间的相互关系[4]。
在R.G. 1.173(1997)中,美国核管会关于安全级软件的生命周期过程提出了若干要求,主要包括:①按照IEEE 1074(1995)进行软件生命周期过程开发时,所要求的输入信息、生命周期活动和输出信息描述中应该说明适用的法规、设计基准和导则;②按照IEEE 1074(1995)进行软件生命周期过程开发时,应该执行该标准中所有规定执行的活动;③应该在软件生命周期的各个阶段有计划、有记录地执行软件安全性分析[5]。
在相关的软件工程标准和文献中,提出了多种软件生命周期模型,典型模型有瀑布模型和螺旋型模型。瀑布模型将软件生命周期过程的各阶段要执行的活动任务通过一定的顺序连接,形成如同瀑布水流的台阶式步骤流程,上一步骤作为下一步骤的输入,这就使得相邻两个步骤流程联系紧密。该模型用工序将问题简化,将软件的功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。螺旋型模型是一种演化软件开发过程模型,它兼顾了快速原型迭代的特征以及瀑布模型的系统化与严格监督。该模型的最大特点在于引入了其他模型不具备的风险分析,使软件在无法排除重大风险分析时有机会停止,以减少损失。同时,在每个迭代阶段构建原型是螺旋模型用以减小风险的途径。需要特别说明的是,在R.G. 1.173(1997)和IEEE 1074(1995)中均没有要求或推荐某种特定的软件生命周期模型用于开发安全级软件的生命周期。在NUREG 0800(2007)-BTP14 的详细技术见解中,美国核管会强调,软件开发方应该选择适当的软件生命周期模型,安全级软件的开发过程应该按照事先确定的软件生命周期模型执行各项活动和任务[6]。尽管基于不同模型的安全级软件生命周期在生命周期过程中的活动定义和活动执行的顺序方面有所差异,但是不同生命周期中所进行的活动类别是基本一致的。这些活动类别包括概念活动、需求活动、设计活动、实现活动、集成测试活动、安装活动、调试活动以及运行和维护活动等。
对于安全级软件生命周期开发的适用标准,推荐使用IEEE 1074(1995)中所描述的方法,同时还应当满足美国核管会R. G. 1.173(1997)中的相关规定。另外,鉴于IEEE 7 -4.3.2(2010)和IEEE 1012(2004)中均引述了IEC 12207(1995)中所描述的软件生命周期,因此推荐采用该软件生命周期的概念。即软件生命周期分为采购过程、供货过程、开发过程(该过程包括概念阶段、需求阶段、设计阶段、实现阶段、集成测试阶段、安装调试阶段)、运行维护过程以及管理等支持性过程,在各个生命周期过程需完成IEEE 1012(2004)所规定的V&V 活动和任务。
在软件生命周期的各个阶段,都有可能出现错误或缺陷。与随机性的硬件失效不同,软件的错误和缺陷可能由人为错误、工具故障或系统性的设计缺陷等因素造成。目前,尚没有定量的、确定性的方法可以用于衡量和判断软件的可靠性。因此,衡量软件可靠性的方法注重于证明在软件开发各个阶段的输出满足输入的要求;在各个阶段没有引入软件错误且最终软件中的错误极少,以保证最终系统的故障率是可接受的。软件V&V 过程为上述证明产生可审查、可追溯的证据。
目前,国际核工业界实施核电厂安全级软件的V&V 过程和活动所遵循的标准体系主要有美国的IEEE 系列标准、法国的RCC-E 系列规范和国际电工协会的IEC 系列标准。在软件设计和研发过程中,安全级数字化仪控系统软件相关标准研究主要是:①确定在安全级软件生命周期过程中,软件开发阶段V&V任务和活动所遵循的标准;②明确各个标准之间的层次关系,建立安全级软件V&V 的标准体系;③为安全级软件开发过程中的V&V 任务过程指导书的编制建立标准体系基础。
对于安全级数字化仪控系统软件在生命周期开发阶段的V&V 任务和活动,IEEE 1012(2004)[7]对其整个实施过程进行了详细规定,包括整个软件生命周期中各项V&V 任务和活动的内容、范围、方法及文档规范等,具有很高的可实施性。值得注意的是,IEEE 1012(2004)并非专门针对核电领域,如果安全级数字化仪控系统软件的设计开发仅满足该行业标准,并不能保证一定满足相关法规中对安全级数字化仪控系统软件的所有要求。为了更好地帮助核电领域的软件开发者或相关用户理解和运用该标准,美国核管会出版了R.G. 1.168(2004)对该标准进行了指导说明[8]。IEEE 1012(2004)以及R. G. 1.168(2004)中对IEEE 1012(2004)的指导说明一起构成了针对核电厂安全级仪控系统软件的V&V 活动的标准,并完全符合美国核电法规以及质量保证标准。
IEC 60880(2006)是核电厂对基于计算机的安全重要仪器和控制系统执行A 类功能的软件标准[9]。该标准覆盖了所有最重要的软件安全问题,并详细规定了核电厂基于计算机的仪器和控制系统所要求的相关软件。为了确保这些设备和系统的高可靠性,该标准描述了软件产生和文件化的每个步骤,包括要求规范、设计、执行、鉴定、确认和操作等,为软件V&V 过程产生可证明的、可审查的和可追溯的证据提供有力参考。
安全级数字化仪控系统软件V&V 任务和活动的开展需要进行过程策划,这就需要在软件开发的早期阶段根据软件完整性需求指定软件的完整性级别。软件完整性级别基于软件预期用途及关键或非关键的系统应用,展示了软件不同的关键性[10]。安全级数字化仪控系统软件应该按最高的完整性等级4 级(A 类)来开展V&V 活动和任务,依据选定的软件完整性级别对软件开发过程(包括概念阶段、需求阶段、设计阶段、实现阶段、集成测试阶段、安装调试阶段)的各个子阶段执行最低限度的V&V 活动和任务,才能确保软件开发满足相应的安全级软件要求、并遵循其产品的质量保证体系要求。同时,软件生命周期开发阶段的各个子阶段在进行具体的V&V 活动和任务时,由于各子阶段的V&V 重点不同,为了满足软件完整性级别需求,需要参考和遵循的标准也会有适应性的不同,如在实现阶段会涉及到代码测试,该阶段可借鉴参考航天和军工等比较成熟的测试经验和所遵循的标准,从而满足核电厂安全级仪控系统软件的V&V 要求。
依据我国核安全法规及相关导则对核电厂安全级仪控系统软件设计开发所做的要求,参考比对了国际上安全级仪控系统软件相关的完整成熟的标准体系,对安全级数字化仪控系统软件、软件生命周期以及软件开发阶段的V&V 活动所宜遵循的标准进行了分析。重点指明软件V&V 是安全级软件设计开发过程中能有效地提高软件可靠性的方法,并就安全级软件在设计开发过程中如何执行及如何审查提出了相关建议,以期为后续核电厂安全级数字化仪控系统软件的设计审查提供技术参考。
[1] Nuclear Power Engineering Committee of the IEEE Power Engineering Committee. IEEE 7 - 4. 3. 2 IEEE standard criteria for digital computers in safety systems of nuclear power generating stations[S].New York:Institute of Electrical and Electronics Engineers,2010.
[2]Office of Nuclear Regulatory Research. R.G. 1.152 Criteria for use of computers in safety systems of nuclear power plants [S].Washington D.C. U.S. Nuclear Regulatory Commission,2006.
[3]Joint Technical Committee ISO/IEC JTC 1,Information technology,Subcommittee SC 7,Software engineering. IEC 12207 Software Life Cycle Processes[S]. Switzerland:International Electrotechnical Commission,1995.
[4] Software Engineering Standards Committee of the IEEE Computer Society. IEEE 1074 IEEE standard for developing software life cycle processes[S]. New York:Institute of Electrical and Electronics Engineers,1997.
[5] Office of Nuclear Regulatory Research. R. G. 1. 173 Developing software life cycle processes for digital computer software used in safety systems of nuclear power plants[S]. Washington D.C.:U.S. Nuclear Regulatory Commission,1997.
[6] Office of Nuclear Reactor Regulation. NUREG -0800 - chpt.7,Appendix 7 -A,Branch Technical Position HICB -14. Guidance on software reviews for digital computer-based instrumentation and control systems [Z]. Washington, D. C.: U. S. Nuclear Regulatory Commission,2007.
[7] Software Engineering Standards Committee of the IEEE Computer Society. IEEE 1012 IEEE standard for software verification and validation[S]. New York:Institute of Electrical and Electronics Engineers,2004.
[8] Office of Nuclear Regulatory Research. R. G.1.168 Verification,validation,reviews,and audits for digital computer software used in safety systems of nuclear power plants[S]. Washington D.C.:U.S. Nuclear Regulatory Commission,2004.
[9]International Electrotechnical Commission. IEC 60880 Nuclear power plants- instrumentation and control systems important to safety -software aspects for computer -based systems performing category A functions [S]. Switzerland: International Electrotechnical Commission,2006.
[10]中国人民解放军总装备部电子信息基础部. GJB 5234 军用软件验证和确认[S]. 北京:中国人民解放军总装备部,2004.