行业合规标准MISRA如何帮助C/C++代码程序员高效地编写代码?
MISRA标准包含编写软件的准则和代码规则。汽车、航空航天和国防、医疗、工业自动化和铁路等行业都使用该标准来帮助他们的开发人员编写源代码,以确保软件的安全、安保和可靠性。
由于嵌入式软件工程师使用C和C++编程语言来编写安全关键型软件的代码,MISRA标准的创建者为使用这两种语言的编码者建立了这些标准。
在20世纪90年代初,电子产品在汽车中变得越来越重要。作为这些电子产品的一个组成部分的嵌入式软件也是如此。因此,工程师和制造商开始意识到,无论是出于安全还是商业原因,软件的可靠性是至关重要的。今天的挑战甚至更大,因为一辆汽车的软件可能涉及超过1亿行的编码。
MISRA的功能安全编码标准
今天,开发团队采用编码标准作为定义、管理和利用一组编码实践的方法,其首要目标是一致性。编码规则的主要目的是限制语言的使用,这样可以防止开发人员做一些 "错误 "的事情,并可能产生潜在的危险。
开发人员可以通过采取合理的语言使用限制来避免软件中的许多缺陷。这导致了风格的统一,这在软件项目中作为一种纪律是很有价值的。
常用的MISRA C和C++语言指南和规则
每个MISRA标准都包含了一套编码参数和规则,以及支持材料。支持材料是标准的补充部分,提供了任何想获得符合性的程序员所必需的重要背景信息。 让我们看看当前的C和C++ MISRA编码标准本身和简要说明:
- MISRA C++ 2008:虽然C仍然是主流的编码语言,但这个版本谈到了C++的使用增加。注意:许多企业选择以AUTOSAR C++ 14为标准,它涵盖了C++的最新变化。事实上,AUTOSAR和MISRA联手制作了下一代的标准。
- MISRA C 2012:该版本于2013年发布,也被称为MISRA C3,进一步发展了MISRA C标准。它吸取了14年来与成千上万的组织和用户互动的经验,包括了一些新的规则,弥补了一些漏洞,并改进了以前存在的规则背后的解释和描述。该标准扩展了对C99的支持,并保持了对C90、C11和C18的支持。它还做出了一些改进,降低了合规的复杂性和成本。
- MISRA合规性2020:这份现行文件为完成MISRA编码标准的合规性设定了一个框架。它取代了以前版本的标准中的合规性和流程及偏差要求。
使用Parasoft静态分析实现MISRA合规性
MISRA编码标准提供了全面的规则和指导方针,因此公司可以保护他们的应用程序免受运行时错误和软件故障的影响,并使它们不太容易出现安全和安全漏洞。符合MISRA标准有助于改进语法,创建代码一致性,并促进可移植性。对于不使用静态分析(或SAST-静态应用安全测试)解决方案或工具的团队来说,验证合规性可能会有问题。Parasoft简化了这一过程,这对于确保及时的软件交付和编码安全至关重要。
在整个软件开发生命周期中应用MISRA合规性是很重要的,包括在代码实现期间进行左移测试和加快代码审查。这不仅提供了质量改进,还提供了进度度量、持续可追溯性和强制执行。根据2020年MISRA合规性自动记录和合规性报告也是节省资源和时间的一个关键因素,也是解决违规问题时避免沮丧的一个关键因素。
像Parasoft这样的工具可以被配置成检测整个MISRA标准的子集。这减少了分析产生的噪音量,并增加了对解决严重违规问题的关注。
合规报告
与公司实现MISRA合规性相关的问题之一是缺乏证明合规性的标准机制。为了解决这个问题,MISRA发布了“MISRA合规性2020:实现对MISRA编码指南的合规性”,这是最新的更新,提供了“MISRA合规性”的更具体定义,并确定了证明符合MISRA标准所需的几个交付件。
- 指南合规性总结。总体项目合规性的强制性主要记录。GCS包括每个指南的条目、其符合性水平、任何偏差和/或重新分类。
- 指南重新分类计划。必须遵循所有强制性准则来实现合规性。但是,必需和咨询指南可以重新分类为更严格的类别(例如从咨询到必需),但只有咨询指南可以重新分类为不太严格的类别(例如从咨询到禁用)。
- 偏差报告。您的项目可能存在偏离指导方针或违反规则的情况,如果这些偏离是合理的,并记录在报告中,且不影响安全,则仍然被认为是合规的。
- 指南实施计划。演示如何验证每个MISRA指南。在MISRA符合Parasoft的背景下,GEP将MISRA指南映射到Parasoft代码分析规则和DTP功能。
Parasoft——领先的自动化测试工具,满足绝大多数行业标准
鉴定工具的目的是证明它们对预期的使用是有效的。它包括证明团队如何对其进行资格认证以及背后的理由。Parasoft C/C++test和我们的报告工具Parasoft DTP已经通过了TüV SüD的认证,可用于安全关键型应用,而且对于一些最严格的工艺标准,如DO-178B/C及其要求,存在一个工具鉴定套件。
从开发到质量检查,Parasoft的技术通过集成静态和运行时分析,单元、功能和API测试,以及服务虚拟化,在不牺牲质量和安全性的情况下加快软件交付,节约交付成本。
强大的报告和分析功能可帮助用户快速查明有风险的代码区域,并了解新代码更改如何影响其软件质量,而突破性的技术将人工智能和机器学习添加到软件测试中,使组织更容易采用和扩展跨开发和测试团队的有效的软件测试实践。
Parasoft针对C/C++、Java、.NET和嵌入式的开发测试都有着30多年的深入研究,很多全国500强企业使用Parasoft的产品实现了软件快速、高质量的交付。