聚焦汽车软件开发中的编码标准

今日头条

1113人已加入

描述

随着产品设计的复杂性和连通性不断增加,确保最终用户所依赖的软件安全仍将是重中之重。

今年早些时候,宣布汽车行业的两大领先编码标准 AUTOSAR 和 MISRA 正在合并。此举突显了编码标准在各行各业中的使用日益增加:医疗设备开发、国防和航空。

与这些市场一样,编码标准被用于帮助汽车行业减轻对现代汽车日益依赖的软件安全性的担忧。“寻找漏洞”的兴起——通常由汽车制造商自己运行或支持——也表明了该行业对这个问题的关注程度。

随着越来越多的组织参与到汽车设计过程中,特别是随着物联网的出现,编码标准也变得与越来越广泛的受众相关。

今天生产的乘用车已经涉及许多传感器、车载通信和其他依赖软件的组件。巡航控制、车对车通信和驾驶员辅助系统是标准功能。让我们对此有一些看法:一辆现代汽车可能有超过 1 亿行代码。这不仅仅是火星探测器或 F-35 战斗机。只有当无人驾驶、自动驾驶和更“联网”的汽车成为主流时,代码量才会增加。

但是,挑战不仅在于代码量,还在于代码量。这是复杂性。C++ 编程语言的使用正在增长,主要是因为它可以帮助开发人员处理这种复杂性。C++ 提供的灵活性还意味着开发人员需要做出谨慎的设计决策,因为这种灵活性意味着即使是最有经验的开发人员也很容易忽略编码缺陷。在最坏的情况下,软件测试仍然无法检测到编码缺陷,并导致安全问题和安全漏洞。

示例缺陷类别是缓冲区溢出和不受控制的格式字符串,这可能使黑客可以插入和运行恶意代码。

编码标准包括旨在防止这种情况发生的规则。例如,编码规则可能会说“不要形成或使用越界指针或脚本”以防止缓冲区溢出,并“从格式字符串中排除用户输入”以防止不受控制的格式字符串。这两个编码标准还支持符合 ISO 26262(第 6 部分)的功能安全要求。

MISRA 和 AUTOSAR 都是汽车供应链中的组织与更广泛的安全关键软件开发社区之间的合作,前者是历史最悠久、应用最广泛的社区,而后者更侧重于联网或自动驾驶汽车的需求。C++ 的 MISRA 和 AUTOSAR 编码标准将结合在一起,这一事实为开发人员提供了访问大量资源和知识的途径。

最佳实践
与任何理论一样,真正的价值在于正确的实践。创建代码清晰易读和理解的“干净代码”,并更加重视代码审查过程是帮助确保代码安全和质量的有效但劳动密集型的方法。软件开发人员是富有创造力、忙碌的人。他们不想要额外的“家务”。此外,鉴于汽车软件设计的关键性质,必须将人为错误的风险降至最低。

与现代、大规模和复杂软件开发生命周期的许多方面一样,自动化是答案,而在编码标准方面,这通常是通过使用静态代码分析工具来实现的。有时称为代码检查,这是在后台自动模式下不断验证代码库的过程,开发人员无需任何努力。更早更深入地检测到缺陷。一个好的工具也会减少误报的数量。

静态代码分析工具通常与版本控制系统一起使用,它提供实时和历史视图,以查看由谁、在哪里、什么以及如何提交或更改的内容——不仅是代码,还包括其他数字资产,包括图表、文档和原型。结果是一个开发团队对项目的每一步都有完整的故事,这使得向监管机构证明合规性变得更加容易和快捷。

但是,安装这些软件工具并不能解决所有问题。正确的应用、过程和对可实现目标的理解都是至关重要的。例如,汽车设计很少是白纸:软件组件通常来自开源、第三方开发人员或重用现有或以前项目的组件。确保所有来源的代码都经过充分检查可能是一项挑战。

调整静态代码分析工具以适应每个团队也很重要。定制它以适应每个团队的工作环境可能需要微调。否则,该工具可能无法提供预期的结果,进而影响该工具的感知价值,并可能阻碍其采用。

虽然该工具应该完成所有艰苦的工作,但开发人员将需要一些培训,例如,能够分析结果并正确响应通知。围绕工具能做什么或不能做什么设定期望也很重要;例如,静态分析器无法证明代码正在按照设计者的意图执行其功能。

解决这些问题将有助于采用静态代码分析,进而支持正确遵守编码标准和合规性要求。一旦建立了代码检查,就可以随着时间的推移监控代码质量指标,并用于报告可证明的积极影响。

随着产品设计的复杂性和连通性不断增加,确保最终用户所依赖的软件安全仍将是重中之重。这适用于各种产品,而不仅仅是汽车设计。编码标准,以及支持其高效应用程序的工具和人员流程,将帮助开发人员和软件工程师相信他们正在安全和合规地编码。

审核编辑 黄昊宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分