sil是哪个地方的认证,sil是啥

  

  在汽车、航空电子、医疗和工业控制等许多行业,新开发的应用在大多数情况下都必须获得相应的功能安全认证。通过所有必要的过程和测试来完成功能安全认证一直是一个非常困难的过程,但有一些方法可以加快认证速度。当然,选择IAR Embedded Workbench这样的开发工具,自己认证,在各种实际应用中得到验证,也是加快从设计到认证过程的一种方式。   

  

  在功能安全关键应用程序的开发中,开发人员可以采取一些调整措施来加快认证速度,但所有这些都取决于应用程序的代码质量。代码质量如何保证?幸运的是,我们有一些简单的方法可以立即提高代码的质量,并尽可能减少工作量。   

  

  善用标准   

  

  您知道C99代码规范中大约有190个歧义吗?确切地说,C99中有190个语法上合法的C结构,但在C语言规范中没有明确说明。事实上,如果使用最新的C18代码规范,情况会变得更糟。如果在C中引入多重继承和虚拟继承,情况会变得更糟。编译器会把源代码变成可执行代码,所以代码的含义必须解析后才能正确运行。   

  

  在实际情况下,开发人员可能会使用不同的编译器,他们可能会以不同的方式解释源代码。然而,在高可靠性系统中,这将是一个噩梦般的场景,尤其是许多追求功能安全认证的公司一般会在多个平台上交叉编译他们的代码,以方便测试。可以想象,这将严重拖慢认证速度,因为你必须测试所有这样的情况,以证明代码的可重复性和可靠性。   

  

  如何才能度过这个难关?简单来说,就是避免代码歧义。但是如何做到这一点呢?开发人员可以选择像MISRA这样的编码标准,这是为了避免常见的代码歧义而设计的。此外,该标准还提倡使用安全可靠的编码实践来减少代码中的缺陷数量。有了功能安全标准,这个问题就可以解决了。   

  

  功能安全标准涵盖了代码分析   

  

  几乎每个功能安全标准都要求开发人员对代码进行静态分析,同时也强烈建议项目团队对代码进行运行时(或动态)分析。最有影响力的标准是IEC 61508,它通常适用于所有安全相关系统。根据本标准C.4.2节的内容,当安全完整性等级(SIL)在1级以上时,不建议使用没有编码标准的C语言来消除歧义和危险行为。换句话说,如果开发的产品要获得SIL 2-4认证,必须使用静态分析来提高代码的健壮性。   

  

  静态分析工具可以迫使开发人员实现编码标准,比如MISRA。此外,静态和运行时分析可以快速指出有风险的编码行为,尤其是前面提到的编码标准的模糊性,因此有助于提高代码质量。基于这种考虑,开发者应该更多选择IAR Embedded Workbench等已经在多元化应用中得到验证的工具,它们可以提供更全面的标准化功能。   

  

  然而,何时使用这些类型的自动化工具也会对项目的认证时间表产生巨大的影响。许多公司和组织会使用难以配置和使用的代码分析工具,并让它们每天晚上在构建服务器上运行。但是,这种工具的效用是有限的,因为每个程序开发人员都无法获得即时反馈来发现他们刚刚编写的代码有什么问题。   

  

  此外,有时这些工具发送的警告消息很模糊,这浪费了开发人员的时间来弄清楚它们的真实含义以及如何更正代码来消除警告。如果你能在开发过程中先运行代码分析,然后进入正式构建,那么你就能完美避免代码缺陷。这样一来,项目代码缺陷的注入率会大大降低,这是认证机构非常重视的指标,因为这意味着项目有了非常成熟的开发组织。   

  

  将代码分析融入日常工作流程   

  

  IAR Systems团队根据多个行业多家公司的调研结果发现,代码分析工具越容易配置和使用,开发者选择它的概率就越高,受益也越快。如果能将这些自动化工具纳入开发人员的工具箱,那么开发人员在编写应用程序时,可以随时检查和改进代码的质量,同时“就地”考察这部分代码要做什么,以及它与系统中其他模块的交互情况。为了有效地做到这一点,代码分析工具必须集成到日常工作流程中。   

  

  为了了解其他人对集成代码分析的看法,IAR团队发现Google在ACM journal上发表了一篇文章,讨论代码分析的优势。尽管这篇文章对他们的整个代码库(包括C、C和Java)进行了全面的调查,但他们的结论非常明确:   

  

  “编译器错误可以在开发过程的早期发现,并可以集成到开发人员的工作流程中。我们发现,扩展编译器的检查集对于提高谷歌的代码质量是有效的。”   

  

  作者认为,将静态分析检查集成到编译器工作流程中,并作为错误信息输出,将大大提高开发人员对工具输出信息的重视程度,最终大大提高代码质量。往下看,他们谈到向最近遇到编译器错误的开发人员和已经收到错误修复的开发人员发送相同的调查。   

  

  “谷歌的   

开发者认为,在编译时标记出错误信息(相比于植入代码检测功能的补丁)能捕捉到更重大的错误;例如,调研参与者认为在编译时标记的问题中的74%属于真正的问题,而在检测代码中发现的真正问题只有21%。”

  


  

此外,该文章还谈到了将代码分析整合到工作流程的重要性,指出当他们通过静态分析工具自动运行提交的代码并邀请工程师查看分析仪表板时,很少有工程师跟进。但是,如果在编译过程中就能得到即时反馈,则静态分析工具的使用更便捷且分析结果也更难被忽视。因此,他们选择在每个人的工作流程中默认集成静态代码分析。他们认为要推广代码分析工具,开发者必须感到能从中受益,并且喜欢使用这些工具。

  


  

在工作流程中加入代码分析会得到什么样的结果?结果之一是提高了应用的整体安全性,因为优质代码可以消除缓冲区溢出、非法指针等漏洞。虽然这个理由足够充分,但有时很难让人们做到“防范于未然”,您需要更显著的结果来说服开发者和管理层相信代码分析的优点。

  


  

Stefan Wagner等人的一篇论文使用经验数据来计算代码分析工具与传统测试在不同代码库中的优劣。他们的结果很有说服力,在769个被识别的缺陷中,76%是被代码分析工具发现的,而只有4%被传统测试发现(其余20%则在代码审查时发现)。

  


  

如果能在开始测试前就消除75%的缺陷,实现软件平均故障间隔时间(MTTF)目标能有多快?答案是“非常快”。仅仅是在测试上节省的时间和金钱就值得在代码分析工具上进行投资,更不用说它还能加快上市时间。这些都是功能安全认证机构喜欢看到的流程类型,因为它极大地降低了缺陷进入最终产品的风险。

  


  

优质代码加速功能安全认证

  


  

加快功能安全认证的关键是提高代码质量。只有提高代码质量,项目团队才可以降低缺陷注入率,从而更快地达到软件发布标准,这样在提交给功能安全认证机构认证时,它们才会认为您的组织拥有非常成熟的流程。虽然开发者永远无法确切知道一个应用中还有多少缺陷,但通过早期和经常使用代码分析工具将有助于减少其数量。

  


  

文章作者:Shawn Prestridge,IAR Systems行业分析兼高级现场应用工程师/美国FAE团队负责人

相关文章