基于SCADE的嵌入式软件开发方法研究
域应用比较广泛的主要有基于UML的建模工具,或是结构化的设计工具(SCADE、SIMULINK等)。
1)基于UML的设计工具:关注于高层的功能划分、结构分解、行为规范和需求分析,适合于系统建模;它从软件工程的角度对开发流程进行规范,但很少考虑高可靠性嵌入式软件开发的特点,软件工程自动化程度较低,生成的只是一个代码框架,需要对它生成的代码做大量的修改和补充之后才能使用。
2)Simulink:面向仿真,仿真功能比较强大,支持对硬件和外界环境的模拟,可以进行全局的仿真和调试;但是由于底层缺乏数学理论的支撑,无法保证模型作为需求描述的无歧义性;从生成代码的角度来说,它生成的代码也需要做大量的修改和补充之后才能使用,而这种做法在增加工作量的同时,和基于UML的设计工具一样,带来了一个潜在的很复杂的开发流程管理和质量认证上的问题。
3)SCADE(Safety—Critical Application Development Environment)是一套基于模型的、面向高可靠性软件而设计的开发环境,具有严格的理论基础支持,充分考虑了高可靠性软件开发中的质量、安全特性、开发周期、认证等各方面的问题,国内外高安全性嵌入式领域应用经验表明,它非常适合用于开发高可靠性软件。
3 基于SCADE的软件设计方法
3.1 SCADE简介
SCADE (Safety—Critical Application Development Environment)是一套高安全性嵌入式软件开发环境,运用Correct By Construction的设计理念,能够从精确的需求规范自动生成嵌入式源代码,实现了开发流程的高度自动化。它涵盖了嵌入式软件开发的整个流程:需求管理、需求建模、模型检查、模型仿真、模型覆盖率分析、形式验证、代码生成、文档生成等等。SCADE适用于不同软、硬件平台,是一套通用的嵌入式软件开发平台。
3.2 基于SCADE软件设计方法
在现有的瀑布式的开发流程中,软件需求、概要设计、详细设计都是为了编码;单元测试、集成测试、系统测试都是为了验证代码的正确性,代码是整个工作的重心。使用了SCADE之后,整个设计流程是围绕着SCADE模型展开的:概要设计和详细设计的过程其实都是用SCADE建模的过程,并且提供了一系列验证手段保证了模型的正确性和安全性,SC ADE模型成为整个开发工作的核心,工作的重心从原先的代码提高到了模型的级别。
1)设计过程
SCADE提供了两套机制(数据流图和安全状态机)来进行图形化建模。数据流图适合于连续系统图建模,安全状态机适用于离散系统的建模。SCADE将这两套建模机制很好
地融合在一起,能够适用于不同类型系统尤其是混合系统的开发。
这两套机制都建立在严格的数学模型基础之上,具有严格的数学语义,它们保证了设计模型的精确性、完整性、一致性和无二义性。由于该描述是形式化的,因此建模的过程也是描述需求的过程,得到的是明确无歧义的软件需求。
2)设计过程的验证
SCADE提供了一系列的验证机制,来确保软件需求模型描述的正确性和安全性:
①模型静态检查
建立好了需求模型之后,可以对模型进行自动检查,帮助找出模型中的数据流不匹配、死循环等一系列语义和方法学方面的错误,并提供超链接进行错误定位。
②模拟仿真
模型通过静态检查之后,可以通过SCADE提供的模型仿真器,对整个系统或是系统中任意一个模块进行模拟仿真。该仿真器是一套功能强大的可视化的调试环境,可以设置断言、断点;可以检查输入数据、局部变量和输出数据的值;可以用文本或图表的形式记录仿真过程中各输入输出的值;可以保存和回放仿真的场景 (scenario)。最重要的一点也是区别其他基于模型开发工具的最重要的一点:SCADE保证仿真结果和生成代码运行的结果是一致的。
③覆盖率分析
模拟仿真是对模型进行功能测试的过程。为了评估模型测试的完备性,SCADE提供了基于模型的覆盖率分析。根据既定的或者自定义的覆盖率准则,分析仿真场景在模型中的覆盖程度,并能指明未覆盖的路径;随后用户对覆盖率进行分析,找出测试用例的不足、需求设计错误、死代码等问题,用于指导设计模型改进、需求改进等。最后,SCADE还能自动生成覆盖率分析的报告。
④形式验证
模拟仿真能够测试系统模型是否实现了预期功能,但并不能保证系统在所有情况下都满足安全特征。由于测试的局限性,难以通过测试来验证安全特性,对于复杂的逻辑控制系统来说尤是如此。SCADE所提供的形式验证弥补了这一局限性。
3)自动生成代码
经过模拟仿真、覆盖率分析和形式验证,保证了模型的正晚性和安全性以后,可以利用SCADE内置的代码生成器KCG自动生成嵌入式产品代码。它生成的代码满足一系列的安
- 基于SCADE的嵌入式软件开发(01-12)
- 基于DSP的导弹仿真器嵌入式组件设计(04-30)
- 为嵌入式软件建立统一软件系统框架的方法详介(05-23)
- 在VIM中实现对嵌入式软件的调试(08-06)
- 基于仿真的嵌入式软件白盒覆盖测试系统设计(08-26)
- 嵌入式软件运行剖面建模及测试用例生成(11-06)