缩略图
Science and Technology Education

汽车电子软件开发中质量分级保障体系的研究

作者

董飞翔

经纬恒润(天津)研究开发有限公司 天津市 300380 身份证:410527199105239734

引言:近年来,汽车电子电气架构正经历着从分布式向域集中式、中央集中式的演进,软件规模和复杂度呈几何级增长。在智能网联、自动驾驶等新功能快速渗透下,软件质量问题日益凸显,已连续数年成为汽车召回的主因。由于汽车嵌入式软件直接控制着车身和动力系统,一旦失效,极易引发严重的安全事故。因此,急需建立一套科学、系统的质量保障体系,从软件开发的源头入手,分层分级管控质量风险,确保汽车电子软件的安全性、可靠性和鲁棒性,为智能汽车的健康发展保驾护航。

一、需求阶段的质量分级管控

在需求阶段,首要任务是全面识别和深入分析与安全性、法规遵从性相关的需求,将其划分为最高优先级需求,并从源头纳入严格的质量管控流程。具体来说,应采用国际功能安全标准《道路车辆功能安全》ISO 26262 对所有安全相关需求进行系统分级,明确其对应的ASIL等级。对于被定为ASIL C或D级的高安全完整性等级需求,要组织多领域专家进行联合评审,从多角度审视需求的正确性、清晰性、一致性、可追踪性和可验证性,并形成书面的评审报告。针对源自法律法规的强制性需求,如环保、电磁兼容性等,要逐条梳理并建立台账,将其视同最高ASIL等级需求纳入到需求管理数据库进行统一管理和周期性评估。同时,要高度重视源自客户的关键需求,从功能、性能、成本、进度等维度将其分门别类,纳入重点跟踪对象,并建立面向客户的定期报告机制。在需求管理过程中,还应运用需求管理工具如DOORS等,建立上下层需求间的双向追溯关系,确保需求分解和覆盖的完整性,为后续的设计、编码、测试提供可靠的输入。通过需求阶段的质量分级管控,可以从源头防范需求错误、遗漏、冲突等问题,奠定软件开发的质量基础。

二、设计阶段的质量分级管控

进入架构设计和详细设计阶段,应确保软件架构和模块设计能充分满足安全性、可靠性、性能、可测试性、可维护性等关键质量属性的要求。在系统架构设计阶段,要对高ASIL等级的安全需求进行系统分解和分配,明确每个子系统和组件的安全功能和安全责任,并在架构设计说明文档中予以规定。要充分评估架构设计备选方案对功能安全的影响,选择最优方案并论证其合理性。在软件架构和模块设计时,要针对ASIL C/D的安全关键功能,通过引入安全机制、冗余设计、故障诊断与容错等方法,最大限度防止或减轻由软件失效导致的危害。接口设计是软件设计中的薄弱环节,极易引入集成错误和安全隐患。因此,要高度重视接口的设计质量,对内外部接口进行统一规范定义,从语法、语义、时序、异常处理等方面充分考虑接口的鲁棒性,防止由于数据类型不匹配、边界条件缺失、异常输入未处理等问题导致系统失稳或崩溃。同时,要尽早引入Klocwork、Polyspace等静态代码扫描工具,从可达性、指针安全等方面自动检查软件设计缺陷和不符合MISRA C等编码规范的问题,在流程中嵌入质量关卡,防患于未然[1]。

三、编码阶段的质量分级管控

进入代码编写阶段,质量控制的核心目标是确保软件代码的安全性、可靠性和健壮性,防止代码缺陷引入安全隐患。对于ASIL A/B等级的软件模块,应严格遵循MISRA C等汽车行业编码标准,规范代码风格,提高代码可读性和可维护性,并通过QAC、PC-Lint等工具自动检查常见的代码缺陷,如除零、数组越界、未初始化变量等;而对于ASIL C/D等级的高安全完整性代码,如故障处理、冗余切换等,除了常规的编码规范检查外,还应采用形式化方法进行严格的静态验证,通过定理证明、模型检查等技术,数学化证明代码的功能正确性和一致性。在动态测试方面,也应设计足够的测试用例,从语句覆盖、判定覆盖、条件组合覆盖等维度提高测试充分性,并引入 gcov、Tessy等代码覆盖率分析工具客观评测。考虑到 80% 以上的安全事故源自软件缺陷,要高度重视代码质量控制,引入Valgrind、Purify等内存检测工具自动扫描代码中的内存泄露、野指针、数组下标越界等动态内存安全问题,并持续跟踪修复。

