席文茜
(卡斯柯信号有限公司,上海 200071)
铁路信号系统安全软件的V&V管理策略
席文茜
(卡斯柯信号有限公司,上海 200071)
结合相应的铁路安全标准要求和实际项目应用经验,由浅入深地对铁路信号系统V&V (Verification (验证) & Validation (确认)管理过程的思想和策略进行介绍,为铁路安全软件开发过程提供了贯穿软件全生命周期的指导思路和推荐模式,从而提高软件开发效率和有效性。
EN50128;V&V;系统性失效;SIL4;测试
铁路信号系统是借助于电子工业自动化的手段实现对铁路行车与调车作业进行安全有序地管理,是铁路运输的基础设备。很多信号子系统需要达到SIL4级的安全级别。虽然如此,铁路信号系统也可能出现故障。出现的故障分为两种模式,即随机性失效和系统性失效。
随机性(硬件)失效是由于硬件老化或物理材料或体制降级造成的。这种失效是随机出现的,可以通过概率统计分析得出其分布。
系统性失效是由需求、设计错误或管理、维护问题引起,或者可以说,是人为因素造成的。因此其根源是明确的,只要激发其起因,必有相应的结果或后果。换句话说,只要能够改变其因,其失效是可以根除的。软件失效就是个典型的例子,是指软件在运行过程中产生的一种不希望或不可被接受的输出行为。可把软件看作是一个决定性函数,同样的输入条件,必定有一样的输出。一般情况下,为了防止软件失效,会采取一些技术和方法,如图1所示。
研究和实践表明,在铁路信号系统的安全软件开发过程中,可以通过一些方法排除或减少系统性失效的情况发生,V&V过程即为推荐的排错流程方法。
图1 防止软件失效的4种方法
如上所述,为了确保开发过程可控,减少人为失误,通过合理的V&V策略,为产品开发过程提供一套贯穿软件全生命周期的保障流程:包括定义整个项目中文档追踪关系,阐明EN50128及其他标准要求的方法和技术,以及规划所有必须的验证和测试活动等。通过设计和实施这些V&V活动,可以确保在系统软件开发过程中各级文档与其上、下级文档的一致性,能够尽早发现需求和设计中的问题,使项目进度、质量可控;通过V&V活动,可以保证测试设计对测试需求覆盖的完整性,确保正确执行测试活动,最终保证实现的产品与需求和设计的一致性。同时,通过检视整个开发过程,最终提供产品用于满足用户原始需求的相应证据。
所以V&V策略是手段,是帮助软件开发在整个生命周期过程中将需求、设计、代码、测试活动串联起来。可以说,没有V&V,项目开发过程难以得到有效控制;没有V&V,产品开发质量难以得到有效保障。
V&V,即Verification (验证) & Validation(确认)。
Verification,是通过对证据的检查和分析,来判断各开发阶段的输出满足对输入需求的完整性、正确性和一致性要求。具体可通过诸如文档验证、评审、审核、代码走读、代码验证来实现。
Validation,是通过对证据的检查和分析,来判断输出的产品,如文档或软件满足指定需求,特别是安全、质量和操作性等方面内容。具体可通过包括执行测试或审核等方式进行确认。
3.1V&V活动内容的定义
软件开发的瀑布模型将软件生命周期划分为计划、需求、设计、构建、编码、测试等6个阶段,同时模型也规定了它们自上而下、相互衔接的固定次序。按照生命周期模型的特点设计对应的V&V活动,如图2所示。
图2 软件生命周期中的V&V活动
项目开始阶段,需根据项目特点和系统、软件的安全等级,规划V&V策略,制定V&V计划。在软件开发的各阶段根据V&V计划开展V&V活动,其中包括:
1)开发文档的评审和验证,需要说明在评审和验证过程中的发现细节,给出结论;
2)测试文档的评审和验证,需要说明在评审和验证过程中的发现细节,给出结论;
3)测试执行,发现问题提交缺陷跟踪管理;
4)回归测试影响分析,确定回归范围;
5)测试验证及内部审计,确保测试结果真实可靠;
6)整理V&V报告,汇总所有开发过程的证据以满足EN50128及其他标准条款的要求。
需要注意的是,并不是所有的系统需求都可以通过设计测试用例、执行测试来进行验证。诸如对系统应用环境的要求、系统软件遵循的标准、以及一些告警标签等目视需求,这些需求可通过分配给其他确认活动,如证明(Demonstration)、分析(Analysis)、电磁兼容试验(EMC)来验证关闭。
当所有的开发文档更新后,验证人员还需检查修改情况,所有的验证结果需交付给确认人员审核。对于每一个新的变化和问题都必须再次进行验证。
3.2需求追踪及意义
更进一步,需求跟踪可以改善产品质量,降低维护成本,而且很容易实现重用。需求追踪的目的是建立并维护开发过程中一系列成果之间的一致性,确保最终的工作成果符合用户需求,如图3所示。包括:
图3 需求追踪定义
保证需求的完备、设计对需求的覆盖;
尽早发现需求和设计中的问题,使项目进度可控;
保证测试对需求和设计覆盖的完整性;
保证实现的产品与需求和设计一致。
执行验证,分别在导出的完整性Completeness和追踪性Traceability表格中进行,通过逐条验证父需求是否被完整正确覆盖、子需求是否被正确追踪。具体验证时可参照下列原则:
检查导出的内容是否正确(包括父子需求标签、内容、属性);
逐条检查父需求的分配(allocation),确认分配是否正确;
逐条检查父子需求的一致性,确认子需求完整覆盖了父需求;
逐条检查父子需求的安全属性,确认所有非SIL0的需求被不少于一条的非SIL0子需求继承,确认所有非安全的用例没有追踪安全需求;
逐条检查父子需求的可追踪性,确认父需求是子需求的源。
3.3验证的内容和要求
验证工作非常复杂,需要对照比较开发文档与EN50128及其他安全标准的要求,检查是否所有要求的内容都已在开发设计中体现,如对某种开发技术的应用要求、对特定应用的指导说明等。在验证过程中,应根据V&V计划定义的跟踪覆盖关系完整识别出输入文件,防止文档验证时遗漏某个上级文档,尤其是接口描述文档。由于验证活动不是简单地检查链接关系,它需要落实到具体内容和逻辑的正确性,所以要求验证人员应该对需求和设计非常熟悉,以免验证活动形式化。审核验证报告时,是否所有的检查项都具备验证结果,对于上下层对应需求发生的较大变化,不适用于验证条款的检查项是否都给出了合理的解释,附件和正文里的版本信息是否正确,验证表格和正文里的统计数据是否一致等内容都需要关注。同时,还需检查测试报告中的需求覆盖状态表格是否正确。对于测试过程中使用的测试平台、测试工具、测试数据,也需要进行版本管理。
3.4测试的基本原则
为了设计出完整有效的测试用例以保障安全软件测试质量, 需考虑使用一些基本的用例设计技术。常用的白盒测试用例设计方法,如分支覆盖、语句覆盖、条件覆盖、判定覆盖等。常用的黑盒测试用例设计方法,如等价类划分、边界值测试、因果图、判定表、错误猜测等。往往在进行用例设计时,也需要考虑综合运用以上技术。
为了设计出有效的测试用例,还必须满足以下原则:
不应基于测试将不发现问题的假设来设计测试计划;
检查软件是否执行了指定的行为只是测试的一部分,还应检查软件是否执行了未指定的行为;
应为非法的、非预期的条件以及正常的、预期的条件设计测试用例;
测试用例中必须包含期望输出;
在代码段中发现更多错误的概率与已经发现很多错误的代码段成正比,按此推论应有目的地进行测试。
实际上,测试是一种高度创造性与挑战智慧的任务,对于每一个测试用例,都必须彻底检查每一个测试结果。对测试日志、测试配置、过程数据和测试结果进行必要的、清晰的、准确的记录,确保测试记录的完整性。另外,还要提高测试用例的复用性,避免丢弃测试用例,除非被测程序本身就是临时的。
测试执行完成后需进行测试验证活动。测试验证主要是抽查测试执行与测试计划和测试报告的一致性、抽查测试用例对输入文档的覆盖完整性、抽查缺陷库中缺陷信息的正确和完整性、检查测试报告内容的完备性及是否满足出口准则。一般在测试活动结束后或中间版本测试结束后,验证测试活动按照测试计划和用例执行。
3.5V&V活动独立性要求
在最新的EN50128-2011中,对软件开发组织的独立性要求如图4所示。
图4 独立性要求
所以,在安全软件的开发项目中,应设置独立的V&V团队,方能达到并符合标准的要求。
可以看出,通过这样的V&V管理流程,可以对铁路信号系统软件开发过程中的测试和验证活动进行有效控制,对所有测试需求提供确认证明,收集EN50128及其他安全标准的方法和技术使用的证据,对开发和测试过程中使用到的工具质量进行评价,对软件中遗留的开口问题进行归纳整理并形成输出限制,并对整个V&V过程给出最终的结论。
目前,卡斯柯公司大部分铁路信号系统的开发过程都采用了完整的V&V管理过程。V&V管理过程是贯彻在整个安全软件开发生命周期的,是软件开发项目管理中的重要环节,是确保软件开发正确实施的有力保障,为产品能顺利通过第三方安全认证提供了可靠的支持。随着铁路信号系统国产化进程的不断突破以及铁路信号系统安全软件的不断研发,进一步完善和优化既有的铁路信号系统V&V管理过程势在必行。同时,也会进一步结合工程项目实践,摸索出一套更加有效的铁路信号系统安全软件V&V管理过程和策略。
[1]Steven R.Rakitin.软件验证与确认的最佳管理方法[M].包晓露,焦跃,译.北京:电子工业出版社,2002.
[2]EN 50126可靠性、可用性、可维护性及安全性的规格及示范:铁路应用[S].1999.
[3]EN 50128通信、信号和处理系统——铁路控制及防护系统软件:铁路应用[S].2011.
[4]EN 50129通信、信号和处理系统——安全相关的信号电子系统:铁路应用[S].2003.
Based on the relevant railway safety specifi cations and actual engineering experience, the paper introduces the ideas and strategies of V&V (Verifi cation & Validation) management procedures and provide guidance and proposed models for railway safety software development in the full-life period, in order to improve the software developing effi ciency and validity.
EN50128 standard; V&V; systematic failure; SIL4; testing
10.3969/j.issn.1673-4440.2016.04.005
2016-04-13)