SCADE平台下的图形化设计和代码自动生成
章晓春;金平;孙全艳
【摘 要】随着航空机载软件功能和复杂性的提高,采用传统的人工编码方法来已不能满足其效率和安全性要求,因此寻求一种更有效的航空机载软件设计方法势在必行.本文研究了一种航空机载软件开发方法一高安全性开发环境SCADE,并以飞机自主导航软件为例,按照SCADE软件的程序设计流程,即通过直观的图形化建模和模拟仿真自动生成可直接面向工程的安全嵌入式C代码.实验结果表明,SCADE在很大程度上实现了软件开发的自动化,节约了开发成本和开发时间.
【期刊名称】《软件》
【年(卷),期】2011(032)005
【总页数】4页(P74-77)
【关键词】软件开发;SCADE;高安全性;自动代码生成
【作 者】章晓春;金平;孙全艳
【作者单位】上海飞机设计研究院飞控系统设计研究部,上海,201204;上海飞机设计研究院飞控系统设计研究部,上海,201204;上海飞机设计研究院飞控系统设计研究部,上海,201204
【正文语种】中 文
【中图分类】TP311.52
0 引 言
长期以来航空机载软件设计一直采用手工编码来实现,软件生命周期中所有的工作都是围绕着编码工作进行,是一个典型的V型开发流程。手工编码工作量大,开发效率不高,并且手工编写过程中某一局部的错误或失误,常常要花费大量的人力物力来修复。如何保证在最短的时间内开发高质量的软件是航空机载软件开发所面临的挑战,SCADE高安全性应用开发环境就是在这样的背景下应运而生[1]。
1 基于SCADE的图形化建模技术
SCADE作为一种高安全性的嵌入式软件开发环境,覆盖了嵌入式软件开发的整个流程,DO-178B标准规定了40个对软件开发过程的验证进程目标,使用SCADE可以完全省略其中21个,13个目标的工作量可因SCADE的使用而减少,其代码生成器(KCG)是目前世界上唯一的满足DO-178B民航A级标准的代码生成器,相比于手工编码,极大地减少了编码和测试工作。据国外文献报道,用以SCADE为主体的开发方法和代码生成流程,能自动生成70%~90%的嵌入式代码,并且将开发成本降低至50%,大大提高软件开发效率[2]。
使用SCADE进行开发时,软件生命周期中所有工作都是围绕着详细设计,即SCADE模型展开的,其开发流程是一个基于模型的Y型开发流程。软件模型在整个系统开发工程中占据着重要地位。使用模型可以提高开发者对整个系统的观察深度和控制复杂度的能力,给不同的开发阶段提供全局统一的视图和指导,提高软件质量、生产率和可靠性。建模也是进行形式化分析和验证的基础[3]。
对于嵌入式系统既有离散的状态变化又有连续的时间行为。从传感器采样数据,经过控制逻辑和数学运算,产生输出,到执行机构,如图1所示。SCADE提供了两套机制来进行图形化建模:数据流图和安全状态机。这两套机制都建立在严格的数学模型基础之上,具有严格的数
学语义,它们保证了设计模型的精确性、完整性、一致性和无二义性。SCADE把这两套开发机制很好地融合在一起,能够适合于不同类型的系统尤其是混合系统的开发。
图1 嵌入式软件模型
1.1 数据流图
数据流图适用于连续控制系统的建模,主要用于传感器等时间间隔采样、信号处理、计算并输出等,以用户定义的输入输出变量为接口,使用一些运算符,如算术算符、逻辑算符、时序算符、case操作符、if-then-else操作符等,用节点为功能单元,组成复杂的层次结构,以图形化的方法搭建软件模型。
1.2 安全状态机
SCADE提供安全状态机来描述离散化状态控制逻辑,主要用于响应外部中断或处理内部事件,安全状态机(SSM)是有限状态机的图形化实现,其图形化方法是用一系列的状态、转移和信号来表示反应系统的控制逻辑。系统的进展用状态和状态之间的转移来表示,转移用信号来触发,SSM开发环境如图2所示。
图2 安全状态机
安全状态机以可视的状态(State)和转移(Transition)来进行建模,用信号(Signal)结合转移条件(Condition)控制系统流程。状态代表系统的模式,只有“激活”和“不激活”两种状态,SSM的状态用方框表示,可以体现层次关系,并行关系。层次化的状态框可以设置互斥状态exclusive(OR)和并行状态parallel(AND),互斥状态就意味着同一时刻仅有一个状态处于活动状态;若设置成并行状态,则所有的状态都可能在同一时刻处于活动状态,并行的状态应该在其父状态被激活的时候同时被激活,而激活顺序一般按照“从外至里,从上至下”的规则排列。
2 基于SCADE的代码自动生成技术
2.1 代码生成机制
代码自动生成的原理是根据建模平台的当前目标系统模型,由代码生成器自动生成某种语言的源代码。具体来说,生成代码的信息来源有两个:模型属性(控制代码生成方式即如何生成)和元素规范(控制代码生成内容即生成什么)。[4]
由SCADE图形描述转换为高质量的C代码,需要经过以下两个步骤:
SCADE2Lustre:SCADE是以图形建模为基础的软件开发环境,这一步是将方程式、参数块等图形转变成Luster语言描述,然后删除图像信息,并将多个文件模型整合到一个文件中;
Luster2C:将Luster语言描述转换成面向工程的C语言。
具体流程如图3所示。
图3 SCADE代码生成机制
2.2 代码自动生成
软件模型设计完成后,需要对其进行模拟仿真。SCADE仿真器是一个强大的可视化的图形调试工具,可以在设计过程中验证软件是否满足功能要求,其输入/输出可以用文本或表格的形式给出,还可以由TCL语言来驱动[5]。SCADE仿真和代码生成工具栏如图4所示。
图4 SCADE仿真和代码生成工具栏
利用SCADE仿真器对软件模型进行仿真,经检验正确无误后,点击代码自动生成按钮,对其进行代码自动生成。
SCADE代码生成器有两个显著的特点,第一,SCADE所生成的代码完全面向工程,可以直接嵌入到所开发的系统中去而不需要做任何的修改;第二,SCADE基于严格的数据理论,它保证所生成代码的正确性,保证所生成代码的行为和仿真的行为的一致性。
3 开发实例
淘宝代码生成器在线本文以某型飞机的自主导航软件设计为例,来说明基于SCADE的软件设计过程。
3.1 需求分析
自主导航飞行主要是指在没有人直接参与的条件下由控制系统自动的控制飞机按规定航线的飞行。航线通常由通过直线或圆弧线连接多个航点构成。航点信息包括该航点的航点号、经度、纬度、高度、任务字、控制字等信息。自主导航飞行控制系统根据飞机经、纬度、高度等信息,计算出实际飞行轨迹和预置航线的位置偏差,经过控制律解算,对飞机三个舵面进行控制,改变飞机飞行姿态,从而使飞机按规划航线自主飞行[6]。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论