MISRA C 是由汽车产业软件可靠性协会(Motor Industry Software Reliability Association)提出的 C 语言开发规范,目标是在增进嵌入式零碎的安全性及可移植性。
一开始,MISRA C 次要是针对汽车产业,倒退过程中,其余产业也逐步开始应用 MISRA C,包含航空、电信、国防、医疗设施、铁路等畛域。
浏览本文,您将理解到嵌入式编码的两种要害语言,以及如何通过 MISRA 来改良嵌入式编码。龙智作为 DevSecOps 研发平安经营一体化解决方案供应商、Perforce 受权合作伙伴,继续关注动态测试畛域动静与倒退,为您提供性能平安和规范合规当先的动态代码分析器,并带来最新洞察与最佳实际参考。分割咱们,立刻理解 C /C ++ 语言最佳动态代码分析器 Helix QAC 如何帮您实现自动化利用 MISRA 规定。
嵌入式编码为装置在大型设施上的零碎提供能源,比方汽车、飞机或医疗设施等,这些零碎被设计来执行特定的专用性能。
每个专用性能都通过嵌入式编码实现的。这段代码必须是牢靠且无谬误的,因为任何破绽都可能对嵌入式零碎的安全性造成毁灭性结果。因而,利用编码标准 (如 MISRA) 来确保代码的可靠性和品质是十分必要的。
本篇文章将解释如何应用 MISRA 改良嵌入式编码。
为什么牢靠的代码对于嵌入式编码来说必不可少?
嵌入式软件赋能世界上最重要的零碎。它被用于:
- 人们每天驾驶的汽车
- 维持生命的心脏监视器(和其余医疗设施)
- 盘绕世界航行的飞机
因而,编码谬误是齐全不容许产生的。
这就是为什么嵌入式编程须要遵守规则的起因——确保代码是平安、牢靠且有保障的。而这些规定可能会依据所应用的编程语言而有所不同。
嵌入式编码和零碎的 2 种要害编程语言
大多数嵌入式零碎都是用 C 和 C ++ 编程的。
这是因为 C 和 C ++ 容许对硬件进行低级管制。C 和 C ++ 反对嵌入式软件的复杂性。同时,应用这些语言可生成高效的代码。
另外,还因为程序员中有很大比例在应用 C 和 C ++,而且他们能够放弃最佳性能——这对于嵌入式零碎来说是要害。
如何应用 MISRA 进行嵌入式编码
许多嵌入式行业都有严格的平安合规标准,而这些标准往往须要应用编码标准。
嵌入式软件有几种不同的 C 和 C ++ 编码标准可供选择。MISRA® 是最值得信赖的编码标准之一。MISRA 规定可能确保代码合乎行业标准。它帮忙您缩小循环复杂性,并进步代码的品质。
上面是不同行业的开发人员如何应用 MISRA 进步代码品质的三个例子。
1. MISRA 帮忙改善嵌入式汽车代码
汽车开发人员置信 MISRA 可能帮忙他们确保代码变得更好。因为 MISRA 是汽车行业品质和合规性的基准。
“一个客观事实是,MISRA 曾经被公认为是基准,并已被整个日本汽车行业采纳,笼罩从 OEMS 始终到芯片级的整个供应链。”
——Socionext 公司
ISO 26262 合规性
汽车行业须要恪守 ISO 26262 这一性能平安规范。
ISO 26262 对汽车平安完整性等级 (ASIL) (A 到 d) 有着严格的要求。它倡议应用编码标准来确保合乎 ASIL,并强调了 MISRA 编码标准。
Protean Electric 公司应用 Helix QAC 来利用 MISRA C 规定,这对他们恪守 ISO 26262 带来了很大的帮忙。此外,Helix QAC 可能发现其余工具脱漏的问题。因而,Protean 不用放心呈现误报。
稳固的代码品质
Delphi 汽车公司也应用 Helix QAC 来利用 MISRA C 规定,帮忙他们的开发人员采纳最佳编码实际,并确保了无论集体教训如何,所有开发人员的代码品质都能始终如一。
2.MISRA 提供更好的嵌入式铁路代码
铁路零碎开发人员也信赖 MISRA 能提供更好的代码。
“MISRA 是不言而喻的抉择。它最后由汽车行业创立,是历史最悠久、最受尊敬的规范之一,并被多个平安相干市场宽泛采纳。”
—— Viveris Technologies
EN 50128 合规性
铁路行业须要合乎性能平安规范 EN 50128。
EN 50128 有五个软件平安完整性等级(SSIL),范畴从 SSIL0 到 SSIL4。为了合乎所有 SSIL 的要求,举荐应用一个编码标准,但 SSIL3 和 SSIL4 是强制的。
该编码标准必须:
- 避免应用未定义或未指定的行为
- 避免程序员犯常见谬误
- 限度某些构造的应用
- 打消潜在的歧义
- 限度库的应用
MISRA 满足这些要求,并帮忙确保您的软件品质。
Viveris Technologies 应用 Helix QAC 来利用 MISRA 规定,并满足 EN 50128 的合规性要求。这确保了他们的无人驾驶列车——里昂地铁是平安、牢靠的。
精确的诊断
对于 Viveris 来说,精确的代码诊断与合规性同样重要。
通过应用 Helix QAC,他们取得了比应用其余工具更好的 MISRA C 规定覆盖率。真正的问题被辨认并修复。并且误报更少。
因而,他们的代码变得更好了,工夫也失去了更好的利用。
3. MISRA 提供更好的嵌入式航空航天代码
航空航天开发人员也信赖 MISRA 能够提供更好的代码。
MISRA 规定集来自一些世界领先的编码专家。它实用于(并被宽泛采纳)工作要害型和平安要害型行业——包含航空航天。
DO-178C 合规性
航空航天业须要恪守性能平安规范 DO-178C。
DO-178C 包含从 A 到 E 的五个安全级别。恪守这些安全级别须要一个编码标准,例如 MISRA。
Selex ES 公司应用 MISRA C++ 作为他们的编码标准,并确保 MISRA 合乎 Helix QAC。
确保品质——即便在主动生成的代码中
Selex ES 还应用 Helix QAC、MISRA C 和 C ++ 规定来确保其嵌入式编程的品质。他们甚至在主动生成的代码上应用它。这意味着他们能够确保嵌入式软件的品质,并放慢开发工夫。
嵌入式编码如何实现 MISRA 合规性
为了合乎 MISRA 编码标准,您须要利用 MISRA 规定。这能够在代码审查期间手动实现,或者能够应用动态代码分析器主动实现。
然而,并不是所有的动态代码分析器都是雷同的。对于 MISRA,不同工具的准确性有差异,而 Helix QAC 是 MISRA C 和 C ++ 最精确的动态分析器。
应用 Helix QAC 实现 MISRA 合规性的示例
观看这个小视频,您能理解到 Helix QAC 是如何使编码更容易合乎 MISRA C:2012。
https://www.bilibili.com/vide…