四、测试阶段的质量分级管控

测试验证要重点关注安全功能的测试覆盖和有效性验证,并评估残余的安全风险。对于ASIL C/D等级的高安全完整性功能,如障碍物检测、碰撞预警等,应该从使用场景、环境条件、异常工况等方面设计足够的测试场景,对其正常流、异常流进行全面覆盖,并评估每个场景的残余风险,形成测试报告和安全分析报告。在系统集成测试阶段,应引入故障注入机制,模拟传感器失效、内存崩溃、通信中断等各类软硬件故障,并观察系统在故障模式下的应对措施是否符合安全设计要求,如故障诊断、失效保护、应急控制等。对于暴露出的薄弱环节,应及时完善应对机制并重新验证。在整车道路验证阶段,要设计极端恶劣的工况,如高温、严寒、湿热、颠簸等,考察嵌入式软件长时间运行在极限条件下的鲁棒性和可靠性。要从行驶工况数据库中提取关键指标数据,如里程、速度、环境温度等,建立回归测试基线,形成软件质量运行评估报告。针对测试过程中发现但需求交付后才能修复的遗留软件缺陷,要从严评估其对功能安全、可用性的影响,划分风险等级,制定防范预案。对于高风险问题,要及时上报管理层,必要时应启动回避机制,通过工程措施进行规避[2]。

五、发布阶段的质量分级管控

在软件发布之前,要对当前版本的成熟度和质量风险进行全面的评估和综合平衡。针对高风险、高曝光的软件版本,如OTA升级包、事故数据记录仪(EDR)等,应邀请外部权威专家或机构进行独立评审,客观评估其发布风险和质量状况,形成第三方评估意见,为版本发布提供重要决策参考。要将已成功发布的软件版本作为基线,采用版本差异分析等技术,系统评估新版本的功能、性能、接口等方面的变更影响,重点关注变更可能引入的质量缺陷、兼容性问题和安全隐患,对于影响较大的变更,要制定专项的回归测试方案,逐项验证变更有效性和质量稳定性。版本发布前,要全面回顾软件生命周期各阶段的需求分析、安全分析、设计文档、源代码、测试报告等所有工作产出,系统确认安全分析和验证证据链的完整性、一致性和充分性,形成发布评审报告。由于汽车软件直接关系到行车和乘员安全,因此,应针对每一个发布版本,制定详细的追溯和召回预案,明确软件发布后的质量问题应急响应机制,确保一旦出现问题,能够快速定位、诊断,并第一时间采取封闭、下线、强制升级等应对措施,将损失降到最低[3]。

结束语

质量是汽车电子软件的生命线,决定着智能汽车能否行稳致远。软件研发企业只有树立“质量第一”的理念,将先进的质量管理思想、方法与工具充分融入到软件开发过程中,构建全生命周期、全流程的质量保障防线,才能防患于未然,持续提升软件质量,赢得市场口碑。未来,还需要产学研用各界持续创新,研究符合汽车行业特点的敏捷化、智能化软件工程方法,构筑世界一流的汽车软件质量保障能力,为人类汽车社会发展贡献力量。

参考文献:

[1]权伍明.汽车电子电气架构设计及优化措施[J].汽车测试报告,2023,(10):14-16.

[2]王超群,韩昶,郗宏伟.新能源汽车维修中电子诊断技术应用[J].汽车测试报告,2023,(09):58-60.

[3]吕倩倩.电子诊断技术在新能源汽车维修检测中的应用体现[J].电子元器件与信息技术,2023,7(04):204-207.