汽车行业的电动化、智能化和网联化的趋势对管理各种电子控制单元(ECU)的软件复杂度与保证其功能安全提出了更高的要求。 现代中高端的汽车上约有 50 个以上的 ECU 及总量超过 1 亿行代码的嵌入式软件,如何对 ECU 的软件质量进行有效管理是摆在管理者面前的紧迫课题。本文将阐述软件质量目标(SQO)的概念,与大家一起探讨如何通过软件质量目标管理 ECU 的软件质量。 ◆ ◆ ◆ ◆软件质量目标 软件质量目标(SQO)定义了一系列来源于行业实践总结的可度量的代码指标及达到相应质量要求的阈值。软件质量目标可以定义为不同的等级,随着软件开发阶段的进行而动态调整。其组成部分包括软件质量计划、详细设计描述、代码度量信息、代码规范要求、运行错误检查、数据流分析结果等,下图案例说明了不同 SQO 等级包含的内容范围: 软件质量计划 软件质量计划应由供应商提供,包括为了实现主机厂所要求的软件质量所采取的方法、工具以及团队和项目本身的信息。目的在于说明软件质量的保证工作由谁实施以及如何实施。以下是软件质量计划包含的内容示例:
详细设计描述 详细设计描述提供了软件应用的架构和成熟度信息,包括:
代码度量信息 代码度量信息用来帮助主机厂理解软件模块的特性以及评估软件模块的质量。主机厂和供应商双方应在项目开始前选定度量信息,供应商应在软件交付时提交度量指标符合或背离说明报告。常用的代码度量信息包括:
代码规范符合 遵循代码规范是保证代码可读性和防范代码出错的重要举措,汽车行业一般选用 MISRA(汽车工业软件可靠性联合会)的编码规范,值得一提的是 MISRA 的编码规范分为针对手写代码和针对自动代码的两种规范,在应用时应加以选择。对不同的软件质量目标定义不同的编码规范子集是推荐的应用方式,供应商应提交所适用的编码规范子集的符合性证明或背离说明报告。以下是编码规范符合性的统计说明案例。 运行错误分析 运行错误相对于编译错误或链接错误而言,即通常所说的代码在运行过程中存在的 bug。其分析结果分为确定的运行错误、潜在的运行错误、安全代码操作和不可达的代码操作。供应商应声明在开发阶段所采用的方法和工具用以确保代码中不存在运行错误或对发现的运行错误加以审查说明。对于潜在的运行错误(多由输入数据的取值范围引起),需要定义对应不同 SQO 等级的人工审查率,如下图所示: 数据流分析 数据流分析指用来获取有关数据如何沿着程序执行路径流动的相关信息的技术,其目的是提供一个过程(或一段程序)如何操纵其数据的全局信息。数据流分析结果包括:
功能安全符合和工具支持 ISO 26262-6 定义了为确保软件质量而在软件开发过程的各阶段所应采用的方法,可以通过 SQO 的实施加以实现,后续有机会再以专文叙述。SQO 可以在静态代码分析工具 Polyspace 中设定并与分析结果比较,从而确认供应商的软件是否达到各阶段交付标准,下图显示了 SQO 设定方式和 MISRA 规范的比较结果。 ◆ ◆ ◆ ◆综上所述,软件质量管理围绕软件质量目标进行,其中可度量性是软件质量目标的基础要求;与不同开发阶段相对应的阶梯式目标体现了软件开发过程的特点;而将其内化到工具的支持则保证了软件质量目标不仅仅停留在文档要求上而具有了现实可操作性。 |
|