基于SCADE的嵌入式软件开发设计

(整期优先)网络出版时间:2018-05-15
/ 2

基于SCADE的嵌入式软件开发设计

石义园

佛山市顺德区美的洗涤电器制造有限公司528311

摘要:SCADE软件开发环境的出现,提供了一种基于模型的高安全性嵌入式软件解决方案,使嵌入式软件的开发效率大大提高。同时由于使用了基于模型的设计流程和高度自动化的开发进程,研制工作的重心集中在建模层面,把软件设计人员从繁复的编码和验证工作中解放出来,能够把大量的精力投入到算法设计和建模工作中,这对于嵌入式软件的工程开发有着重要的意义,本文就此展开论述。

关键词:SCADE;嵌入式软件;开发设计

1.嵌入式软件的应用背景

随着嵌入式应用技术的发展,嵌入式系统被广泛应用于人们生活的各个方面。大量功能强大而价格便宜的通用嵌入式硬件随之出现在市场上。而如何能够在通用硬件平台上,高效的开发出满足安全性与可靠性需要的专用嵌入式软件成为了制约嵌入式技术应用的瓶颈。在计算机领域,如何为软件的工业化大生产创造必要的技术条件和设计模式一直是软件工程研究的首要问题。无论是软件工程领域出现过的计算机辅助软件工程的热潮,还是,基于面向对象技术和组件技术的“装配重用”软件思路,都有一些根本性的问题没有得到解决,因此大规模的“装配”软件生产还处在一个理想阶段。

随着研究的深入,用模型化、组件化的方法定义并开发软件及其系统的思想引起了人们的兴趣,也提供了一种新的软件工业化大生产的可能性。在这方面,嵌入式软件由于其本身的特殊性走在了通用软件(PC机用软件)的前面。

2.SCADE软件开发环境分析

SCADE高安全性的应用程序开发环境,是一个用于开发达到欧洲航空业DO-178B标准的嵌入式软件的完整工具包。它针对嵌入式软件的特点,运用了正确构建的概念,提出了一种基于模型的图形化开发方式,覆盖了从需求分析到代码实现的整个软件开发流程。SCADE开发环境提供的一系列开发工具,实现了直观的图形化需求建模功能,基于模型的仿真验证和软件测试功能,以及基于模型的标准C代码和开发文档的自动生成功能。其严谨的建模理论和经过高安全性验证的代码生成器KCG,保证了软件需求和代码产品的高度同步。SCADE开发环境的出现,使软件设计工作可以集中在需求建模的层面,为基于模型的软件开发方法提供了环境载体。

3.基于SCADE的嵌入式软件开发设计方法

在现有的瀑布式的开发流程中,软件需求、概要设计、详细设计都是为了编码;单元测试、集成测试、系统测试都是为了验证代码的正确性,代码是整个工作的重心。使用了SCADE之后,整个设计流程是围绕着SCADE模型展开的:概要设计和详细设计的过程其实都是用SCADE建模的过程,并且提供了一系列验证手段保证了模型的正确性和安全性,SCADE模型成为整个开发工作的核心。

3.1设计过程

SCADE提供了两套机制来进行图形化建模。数据流图适合于连续系统图建模,安全状态机适用于离散系统的建模。SCADE将这两套建模机制很好地融合在一起,能够适用于不同类型系统尤其是混合系统的开发。

这两套机制都建立在严格的数学模型基础之上,具有严格的数学语义,它们保证了设计模型的精确性、完整性、一致性和无二义性。由于该描述是形式化的,因此建模的过程也是描述需求的过程,得到的是明确无歧义的软件需求。

3.2设计过程的验证

SCADE提供了一系列的验证机制,来确保软件需求模型描述的正确性和安全性:

①模型静态检查建立好了需求模型之后,可以对模型进行自动检查,帮助找出模型中的数据流不匹配、死循环等一系列语义和方法学方面的错误,并提供超链接进行错误定位。

②模拟仿真模型通过静态检查之后,可以通过SCADE提供的模型仿真器,对整个系统或是系统中任意一个模块进行模拟仿真。该仿真器是一套功能强大的可视化的调试环境,可以设置断言、断点;可以检查输入数据、局部变量和输出数据的值;可以用文本或图表的形式记录仿真过程中各输入输出的值;可以保存和回放仿真的场景。最重要的一点也是区别其他基于模型开发工具的最重要的一点:SCADE保证仿真结果和生成代码运行的结果是一致的。

③覆盖率分析模拟仿真是对模型进行功能测试的过程。为了评估模型测试的完备性,SCADE提供了基于模型的覆盖率分析。根据既定的或者自定义的覆盖率准则,分析仿真场景在模型中的覆盖程度,并能指明未覆盖的路径;随后用户对覆盖率进行分析,找出测试用例的不足、需求设计错误、死代码等问题,用于指导设计模型改进、需求改进等。最后,SCADE还能自动生成覆盖率分析的报告。

④形式验证模拟仿真能够测试系统模型是否实现了预期功能,但并不能保证系统在所有情况下都满足安全特征。由于测试的局限性,难以通过测试来验证安全特性,对于复杂的逻辑控制系统来说尤是如此。SCADE所提供的形式验证[4]弥补了这一局限性。

3.3自动生成代码

经过模拟仿真、覆盖率分析和形式验证,保证了模型的正确性和安全性以后,可以利用SCADE内置的代码生成器KCG自动生成嵌入式产品代码。它生成的代码满足一系列的安全特性,有良好的可读性和接口,具有和手写代码相当的大小和效率。该代码生成器通过了军工及航空业及能源业相关标准的鉴定,因此,使用SCADE之后,不仅大大节省了编码工作,而且完全免去了代码的单元测试和对于单元测试的验证(即代码覆盖率分析),很大程度地节省了验证工作和验证时间。

3.4集成阶段的验证

当得到源代码之后,根据硬件平台使用编译器(如:Tornado,GCC等)将源代码编译为目标代码。高可靠性的软件开发流程不仅需要对源代码进行分析,还需要保证从源代码到目标代码的一致性。SCADE提供了CVK工具包,能够辅助验证编译器能否正确地将KCG生成的代码编译成目标码。

3.5开发流程管理

作为一个面向高可靠性软件而设计的开发环境,SCADE在保证了嵌入式软件的可靠性的前提之下,并通过和其他一些工具的配合保证了整个开发流程的生命周期数据管理。

①通过SCADERM实现了开发过程中数据的可追溯性管理;

②通过SCC接口实现了开发过程中配置管理,由于SCADE以ASCII格式保存所有数据,并支持标准的配置管理界面。因此,可以方便的与市面上所有的配置管理工具建立桥接。

结束语:

传统软件开发流程中的设计流程的验证工作主要以手工方式进行,验证的验证工作难以实现,而在以SCADE为核心的开发平台中,可以通过模型测试的方式进行需求验证,该验证进程可通过模型覆盖率分析进行验证;传统软件开发过程中的单元测试工作在该开发平台中可以省略,因而基于SCADE的嵌入式软件开发设计得到了较为广泛的应用。

参考文献

[1]魏英波,高忠杰.SCADE模型驱动软件开发方法研究[C].//上海市科学技术协会第十三届学术年会暨上海市航空学会2015年学术年会论文集中国航空无线电电子研究所.2015.

[2]王文全宋科璞王勇等.基于模型驱动的机载嵌入式软件应用[J].计算机技术与发展.2013.

[3]郭晓飞.基于SCADE的核反应堆保护系统嵌入式软件设计[D].西安电子科技大学.2011.