游文麟
航天江南第十总体部
摘 要 针对目前基于模型的嵌入式软件开发实施的问题和难点,从软件开发流程、需求建模、设计建模、软件验证等方面提出实施建议和方法,为开展基于模型的嵌入式软件开发提供技术支撑。
关键词 模型 嵌入式 软件开发
1 引言
随着高复杂度、高性能、高集成度装备的快速发展,多品种、变批量、短周期、高质量成为装备研制生产的典型特征。软件是装备的重要组成部分,装备的特点决定了软件的研制周期要求越来越短,软件的需求变化多样,软件的功能越来越复杂,软件的研发任务越来越重,同时软件质量还必须保持高的可靠性和安全性。传统的研发模式基于静态数据和文档传递,设计缺陷前期难以发现,需求理解不一致容易引起实现与需求不一致,人工编码开发时间长,容易引入人为错误。软件的安全性、准确性主要是依靠人来保证。这项工作对人员要求较高且难以稳定地保证代码质量。采用基于模型的设计,可以加快软件开发速度,需求、测试用例、模型和代码之间的双向追溯为软件评审提供了便捷输入,自动生成代码极大的缩短了软件编码的时间,早期验证和持续的验证以缩短产品验证的周期,自动化的报告生成和规范检查简化了软件开发过程中工程师的工作量。模型的抽象层次和表达能力比代码的高,便于技术人员之间的使用与交流。基于模型的软件开发和验证方法是解决传统的软件开发方式不足的有效途径,从源头保证了软件产品的安全可靠,使软件质量和研制效率得到大幅提升。
2 软件模型的定义
软件模型是对系统的软件方面的一种抽象表示,用来更好地支持软件开发过程和软件验证过程。软件模型是通过建模技术来描述的。模型是使用明确的建模符号而进行的完整的描述,建模符号可以是图形的,也可以是文字的。软件模型描述需要包含软件系统的语法(定义形式)和语义(所代表的含义),且具有机器可读的特性,可以用软件来对模型进行解释和翻译。软件模型可用于对嵌入式软件需求及软件架构表述、自动代码生成、自动测试生成。
3基于模型的嵌入式软件开发面临的问题
基于模型的嵌入式软件开发与测试具有高效性、及时性、灵活性等优点,但基于模型的嵌入式软件开发方法在实际应用中还面临如下问题:
a)现有的软件研制与测试标准体系中缺乏模型开发与模型验证标准;
b)模型工具构建模型过程或进行代码生成过程中,需要对模型工具进行配置,配置方案不适应应用场景导致目标码执行功能失败;
c)由于目标码与模型的一致性不可完全保证,而宿主机环境或目标机环境通常较难提供系统异常输入的条件,仅通过模型仿真测试难以保证;
d)传统的静态测试和动态测试方法已不适应模型的开发验证。
4 基于模型的嵌入式软件开发流程
软件开发人员在接收到软件任务书或者系统分配给软件的模型后,进行基于模型的软件范围分析,针对不适合使用基于模型的开发方法的软件部分采用传统的软件开发方法,最终形成手写代码;针对适合使用基于模型的开发方法的软件部分,开始基于模型的软件开发。基于模型的软件开发步骤如下:首先,依据软件任务书或者系统分配给软件的模型,进行基于模型的软件需求分析,形成软件需求模型。其次,针对软件需求模型进行模型语法、语义检查。再次,依据软件需求模型,进行基于模型的软件设计,形成软件设计模型。另外,采用数字化工具对软件设计模型进行模型语法、语义检查、模型仿真;再者,依据软件设计模型,利用经认证的数字化工具进行代码自动生成,形成自动生成的代码。最后,对软件产品代码进行测试验证,执行与传统软件测试验证相同的手段。此活动直至测试验证通过结束。
与传统软件开发的“V”模型相比,基于模型开发软件的流程可进化为“Y”模型。在需求阶段就可对需求模型进行仿真验证,验证需求模型与系统要求的一致性,确定需求模型合理性、准确性、完整性、可验证性;在设计阶段,依据软件需求规格说明(含需求模型),对设计模型进行仿真,验证设计模型与软件需求的一致性,设计模型的合理性、完整性、准确性、可验证性。
基于模型开发的“Y”模型,不利用代码测试就可同时迭代进行,简化了测试用例的步骤,并将代码的单元测试过程合并到模型的开发与仿真验证过程中,提前开展软件需求和设计的验证工作,大幅度减少软件需求和设计缺陷遗留到软件代码测试阶段发现和解决,能极大的缩短软件研制的周期和质量。
5 嵌入式软件建模
5.1 嵌入式软件需求建模
嵌入式软件需求建模的内容包括:建立软件系统交联图、建立系统数据流图、建立控制流图、建立数据字典。
软件系统交联图用于描述软件与外部环境间的关系。系统交联图包括软件、外部设备及用于交互信息的接口及连接等基本元素。
系统数据流图用于描述数据处理过程,包括系统的输入、处理、存储和输出。通过分层的数据流图可以直观的表示系统或软件每个处理的输入与输出。数据流图采用由外向里,逐层分解的方式,形成一套由顶层、中间层和底层组成的数据流图。顶层图说明系统的输入和输出数据流。底层图由一些基本不可分解的处理组成。顶层和底层之间的中间层描述了每个处理的分解。数据流图每个基本处理都必须详细地描述处理的触发条件、处理逻辑、优先级、执行周期、出错处理等内容。
控制流图用于描述触发软件功能的事件及触发条件。控制流图采用数据流图对应的分层结构,并标识出所有的控制流与控制处理。控制说明用于详细说明软件功能在何种情况下执行的方法。控制说明常用控制表或状态转移图方式描述系统控制行为。
数据字典由需求建模过程所创建的数据流、控制流、数据或控制存储等元素构成。数据字典用于提供关于数据的描述信息,通过准确定义各个数据元素,使用户和软件需求分析员对于输入、输出、存储和中间计算达成一致的理解。
5.2 嵌入式软件设计建模
软件设计阶段通过需求分析形成的静态模型和动态模型定义软件模型、软件模块间接口关系等软件体系结构。在软件体系结构模型基础上,进一步细化,描述每个模块内部算法、控制逻辑。嵌入式软件设计建模主要包括:建立软件体系图、建立并发图、建立程序流程图。
软件体系图用于描述模块间的接口关系、数据控制流、调用层次。并发图用于表示软件系统并发性。通过并发图可以将软件系统划分为多个并发任务。软件流程图通过图形化的方式对过程、算法、流程等进行描述,以说明软件模块的算法、控制逻辑等。
6 基于模型的嵌入式软件验证
基于模型的软件验证过程包括模型审查、模型仿真、代码规则检查、动态测试。
模型审查通过对模型的静态审查,发现用户要求与实际模型不一致之处。
通过模型仿真验证需求模型与任务书、需求规格说明要求的一致性,验证设计模型与软件需求规格说明的一致性。模型仿真时,应建立模型完成准则。根据模型仿真的结果,对需求模型及设计模型进行覆盖率分析,形成覆盖率结论。对于不满足要求的模型应进行模型迭代。
通过测试工具对自动生成的代码进行规则检查,确保代码符合相关的编码规范。通过在目标机动态测试环境中对目标代码进行动态测试,验证目标码与软件要求的符合性、一致性,功能执行正确性。
7 结束语
本文对当前基于模型的嵌入式软件开发面临的问题进行了归纳和总结,从软件开发流程、需求建模、设计建模、软件验证等方面提出实施建议和方法。实践证明,采用软件建模技术,可有效规范软件开发方法,有助于嵌入式软件的重用设计,有效降低人工开发的工作量,显著提升嵌入式软件的质量和效率。
参考文献
[1] 牟明,邢亮.模型开发在型号软件研制中的应用研究[J].航空计算技术,2015.45(3)76-79
[2] 刘杰.基于模型的设计及其嵌入式实现[M].北京:北京航空航天大学出版社,2010.