一文了解如何应对MISRA和AUTOSAR编码要求的实际挑战

   幽梦化蝶        

现代汽车软件对安全可靠的开发要求越来越严格。除了动力总成、底盘、车身电子等经典领域的开发ECU外,更多先进的新系统正在开发,如数字驾驶舱、信息娱乐系统、自动驾驶系统和连接单元等。


一文了解如何应对MISRA和AUTOSAR编码要求的实际挑战


ISO 26262和ISO/SAE 21434等标准在更高层次上为汽车组织提供了关于如何考虑安全保障的指导。然而,更具体到编码和考虑源码质量、安全和安全性,有专门的编码指南,如MISRA和AUTOSAR编码指南。


什么是MISRA和AUTOSAR?


汽车工业软件可靠性协会(MISRA)为C/C++软件开发定义了一套指南和指令,主要应用于汽车、国防和航空电子等领域的安全关键系统。


MISRA-C:2012包括目前最新的版本MISRA-C:2012修正案1和2,定义了175条开发指南,分为158条规则和17条指令,并将每条规则进一步分为强制性、要求性和建议性。此外,为了帮助各组织验证准则,每条准则都被定义为可决定的或不可决定的。可决定的准则可以使用静态分析工具进行验证;但对于不可决定的准则,静态分析只能产生不完整的图像,从而产生潜在的假阳性/阴性。


此外,AUTomotive Open System ARchitecture(AUTOSAR)定义了一套名为AUTOSAR Coding Guidelines C++的准则。这些被认为是MISRA-C++:2008标准的更新,目前正在由MISRA C++委员会进行修订。


此外,在2016年,MISRA发布了MISRA Compliance:2016文件,作为组织如何实现MISRA合规性的指南。该文件于2020年更新,作为合规过程的正式指南。它定义了流程合规的可交付成果,包括准则执行计划、准则重新分类计划和合规总结。


这些交付物由可选的 "偏差记录 "和 "偏差许可 "支持。具体来说,值得一提的是,归类为咨询性的规则可能会在准则重新分类计划中被重新分类为不适用,这意味着这些规则将不适用于具体项目。


此外,MISRA合规文件还围绕合规的含义、在哪些约束条件下准则可以重新分类、在哪些情况下允许偏离准则等方面定义了规则和约束条件。除此之外,还对如何处理所谓的Adopted Code(如第三方二进制文件或开源软件)给出了指导。


虽然MISRA合规性文件提供了指导,但许多组织似乎在苦苦挣扎,经常只是应用启用了MISRA或AUTOSAR编码检查器的供应商工具。他们对合规性定义和合规性过程中的自由度认识不足。


面临的挑战


虽然从表面上看,在开发过程中遵循一些编码准则来实现合规性似乎很简单,但在实践中却面临着多重挑战。首先,数字驾驶舱、信息娱乐系统、自动驾驶系统和连接单元等新系统中的软件往往由各种来源的代码组成,包括自己开发的代码、第三方开发的代码、商业软件、自动生成的代码和开源软件。


试图实现整个代码库的编码合规性是一个重大挑战,因为软件的某些部分可能并没有考虑到MISRA或AUTOSAR编码指南。因此,扫描整个代码库是否符合MISRA或AUTOSAR的编码要求,通常会产生大量的编码违规行为,这对一个组织来说是不现实的。


更重要的是,根据具体的准则类型,或软件组件的类型,这些发现中的许多可能具有较低的优先级,也许被认为与安全或保安无关。大量的发现使组织难以确定必须首先解决的最优先问题。由于代码库包含来自不同来源的日益增多的软件,这进一步加剧了这一挑战。


解决方案概述


对于组织来说,明确了解代码库中的部分和优先级最高的编码准则是至关重要的,这样才能有效地处理违规行为。如前所述,一种幼稚的方法是使用静态代码分析工具扫描整个代码库,并启用所有编码准则检查器,这将产生许多发现。为了解决这个挑战,下面介绍一种基于两步走的解决方案。


