C++ MISRA C++;遵守规范确保功能安全和质量?

C++ MISRA C++;遵守规范确保功能安全和质量?,c++,coding-style,misra,software-quality,autosar,C++,Coding Style,Misra,Software Quality,Autosar,如果MISRA C++(2008)真的符合哪些有助于功能安全的规则,谁能向我解释一下它是如何符合功能安全(ISO 26262)的? 是否有文件或证据表明MISRA C++符合ISO26262和AUTO SARS? 对于质量保证,在以下的MISRA C++编码标准中,它对软件开发代码< < /P> < P>作为MISRAC C和MISRA+ C++本身的状态有什么保证,它们要求开发成为文档化软件开发生命周期的一部分,它们不会(本身)保证您的系统工作。 MISRA C/C++满足ISO26262的许

如果MISRA C++(2008)真的符合哪些有助于功能安全的规则,谁能向我解释一下它是如何符合功能安全(ISO 26262)的? 是否有文件或证据表明MISRA C++符合ISO26262和AUTO SARS?
对于质量保证,在以下的MISRA C++编码标准中,它对软件开发代码< < /P> < P>作为MISRAC C和MISRA+ C++本身的状态有什么保证,它们要求开发成为文档化软件开发生命周期的一部分,它们不会(本身)保证您的系统工作。 MISRA C/C++满足ISO26262的许多要求。。。但这是一个相当长的话题,StackOverflow并不是给出完整答案的理想场所,因为它非常依赖于上下文

作为一个在这两个阵营都有一只脚的人(见简介),我已经在ISO26262环境中做了几次关于MISRAC的演示(这同样适用于MISRAC++)。例如:

(一开始就为公司的废话提前道歉!)

但既然您也提到了AUTOSAR自适应,这就需要符合MISRA C++

5.1.1根据与MISRA的兼容性进行规则分类 本文档中的规则定义为MISRA C++:2008的“增量”

< MISRA C++代码遵循如何确保功能安全和质量?< /P> 我倾向于认为它不能确保安全或软件质量。它确实有助于It(在其他更重要的因素中,包括项目管理、开发人员的工作经验、分配给……的工作)

这是一个人类的过程。它可能会失败。这很有帮助

您可以使用软件静态或动态分析工具(如、、、或使用最新的编译器
gcc-Wall-Wextra-fanalyzer
,甚至可以编写自己的等等),但最终您需要人的合作和支持

另请参见类似(或)的项目

意识到

请记住,软件问题(但不仅仅是)与崩溃有关

<>注意,主要C++编译器(包括和)不是MISRA C++兼容的。它们的一些改进版本已经过认证。GCC和Clang大多用C++编码……/P> 一些关键软件(例如,一台新冠病毒呼吸机的软件部分-法国的开放硬件/开放软件)未通过MISRA C认证(但根据其他标准认证)

例如,规则


规则M0-1-1(必需、实施、自动)项目不得包含无法访问的代码


很难证明(仅通过检查或自动分析源代码)。

“如果我盲目遵循这个编码标准,我会遵守吗?”可能不会。采用诸如MISRA is之类的编码标准将有助于您实现法规遵从性,使您远离语言中更具爆炸性的部分。但这只是其中的一小部分,最终是您的代码必须符合要求,编码标准与否。我们面临的最大问题之一是QA经理(或类似人员)要求100%符合MISRA且无偏差-当我们(在MISRA中)定义了需要时的偏差流程时,这非常令人恼火!盲盒滴答声有缺陷@Andrew在实施MISRA-C时,我的建议是实施公司标准,并要求100%遵守该内部标准。这样,您可以禁止个别偏差,但允许公司范围内的偏差作为编码标准文档的一部分。然后相应地配置MISRA-C检查程序,仅删除公司范围内的偏差检查。根据我的经验,它非常有效,因为当有人提出偏离的想法时,你会强迫他人进行讨论和审查。我不相信个别程序员会这样做,除非他们非常有经验。。。完全同意@Lundin。重要的是你在哪里偏离规则,你知道为什么以及后果是什么。。。以及需要采取哪些额外的补救措施(如增强测试)目前我还无法使用这些标准,但通常ISO 26262将“语言子集的使用”列为所有ASIL级别的强烈建议。通常,这些标准也有一个合适的编程语言列表。传统上,只有带安全子集的C(MISRA-C等)或带安全子集的Ada(SPARK Ada等)被认为适用于安全关键系统。我不知道这些年来游说者是否已经改变了,但是我怀疑工程师或专家会赞成C++。我认为所有这些适合性的说法都是销售工具的骗局。你知道ISO 26262是否扩展了适合的编程语言列表,将“C++及其子集”包括在内?“母”标准IEC 61508尚未做到这一点。目前正在修订61508。。。我没有参与,并且没有关于C++是否被提及的可见性。2626:18没有明确提到C++,这可能是一个惊喜,因为AutoSar自适应是C++,但它又不强制任何特定的语言…26262-6第5.4段适用。我想到的是与IEC 61508-7表C.1相当的适用语言表。对于更高的SIL级别,“强烈建议”只使用具有安全子集的语言。我的IEC 6150—7:2000版完全不包括C++。在2000(前日期MISRA C++)中,C++被认为不适合…它是随着2005年JSF-AV编码标准的出现而出现的(基于MISRA C,作为迈向MISRA C++的垫脚石,并涉及MISRA C++背后的一些人)这使它成为安全关键的主流……@ VasiNavi,我个人的看法是C++是一种非常危险的语言,不应该被允许接近任何安全关键的项目。如果要创建C++的安全子集,则必须禁用90%的语言。如果ISO 26262没有列出,那么这就是完美的se