汽车功能安全之软件架构设计

谈思汽车 2024-02-02 11:35

 智能汽车安全新媒体 

01

什么是软件架构设计?

在20世纪60年代,戴克斯特拉这位上古大神就已经提出软件架构这个概念了,但软件架构真正流行却是从20世纪90年代开始的,由于在Rational和Microsoft内部的相关活动,软件架构的概念开始越来越流行了。

卡内基·梅隆大学的玛丽·肖(Mary Shaw)和戴维·加兰(David Garlan)对软件架构做了很多研究,他们在1994年的一篇文章《软件架构介绍》(An Introduction to Software Architecture)中写到:

“When systems are constructed from many components, the organization of the overall system-the software architecture-presents a new set of design problems.”

简单翻译一下:随着软件系统规模的增加,计算相关的算法和数据结构不再构成主要的设计问题;当系统由许多部分组成时,整个系统的组织,也就是所说的“软件架构”,导致了一系列新的设计问题。

这段话很好地解释了“软件架构”为何先在Rational或者Microsoft这样的大公司开始逐步流行起来。因为只有大公司开发的软件系统才具备较大规模,而只有规模较大的软件系统才会面临软件架构相关的问题,例如:

  • 系统规模庞大,内部耦合严重,开发效率低;

  • 系统耦合严重,牵一发动全身,后续修改和扩展困难;

  • 系统逻辑复杂,容易出问题,出问题后很难排查和修复。

而在功能安全标准中的定义——软件架构设计是指全部软件组件及其在层次结构中的交互。静态方面,如所有软件组件间的接口和数据路径;动态方面,如进程顺序和定时行为,都得到描述。

软件架构设计不必局限于某个微控制器或电控单元,它关系到技术安全概念和系统设计。软件架构设计并不是功能安全独有的要求,只是功能安全在原有的基础上叠加了很多安全方面的设计和考量标准,这使得软件架构设计变得更全面更安全,同时为开发既实现软件安全要求又实现非安全要求的软件架构设计,通常来说安全和非安全性要求应在同一开发过程中处理。软件架构设计提供了实施软件安全要求和管理软件开发复杂性的方法。

02

软件架构设计依赖关系

03

软件架构设计要求和建议

软件架构设计描述方法

为确保软件架构设计获取必要信息以允许后续开发活动得到正确且有效的执行,下表列出的软件架构设计的标记法,对软件架构设计进行恰当抽象层级的描述。

解释:

  • 自然语言:可以补充符号的使用,例如,一些主题更容易用自然语言表达,或者为符号中捕获的决策提供解释和理由,使抽象的设计更容易被理解。

  • 非正式标记法:通常不作为标准的标记方法,描述上比较模糊。

  • 半正式标记法:包括伪代码或使用UML、SysML、Simulink或Stateflow建模。

  • 正式标记法:包括数学或物理学表达式,通常是被证明过的严谨的表达式

软件架构设计必要的性质

软件架构设计的可验证性;(这表明软件架构设计和软件安全要求之间的双向可追溯性)

可配置软件的适用性;

软件单元设计和实现的可行性;

软件集成测试中,软件架构的可测性;

软件架构设计的可维护性。

避免高度复杂性原则

为避免因高度复杂性导致的失效,应遵循下表列出的原则设计软件架构:

1a.软件需要采用分层架构,分层架构比较清晰

1b.每个软件模块或组件都不要太大,太大了不好维护,容易出bug

1c.接口的数量不要太多,降低软件组件间的依赖关系

1d.1e.软件尽量模块化,这个颗粒度需要自己根据实际的产品把握

1f.调度合理,没啥可说的,必须要合理

1g.少使用中断,如果用中断必须定义优先级

1h.内存分区隔离保护

1i.适用于共享硬件资源以及共存情况下的共享软件资源。这种资源管理可以以软件或硬件来实现,并且包括防止对共享资源的冲突访问的安全机制和/或过程措施以及检测和处理对共享资源的冲突访问的机制。

其实原则很很简单,就是尽量避免高复杂性,高复杂性包括:

  1. 高度分支的控制或数据流;

  2. 分配给单一设计元素的需求数量过多;

  3. 一个设计元素的接口数量过多或设计元素之间的交互数量过多;

  4. 类型复杂或参数数量过多;

  5. 全局变量数量过多;

  6. 难以提供错误检测和处理的适用性和完整性的证据;

  7. 难以达到所需的测试覆盖率

  8. 只有少数专家或项目参与者才能理解。

软件架构设计描述

