自动驾驶软件的静态分析和编码标准合规性

自动驾驶软件的静态分析和编码标准合规性

为诸如自动驾驶之类的复杂功能编写代码需要庞大的有才能的团队,这些团队通常对如何确保高质量的代码有自己的看法。但是,要构建一个有效的软件开发流程并非易事,该流程包括诸如静态分析和编码标准合规性之类的质量计划,以使自动驾驶汽车获得成功的认证。

自动驾驶是一个非常有竞争性的空间,而开发人员的速度则是口头禅。谁先将经过认证的产品推向市场,将比竞争对手更具优势,因此,开发人员很容易将静态分析和其他质量措施视为障碍。尤其是因为自动驾驶领域渴望人才,因此即使他们没有安全背景,组织也在雇用精明的开发人员。但是,来自无功能安全文化背景的开发人员并不了解安全关键软件开发所需的所有质量流程。这可能使文化认同成为一个挑战。

获得内部支持

有时感觉要建立内部共识,以质量为导向的实践需要心理学硕士学位或受过培训的谈判员的技能……在过去的项目中,我负责引入静态分析和AUTOSAR C++ 14编码标准合规性,以实现可持续发展。自动驾驶软件非常创新,并且使用现代C++开发了用于自动驾驶软件的软件组件。考虑到这一点,AUTOSAR C++ 14编码标准是自动驾驶软件最合适的标准,因为它支持现代C++,并且是为面向安全性开发而创建的。

为了说服不信服的人,我作了多次演讲,讨论了多个不同方面。但是,即使进行了所有这些讨论和协议,一些开发人员仍然拒绝分析他们创建的所有代码。以下是我重点关注的一些要点,以确保正确的流程到位:

  • 认证——大规模生产之前,必须先对自动驾驶汽车软件进行批准和认证。在世界不同地区,此过程看起来有所不同,但是所有汽车组织都将ISO 26262视为简化批准和认证的主要功能安全标准。ISO 26262要求静态分析和编码标准符合性,并且对源代码的编码标准缺乏合规性将成为批准过程中的巨大障碍。没有认真的业务组织会允许这种风险。
  • 以较低的成本提供更好的质量——从一开始就构建高质量、合规的代码,并尽早进行测试,则可以更轻松(即更快)地解决问题,并且避免了常见的陷阱,因为开发人员将开始采用从开始。开发人员(甚至是对安全至关重要的文化不熟悉的开发人员)将学习,并且违反静态分析的情况将更少。必须在编写代码时进行测试,以快速创建复杂的软件。静态分析是非常适合此情况的一种方法,它通过消除可能导致不可预测行为的问题类别,为安全性和安全性奠定了重要基础。为开发人员提供一种可以在较短的反馈循环中产生结果并减少误报的工具,可以提高对该测试技术的接受度。随着时间的流逝,开发人员确实开始将其视为安全网,即可以帮助他们创建可靠代码的东西。更不用说这对于Agile/DevOps至关重要,因为如果您在发布前等待进行扫描,则将花费数月的时间来修复代码。
  • 法律问题——遵守编码标准是潜在法律问题的盾牌。随着数以百万计的汽车在道路上行驶,事故将会发生。其中一些将追溯到不可避免的软件错误。组织必须能够证明他们已经做了一切可能的事以防止安全隐患。如果软件缺陷导致悲剧,那么没有文件化的编码标准合规性流程当然会成为问题。因此,在与开发人员讨论此方面时,为了增强效果,我希望包括一些由软件缺陷引起的实际事故,例如臭名昭著的Toyota意外加速。

说服最有抵抗力的开发商……

自动驾驶技术还处于早期阶段。创建的许多源代码仅仅是测试新想法的原型。一些开发人员不想“浪费”时间使其符合编码标准,而只是想快速编写并进行测试。我听到的一个典型故事是:“我只想测试这个新算法,如果它可以工作,我将重写代码以使其变得干净。”这听起来很无辜,但事实是,这只是在增加技术债务。

当我们从一个原型过渡到另一个原型时,通常会带走很多代码,从统计上讲,它可能占代码的80%。因此,我们无法使用错误的代码来制作原型,然后再进行修复,因为从一开始,我们就知道我们没有时间这样做。因此,即使某样东西是原型,该代码也必须合规,因为最终产品将包含大量最初作为原型创建的代码。

如果不是现在就专注于现在而不是稍后再做,而是可以现在就专注于避免最终花费未知的时间,则开发人员开始将其视为增强流程而不是放慢进度。如果您可以在不降低速度或创造力的情况下有效地使流程适应开发人员的工作流程,则使用起来会变得更加容易。最后,保持物品整洁干净比最后清理一团糟容易得多。建立一致,可维护的做法来编写兼容的代码,将有助于您日后发现更多麻烦。

该死的遗留代码……

但是,即使您能够尽早成功地引入编码标准合规性流程,也不可避免地已经有一些(大量)代码已经由团队创建,并且已经被继承。当您选择静态分析工具(Parasoft C/C++test)并选择标准(AUTOSAR)时,同时,该团队正在创建大量没有任何合规性政策的代码!因此,还必须为旧代码创建策略。两项重要的政策是:

  • “零新违规”——您必须先完成新的代码合规性
  • “随时清理”——如果您触摸文件,则必须对其进行清理

通过这些策略,您可以处理旧代码,引入新代码并继续保持整洁。

总结

为了在整个开发组织中成功采用静态分析和编码标准合规性流程,您将受益于以下各项:

  1. 确保每个人都知道您为什么这样做(如果不花时间,您就无法通过认证,也无法在汽车市场上取得成功)
  2. 如果您不重视质量,则解决延迟发布的成本,并向团队展示当您将质量放到最后时会发生什么
  3. 使采用尽可能相关且毫不费力。在实施静态分析工具时,请务必谨慎,确保选择正确的规则和检查器,并确保工作流集成到开发人员的现有工作流中。

自动驾驶软件的静态分析和编码标准合规性

标签:

来源:慧都

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年5月3日
下一篇 2020年5月3日

相关推荐

发表回复

登录后才能评论