(南京南瑞继保电气有限公司,江苏 南京 211102)
核电厂用电保护装置主要用于核电厂线路、电动机、母线及变压器等厂用电设备的保护,当一次设备发生故障时,厂用电保护装置能够快速动作,隔离故障,保护一次设备的安全,核电厂用电保护装置的可靠性直接影响整个核电厂的安全稳定运行[1]。核电厂用电保护装置的国产化是核电技术全面国产化的重要一环。在核电厂用电保护装置国产化进程中,如何保证核电厂用电保护装置软件的安全性和可靠性是设备开发和研制过程中所要解决的关键问题[2-3]。本文以《IEC60880核电厂对基于计算机的安全重要仪器和控制系统执行 A 类功能的软件》标准(下文简称IEC60880标准)为依据,参照国产化核电厂用电保护装置软件的开发及验证与确认(Verification & Validation,V&V)取证整个过程,总结核电厂安全软件的V&V方法和技术特点,对后续核电厂国产化设备软件V&V开发和取证提供借鉴。
本文设计的核电厂用电保护装置的整体功能如图1所示,装置采用两片双核处理器分别实现人机子系统功能与保护子系统功能。人机子系统负责装置对外人机接口,包括人机界面、事件记录,录波、对时及对外通信功能等,保护子系统利用核电厂用电一次设备发生短路或异常情况时的模拟量(电流、电压、频率等)的变化构成继电保护动作的原理,并结合输入的开关量进行逻辑判断,发出告警、闭锁信号提醒运行人员,或直接通过出口继电器动作跳开一次设备开关隔离故障。核电厂用电保护装置中保护子系统涉及安全功能的执行,为保证保护子系统的最大化安全运行,两个系统互相独立,人机子系统出现任何异常,不影响保护子系统的正常运行。
图1 核电厂用电保护功能架构Fig.1 Function of the nuclear power plant protection relay
核电厂用电保护的逻辑处理功能是采用软件实现的,软件的可靠性直接影响核电厂的安全性。由于软件故障具备潜伏性并且易受共因故障的影响,因此只能依靠严格的开发过程来保证核电厂用电保护软件的质量[4-5]。核电厂用电保护装置软件V&V的目的是为了规范开发过程,保证开发过程每个阶段产物的正确性,或保证错误可以在设计过程中尽早发现,从而提高核电厂用电保护装置软件在整个生命周期内的可靠性和稳定性,保障核电厂的安全稳定运行。
IEC 60880是核电厂对基于计算机的安全重要仪器和控制系统执行 A 类功能的软件标准,该标准详细规定执行A类功能的高可靠性软件的整个生命周期的活动,涉及软件的生成和文档化的每个阶段,包括需求规格书、设计、实现、验证、确认和运行[6]。
核级厂用电保护装置软件安全生命周期的V&V过程如图2所示,主要分为以下六个阶段:软件需求评审、软件设计评审、代码静态验证、单元测试验证、集成测试验证以及系统确认。
整个V&V流程中的产物如表1所示。
图2 核级厂用电保护装置软件V&V过程Fig.2 The V&V process of nuclear power plant protection relay software
表1 核级厂用电保护装置软件V&V产出
核级厂用电保护装置研发项目在立项初期就根据IEC 60880标准要求建立了软件项目质量管理体系、软件质量保证计划、软件配置管理以及软件安全防范等流程体系,并形成正式文档,项目开发过程中严格按照文档预先规定流程执行。在项目准备阶段,项目组就聘请了具备安全软件V&V资质的独立的第三方V&V小组,保证了软件开发工作和V&V工作的独立性,并将V&V工作贯穿于核级厂用电保护装置软件整个安全生命周期的全过程中,避免软件生命周期的各个阶段引入错误或缺陷。
该阶段V&V产出见表1 的 3.1 准备阶段。
3.2.1 软件需求评审
开发人员根据核级厂用电保护装置功能需求及安全需求编写系统需求说明书,并从系统需求说明书中细化软件需求形成软件需求说明书,核级厂用电保护装置软件需求说明书应明确如下内容:
1)软件提供的应用功能,如图1所示;
2)核电厂调试和换料等特殊运行工况下的软件要求;
3)软件和硬件之间的约束性描述;
4)软硬件的自监督功能;
5)定期试验功能。
V&V小组根据IEC 60880:2006 条款 6 Software requirements 的要求对软件需求进行评审并根据系统需求说明书撰写软件确认测试规格书,作为后续软件确认测试的基准。
该阶段V&V产出见表1 的3.2.1软件需求评审。
3.2.2 软件设计评审
开发人员根据《核级厂用电保护装置软件需求规格书》为基准,采用自顶向下的模块化设计方法,详细设计核级厂用电保护装置各功能模块的实现方法,应明确如下内容:
1)软件语言及开发工具的选择;
2)软件编码规范的设计;
3)软件各功能模块的详细设计(包括算法、数据结构、功能接口、约束条件等);
4)人机子系统和保护子系统功能之间的接口设计;
5)自监督功能的设计;
6)防止共因故障的设计(包括多样性和冗余的设计);
7)定期测试的设计;
8)预开发软件的配置;
9)软件的可修改性和可验证性设计;
10)安装和运行的软件方面的设计。
V&V小组根据IEC 60880:2006条款7 Design and implementation 的要求对软件设计过程进行评审,着重于软件设计说明书与软件需求说明书的一致性。根据软件设计说明书撰写软件单元测试验证规格书作为后续软件单元测试验证的基准,结合软件需求说明书和软件设计说明书撰写集成测试验证规格书作为后续软件集成测试验证的基准。
该阶段V&V产出见表1 的3.2.2软件设计评审。
3.3.1 代码静态验证
软件代码静态验证主要借助自动测试工具和人工走查相结合的方式,以软件设计评审环节产出的《核级厂用电保护装置编程规范》为依据,对软件代码进行静态验证,以查找源代码中可能存在的缺陷和错误[7]。
核级厂用电保护装置软件采用C语言实现,《核级厂用电保护装置编程规范》编写主要依据汽车产业软件可靠性协会(MISRA)提出的 C 语言开发标准MISRA-C: 2004,该标准的目是为了增进嵌入式软件的的全安性、可靠性、可读性以及可移植性 ,并广泛应用于核电、航天、电信、国防、医疗设备、铁路等系统的安全软件领域[8]。
开发人员通过软件编程实现《核级厂用电保护装置软件详细设计说明书》中的全部要求,并将软件全部源代码提供给V&V小组进行代码验证,V&V小组依据《核级厂用电保护装置编程规范》以及IEC 60880:2006 条款7.1.2 Implementation of new software in general-purpose languages 的要求,首先采用自动化测试工具,对核级厂用电保护装置软件进行初步验证,并对自动测试工具产出的分析结果进行人工审核,然后对自动化测试工具无法监测到的软件鲁棒性、可维护性以及可追溯性等安全要求,采用人工方式进行验证;最终形成软件代码静态验证报告。
该阶段V&V产出见表1 的3.3.1代码静态验证。
3.3.2 单元测试验证
核级厂用电保护装置软件单元测试验证的目的是为了充分验证软件各子模块的实现与软件设计规格书规定的一致性,单元测试验证为白盒测试,为了保证软件各功能模块行为在核电厂任一工况运行时行为的正确性,单元测试结果需要满足入口覆盖率、语句覆盖率、路径覆盖率、MC/DC覆盖率(修正条件判定覆盖)四个覆盖率分别达到100%的要求。
V&V小组依据软件设计评审环节产出的《核级厂用电保护装置软件单元测试验证规格书》以及 IEC 60880:2006 条款8.2.3 Implementation verification为依据执行单元测试。若在单元测试后对源程序的部分进行修改,则需进行回归测试,遇到不满足测试目标的需写明违背理由,并记录到测试报告中。
该阶段V&V产出见表1的3.3.2单元测试验证。
3.3.3 集成测试验证
核级厂用电保护装置系统集成是将经验证的硬件和软件模块合成完整系统的过程,软件集成验证是为了充分验证核级厂用电保护装置软件满足软件设计说明书以及软件需求说明书的功能要求。软件集成验证是白盒测试,着重于检验软件各模块之间接口、软件和硬件的接口以及模块本身的功能。为证明所有模块能够正确地协同运行,执行预期功能,集成验证结果需要满足入口覆盖率、语句覆盖率、路径覆盖率三个覆盖率分别达到100%的要求。
V&V小组依据软件设计评审环节产出的《核级厂用电保护装置软件集成测试验证规格书》以及IEC 60880:2006 条款 9 Software aspects of system integration为依据执行集成测试,形成正式的测试输入与结果说明,并分析和记录软件集成测试所到达的程度,包括入口覆盖率、语句覆盖率和路径覆盖率。 分析方法包括自动化工具执行集成测试、人工审查和检查。
该阶段V&V产出见表1 的3.3.3集成测试验证。
核级厂用电保护装置系统确认要求使用装置在正常运行、预期运行时间和事故工况中的静态与动态仿真的输入信号对最终软件的所有功能进行测试,明确装置功能与系统需求说明书相一致,系统确认是黑盒测试,重点测试核级厂用电保护装置的功能、边界、性能、用户界面、安全性、安装/拆卸等。
V&V小组依据软件需求评审环节产出的《核级厂用电保护装置确认测试规格书》以及IEC 60880:2006 条款 10 Software aspects of system validation为依据,采用系统的方法并辅以统计方法执行系统确认测试,验证核级厂用电保护装置功能与需求说明书的一致性。
该阶段V&V产出见表1 的3.4系统确认。
核电厂执行安全功能的设备软件必须经过严格的V&V活动,以保证软件运行的可靠性和安全性,确保装置最终产品与用户要求的一致性,本文主要依托核级厂用电保护装置软件安全开发和V&V整个过程,对核电厂安全软件的开发、V&V流程的方法,要求及产出等进行了系统的总结,期望为后续核电厂国产化设备安全软件的开发和V&V活动提供有益参考。