【功能安全小课堂】基于ISO26262的软件架构设计要求

来源:公众号“功能安全专家”
2021-01-07
2041

最近有很多同学私信要求讲一讲ISO26262中的软件架构设计要求,今天功能安全小课堂就基于标准内容,简明扼要的给大家划重点做解析,本节小课堂阅读只需要3分钟,即可让你对ISO26262标准的软件架构设计要求有一个初步的认识。

 

记住重点一:软件架构设计的目的是划分软件层次结构,确定软件各模块及模块之间的相互关系。

 

记住重点二:软件架构设计应与软件需求形成双向追溯关系,确保软件需求实实在在落实到设计里。

 

记住重点三:ISO26262中对软件架构设计提出了一系列如下规则,按照不同的SIL等级可以选择使用。

规则

ASIL A

ASIL B

ASIL C

ASIL D

适宜的软件组件分层结构

强烈推荐

强烈推荐

强烈推荐

强烈推荐

限制软件组件的规模与复杂度

强烈推荐

强烈推荐

强烈推荐

强烈推荐

限制接口规模

推荐

推荐

推荐

强烈推荐

每个软件组件内部高内聚

推荐

强烈推荐

强烈推荐

强烈推荐

软件组件之间低耦合

推荐

强烈推荐

强烈推荐

强烈推荐

恰当调度的特性

强烈推荐

强烈推荐

强烈推荐

强烈推荐

限制中断的使用

推荐

推荐

推荐

强烈推荐

软件组件之间恰当的空间独立性

推荐

推荐

推荐

强烈推荐

共享资源的恰当管理

强烈推荐

强烈推荐

强烈推荐

强烈推荐

对于强烈推荐的内容,在实际开发过程中应保证完全遵循与使用,如果有些规则没有运用到,需要给出合理的解释与证明,证明即使没有使用这项规则,依然可以通过其他方式保证功能安全性。

 

关于这些规则的运用,很多同学也是充满迷惑。例如,适宜的软件分层结构到底多少层算适宜?其实在实际开发中,每个系统实现的功能不同,实现的难易程度也千差万别,确实没有标准的答案,要结合产品具体功能去划分,确保架构层次清晰明了,简单易懂即可。

 

关于复杂度,其实它是一个多要素共同作用的结果。代码量、变量个数、指令数、圈复杂度度……都和复杂度密切相关,无法完全量化,但是在开发中,可以根据经验确定一个目标,例如圈复杂度设置为5—8左右。

 

关于接口,需要注意输入接口和输出接口数量,还要注意软件模块之间的调用关系,耦合关系,尽可能减少相互之间的调用和耦合。

 

关于独立性,当然每一个软件模块可能无法做到完全独立,但是设计上应保证尽可能的空间独立,如果有共享资源的情况,也需要制定严格的规则,保证共享资源的双方互不影响操作安全性。

 

关于中断,虽然标准中限制使用,但对于底层软件开发也是难以避免,但在使用中要注意规定中断的相关规则,优先级,保证中断活动不影响功能安全。


最后,请同学们注意标准是方法论,最重要的还是要靠同学们在实际项目中的实践积累和体会,才能够将这些方法论最好的理解与运用。



吴丹丹Dandi


收藏
点赞
2000