随着芯片技术的发展,CPU的频率、内存的容量、总线频率、IO通道能力等组成计算机算力的要素已经有极大发展,只把这样的设备当成MCU(微控制单元,Microcontroller Unit)使用是对硬件的浪费。传统的安全计算机系统都是在硬件上通过冗余、同步检测等技术实现对硬件故障的容忍,这种专用的计算机设备由于产量小、应用范围窄而发展得很慢。一方面是COTS(商用现成品,Commercial Off-The-Shelf)设备提供了强大的算力但不满足功能安全计算的需要,一方面是专用功能安全计算机算力弱,无法满足车车通信这样的要求高算力的应用场景的需要。针对这个问题,人们开始研究利用软件层面实现功能安全计算:基于COTS设备实现对功能安全计算。操作系统、中间件、应用程序模型成为研究的焦点。
我们把支撑整个软件开发与测试的编译器、链接器、调试工具、打包工具、基础函数库等统称为工具链。通过功能安全工具链的研发,突破COTS设备上实现功能安全计算的技术,建立功能安全软件全生命周期功能安全证明模型,研究支持“倒向安全”出错处理机制,实现借鉴通用软件开发技术提高功能安全软件开发开发效率,降低系统研发成本和运维难度的目的。
1 功能安全软件全生命周期
1.1 什么是工具链
在开发软体过程中,一组工具链(toolchain)是一系列用于制作软件程序的工具。这些工具一般一个接一个地使用,上一个工具的输出即是下一个工具的输入,因此得名。但工具链这个词汇也可指涉这些工具并无此相依执行的限制。
文献[1]对工具软件有清晰的分类:
在开发过程中,使用一些支持软件开发的适当工具,通过减少引入故障或不可检测故障的可能性来增加软件的完整性。软件开发生命周期阶段相关工具的例子包括:
a) 转换或翻译工具。将软件或设计表述(例如文本或图解)从抽象级别转换到另一个级别;设计优化工具、编译器、汇编器、链接器、打包器、装载器和代码生成工具。
b) V&V工具。如静态代码分析器、测试覆盖率监视器、定理证明辅助工具、仿真器和模型检查器。
c) 诊断工具。用于在运行条件下维护和监视软件。
d) 基础设施工具。如开发支持系统。
e) 配置控制工具。如版本控制工具。
f) 应用数据工具。产生或维护用来定义参数和实例化系统功能的数据。这些数据包括功能参数、仪表量程、 报警和切换限值、失效时采用的输出状态、地理布局等。
1.2 V&V模型
功能安全国际标准及中国的国家标准,通常将功能安全开发融入了广为熟知的“V模型”开发流程中,各厂家在“V模型”基础上制定自己的管理规范。
V&V(双V,Validation and Verification)模型,并不是在V模型上增加一个V模型,而是开发阶段与测试设计阶段同步进行,开发保证需求被实现,测试验证是否正确。体现了测试真正意义——存在于软件生命周期的各个阶段,也体现了测试分层和分阶段的本质特性,测试执行的顺序与开发的活动相反。
文献[1]对软件开发生命周期内各阶段的行为进行了定义。
图1 《轨道交通通信、信号和处理系统控制和防护系统软件》中的软件开发生命周期
1.3 功能安全软件常用开发工具
a) 动态分析工具。动态分析工具,如:Valgrind、gperftools。能够在程序运行时进行Profiling,得到各种性能统计信息,指导开发人员有的放矢地进行性能调优工作。
b) 单元测试工具。如:Google Test、Boost.test、Catch/Catch2、Doctest。
c) 调试工具。如:IAR、Lauterbach、Nano Code。
d) 软件测试工具。如:Testbed。软件测试工具分为自动化软件测试工具和测试管理工具。提高测试效率主要是靠软件测试工具来完成的,用软件来代替一些人工输入。测试管理工具是为了复用测试用例,提高软件测试的价值。一个好的软件测试工具和测试管理工具结合起来使用将会使软件测试效率大大的提高。
2 功能安全软件对工具链的要求
2.1 功能安全的软件工具鉴定问题
一个计算机程序或它的一个功能部分,用于帮助开发、转换、测试、分析、制造或修改另一个程序及其数据或文档。因此工具存在两种引入错误的可能,直接将错误引入可执行代码中,或者未能检测出软件的错误,因此功能安全标准要求对工具进行鉴定,证明工具的功能正确性,未对软件引入风险。
对什么类型的工具需要进行鉴定,不同行业的功能安全标准有共同的原则,当所鉴定的工具用来代替、降低或自动化软件开发生命周期的一个过程时,就需要对该工具进行鉴定。
2.2 国家标准中有关工具链的约束
文献[1]“支持工具和语言”一节,对工具链的要求是:
目标是提供证据,表明工具的潜在失效不会以安全相关方式对集成工具集的输出产生不利影响,而这种情况却不能被工具以外的技术和/或组织措施检测到。为此,软件工具分为三类,分别命名为T1、T2和T3。当工具被用于替代人工操作时,工具输出的完整性证据可按该输出如同以人工操作方式完成的处理步骤进行举证。如果其他的方法可给出工具输出的完整性证据,且软件的完整性等级不会降低,则这些处理步骤也可用其他的方法取代。
T1:不产生直接或间接贡献于软件可执行代码(包括数据)输出的工具。
T2:支持对设计或可执行代码的测试或验证,其错误可能不会暴露缺陷,但也不会直接在可执行软件中产生错误的工具。
T3:产生直接或间接贡献于软件可执行代码(包括数据)输出的工具。
3 利用中间件技术实现工具链规范化
3.1 利用中间件实现工具链规范化
随着铁路业务的数字化、智能化,控制软件开始与其它计算机系统密切联系,业务系统大量取代人工,参与数据分析、智能决策等工作,软件总量也随之迅速增长,这导致了系统的复杂性和成本的剧增。为了提高软件的管理性、移植性、裁剪性和质量,需要定义一套架构( Architecture ):方法学( Methodology )和应用接口( Application Interface ),从而实现标准的接口、高质量的无缝集成、高效的开发以及通过新的模型来管理复杂的系统。
各种各样的应用软件需要在平台之间进行移植,或者一个平台需要支持多种应用软件和管理多种应用系统,软、硬件平台和应用系统之间需要可靠和高效的数据传递或转换,使系统的协同性得以保证。这些,都需要一种构筑于软、硬件平台之上,同时对更上层的应用软件提供支持的软件系统,而中间件正是在这个环境下应运而生。中间件的核心思想在于“统一标准、分散实现、集中配置”。
利用中间件技术,使得企业可以聚焦于业务和基础技术的积累,而不被硬件、操作系统平台的多样性牵制,在软件在企业产品中所占的比重越来越高的今天,这是一个很好的决策。
3.2 实现工具链自主可控的意义
专利回避设计是指为规避具有市场前景的专利保护范围来修改现有机构设计,在设计思路上侧重于如何利用不同构造来达成相同或相似功能,从而避免侵害他人权利,这是一种风险规避手段,也是企业知识产权战略的一部分。
专利回避设计最基本的目的是避免侵害某一有效专利的权利要求,同时从商业层面上讲,如果一个回避设计因成本过高而导致产品失去竞争力和利润空间,那么这种回避设计就不是一个成功的回避设计。所以一个成功的回避设计必须同时满足两个要求:一是在专利侵权案中不会被判定侵权,这是法律上的要求,也是下限;二是在市场竞争中不会因成本过高而导致失去竞争力,这是商业上的要求,是上限。
通过自主化工具链建议,使得所开发的功能安全产品有自己的特色,这对保障企业供应链安全是十分有意义的。
4 结束语
通过中件间,积累企业自己的工具链,建设有竞争力的企业人才结构、技能结构,逐步提高软件在企业产品中的比重,让可服务化的产品云化,优化产品性能,降低运维成本,渐进式提升产品的可靠性,为面向轨交运营的自生长数字孪生系统奠定基础。
参考文献
[1] 中华人民共和国国家标准,轨道交通 通信、信号和处理系统 控制和防护系统软件,GB/T 28808-202x
[2] 铁路信号安全软件编程暂行技术要求 铁路信号安全软件测试暂行技术要求,铁工电[2020]194号,中国铁道出版社
裴喜龙
同济大学——上海电气泰雷兹智慧轨道交通联合工程技术研究中心
已完成
数据加载中