Want to see Parasoft in action? Sign up for our Monthly Demos! See Demos & Events >>

X

AUTOSAR C++ 规则和编码标准合规性

C++是一种复杂的语言,需要投入大量精力来确保可预测性、安全性和保密性。汽车开放系统架构 (AUTOSAR) 组织开发了AUTOSAR C++14,这是一种编码标准,将C++14的使用限制为可预测且不会导致不必要的安全和安保风险的构造。

什么是AUTOSAR?

汽车开放系统架构 (AUTOSAR) 来自汽车实体之间的开发合作伙伴关系。该集团成立于 2003 年,旨在围绕汽车电子控制单元 (ECU) 建立标准化和开放的软件架构。它也包含了半导体。

AUTOSAR开发合作伙伴关系旨在提高整个产品生命周期内安全要求的有效性和可用性、可扩展性、可转移性和可持续性。虽然汽车技术本身不是医疗设备,但它的某些方面肯定属于保护项目。产品线安全气囊需要精确部署的技术,而像电机控制这样的系统需要一致性。

汽车中更多的嵌入式电子设备也意味着大量的数据收集,以及实时数据处理。AUTOSAR 的不同方面旨在满足现代汽车电子和软件组件的需求。

AUTOSAR经典平台vs. AUTOSAR自适应平台

AUTOSAR 平台有两种类型:自适应平台和经典平台。经典的 AUTOSAR 平台不提供自适应方法可以提供的那种灵活性和处理能力。汽车技术日益复杂,需要更轻松的反应和更快的响应。

不过,这两个平台不是对手,而是队友。两者在汽车设计和开发生态系统中都有不同的用途。

Side by side graphic comparison of AUTOSAR classic and adaptive platforms

主要差异

AUTOSAR Classic PlatformAUTOSAR Adaptive Platform
Ideal for a single or multicore architecture and deeply embedded ECUs.Ideal for newer ECUs and intended to run on top of HPC architectures to better take advantage of them.
Utilizes signal-based communication with BUS networks like LIN or CAN.Uses service-based communication with Ethernet.
Defines an operating system (OS).Defines execution context, as well as an operating system interface such as PSE51.
Static nature with low flexibility.Provides “planned dynamics” during application deployment with flexible integration.
Deadlines are more pressing due to realtime processing.Soft realtime requirement.
Examples include braking systems and engine control.Examples include sensor fusion data processing and over-the-air updates (OTA updates).

什么是 AUTOSAR C++14?

它是 C++版本 14 (ISO/IEC 14882:2014) 的编码标准,也是定义自适应AUTOSAR平台的产物或成果之一,该平台为API和服务提供接口规范。AUTOSAR 编码指南的这一部分最初只是更新了 MISRA C++ 2008 – 一个过时的编码标准。然而,MISRA 和 AUTOSAR 在 2019 年宣布合并,以支持更新到 C++17。它已成为许多现代 AUTOSAR 电子解决方案的默认语言。

事实上,这些指导方针是如此强大和优化,它们可以应用于任何需要在 C++ 中进行嵌入式编程的行业。

AUTOSAR C++14 规则和偏差

AUTOSAR C++14 有 342 条规则,帮助用户对编码要求有一个清晰的理解和指导。AUTOSAR C++14 编码规则 根据义务级别进行分类。

  • 必要规则 强制要求符合标准。
  • 咨询规则。 建议但不强制状态。

但是,可以允许偏离 AUTOSAR 标准、规则或指南。为避免开发人员随意偏差滥用偏差概念,必须包括每个偏差的签核。此外,规则还被分类为是否可以通过静态分析工具自动执行。

  • 静态分析工具可以完全自动化
  • 静态分析工具可以支持部分自动化 但可能需要其他实践,例如代码审查。
  • 静态分析工具无法支持非自动化

将 C++14 与 AUTOSAR C++14 指南结合使用,使开发人员能够使用高级编译器并改进对增强测试、验证和分析工具的访问。它允许使用新的开发方法,如持续集成/持续交付(CI/CD),可以在软件开发生命周期中更快地检测到错误。

“MISRA”、“MISRA C”及MISRA Consortium Limited的注册商标。 ©The MISRA Consortium Limited, 2021。 保留所有权。

在AUTOSAR软件工具包中拥有正确的解决方案的优势

寻找合适的开发工具来确保软件质量是一个反复试验的问题。但这并不意味着您需要尝试未经证实的工具或策略。幸运的是,自动化在测试和合规方面的大量好处是显而易见的。

更早发现问题只会让参与软件开发的每个人都更容易。从软件架构和应用软件到诊断和验证,Parasoft 解决方案都考虑到了这一切。

