最近有很多同学私信要求讲一讲ISO26262中的软件架构设计要求,今天功能安全小课堂就基于标准内容,简明扼要的给大家划重点做解析,本节小课堂阅读只需要3分钟,即可让你对ISO26262标准的软件架构设计要求有一个初步的认识。
记住重点一:软件架构设计的目的是划分软件层次结构,确定软件各模块及模块之间的相互关系。
记住重点二:软件架构设计应与软件需求形成双向追溯关系,确保软件需求实实在在落实到设计里。
记住重点三:ISO26262中对软件架构设计提出了一系列如下规则,按照不同的SIL等级可以选择使用。
规则 | ASIL A | ASIL B | ASIL C | ASIL D |
适宜的软件组件分层结构 | 强烈推荐 | 强烈推荐 | 强烈推荐 | 强烈推荐 |
限制软件组件的规模与复杂度 | 强烈推荐 | 强烈推荐 | 强烈推荐 | 强烈推荐 |
限制接口规模 | 推荐 | 推荐 | 推荐 | 强烈推荐 |
每个软件组件内部高内聚 | 推荐 | 强烈推荐 | 强烈推荐 | 强烈推荐 |
软件组件之间低耦合 | 推荐 | 强烈推荐 | 强烈推荐 | 强烈推荐 |
恰当调度的特性 | 强烈推荐 | 强烈推荐 | 强烈推荐 | 强烈推荐 |
限制中断的使用 | 推荐 | 推荐 | 推荐 | 强烈推荐 |
软件组件之间恰当的空间独立性 | 推荐 | 推荐 | 推荐 | 强烈推荐 |
共享资源的恰当管理 | 强烈推荐 | 强烈推荐 | 强烈推荐 | 强烈推荐 |
对于强烈推荐的内容,在实际开发过程中应保证完全遵循与使用,如果有些规则没有运用到,需要给出合理的解释与证明,证明即使没有使用这项规则,依然可以通过其他方式保证功能安全性。
关于这些规则的运用,很多同学也是充满迷惑。例如,适宜的软件分层结构到底多少层算适宜?其实在实际开发中,每个系统实现的功能不同,实现的难易程度也千差万别,确实没有标准的答案,要结合产品具体功能去划分,确保架构层次清晰明了,简单易懂即可。
关于复杂度,其实它是一个多要素共同作用的结果。代码量、变量个数、指令数、圈复杂度度……都和复杂度密切相关,无法完全量化,但是在开发中,可以根据经验确定一个目标,例如圈复杂度设置为5—8左右。
关于接口,需要注意输入接口和输出接口数量,还要注意软件模块之间的调用关系,耦合关系,尽可能减少相互之间的调用和耦合。
关于独立性,当然每一个软件模块可能无法做到完全独立,但是设计上应保证尽可能的空间独立,如果有共享资源的情况,也需要制定严格的规则,保证共享资源的双方互不影响操作安全性。
关于中断,虽然标准中限制使用,但对于底层软件开发也是难以避免,但在使用中要注意规定中断的相关规则,优先级,保证中断活动不影响功能安全。
最后,请同学们注意标准是方法论,最重要的还是要靠同学们在实际项目中的实践积累和体会,才能够将这些方法论最好的理解与运用。
吴丹丹Dandi
已完成
数据加载中