为确定动态行为(如任务、时间片和中断),需要考虑不同的运行状态(如开机、关机、正常运行、标定和诊断)并且定义通讯关系和所分配的系统硬件(如 CPU 和通讯通道)。

软件分区

  1. 共享资源的使用方式应确保软件分区免于干扰;

  2. 一个软件分区内的任务彼此之间不能免于干扰。

  3. 一个软件分区不能改变其它软件分区的代码或数据,也不能访问其它软件分区的非共享资源。

  4. 一个软件分区从共享资源获取的服务不能被另一个软件分区影响。这包括相关资源的性能,以及计划访问资源的使用率、延迟、抖动和持续时间。

  5. 由专用的硬件功能或等效方法来支持软件分区(该要求适用于 ASIL D)

  6. 执行软件分区的软件部分,按照分配给软件分区要求的相同 ASIL等级进行开发,或按照比分配给软件分区要求的最高 ASIL等级更高的一个ASIL等级进行开发;且一般来说操作系统提供支持软件分区。

  7. 在软件集成和测试过程中执行软件分区的验证。

软件组件

每个与安全相关的软件组件应被归类为下述之一:

  • 新开发的,需要按照功能安全标准开发。

  • 修改后使用的,需要按照功能安全标准修改。

  • 未经修改复用的。,对未经修改重用的安全相关软件组件进行鉴定。

如果在新的设计中引入了新的危害没有被现有的安全目标覆盖,应按照的变更管理流程在危害分析和风险评估中对它们进行介绍和评估。

未体现在安全目标中的新识别危害,通常是非功能性危害。如果这些非功能性危害超出了本标准的范畴,那么建议在危害分析和风险评估中用以下声明“因不属于功能安全的范畴,而未对该危害分配 ASIL”来标注它们,然而,为了参考,允许对其分配一个 ASIL 等级。

功能安全等级

应将软件安全要求分配给软件组件。因此,每个软件组件应按照分配给它的要求中最高的 ASIL等级来进行开发。根据这一分配,进一步细化软件安全要求可能是必要的。

如果嵌入式软件不得不实现不同 ASIL等级的软件组件,或实现安全相关及非安全相关的软件组件,除非软件组件符合功能安全标准中定义的兼容性准则,否则全部嵌入式软件必须按照最高 ASIL等级来处理。

如果在新的设计中引入了新的危害没有被现有的安全目标覆盖,应按照的变更管理流程在危害分析和风险评估中对它们进行介绍和评估。

未体现在安全目标中的新识别危害,通常是非功能性危害。如果这些非功能性危害超出了本标准的范畴,那么建议在危害分析和风险评估中用以下声明“因不属于功能安全的范畴,而未对该危害分配 ASIL”来标注它们,然而,为了参考,允许对其分配一个 ASIL 等级。

安全机制

  1. 当分配给软件的技术安全要求没有对软件安全机制的使用进行直接要求时,那么应在系统层面对软件安全机制的使用进行评审,以分析对系统行为的潜在影响。

  2. 输入和输出数据的范围检查;

  3. 合理性检查(例如,使用所需行为的参考模型、断言检查或比较来自不同来源的信号);

  4. 数据错误检测(例如错误检测代码和多重数据存储);

  5. 通过外部元件(例如 ASIC 或其他软件元件)监控程序执行执行看门狗功能。监控可以是逻辑监控或时间监控或两者兼而有之;

  6. 程序执行的时间监控;

  7. 设计中存在多种冗余;

  8. 在与授予或拒绝对安全相关共享资源的访问有关的软件或硬件中实现的访问冲突控制机制。

故障处理机制

  1. 静态恢复机制(例如恢复块、向后恢复、向前恢复和重复恢复);

  2. 通过优先考虑功能来实现降级,以尽量减少潜在故障对功能安全的不利影响;

  3. 设计中的同质冗余,主要侧重于控制执行类似软件的硬件中的瞬态故障或随机故障的影响(例如软件的时间冗余执行);

  4. 设计中的多样化冗余意味着每个并行路径中的软件不同,并且主要侧重于预防或控制软件中的系统故障;

  5. 数据纠错码;

  6. 在与授予或拒绝对安全相关共享资源的访问有关的软件或硬件中实施的访问权限管理。

可以在系统层面对软件安全机制(包括通用鲁棒性机制)进行审查,分析对系统行为的潜在影响以及与技术安全要求的一致性。

资源上限