实施AUTOSAR C++14合规性,以提供安全、可靠和可靠的代码,以获得持久的好处,影响产品的成功和周期,同时减少劳动力成本和上市时间。

提高代码质量,减少缺陷成本

在开发过程中尽早防止代码缺陷,以免它们演变成更昂贵的挑战。

满足行业流程标准

Parasoft 提供AUTOSAR C++14 静态分析作为ISO26262、DO-178C、IEC62304、IEC61508、EN50128 等过程标准推荐的解决方案。

满足静态分析安全测试 (SAST)

作为SAST战略的一部分,将AUTOSAR C++14安全编码指南融入到您的软件开发生命周期中。

使用AI和ML进行更智能的测试

Parasoft 结合了人工智能和机器学习,以提高您团队的AUTOSAR C++14静态分析工作流的生产力,标记并优先解决违规问题。

将AUTOSAR C++14 SA整合到您的CI/CD工作流程中

Parasoft的AUTOSAR C++ 14静态分析可以轻松集成到您的CI/CD管道中,并通过持续测试快速交付高质量、安全的软件

扩展AUTOSAR C++ 14和构建自定义编码指南

使用Parasoft RuleWizard为您的组织创建您自己的自定义编码标准配置。

将编码标准与 AUTOSAR C++14相结合以获得最佳代码质量

Parasoft 提供汇集 MISRA 以及我们所有其他支持的编码标准,如CERT、CWE、OWASP、UL 2900等。

静态代码分析工具的类型

无论您在哪种开发环境中工作,都可以部署Parasoft的解决方案对代码进行静态分析。

AUTOSAR最佳实践

在AUTOSAR C++14合规性方面,有几种非常有益的做法。下面列出了一些需要考虑的方法。

执行代码/同行评审

除了AUTOSAR C++14 合规性之外,还可以召集您的软件工程师同事,系统地检查彼此的代码是否存在错误和编码风格违规。该活动已被证明可以加速并显着提高代码质量。

正确记录偏差

任何AUTOSAR C++14 指南偏差都需要关于以下内容的完整文档:哪些指南、范围、理由、安全保证、后果和缓解措施。

代码清晰度

AUTOSAR C++14 合规性将帮助您编写易于阅读和理解的代码。不要编写难以理解或容易被误解的代码。您不希望其他工程师或您自己花费大量时间试图破译代码中的错误。

代码可移植性

AUTOSAR C++14 合规性有助于在编写代码时考虑到可移植性,因为可移植代码(POSIX、ANSI C 等)可以轻松快速地迁移到其他平台。适应其他编译器或其他操作系统,并且可以通过最少的代码更改来完成。很多时候,有财务或商业机会需要迁移到另一个操作系统或目标。

减少AUTOSAR C++14噪音

某些代码结构的编写方式可能会触发AUTOSAR C++14 规则违规。Parasoft 提供了一种有意识地过滤掉这种噪音的方法。

代码复杂度

AUTOSAR C++14合规性有助于编写没有大量分支的代码。分支越多,代码复杂度越高,代码中发现的错误数量也就越多。

代码的健壮性

AUTOSAR C++14合规性可帮助您编写可靠的代码,不仅可以处理晴天场景,还可以处理雨天场景。包括在遇到无效数据时准备应用程序的负面场景。

代码可重用性

AUTOSAR C++14合规性可帮助您编写可在未来产品或项目中重复使用的可移植代码。这提高了生产力并降低了劳动力和测试成本。

示例

当今许多现代汽车软件电子系统中的开放和标准的软件体系结构特征被用于自动驾驶和连接。

以激光雷达(LIDAR)这样的先进驾驶辅助系统(ADAS)为例,它可以帮助汽车感知何时有撞上物体的危险。自动驾驶的停车辅助也很大程度上依赖于AUTOSAR软件架构。

这只是两个示例,但随着汽车中的AUTOSAR自适应平台连接和物联网(IoT)设备变得越来越普遍和健壮,能够测量数据以适应变得至关重要。

自动AUTOSAR合规性报告

Parasoft的分析仪表板带有自动的AUTOSAR合规报告,可以轻松提供认证所需的证明。

Graphical Parasoft AUTOSAR C++ compliance report showing number and percentage of rules in compliance along with violations and deviations.

对于安全和对安全关键型应用,您需要使用我们经过TÜV SÜD认证的解决方案,以确保符合标准并易于采用到您的高性能开发过程。

入门

建议遵循AUTOSAR C++ 14的一个好处是,它可以在项目的任何软件开发阶段引入和使用。更好的是,即使项目或ECU软件不完整或部分编码,它也是有效的。

