常用嵌入式软件代码编码规范的关系和覆盖

嵌入式系统在航空航天、汽车电子、医疗设备等众多关键领域广泛应用,使用嵌入式编码规范具有极其重要的意义,具体体现在以下几个方面:

  • 提高软件可靠性:嵌入式系统通常运行在对可靠性要求极高的环境中,如航空航天、工业控制等领域。遵循编码规范可以减少代码中的错误和漏洞,降低软件出现故障的概率,确保系统在长时间运行中稳定可靠。例如,通过规范变量的初始化、内存的分配与释放等操作,可以避免出现悬空指针、内存泄漏等问题,这些问题一旦发生,可能导致系统崩溃,造成严重后果。
  • 增强软件可维护性:嵌入式软件的生命周期较长,在其运行过程中往往需要不断进行升级、修改和扩展。使用统一的编码规范可以使代码具有一致的风格和结构,便于开发人员理解和阅读。当需要对代码进行维护时,开发人员能够快速定位和修改相关功能,提高维护效率,降低维护成本。例如,规范的命名规则可以使变量和函数的用途一目了然,即使是不熟悉该代码的开发人员也能较快上手。
  • 确保软件安全性:在一些涉及敏感信息或关键操作的嵌入式系统中,如金融支付设备、智能电网等,软件的安全性至关重要。编码规范中通常包含了对安全编程的要求,如对输入数据的验证、对缓冲区溢出的防范等,有助于防止恶意攻击,保护系统和数据的安全。例如,遵循规范对用户输入进行严格的过滤和验证,可以有效防止 SQL 注入、跨站脚本攻击等安全漏洞。
  • 提升软件可移植性:嵌入式系统可能会运行在不同的硬件平台上,使用编码规范可以使代码具有较高的可移植性。规范中对硬件相关的操作进行了明确的规定,使得代码在不同的硬件环境中能够保持一致的行为。开发人员可以更容易地将代码从一个平台移植到另一个平台,减少因硬件差异而导致的问题,提高软件开发效率。
  • 促进团队协作:在嵌入式软件开发项目中,通常需要多个开发人员共同参与。编码规范为团队成员提供了统一的编程标准,使大家在编写代码时遵循相同的规则和风格。这样可以减少因个人编程习惯不同而导致的代码冲突和不一致性,便于团队成员之间的沟通和协作,提高团队的开发效率和代码质量。例如,统一的代码缩进、注释格式等规范可以使代码更加整洁、易读,方便团队成员进行代码审查和交流。

常用的国内外嵌入式编码规范有如下几种:

  • MISRA C++:2008:由汽车工业软件可靠性协会(MISRA)制定,是针对 C++ 语言的编码规范。它为编写嵌入式 C++ 代码提供了一套指导方案,重点在于保护应用程序免受已知的安全违规和安全漏洞的影响,促进安全和关键系统的安全、可靠和可移植代码的编写5。该规范在汽车、医疗、航空航天等对软件可靠性要求较高的行业应用广泛。
  • MISRA C:20126:同样由 MISRA 制定,是汽车制造业的嵌入式 C 编码标准。其前身为 1998 年发布的 MISRA - C:1998,从 2004 年开始扩大覆盖范围到其他高安全性系统。2012 年版本支持 C90、C99、C11 和 C18 语言规范,包括 158 条规则和 17 条指令,共 175 条指导方针,旨在确保 C 语言编写的软件在安全性、可靠性和可维护性方面达到较高标准。
  • BARR C:20189:是 Barr 集团开发的嵌入式 C 编码标准,主要目标是减少软件中的错误数量,同时提高嵌入式软件的可维护性和可移植性。其指南分为关于错误预防和编程风格两大类,一些规则被标记为 “零 bug… 周期”,对于未使用编码标准和静态分析的项目来说,采用 BARR C:2018 是一项重大改进。
  • AUTOSAR C++:AUTOSAR(汽车开放系统架构)组织制定的针对汽车电子领域的 C++ 编码规范。它基于 C++ 语言特性,结合汽车电子系统的特点和需求,定义了一套统一的编码规则和设计原则,以确保汽车电子软件的可靠性、可扩展性和兼容性,有助于实现汽车电子系统中不同供应商之间软件的集成和互操作性。
  • CERT C/C++1:由软件工程研究所(SEI)为 C 和 C++ 语言开发的安全编码标准。其目的是通过避免更容易出现安全问题的编码结构来加固代码,将优先级计算为严重性、有人利用漏洞的可能性和修复成本三个因素的乘积,并分为 L1、L2 和 L3 级别,帮助开发团队集中精力解决最重要的安全问题。
  • ISO/IEC TS 17961 C3:是国际标准化组织(ISO)和国际电工委员会(IEC)联合发布的技术规范,规定了 C 语言的安全编码规则。它提供了一系列规则和代码示例,以帮助开发人员编写安全的 C 程序,避免常见的安全漏洞,如缓冲区溢出、整数溢出等,但不规定规则的执行机制和具体的编码风格。
  • CWE 表:即常见缺陷列表(Common Weakness Enumeration),是 MITRE 公司继 CVE(通用漏洞披露)之后的又一个安全漏洞词典。CWE 旨在提供识别、减轻、阻止软件缺陷的通用标准,可作为人们购买软件的安全衡量标准,尤其是在购买旨在阻止或发现具体安全问题的安全工具时,目前最新版本是 2.3,共有 909 个缺陷。
  • GB/T 28169 - 20112:是我国发布的国家标准《嵌入式软件 C 语言编码规范》,由全国信息技术标准化技术委员会归口上报及执行。该标准规定了嵌入式软件中 C 语言的编码规则,包括代码结构、命名规范、数据类型、表达式和语句等方面的要求,旨在提高嵌入式软件的质量和可维护性,适用于嵌入式软件的开发、测试和维护等阶段。

针对MISRA C++:2008、MISRA C:2012、BARR C:2018、AUTOSAR C++、CERT C/C++、ISO/IE TS 17961 C、CWE表、GB/T 28169 C—2011这些目前比较常见的国内外嵌入式软件安全编码标准,从发起图家和地区、发布时间及情况、发布组织、规则数目、适用领域以及规则集特点进行对比,如下表所示:

这些常用的嵌入式软件安全编码标准之间,在具体规则项上也有一定的关联和覆盖,如下图所示:

使用库博静态代码分析工具可以对嵌入式软件代码中的编码进行自动化检测,提升效率,及早发现问题,及时解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值