点击上方蓝字谈思实验室
获取更多汽车网络安全资讯
01
功能安全之软件架构设计
软件架构设计是功能安全软件开发过程中的关键阶段,作为实现软件安全需求和软件需求的载体,它定义了软件架构要素并将其细化到能够识别出软件单元的程度。
ISO26262 Part6 Clause7中要求:软件架构设计应描述软件架构要素的静态设计方面和动态设计方面。接下来,我们将通过“功能安全之软件架构设计”专题分别从功能安全软件静态架构设计、动态架构设计、多核和部署三个方面进行介绍。
本文中,我们将从软件动态架构的设计要求和软件动态架构设计实例两个方面进行介绍。
01 软件动态架构的设计要求
针对软件架构动态设计方面,功能安全标准要求动态架构设计需要描述以下几个方面:
a. 事件和行为的功能链;
b. 逻辑顺序和数据处理;
c. 控制流和并发进程;
d. 通过接口和全局变量传递的数据流;
e. 时间限制等。
为了帮助大家更好的理解上述内容,我们将通过一个具体的项目案例进行讲解。
02 软件动态架构设计实例
为了满足ASIL D等级的要求,软件动态架构设计全部采用满足半形式化描述法要求的UML语言。
针对逻辑顺序和数据处理,可以采用泳道图的方式进行描述。图中,每个泳道代表了一个软件组件,通过Activity描述在该泳道图内完成的活动。通过这样的方式,可以将完成VCU扭矩计算功能的执行逻辑及顺序表达清楚。
图1 “VCU扭矩计算”的泳道图
针对通过接口和全局变量传递的数据流,可以采用活动图的方式进行描述。图中,每个Activity代表一个软件组件,通过信号线来描述不同组件之间的信号交互,从而将VCU扭矩计算的数据流表达清楚。
图2 “VCU扭矩计算”的活动图
针对控制流和并发进程,可以采用时序图的方式来进行描述。时序图中,每条生命线的实体代表一个软件组件,生命线自上向下代表软件执行的时间先后顺序。通过时序图描述VCU扭矩计算功能的控制流,其交互接口包括数据接口和函数调用,函数调用包括同步调用、异步调用以及是否有返回值等。
图3 “VCU扭矩计算”的时序图
针对操作系统的调度时序,可以参考图4中的时序图。作为调度对象的操作系统应用集先调用可信函数,通过可信函数请求操作系统的当前状态,操作系统的状态包括“No Error”和“No function defined for this index”两种。当操作系统的状态为“No Error”时,操作系统会通过可信函数来请求被调对象的操作系统应用集。
图4 “操作系统任务调度”的时序图
针对FIM和Dem的初始化逻辑,可以参考图5中的时序图。
图5 “FIM&Dem初始化”的时序图
针对看门狗的数据交互逻辑,可以参考图6中的时序图。
图6 “看门狗启动”的时序图
本文以VCU扭矩计算相关的软件安全需求为例,分别从软件动态架构的设计要求和软件动态架构设计实例两个方面进行了详细介绍,供从事功能安全工作和欲从事功能安全工作的工程师进行参考和学习。
end
专业社群
精品活动推荐
原文始发于微信公众号(谈思实验室):功能安全之软件架构设计
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论