内容发布更新时间 : 2024/12/27 11:18:47星期一 下面是文章的全部内容请认真阅读。
龙源期刊网 http://www.qikan.com.cn
轨道交通运控CBTC系统安全软件开发过程介绍
作者:吴耀东
来源:《电子技术与软件工程》2016年第13期
摘 要 运控CBTC系统是一个复杂的安全系统,其中的安全软件开发一直是国内的薄弱环节。本文介绍了按照欧洲铁路安全标准的安全产品和安全软件的开发,说明在开发中需要重视生命周期的每个环节,采用严格的开发过程,有效的技术和工具,才能开发出符合安全目标的软件,从而保障整个运控CBTC系统的安全性。
【关键词】CBTC 安全产品生命周期 软件开发 安全完善度 1 运控CBTC系统介绍
在轨道交通建设的各个子系统中,运行控制系统是非常重要的一个子系统,因为它关系到整体的运营效率,并保障运营安全。
CBTC是Communication Based Train Control的简称,作为新一代的运控系统,它的特点是用无线通信媒体来实现列车和地面的双向通信,用以代替轨道电路作为媒体来实现列车运行控制。CBTC的突出优点是具有车地双向通信,而且传输信息量大,传输速度快,很容易实现移动自动闭塞系统,大量减少区间敷设电缆,减少一次性投资及减少日常维护工作,可以大幅度提高区间通过能力,灵活组织双向运行和单向连续发车,容易适应不同车速、不同运量、不同类型牵引的列车运行控制等等。在CBTC中不仅实现列车运行控制,而且可以为运行管理服务,因为双向无线通信系统,既可以有安全类信息双向传输,也可以双向传输非安全类信息,例如车次号、乘务员班组号、车辆号、运转时分、机车状态、油耗参数等等大量机车、工务、电务等有关信息。利用CBTC既可以实现固定自动闭塞系统(CBTC-FAS),也可以实现移动自动闭塞系统(CBTC-MAS)。 2 安全产品的开发
运控CBTC是一种安全苛求系统,它和一般计算机系统应用的区别在于安全苛求系统往往涉及人员伤亡、重大财产损失等安全问题。安全苛求系统强调的是没有绝对的安全,安全性的提高是以人力、物力、财力的投入为代价的,要在安全性和经济性找到平衡点。 铁路运控系统安全方面被广泛认可的标准是EN50126/8/9等欧洲标准:
(1)EN50126:铁路应用 - 可靠性、可用性、可维护性和安全性(RAMS)规范和说明 (2)EN50129:铁路应用 - 安全相关电子系统;
龙源期刊网 http://www.qikan.com.cn
(3)EN50128:铁路应用 - 铁路控制和防护系统的软件。
根据以上欧洲标准,安全产品开发应该遵循严格的安全产品生命周期,并基于下面几个方面的工作来确保系统安全: (1)质量管理的措施; (2)安全管理的措施;
(3)功能和技术方面安全性的措施。
安全的对立面是风险和故障,安全系统开发的关键是对系统进行危险和风险分析(Hazard Analysis and Risk Analysis),找出系统可能的所有安全隐患和危险模式,采取相应的对策以降低故障率,使得最终的系统满足用户对于安全性的要求。
需要注意的是,安全管理和质量管理需要贯穿整个产品生命周期过程中,在产品生命周期的每个阶段都要有安全管理的手段,例如安全分析,安全评审,安全的批准,以及质量的管理的措施,例如文档的评审,质量的审查,以及质量的批准,一般来说,需要由独立于开发团队之外的质量团队和安全团队来进行这些工作。 3 安全软件开发 3.1 概述
运控CBTC系统是基于现代通信和计算机技术的控制系统,其中的功能绝大多数由软件实现,所以软件的安全性直接关系到系统的安全性。系统的安全完善度等级越高,其对应的软件的安全完善度要求就越高。因为软件没有物理失效,所以对于软件的安全性主要是其正确性,安全软件的目标主要是下面两点:
(1)确保软件中残存的的错误足够的少;
(2)当软件残存的的错误被触发时,系统产生危险的概率要足够低。
对于第1点,主要是采用严格的软件开发过程和一些技术方法(如评审、测试、形式化验证)来尽量消除软件中残存的错误,安全完善度等级越高的软件要求的开发过程就越严格;对于第2点,主要是采用一些冗余技术,如差异化,多重防护等手段,安全完善度等级越高就要求软件采取的技术手段就越多。对于第2点需要注意的是,冗余技术的采用不可避免增加了系统的复杂性,而复杂性是安全性的大敌,越复杂的系统就越容易产生错误,所以在具体的应用时需要设计者掌握好这个平衡,确保增加的冗余设计能够真正有效的增加系统安全性。 3.2 安全软件生命周期
龙源期刊网 http://www.qikan.com.cn
安全软件开发的生命周期如下,需要注意的是安全管理和质量管理同样需要贯穿整个生命周期过程中。
整个安全软件生命周期可以分为软件设计开发阶段和软件测试验证阶段,软件的设计开发阶段的工作主要由软件开发团队完成,包括编写软件需求、设计软件架构、进行详细设计及编码工作,具体包括:
(1) 在软件需求阶段,软件设计人员经过对系统需求的充分一致性、完备性、明确性的分析,定义系统软件需求。在进行软件需求定义时,软件设计人员使用的方法包含:功能分解、面向对象分析、建模、仿真、业务分析、原型、场景分析等技术手段辅助定义软件需求,同时,充分考虑软件的时效性、内存容量、编程语言、操作系统环境和资源限制。 (2)在软件架构阶段,软件设计人员根据软件需求设计系统软件的顶层结构和软件模块,如果类似的顶层软件结构已经存在,设计人员需要根据需求对顶层软件结构进行调整,保证软件需求和复用的软件结构能够对应。针对新的或不了解的软件功能需求,设计人员可以实施探索性的实验,构造原型软件,对需求进行验证。
(3) 在软件详细设计阶段,软件设计人员根据针对软件架构中定义的模块进行详细设计,每一个模块应该被分解为能够被编码、编译、测试的底层软件单元。如果软件模块能够被复用,设计人员应该采用合适的手段保证软件模块满足软件需求。
(4)在软件编码阶段,软件开发人员应该从配置管理工具中获取已完成的软件产品(包括:源代码文件,测试脚本和文档)。开发人员根据软件详细设计进行重新编码或者修改既有的代码,编码完成后应确保没有编译错误和报警。开发人员编码工作应该符合公司制定的软件编码标准,针对软件代码作出的修改,应有文档记录。软件开发人员应该定义测试案例,用于调试代码,测试应该能够保证算法和软件功能的正确性。
软件的测试验证工作主要由软件测试验证团队完成,包括软件的单元测试、软件的集成测试、软件的验证测试工作,具体包括:
(1)在软件的单元测试阶段,软件测试人员通过配置软件测试环境,创建测试驱动,编写打桩程序实现对于每个软件单元模块的有效测试,验证软件边界输入和超过边界输入的正确反应。
(2)在软件集成测试阶段,软件测试人员通过配置软件测试环境,创建测试驱动,编写打桩程序实现对于多个软件模块集成在一起的交互功能进行测试,验证软件典型的功能和非正常的功能。
(3)在软件验证测试阶段,软件测试人员根据项目所有的系统级、硬件级和软件级文档,通过分析或测试,验证软件所有的需求被实现、测试通过并达到标定的安全完整度等级,出具软件验证报告。