如何验证基于模型的设计生成的代码
基于模型的设计的一个重要好处是尽早验证您的模型,并使用您学到的知识来验证您的最终产品软件。当你的设计转向生产时,一个关键的问题是如何验证生成的代码?在这篇文章中,我想为这个问题提供一个高层次的答案。中明确定义的一组流程详细回答了这个问题DO认证套件(用于DO-178)和IEC认证套件(适用于IEC 61508和ISO 26262).
从满足需求的模型开始
整个代码验证和验证过程取决于您的模型是否满足您的需求并准确地表示您的设计。
在模型开发期间,通过运行模拟来验证您的设计是否满足需求。模型中的功能应该可以追溯到模型需求。您可以使用评审、模型分析和基于需求的测试来证明您的设计满足了原始需求,并且设计不包含非预期的功能。来自这些模拟的测试向量将用于以后对生成的代码的验证。
在尽可能接近真实的环境中测试代码
通过运行独立的应用程序,使用软件在循环(SIL)测试或处理器在循环(PIL)测试,可以在主机上对生成的代码进行验证。每一种测试模式都使用与最终目标环境越来越相似的环境提供额外的验证。
验证生成的代码是否等同于模型
用于验证模型是否满足需求的测试向量为生成的代码的行为提供了一个基线。使用测试向量执行生成的代码之后,将生成的代码结果与基线结果进行比较。如果你在测试结果中发现任何差异,应该调查和理解它们。一些差异可能是由于实现更改(从解释模型转换到可执行实现),或者可能是错误的指示。为了确认系统的行为是无错误的,应该理解所有的差异。
确认没有意外的功能
在测试了等价性之后,您可能认为已经完成了测试,但是,如果有您没有执行的代码路径,那么在该部分代码中可能隐藏了错误。为了测试非预期的功能,您需要执行可跟踪性审查和/或度量代码覆盖率。
可追溯性检查
测量生成代码的可追溯性要求您确认为最终应用程序生成的所有代码都可以追溯到表示您的设计的原始模型的一部分。代码中任何不可跟踪的元素都需要审查。
代码覆盖率
度量代码覆盖率可以让您了解测试用例的综合程度。当然,如果只运行基线等价测试就能获得100%的代码覆盖率是很好的,但是如果没有完全的覆盖率,就需要添加额外的测试向量来增加覆盖率。检查未完全测试的代码的任何部分。
帮助进行验证和验证的工具
- 金宝appSimulink验证和验证-支持通过模型顾问进行需求跟踪和自定义建模标准检查。
- 金宝app仿真软件设计验证器-自动生成测试向量以实现模型覆盖,实现测试以证明模型满足需求。
- Polyspace-使用正式的方法来证明你的代码是无bug的。
- PIL(回路中的处理器)和SIL(回路中的软件)模式测试实时研讨会嵌入式编码器
- 使用代码生成验证API在Real-Time Workshop Embedded Coder中验证数值等价。
现在轮到你了
你是做什么的?留下一个这里的评论并告诉我们如何验证生成的代码。
注:此处描述的过程并不能确保所考虑的软件或系统的安全性。
评论
要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。