
1.3 轨道交通系统软件功能安全
为了建立微电子设备安全设计规范和标准,国际电工委员会在1998年颁布的IEC 61508标准中,首次提出了安全完整性等级(Safety Integrity Level,SIL)。此后也有各类相关标准对其进行补充,逐渐建立起了安全完整的规范框架。目前,我国采用等同的欧洲铁路标准IEC 62279:2015来管理轨道交通产品软件的安全性。
在IEC 62279:2015中,将安全完整性区分为系统安全完整性、硬件安全完整性和软件安全完整性。软件安全完整性是指一组分级数字,它确定了为将软件中残留风险降低到一个适当水平所必须采用的技术和措施。软件失效造成的损失越大,SIL越高。
为了保障系统满足相应的安全完整性等级,IEC 62279:2015中对系统的全生命周期进行了规范。安全软件生命周期被定义为从软件设计构思开始到软件停止使用的生命周期。典型的软件生命周期包括系统开发阶段、软件需求规格说明阶段、软件结构定义和设计阶段、软件模块设计阶段、软件集成阶段、软件确认阶段、软件评估阶段和软件维护阶段。
系统开发阶段包括软件需求设计、软件结构设计以及软件单元设计等步骤。开发方法及要求包括:①自顶向下的设计方法;②模块化;③开发生命周期每一阶段的验证;④验证后的模块和模块库;⑤清晰的文档;⑥可审计的文档;⑦确认测试。基于上述开发方法,需要形成系统需求规格说明书、系统安全性需求规格说明书、系统结构描述和系统安全性计划。开发文档中应该包含安全性功能、系统配置或体系结构、硬件可靠性需求、安全完整性需求等重要内容。
安全软件测试是软件主要的确认活动。其步骤包括需求检查、需求测试、模块测试、软件集成测试、软件/硬件集成测试、软件确认等。每个测试阶段的具体要求如下:
(1)软件的需求测试依赖于软件需求测试规格说明书,软件需求测试规格说明书用来验证软件需求规格说明书中所述的功能要求,同时也作为对已完成软件进行测试的描述。
(2)软件模块测试的目的是验证每个模块是否实现了预定的功能,软件模块测试规格说明书是否达到了定义需要的测试覆盖率。每个模块的测试依据为与其对应的软件模块规格说明书。通过模块测试,形成软件模块测试报告。
(3)软件集成测试针对已经模块测试通过的功能模块,依据模块测试报告,设计好软件集成测试计划应用文件。通过设计文件完成集成测试,得到集成测试报告。
(4)软件/硬件集成测试是在完成软件集成测试之后,将软件投放到实际的硬件运用环境中,依据集成测试报告和模块测试报告,设计好软硬件集成测试的过程。完成软硬件集成测试后,需要形成软硬件集成测试报告。
软件确认是指在硬件/软件集成测试完成后,形成软件确认报告,并逐一检查。报告包括确认计划的目标和准则检查报告、在目标机器上的整个软件实现需求规格检查报告、软件需求规格说明书所列需求的测试覆盖率检查报告、软件确认报告、测试用例记录及测试结果展示检查报告。其中在软件确认报告应用文件中需要说明:使用的硬件和软件、使用的设备、设备的校准、使用的仿真模型、发现的差异、执行的纠正操作。检查阶段要求上述所有文档材料齐全。
软件功能安全评估是评估软件概念、计划、需求、设计、实现、测试和维护等各阶段的活动及其工作产品,使得软件具有规定的软件安全完整性等级并适用于预期应用。软件评估基于系统的安全性需求规格说明书和所有的软件及硬件文档,在按照要求选定软件评估人员后,根据选定的软件安全完整性等级要求,由评估员来选择合适的评估方法并将其运用于软件生存周期的各个阶段,并为每个评估形成一份报告,该报告应详述评估结果。通过各个阶段的评估,最终得到完整的软件评估报告。
软件安全完整性等级应在系统级别,并基于系统安全完整性等级以及在系统中使用该软件的风险等级进行确定和评价。在IEC 61508中提出了SIL确定的原则,并提出了三种参考方法,其中有定性方法(风险图法、风险矩阵法)和定量方法(PFDavg方法)。