应该对嵌入式软件所需资源进行上限预估:

  • 执行时间,例如函数运行的时间,操作写入的时间;

  • 存储空间,例如用于存储堆和栈的 RAM,用于存储程序和非易失数据的 FLASH;

  • 通讯资源。例如SPI、SCI、CAN通信等。

验证方法

04

常用的安全机制

各位同学还记得安全机制的定义吧,这里简单回顾一下:

  • 安全机制是检测/避免/控制失效或者减轻其有害影响的技术解决方案;

  • 安全机制是由E/E功能、元件或其他技术实现的;

  • 安全机制是能够将相关项维持在安全状态或者提醒驾驶员去控制失效的影响。

从定义中可以判断,很多安全机制是基于产品来进行定义的,譬如电机控制器的转矩安全、高压安全,DCDC的输出电压安全等等,但总有些安全机制是通用的,不按照产品区分的,今天在这里大概的整理一下,如有遗漏请各位朋友帮忙补充。

应用层常用的安全机制

应用层的安全机制通常是依赖于功能安全需求和技术安全需求,并且需要技术安全概念去明确定义的。

底层常用的安全机制

底层安全机制指的是与芯片功能安全的相关的特性,通常是由半导体厂商推荐的安全机制。

安全的设计方法

安全的设计方法也属于安全机制的一部分,这些方法可以在一定程度上避免失效或错误的发生。

05

结语

关于软件架构设计是一个很复杂的主题,这次的分享只是宏观的去介绍软件架构设计应该包括哪些内容,有哪些要求。但实际上每个安全机制都是值得去深入研究的,而且每个研究都可以是一个独立的主题,具体的安全机制的技术细节我都会在功能安全技术的专栏去详细拆解分析。

内容来源:

https://zhuanlan.zhihu.com/p/671821514

-  THE END  -


 精品活动推荐 


因文章部分文字及图片涉及到引用,如有侵权,请及时联系17316577586,我们将删除内容以保证您的权益。

