MISRA C++ 代码合规性如何确保功能安全和质量?

问题描述

谁能向我解释 MISRA C++(2008)如何不符合功能安全(ISO 26262),如果它真的符合哪些规则有助于功能安全? 是否有文件或证据表明 MISRA C++ 符合 ISO26262 和 AUTOSAR? 对于质量保证,遵循MISRA C++编码标准对软件开发代码有什么保证

解决方法

正如 MISRA C 和 MISRA C++ 自己声明的那样,它们要求开发成为记录在案的软件开发生命周期的一部分 - 它们不会(它们自己)保证您的系统正常工作。

MISRA C/C++ 满足 ISO26262 的许多要求……但这是一个相当长的话题,而且 StackOverflow 不是给出完整答案的理想场所,因为它非常依赖于上下文。

作为一个同时涉足两个阵营的人(参见简介),我已经在 ISO 26262 上下文中对 MISRA C 进行了多次演示(同样适用于 MISRA C++)。例如:

https://www.slideshare.net/AdaCore/misra-c-in-an-iso-26262-context

(提前为一开始的公司口号道歉!)

但是由于您还提到了 AUTOSAR Adaptive - 这需要符合 MISRA C++

https://www.autosar.org/fileadmin/user_upload/standards/adaptive/18-10/AUTOSAR_RS_CPP14Guidelines.pdf

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

,

MISRA C++ 代码合规性如何确保功能安全和质量?

我倾向于认为它不能确保安全或软件质量。它确实对做出了贡献(在其他更重要的因素中,包括项目管理、开发人员的工作经验、分配给code refactoring ....的工作量)。

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

您可以使用软件静态或动态分析工具(例如 Frama-CBismonClang static analyzerFluctuatAbsIntAstréeCadnaPapyrusCompCert 或使用最新的 GCC 编译器 with gcc -Wall -Wextra -fanalyzer 甚至可能编写自己的 GCC plugin 等...) 但归根结底,您需要人工合作和 code reviews

另请参阅 DECODERVESSEDIA(或 CHARIOT)等项目。

注意Rice's theorem

请记住,软件问题(但不仅限于)与 Boeing 737 MAX 崩溃有关。

请注意,主要的 C++ 编译器(包括 GCCClang MISRA C++ 兼容。它们的一些改进版本已经过认证。而 GCC 和 Clang 大多是用 C++ 编写的...

某些关键软件(例如,Recovid 的软件部分 - COVID 呼吸机 - 法国的开放硬件/开放软件)未通过 AFAIK 认证(但已通过其他标准认证)

例如规则

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

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