王少华,冯素梅,陈日罡,张志良
(中国核电工程有限公司,北京 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的全部要求进行补充验证。