作为第一步,各组织需要确定代码库中相关部分的相关编码准则,并为目标系统的软件创建适当的配置。也许可以应用危害分析和风险评估(HARA)或威胁分析和风险评估(TARA)的结果,以更准确地确定代码库中与安全和安保相关的软件组件。


然后可以将该代码库划分为各种组件,例如,自己开发的安全关键组件、自动生成的非安全关键组件、第三方开发的安全关键组件、开源软件非安全关键组件、商业非安全关键组件等。图1描述了一个简化的例子。


一文了解如何应对MISRA和AUTOSAR编码要求的实际挑战


1. 代码分割的例子,其中代码库被分割成各种软件组件。


此外,组织可以确定哪些编码准则适合于代码库的哪些部分。例如,某些规则可能更适用于安全和安全关键型组件,而不太适用于非安全和非安全关键型组件。然后相应地配置一个静态代码分析工具。它可以用来定期扫描代码库,只检查与特定软件组件相关的某些编码准则,以达到更高效的扫描效果。


需要注意的是,组织应该使用覆盖面广的编码准则检查器的静态-代码分析工具,以达到更好的效果。图2所示为一个名为Coverity的静态代码分析工具所识别的MISRA结果实例。


一文了解如何应对MISRA和AUTOSAR编码要求的实际挑战


2. 静态代码分析工具检测到的MISRA发现的例子。


静态代码分析工具生成的结果,在第二步中由数据分析工具进行处理。其目的是探索潜在的仍有数千甚至数十万个发现的结果集,并创建一个客户烧毁策略。


Logilica Insights工具提供了类似于商业智能解决方案中的分析功能,并将其与可视化表示相结合。这些允许组织探索发现,并更容易地获得对代码库的相关MISRA合规策略的见解。


除了常见的图表和可视化技术,Logilica还采用了所谓的CodeCities,这是软件库的3D地图。每个文件都被显示为一个建筑,文件夹被显示为平台。衡量标准可以被叠加以确定建筑物的大小和颜色。图3是静态代码分析工具使用这种技术生成的MISRA结果的一个例子。


一文了解如何应对MISRA和AUTOSAR编码要求的实际挑战


3. 代码库中缺陷密度可视化的3D地图。


建筑物的高度反映了文件的大小,建筑物的颜色表示MISRA的缺陷密度(每个代码大小的发现)。例如,图中颜色为红色的建筑物具有较高的缺陷密度,可能表明这是组织应该优先考虑的事情。此外,这种可视化的表示方式有助于识别热点,即包含大量违规行为的特定代码区域。然后,组织可以进一步调查可能导致这些热点的原因。


效益


这个解决方案有很多好处。例如,它可以帮助组织更好地识别最严重的违规规则。此外,它还可以了解这些违规行为的位置--即哪些组件和哪些文件,并帮助定义合规策略。


第一步,必须正确地使用工具和流程。静态分析工具使用目标软件的相关编码准则的特定配置进行配置,以实现更高效的扫描,使扫描能够定期(例如,每天)进行。第二步,可以让开发人员和工程管理部门利用数据分析工具清晰地了解项目的现状。例如,组织可以很容易地识别出在采用的代码(例如,一个开源软件组件)中是否检测到大量的发现,或者某些特定的规则是否产生了大量的发现。


根据这些见解,组织可以定义适当的合规性策略,也许可以开始精简未采用的代码或排除咨询规则。例如,如图4所示,示例项目的最高违规规则是规则15.5。


一文了解如何应对MISRA和AUTOSAR编码要求的实际挑战


4.示例项目中最严重的MISRA规则。


随着汽车系统的不断进步,所包含的软件也越来越复杂,包括各种来源的软件,如自己开发的代码、第三方开发的代码、商业软件和开源软件组件等,软件的合规性自然成为更大的挑战。为了克服这些挑战,将编码合规性落到实处,汽车企业需要建立适当的工作流程,并采用适当的技术解决方案。

最新评论(0)条评论
不吐不快,我来说两句

还没有人评论哦,抢沙发吧~

相关新闻推荐