采用基于模型设计应对机载软件设计中的挑战
Model Based Design for Airborne Software Design Challenge
导读:机载软件传统的设计流程过于粗放,采用基于模型设计构建详细的可执行流程,并配合相应的工具集成与定制,是研制改进工作中的重点和难点。
机载软件的安全性是一个永不过时的话题,通常我们都会从系统架构、故障保护、冗余备份等技术层面来考虑这个问题,但是当面对民用航空特别是大型民用飞机严格的适航性要求时,仅仅拥有技术上的保障是远远不够的。我们需要换个角度来思考设计方法、设计流程、设计工具以及设计管理等方面的问题。我们有能力设计出优秀的系统和算法,但是如果设计过程不可靠或者即使是可靠的我们却无法证明,我们研制的飞机在国际市场的竞争中会受到极大的挑战。
基于模型设计(Model Based Design,简称MBD)是开发复杂控制系统和嵌入式系统的有效途径。迈斯沃克(MathWorks)公司为MBD提供了完整的MATLAB/Simulink工具链,在众多行业特别是航空航天领域已经得到了广泛的应用,在飞行控制系统、发动机控制系统以及机载航电系统的设计中,已被霍尼韦尔和贝尔直升机等航空企业所采用。
MBD设计思想
MBD总体讲是一种设计思想或者设计方法,具体讲就是MBD的流程、工具与平台。顾名思义,MBD的核心是模型,也就是我们通常所说的Simulink模型,围绕模型,MBD思想中包括以下四个关键要素:可执行的需求描述、仿真环境下的设计、由模型自动生成的代码和贯穿始终持续性的验证。
看似非常简单的四句话,但每一个要素都深刻反映着对传统设计流程的改进。在MBD中,传递信息的载体已经不仅仅是文档,而是可以图形化表述并且产生运行结果的模型;设计过程不再是静态的或者依赖于众多硬件环境的方式,而是可以通过仿真快速设计和修改的多轮次迭代设计过程;模型可以自动生成更加标准化的源代码,使设计师从繁琐的手写编码中解脱出来;验证不再需要等到编码完成之后的系统集成时,而是在模型设计阶段就开始早期的验证,将设计缺陷发现并解决于早期,有助于系统设计质量的提高和成本的降低。
需要特别说明的一点,大家有时会认为MBD仅仅是设计层面的事情,对于软件的实现和验证似乎还涉及不到,这主要是由于大家对MATLAB/Simulink的认识还停留在仿真工具的层面造成的。从上述的四个关键点不难看出,我们所讲的MBD,不仅仅局限于基本的设计范畴,已经扩展到实施甚至验证的范畴。也就是说完整的MATLAB/Simulink工具链不仅仅是仿真工具,而是涵盖了建模、仿真、代码生成、验证与确认、项目管理、文档管理、工具定制和适航认证等多种功能的全流程综合性系统设计平台。
国内机载软件研制存在问题
国内飞机设计单位大多仍在沿用传统的软件设计流程,虽然越来越多的单位正在积极尝试MBD流程,但总体来讲仍然处于MBD能力建设的初级阶段,对于MATLAB/Simulink工具链的应用还处于从算法仿真向自动代码生成和模型早期验证的过渡阶段。工具的应用需要与流程有效集成才能发挥其最大的效用,传统的设计流程过于粗放,采用MBD需要重新构建详细的可执行流程,并配合相应的工具集成与定制,这是机载软件研制过程改进中的重点和难点。
对于传统设计流程的改进目前存在以下具体问题:对应DO-178B要求,传统设计流程多项验证环节缺失,想要实现全部环节需要巨大的工作量。如若采用MBD流程,设计单位需要提高工程师的能力,如需求定义能力、建模能力、代码生成能力等;需要改变部门间的工作接口,由传统的文档交互变为模型交互,所有部门将围绕共同的模型开展工作;需要重新定义不同工程师的工作重心,如控制工程师的工作将从单纯的需求定义和算法设计扩展延伸到代码的生成和模型验证,而软件工程师的工作将重点关注在软件架构、代码生成工具配置及代码的生成、底层软件开发以及系统集成等。
当前国内飞机设计单位型号多、任务紧、人员少的客观现实造成流程改进的优先级不高,从而进展缓慢。但是值得一提的是,越来越多的单位已经意识到了MBD的必要性,并且已经开始了积极的尝试。
MBD确保设计符合适航标准
MBD可以从流程、工具和平台三个层面来考虑,流程是灵魂,工具是骨骼,平台是躯干,三者融为一体才能发挥最大的效用。首先需要建立基于模型的设计开发和验证流程,然后选用合适的工具辅助流程的实现,最后进行工具和流程的集成从而构建组织统一的工作平台。
总体流程 相比传统的控制系统开发流程,MBD流程在完整性上得到很大的提升,包含了设计环节、实施环节、验证环节等,解决了传统设计流程中需求理解差异、早期验证困难、代码编写耗时等问题。
设计环节基于高层需求进行模型的设计,在模型设计过程中可以不断通过仿真检验设计结果从而反复迭代优化设计。模型所代替的就是传统设计流程中详细设计文档。实施环节通过自动生成代码实现从设计(Design)到实施(Implementation)的过渡。这样极大地简化传统设计流程中多次建模的重复劳动,使工程师可以更加专注于各自的专业。验证环节是贯穿于项目始终的,这在传统设计流程中是很难实现的,特别是在模型设计阶段,就可以开展针对设计的基于需求的功能性测试,以及模型的覆盖率测试,而且早期验证的测试用例可以在代码验证阶段得到重用。验证环节最为重要的是完整性,在这个环节中每一个验证活动都会对应DO-178B中的具体条款,保证符合标准的前提下满足系统的安全性要求。
工具平台 工具的价值在于实现工作流程,减少手工劳动,提高工作效率,工具应用的基础是流程的存在。对应MBD符合DO-178B/C的流程,MATLAB/Simulink完整的工具链在每个环节都有相应的工具辅助实现这个流程,并且产生DO-178B/C要求的各类输出结果。
MATLAB/Simulink本身也是一个开放的工具开发环境,提供了各类工具以及其它外部工具(如DOORS、LDRA、SVN等)的接口。在MATLAB/Simulink的平台下,结合用户定义的详细流程,可以方便的将各类设计、仿真、开发和验证工具集成在一起,也可以定制开发相关的自动化脚本、规范检查项以及标准报告模版等,构建统一的MBD工作平台。
微流程 这是相对于总体流程来讲的,也是国内飞机设计单位最容易忽视的部分。我们每个管理者和工程师都可以很容易的描述出软件开发的“V”流程,对于MBD的总体流程也比较容易理解,但是工程师真正坐在电脑前开始工作时却往往会陷入无从下手的境地,从哪里获取需求,创建模型有什么要求,完成设计后需要提交什么内容、提交到哪里,提交前需要做那些检查,发现了问题有谁来更改、在那个版本更改等等这些具体的问题都需要通过微流程定义出来。
微流程可以理解为可执行的流程,对于项目中各个角色(如项目经理、开发工程师、验证工程师等)各个环节(如模型设计、模型验证、问题追踪等)的具体操作,使用的工具和配置,以及每个环节的输入输出都有明确的定义,所有项目成员都是在统一的微流程指导下进行工作,这对于项目团队的协作至关重要,也是真正实现MBD的关键所在。