AUTOSAR 挑战

引入AUTOSAR C++14合规性的最大挑战是大量代码会产生大量警告。因此将AUTOSAR C++14 合规性集成到项目中时,重点应该是让团队尽快高效工作。这将最大限度地减少团队被静态分析警告淹没的机会。

随着实现AUTOSAR C++14合规性成为每个开发人员日常工作的一部分,他们将能够更快地分析结果并更有效地修复错误。

正在开发的产品的成熟度也很重要,因为它会影响 AUTOSAR C++14 合规性的整合方式。采用生命周期管理的工作方式如下所述。

  1. 承认和推迟。这种方法适用于已经在市场上的现有项目。开发的新代码很少,因此所有发现的安全漏洞和安全漏洞都被添加到现有的技术债务中。
  2. 达到极限。当前开发的现有项目让团队改进新代码,因为它的开发是为了将更少的关键警告作为技术债务推迟。
  3. 未开发的区域。新项目采用这种方法。开发人员可以从一开始就将 AUTOSAR C++14 合规性集成到他们的开发环境中,以确保代码质量的高标准。

为什么选择 Parasoft?

The Parasoft代码分析AUTOSAR 解决方案, Parasoft C/C++test可在开发阶段早期检测 AUTOSAR 运行时环境中复杂的 AUTOSAR C++14 合规性运行时问题,而无需执行昂贵的运行时测试。这以一种有利于所有人的方式简化了开发过程。

C/C++test通过代码分析执行路径,并发现AUTOSAR C++14合规性问题,如空指针取消引用、被零除和内存泄漏。它还搜索安全漏洞,例如指针操作数上的算术、缓冲区溢出、无法访问的代码和cstdlib系统函数。

Results from C/C++test的AUTOSAR C++14 合规性结果可以在Parasoft的动态报告仪表板中查看,支持使用历史数据的自动化后处理和高级报告策略。

随着时间的推移,很容易看到跨构建的AUTOSAR C++14合规性结果。即使在处理大型代码库和遗留代码(代码的可见性通常具有挑战性)时也是如此。 您可以快速关注新添加代码的质量。

借助自动跟踪AUTOSAR C++14合规性的小部件,用户可以动态查看合规流程,并可以轻松生成代码审计和认证目标的自动报告。

常见问题

基本软件模块(BSW)是提供在ECU上运行的某些编码功能的软件文件的集合。这些标准化的软件模块可以支持通信、I/O、内存等。

例如,一些 AUTOSAR 基本软件模块执行总线镜像、诊断甚至加密等任务以保护数据。

这三层架构是:

  1. 应用程序层
  2. 基本软件架构
  3. AUTOSAR 运行时环境

电子控制器单元(ECU)特定模块和通用模块包含在三个子层中,包括服务层、ECU抽象层和微控制器抽象层 (MCAL)。

RTE代表“运行时环境”,是应用层和其他层之间的一种中间地带。实现ECU内部和层间通信。

作为三层架构的一部分,MCAL层之上的ECU抽象层具有硬件组件驱动程序和接口组件。这意味着它的工作是确保上述层独立于ECU上的硬件运行。

该集团成立于2003年,由整车厂和其他投资方组成,其中包括大众汽车(Volkswagen)和罗伯特•博世(Robert Bosch)等众多知名企业。

AUTOSAR C++14 没有直接提供任何关于实现合规性过程的类似指南。但鉴于 AUTOSAR C++ 指南基于 MISRA C++ 2008,参考 MISRA 标准以寻找有关实现合规性过程的指南是合理的。

  • 生成一个合规矩阵,说明每条规则的执行方式。
  • 产生偏差程序。
  • 在质量管理体系内形成工作规范。

满足这些要求意味着一些额外的文书工作。应该要做的是定义合规矩阵。

此外,需要建立偏差处理程序。偏差程序正式规定了当开发需要偏离规范或指导方针时需要采取的步骤。

自适应 AUTOSAR 平台定义了一个用于开发汽车控制单元的平台,这些控制单元提供先进的驾驶辅助系统、媒体流或通过互联网进行的软件更新等复杂功能。

C++ 提供了支持 AUTOSAR 平台在应用面向对象方法、使用面向服务架构、使用 POSIX 和类似操作系统以及对32位和64位微控制器的完全支持方面的要求所需的语言特性。

静态分析是在不执行的情况下检查源代码的过程,通常用于发现错误或评估代码的安全性、安全性和可靠性。

这意味着静态分析可以用于部分完整的代码、库和第三方源代码。静态分析工具可帮助软件团队符合MISRA C/C++、AUTOSAR C++14、SEI CERT 或您自己的自定义配置等编码标准。