谈思汽车 智能汽车安全新媒体
评论
  • PLC组态方式主要有三种,每种都有其独特的特点和适用场景。下面来简单说说: 1. 硬件组态   定义:硬件组态指的是选择适合的PLC型号、I/O模块、通信模块等硬件组件,并按照实际需求进行连接和配置。    灵活性:这种方式允许用户根据项目需求自由搭配硬件组件,具有较高的灵活性。    成本:可能需要额外的硬件购买成本,适用于对系统性能和扩展性有较高要求的场合。 2. 软件组态   定义:软件组态主要是通过PLC
    丙丁先生 2025-01-06 09:23 85浏览
  • 大模型的赋能是指利用大型机器学习模型(如深度学习模型)来增强或改进各种应用和服务。这种技术在许多领域都显示出了巨大的潜力,包括但不限于以下几个方面: 1. 企业服务:大模型可以用于构建智能客服系统、知识库问答系统等,提升企业的服务质量和运营效率。 2. 教育服务:在教育领域,大模型被应用于个性化学习、智能辅导、作业批改等,帮助教师减轻工作负担,提高教学质量。 3. 工业智能化:大模型有助于解决工业领域的复杂性和不确定性问题,尽管在认知能力方面尚未完全具备专家级的复杂决策能力。 4. 消费
    丙丁先生 2025-01-07 09:25 80浏览
  • 本文介绍Linux系统更换开机logo方法教程,通用RK3566、RK3568、RK3588、RK3576等开发板,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。制作图片开机logo图片制作注意事项(1)图片必须为bmp格式;(2)图片大小不能大于4MB;(3)BMP位深最大是32,建议设置为8;(4)图片名称为logo.bmp和logo_kernel.bmp;开机
    Industio_触觉智能 2025-01-06 10:43 87浏览
  • 在智能家居领域中,Wi-Fi、蓝牙、Zigbee、Thread与Z-Wave等无线通信协议是构建短距物联局域网的关键手段,它们常在实际应用中交叉运用,以满足智能家居生态系统多样化的功能需求。然而,这些协议之间并未遵循统一的互通标准,缺乏直接的互操作性,在进行组网时需要引入额外的网关作为“翻译桥梁”,极大地增加了系统的复杂性。 同时,Apple HomeKit、SamSung SmartThings、Amazon Alexa、Google Home等主流智能家居平台为了提升市占率与消费者
    华普微HOPERF 2025-01-06 17:23 145浏览
  • 这篇内容主要讨论三个基本问题,硅电容是什么,为什么要使用硅电容,如何正确使用硅电容?1.  硅电容是什么首先我们需要了解电容是什么?物理学上电容的概念指的是给定电位差下自由电荷的储藏量,记为C,单位是F,指的是容纳电荷的能力,C=εS/d=ε0εrS/4πkd(真空)=Q/U。百度百科上电容器的概念指的是两个相互靠近的导体,中间夹一层不导电的绝缘介质。通过观察电容本身的定义公式中可以看到,在各个变量中比较能够改变的就是εr,S和d,也就是介质的介电常数,金属板有效相对面积以及距离。当前
    知白 2025-01-06 12:04 173浏览
  • 根据Global Info Research项目团队最新调研,预计2030年全球封闭式电机产值达到1425百万美元,2024-2030年期间年复合增长率CAGR为3.4%。 封闭式电机是一种电动机,其外壳设计为密闭结构,通常用于要求较高的防护等级的应用场合。封闭式电机可以有效防止外部灰尘、水分和其他污染物进入内部,从而保护电机的内部组件,延长其使用寿命。 环洋市场咨询机构出版的调研分析报告【全球封闭式电机行业总体规模、主要厂商及IPO上市调研报告,2025-2031】研究全球封闭式电机总体规
    GIRtina 2025-01-06 11:10 104浏览
  • 根据环洋市场咨询(Global Info Research)项目团队最新调研,预计2030年全球无人机锂电池产值达到2457百万美元,2024-2030年期间年复合增长率CAGR为9.6%。 无人机锂电池是无人机动力系统中存储并释放能量的部分。无人机使用的动力电池,大多数是锂聚合物电池,相较其他电池,锂聚合物电池具有较高的能量密度,较长寿命,同时也具有良好的放电特性和安全性。 全球无人机锂电池核心厂商有宁德新能源科技、欣旺达、鹏辉能源、深圳格瑞普和EaglePicher等,前五大厂商占有全球
    GIRtina 2025-01-07 11:02 68浏览
  • 村田是目前全球量产硅电容的领先企业,其在2016年收购了法国IPDiA头部硅电容器公司,并于2023年6月宣布投资约100亿日元将硅电容产能提升两倍。以下内容主要来自村田官网信息整理,村田高密度硅电容器采用半导体MOS工艺开发,并使用3D结构来大幅增加电极表面,因此在给定的占位面积内增加了静电容量。村田的硅技术以嵌入非结晶基板的单片结构为基础(单层MIM和多层MIM—MIM是指金属 / 绝缘体/ 金属) 村田硅电容采用先进3D拓扑结构在100um内,使开发的有效静电容量面积相当于80个
    知白 2025-01-07 15:02 75浏览
  • 彼得·德鲁克被誉为“现代管理学之父”,他的管理思想影响了无数企业和管理者。然而,关于他的书籍分类,一种流行的说法令人感到困惑:德鲁克一生写了39本书,其中15本是关于管理的,而其中“专门写工商企业或为企业管理者写的”只有两本——《为成果而管理》和《创新与企业家精神》。这样的表述广为流传,但深入探讨后却发现并不完全准确。让我们一起重新审视这一说法,解析其中的矛盾与根源,进而重新认识德鲁克的管理思想及其著作的真正价值。从《创新与企业家精神》看德鲁克的视角《创新与企业家精神》通常被认为是一本专为企业管
    优思学院 2025-01-06 12:03 119浏览
  • By Toradex 秦海1). 简介嵌入式平台设备基于Yocto Linux 在开发后期量产前期,为了安全以及提高启动速度等考虑,希望将 ARM 处理器平台的 Debug Console 输出关闭,本文就基于 NXP i.MX8MP ARM 处理器平台来演示相关流程。 本文所示例的平台来自于 Toradex Verdin i.MX8MP 嵌入式平台。  2. 准备a). Verdin i.MX8MP ARM核心版配合Dahlia载板并
    hai.qin_651820742 2025-01-07 14:52 45浏览
  • 每日可见的315MHz和433MHz遥控模块,你能分清楚吗?众所周知,一套遥控设备主要由发射部分和接收部分组成,发射器可以将控制者的控制按键经过编码,调制到射频信号上面,然后经天线发射出无线信号。而接收器是将天线接收到的无线信号进行解码,从而得到与控制按键相对应的信号,然后再去控制相应的设备工作。当前,常见的遥控设备主要分为红外遥控与无线电遥控两大类,其主要区别为所采用的载波频率及其应用场景不一致。红外遥控设备所采用的射频信号频率一般为38kHz,通常应用在电视、投影仪等设备中;而无线电遥控设备
    华普微HOPERF 2025-01-06 15:29 127浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