今天依旧为大家分享技术文章。上一篇为大家分享了技术小白如何高效设计测试用例,提到的所需工具是Controller Tester,那今天向大家分享的这篇文章是《制作车载软件建模指南》,主要涉及到我们的模型级检测工具,还想了解代码级别检测工具更多信息的请积极留言告诉我们哦!
1.何为建模指南
建模指南是在开发者基于模型设计(MBD: Model-base Design)开发SW时提供指南的文件,起到向导作用。本篇文章将针对最常用的建模工具的建模指南生成方法进行说明。
2.建模工具与制作指南
具有代表性的车载建模工具有MathWorks的Simulink和ETAS公司的ASCET。在利用建模工具开发车载SW时,可适用工具供应公司建议的建模指南及开发公司自主构建的指南。
建模指南大体可分为代码验证和模型验证及性能改善三类主题。可根据主题进行追加及修改指南,根据目的不同,建模指南的内容也会有所不同。建模指南可根据国际标准文件的规则和检测自动生成代码错误及trouble shooting、性能改善等相关内容制定。
2.1 静态验证指南
静态验证方法有两种,分别是验证是否遵守建模规则的方法和对模型中自动生成的代码进行静态验证的方法。
验证是否遵守建模规则的方法是通过应用国际标准文档的建模规则,执行静态后将违反的规则编写为准则。国际标准文件中有MISRA AC SLSF、MISRA AC TL、MAAB等多样的建模验证规则,用户可导出与自身开发软件相符的指南将其应用为建模规则并进行静态验证。下表是国际标准文件条目及相关内容的概要。(选择建模规则时应选择与SW的特性和目的相符的规则)
<Model Inspector支持的建模规则目录>
静态验证自动生成代码的方法是对自动生成的代码适用国际标准MISRA_C规则,把违反规则中建模工具能够修改的规则用于制作指南。在自动代码中的一部分规则仅通过模型很难修改,这种情况就需要通过动态测试进行完善。
<CODESCROLL_STATIC>
<MODELSCROLL_MODEL INSPECTOR>
2.2 动态验证指南
动态验证也和静态验证一样具有通过model simulation进行验证和基于自动生成代码的验证方法。
通过model simulation进行验证是一种确认在模型中输入测试数据后是否出现预期结果的验证方式。这也通常是基于模型的开发方式中开发并确认模型的过程。其优势在于在设计阶段就能执行单元/集成动态测试并且可以直接适用于模型进行修改,能够加快验证/执行过程。
动态验证就是通过运行软件来检验软件的动态行为和运行结果的正确性的一种测试。基于自模型中自动生成的代码可以进行动态验证。我司的检测工具Controller Tester可以针对自动生成的代码,提供可执行多种形态单元/集成/场景验证环境。
执行单元/集成测试后,依据执行结果测量覆盖率,分析产生错误的原因。因为是以代码为单位分析错误,所以可得到准确分析,并可掌握错误在模型中的位置,并添加相应的模型规则,提高质量。
<MODELSCROLL_MODEL INSPECTOR>
<CODESCROLL_CONTROLLER TESTER>
2.3性能改善指南
性能改善指南可分为两种,分别是可以达到有效利用存储空间目的的内存改善和考虑到嵌入式软件特性的timing改善。
使用有限资源的嵌入式软件应按照一定的规则,切实管理使用内存的变量,避免从有限内存中产生的问题。可用以下方法整理使用内存的变量,确保内存空间。
1)删除未使用变量
2)根据变量scope可分为全局变量、文件static变量、函数static变量
(可变更为局部变量时就定义为局部变量)
3)On/Off等Flag变量以Bit为单位使用
性能改善指南是对自动生成的代码进行代码审查或基于模型审查设计(MBD)内容,检测可改善的内容,并根据类型制定性能改善指南。
在嵌入式软件中存在1ms、10ms等Task时,包括中断时间在内,各Task未在规定时间内完成处理时则需改善timing。下面是timing改善的方法示例。
1)将重复的处理整合为一个并共同使用(消除重复代码)
2)消除无意义代码
3)内存ACCESS改善
可以适用于timing改善的方法有很多,但在模型开发时能适用的方法却有限。
最后,建模指南根据软件的目的及领域、特征等的不同,指南可能会有所不同;项目不同,产生的错误和BUG也会有所不同。分析这些issue,添加trouble shooting, 依据积累的秘诀及经验制作指南,其在以后的建模设计中也可作为数据库资料。
各开发公司一般都具有自主的建模指南以此来努力防止错误产生。我司则可通过静态验证建模标准和动态验证改善来导出符合顾客公司模型及特性的指南提升软件质量。