• 148查看
  • 0回复

[功能安全] 功能安全之软件架构设计(中)

[复制链接]
匿名  发表于 21-5-2024 19:32:42 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


软件架构设计是功能安全软件开发过程中的关键阶段,作为实现软件安全需求和软件需求的载体,它定义了软件架构要素并将其细化到能够识别出软件单元的程度。

ISO26262 Part6 Clause7中要求:软件架构设计应描述软件架构要素的静态设计方面和动态设计方面。接下来,我们将通过“功能安全之软件架构设计”专题分别从功能安全软件静态架构设计、动态架构设计、多核和部署三个方面进行介绍。

本文中,我们将从软件动态架构的设计要求和软件动态架构设计实例两个方面进行介绍。关于功能安全软件静态架构设计,可以参考功能安全之软件架构设计(上) 。

01、软件动态架构的设计要求

针对软件架构动态设计方面,功能安全标准要求动态架构设计需要描述以下几个方面:

a. 事件和行为的功能链;

b. 逻辑顺序和数据处理;

c. 控制流和并发进程;

d. 通过接口和全局变量传递的数据流;

e. 时间限制等。

为了帮助大家更好的理解上述内容,我们将通过一个具体的项目案例进行讲解。

02、软件动态架构设计实例

为方便大家更好的理解和对比功能安全软件静态架构和软件动态架构设计的区别和联系,我们继续使用功能安全之软件架构设计(上) 中的例子讲解软件动态架构设计。

为了满足ASIL D等级的要求,软件动态架构设计全部采用满足半形式化描述法要求的UML语言。

针对逻辑顺序和数据处理,可以采用泳道图的方式进行描述。图中,每个泳道代表了一个软件组件,通过Activity描述在该泳道图内完成的活动。通过这样的方式,可以将完成VCU扭矩计算功能的执行逻辑及顺序表达清楚。


功能安全之软件架构设计(中)w2.jpg


图1 “VCU扭矩计算”的泳道图

针对通过接口和全局变量传递的数据流,可以采用活动图的方式进行描述。图中,每个Activity代表一个软件组件,通过信号线来描述不同组件之间的信号交互,从而将VCU扭矩计算的数据流表达清楚。

功能安全之软件架构设计(中)w3.jpg

图2 “VCU扭矩计算”的活动图

针对控制流和并发进程,可以采用时序图的方式来进行描述。时序图中,每条生命线的实体代表一个软件组件,生命线自上向下代表软件执行的时间先后顺序。通过时序图描述VCU扭矩计算功能的控制流,其交互接口包括数据接口和函数调用,函数调用包括同步调用、异步调用以及是否有返回值等。


功能安全之软件架构设计(中)w4.jpg


图3 “VCU扭矩计算”的时序图

针对操作系统的调度时序,可以参考图4中的时序图。作为调度对象的操作系统应用集先调用可信函数,通过可信函数请求操作系统的当前状态,操作系统的状态包括“No Error”和“No function defined for this index”两种。当操作系统的状态为“No Error”时,操作系统会通过可信函数来请求被调对象的操作系统应用集。


功能安全之软件架构设计(中)w5.jpg


图4 “操作系统任务调度”的时序图

针对FIM和Dem的初始化逻辑,可以参考图5中的时序图。


功能安全之软件架构设计(中)w6.jpg


图5 “FIM&Dem初始化”的时序图

针对看门狗的数据交互逻辑,可以参考图6中的时序图。


功能安全之软件架构设计(中)w7.jpg


图6 “看门狗启动”的时序图

本文以VCU扭矩计算相关的软件安全需求为例,分别从软件动态架构的设计要求和软件动态架构设计实例两个方面进行了详细介绍,供从事功能安全工作和欲从事功能安全工作的工程师进行参考和学习。


快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 22-6-2024 12:19 , Processed in 0.240119 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.