目录
Part6 主要描述了汽车应用产品在软件开发层面上的需求和流程,旨在保证软件开发过程的一致性和规范性,主要包括如下内容
-- 汽车产品在软件层面的通用需求
-- 软件功能安全的spec(6-6)
-- 软件架构设计(6-7)
-- 软件单元设计和实现(6-8)
-- 软件单元验证(6-9)
-- 软件集成和验证(6-10)
-- 嵌入式软件测试(6-11)
下面我们分两篇文章讲述上述内容,今天将6-6~~6-7
将上述内容用一个大家很熟悉的图来看,如下:
1.General RS Spec
V模型,贯穿整个汽车产品的生命周期,那么对于软件层级的功能安全,通用的需求如下:
- 适合嵌入式软件开发的方法论、guidelines、编程语言、工具等;
- 确保软件开发过程中整个生命周期的一致性,如有必要还需要相关的成果产出;
- 在考虑信息交互的一致性时,还需要关注系统、硬件层级的兼容性。
考虑编程语言、建模等,可参考如下表格:
需要输出的产物有:配置数据Spec、标定数据Spec、配置数据、标定数据、验证Spec、验证报告、软件价格设计Spec、软件开发环境文档
2.软件功能安全需求Spec
该Spec(对应6-6)目标如下:
- 从技术安全概念和系统架构设计规范中衍生出软件安全需求,对其进行详细说明;
- 定义软件所需的安全相关功能,并提出实现计划
- 补充软硬接口的需求
- 验证软件安全需求和软硬件接口需求是否适合软件开发,并与技术安全理念和系统架构设计规范相一致
2.1 输入
在做软件功能安全spec之前,需要如下输入:
- 技术功能安全需求Spec
- 功能安全概念
- 系统架构设计
- HSI(Hardware-software interface)
- 软件开发环境文档说明
- 可选--硬件设计文档
- 可选-- 非功能安全的功能Spec
2.2 需求制定
软件安全要求的制定应考虑到软件所需的安全相关功能和属性,这些功能的失效会导致违反分配给软件的技术安全要求。
具体来讲,软件需要考虑什么样安全相关的功能:
- 为一些标准函数提供可靠安全的执行环境,例如临界区的开关
- 使系统能够保持在某个安全等级或者下降一级,具体而言:在不同驾驶环境下提供不同的车速限制;又例如ARM核中不同异常等级的切换;
- 与安全相关的硬件的检测功能:如英飞凌提出的各种硬件功能安全机制,统一由SMU来管理
- 在产品生产、运行、开发等阶段提供在线或者离线的测试手段;例如LBIST、SRAM的测试
- 在开发阶段允许软件修改等功能,需要权限的认证
- 在相关性能或者时间严控操作,例如中断的实现,OEM要求的系统上电时间。
- 重大错误出现时的软件鲁棒性,例如冗余备份机制
2.3 成果物
- 软件功能安全需求Spec
- 优化后的HSI
- 软件验证报告(考虑V模型的双向追溯)
3.软件架构设计
该章节主要目标
- 设计出满足软件功能安全需求和其他软件需求的软件架构
- 验证软件架构设计符合所需ASIL的软件安全要求
- 支持软件验证和实现
3.1 输入
要完成软件架构设计,需要如下输入
- HSI
- 软件开发环境
- 软件功能安全需求Spec
- 功能安全概念--包含系统架构描述、非功能安全的软件Spec
3.2 软件架构设计时的要求
为了避免在软件架构结构设计和后续开发活动中出现系统性错误,软件架构结构设计应关注如下要点:
除此之外:可理解性、一致性、可验证下、模块化、抽象化、可封装、可维护性也需要进行考虑。
根据表3,我们来分析一个好的架构需要满足什么东西:
首先是软件层次结构,例如AUTOSAR提出的分层:应用层、服务层、抽象层;
软件模块的大小和复杂度,例如我们在做bootloader时通常会对其编译出的大小有限制。
软件接口的大小限制,例如不同公司对于一个函数的最大行数的限制,功能的限制
高内聚、低耦合,功能内聚、但是不同模块耦合度要尽可能低,这样才能保证模块间相互影响最低。
共享资源管理,例如HSM 和主核之间的共享buffer使用,不同核之间的资源占用问题。
这些都要在设计初期考虑进去,这要求一个架构师具备很强的功底和丰富的经验。
除上述要求外,软件架构在设计时需细化到软件单元这层级(单元内部实现忽略),例如
静态设计要考虑的因素:
- 软件层次结构
- 数据类型和特性
- 软件组件的对外接口
- 嵌入式软件的对外接口
- 全局变量
- 架构和外部依赖的限制
动态设计需要考虑的因素:
- 事件和行为的功能链路
- 数据处理的逻辑时序
- 控制流
- 数据流等
在软件架构层级分析功能安全,需要考虑错误探测和处理的功能安全机制,这些机制包括:
- 输入输出参数的范围检查
- 数据真实性检查
- 数据错误检测
- 程序流的监控机制;AUTOSAR的WdgM的logic supervision
- 访问权限的监控
对于软件架构的验证,应参考如下要点:
3.3 成果物
- 软件架构Spec
- 功能安全静态分析报告
- 失效分析报告
- 软件验证报告