沃尔沃汽车软件工厂使用 Polyspace 提高开发速度和质量
挑战
为下一代汽车开发可靠、符合标准的软件
解决方案
在整个软件开发生命周期中使用 Polyspace 运行静态代码分析
结果
- 现场测试前就检测到了关键运行时错误
- 通过更好的代码重用提高了工作效率
- ASPICE、ISO 26262 和 ISO/SAE 21434 认证要求达成
2018 年,沃尔沃汽车开始为嵌入式软件开发团队提供持续集成 (CI) 工具链。该工具链为很多项目的开发人员带来了持续编译、测试和部署迭代代码更改的能力。
Polyspace® 产品作为这一自动化软件编译流程的一部分,为用 C 和 C++ 编写代码的开发人员以及从 Simulink® 模型生成代码的开发人员提供了静态代码检查。
“几年前,我们的一个大型项目开始采用 C++ 进行开发,”沃尔沃高级首席软件工程师 Johannes Foufas 说。“C++ 是一种复杂的语言,所以我们需要可靠的代码验证工具。在我们尝试过的所有静态代码分析工具中,Polyspace 产品是最为出色的产品之一。”
挑战
许多沃尔沃汽车软件工程师用 C 或 C++ 进行开发,但这些语言颇为复杂,可能导致难以发现的错误,修复成本也很高。在过去,沃尔沃汽车使用开源工具来检查和调试代码。然而,这些工具都无法识别源代码中的一个下溢错误,而该错误导致了车辆上出现偶发问题。
为了节省开发时间和成本并符合功能安全和网络安全标准,沃尔沃团队需要一种万无一失的方法来识别稳健性测试很难检测出来的关键运行时错误,包括溢出和其他数值问题。
解决方案
Johannes Foufas 的团队评估了多种代码分析工具和服务,最终选择了 Polyspace 产品作为首选解决方案。沃尔沃汽车软件工程师与 MathWorks Consulting Services 密切合作,将 Polyspace 工具集成到了软件开发生命周期的每个阶段。
工程师使用 Ansible 将 Polyspace 作为基础作业整合到 Zuul CI 系统中,并将 Polyspace 的结果集成到代码审查系统中。沃尔沃汽车的每个开发团队都可以创建一个单独的已安装和配置 Polyspace 代码检查的 CI 管道。
借助 Polyspace Access™ 提供的 Polyspace as You Code 插件,很多团队都会在使用 IDE 编码时检查代码是否符合 CERT® C、CERT C++、MISRA C® 和 AUTOSAR C++14 编码规范。在提交代码修改之前,开发人员在本地计算机上运行 Polyspace Bug Finder™ 和 Polyspace Code Prover™ 以对更改进行预验证。
当开发人员将更改推送到源代码存储库时会自动触发 Polyspace Bug Finder Server™ 和 Polyspace Code Prover Server™ 分析。Polyspace 的结果会集成到 Gerrit 中以支持代码审查。CI 系统采用严格的控制措施:每项建议的更改在代码合并之前都要经过验证,并且仅在满足功能安全和网络安全要求的情况下才会提示提交到中央 Git™ 存储库中。
结果
- 现场测试前就检测到了关键运行时错误。Foufas 说,“在现场发现软件缺陷需要很高的成本才能修复。Polyspace Code Prover 是唯一一款能够让我们从一开始就发现问题的工具。”
- 通过更好的代码重用提高了工作效率。Foufas 指出,“Polyspace 节省了开发时间。自从我们在基础软件上部署了 Polyspace 静态代码分析工具,基于现有代码的新项目的调试问题就大幅减少了。”
- ASPICE、ISO 26262 和 ISO/SAE 21434 认证要求达成。“不符合行业标准的软件会直接影响公司的声誉和市场份额。借助 Polyspace 工具,我们更加确信我们的代码没有运行时错误,并且符合功能安全和网络安全要求。”Foufas 说。