问题描述
谁能向我解释 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++
5.1.1 根据与 MISRA 的兼容性进行规则分类
本文档中的规则被定义为 MISRA C++:2008 的“delta”
MISRA C++ 代码合规性如何确保功能安全和质量?
我倾向于认为它不能确保安全或软件质量。它确实对做出了贡献(在其他更重要的因素中,包括项目管理、开发人员的工作经验、分配给code refactoring ....的工作量)。
这是一个人为的过程。它可能会失败。很有帮助。
您可以使用软件静态或动态分析工具(例如 Frama-C、Bismon、Clang static analyzer、Fluctuat、AbsInt、Astrée、 Cadna、Papyrus、CompCert 或使用最新的 GCC 编译器 with gcc -Wall -Wextra -fanalyzer
甚至可能编写自己的 GCC plugin 等...) 但归根结底,您需要人工合作和 code reviews。
另请参阅 DECODER、VESSEDIA(或 CHARIOT)等项目。
请记住,软件问题(但不仅限于)与 Boeing 737 MAX 崩溃有关。
请注意,主要的 C++ 编译器(包括 GCC 和 Clang)不 MISRA C++ 兼容。它们的一些改进版本已经过认证。而 GCC 和 Clang 大多是用 C++ 编写的...
某些关键软件(例如,Recovid 的软件部分 - COVID 呼吸机 - 法国的开放硬件/开放软件)未通过 AFAIK 认证(但已通过其他标准认证)
例如规则
规则 M0-1-1(必需、实施、自动化)项目不应包含无法访问的代码。
确实很难证明(仅通过对源代码的检查或自动分析)。