高完整性系统 (2):Requirement 与 Design 阶段的风险控制——Hazards, HAZOP, Fault Tree

news2024/11/27 8:21:17

文章目录

  • 安全性工程流程
  • Hazards
  • 反事实推理(CounterFactual Reasoning)
    • 案例1
    • 案例2
    • 案例3
  • HAZOP: HAZARDS AND OPERABILITY STUDY
    • 案例1
    • HAZOP 工作流程
    • HAZOP 总结
  • Fault Tree Analysis
    • Fault Tree 定义
    • 案例
    • Node Symbols
    • analysis outcomes

这节课主要介绍了高完整性系统的 工程流程关键步骤。首先回顾了上一课的 安全性定义(safety),然后详细解释了 软件工程的标准流程,包括 需求收集、设计、架构实现和测试。重点强调了在 确定系统需求阶段理解可能出错的情况 以制定如何防止错误发生的策略的重要性。同时, 设计阶段也需要检查设计是否真正防止了错误的发生。(尽量在早期确立所有的问题并解决)

课程中提到了两种工具和方法:Hazard and Operability Study(危害和操作性研究,简称Hazop)Fault Tree Analysis(故障树分析,简称FTA),这两种工具都用于识别和防止潜在问题。

安全性工程流程

在这里插入图片描述

Hazards

  • 如何通过了解可能发生的错误和故障来工程化安全系统是这门课的目标。在安全关键系统中了解可能出错的地方的是非常重要的,为了工程化这样的系统,你需要成为你特定领域的错误专家。如果你在航空业,那么你需要理解导致飞机坠毁的原因。

  • “危险源”就是可能出错的事物。我们的目标就是设计出能在面对这些可能出错的事情时仍然安全的系统。了解你的系统的环境中可能发生什么,这些可能如何影响你的系统,以及你的系统应如何防止这些导致大规模故障,这就是我们需要考虑的所有事情。

  • 仅仅知道可能出错的事情并不够,你真正需要理解的是这些错误的原因,或者说,在系统环境中发生某些事件导致了灾难性的故障,从一个事件导致了另一个事件,这种因果关系发生了什么。只有通过理解这种因果性,你才能真正地工程化你的系统,确保你打断了这种因果链,预防了错误的发生,防止了未来发生糟糕的事情。因此,理解因果性是调查过去发生的事件和事故的重要部分。

反事实推理(CounterFactual Reasoning)

在这里插入图片描述

  • 这种推理方法在哲学上很有趣,但对于这个课程来说,你只需要知道,反事实推理基本上就是一个思考实验,你思考的情况与实际发生的情况不同。我们在考虑一件事是否导致另一件事,也就是说,A是否是B的原因时,我们需要进行的思考实验就是问自己:如果A没有发生,B是否仍会发生?如果答案是,即使A没有发生,B仍会发生,那么A就不是B的原因。反之,如果B在A没有发生的情况下不会发生,那么A就是B的原因。

  • 避免因果关系推理错误是非常重要的,因为 相关性不代表因果性

案例1

在这里插入图片描述

  • 人均奶酪消费量与人们因纠缠在床单中而死亡的数量:这两个因素似乎具有强烈的相关性,但实际上并没有因果关系。尽管统计数据显示它们之间的相关性,但我们可以轻易想象如果人们不吃这么多的奶酪,他们仍然可能因纠缠在床单中而死亡。这两个事件似乎是概率上独立的。

  • 反事实分析以弄清因果关系的全部意义 在于避免推理中的错误。

案例2

  • 溺水死亡与冰淇淋消费量的相关性:这两个事件在夏天时似乎有相关性,但并不是因为吃冰淇淋导致了溺水死亡,也不是溺水死亡增加了冰淇淋的消费。它们的共同原因是炎热的天气,这被称为混淆因素。
    在这里插入图片描述

案例3

在这里插入图片描述

  • 气压计读数变化与风暴到来的相关性:气压计读数的变化预示着风暴的来临,但并不是气压计读数的变化导致了风暴,而是风暴的来临改变了气压计的读数,这是一个反向因果的例子。

以上这些例子都在强调一个观点,那就是:相关性并不等于因果性,我们需要通过反事实推理来判断事件之间的因果关系。

安全工程师需要将过去的原因作为危险源来研究。作为安全工程师,你需要成为你工程化系统类别的错误专家,因为大多数这类系统是相似的。然而,有时 新技术的引入可能会引发新的危险源。

  • 为了系统地理解潜在危险,以便有一个可复制的过程来进行工程设计,可以使用一些重复性的方法。这种方法可以让其他人检查他们的工作,确认他们已经考虑到所有的潜在危险。在这里,提到了两种方法,一种是一种 可重复的头脑风暴方法,叫做危险性和可操作性研究 (Hazops)用于探索系统中可能出现的不同的危险另一种是故障树分析,这是一种检查系统设计是否能消除潜在危险的方法。
    在这里插入图片描述
  • HazopsFault Tree 分别集中在 requirementsdesign 阶段

下阶段内容,我们将开始讨论形式规范(Formal Specification),这是一种在 implementation 阶段使用 逻辑 (Logic)来记录系统设计,并分析设计是否确实防止了错误发生的另一种方法。届时,将使用程序验证等方法来证明实现是否符合设计,从而防止错误发生

HAZOP: HAZARDS AND OPERABILITY STUDY

  • HAZOP(Hazard and Operability Study)是一种系统性的头脑风暴方法(systematically brainstorming),用于探讨系统中可能出现的问题。它最早在上世纪50年代应用于化学过程的安全改进,并且后来被安全关键软件工程领域采用,作为一种可重复的方法来确定软件系统中可能出现的问题,并设计系统来防止这些问题的发生。

  • HAZOP的过程以系统的高级描述作为输入,将系统划分为一系列称为 “design items” 的组成部分。在HAZOP中,design items是关于系统中应该发生的事物或期望发生的事物的描述。这些描述通常采用以下形式:当某事发生时,接下来应该发生某事,或者系统应该执行某些操作。例如,"当X被触发时,阀门应立即关闭"就是一个设计项的例子。
    在这里插入图片描述

  • HAZOP的方法是通过系统地思考可能发生的事物,并仔细思考如果发生了其他行为,那么它的后果会是什么,以及如何设计系统来防止发生这些行为。 在HAZOP中,你会对系统中不同行为的风险进行系统化的思考,这也是下一步要讨论的内容。通过考虑事物发生的风险,你可以确定需要付出多少努力来防止该事物的发生。如果风险很低,你可能不需要太担心它。另一方面,如果风险很高,那么这是你必须关注的事物,因此你需要考虑系统的要求,以防止该事物的发生。

在这里插入图片描述

  • 关于如何评估风险,有一个正式的国际标准,我们在本课程中不会详细讨论。主要要注意的是,它是一个 形式化、标准化 的评估风险的过程,并提供了一些 风险类别。其中,第一类风险 是绝对不应该存在于系统中的风险,必须从系统设计中消除。而 第四类风险 是可以忽略的风险。

  • 通过评估事物发生的后果和频率,可以对系统中的风险进行分类。这种分类可以让我们理解风险的严重程度,并采取相应的措施来预防和减轻风险。

  • HAZOP的目标是将一类风险转化为四类风险,这也是安全工程的重要任务之一。 在分析事故调查报告时,我们会看到对不同后果类别的讨论,以及针对不同风险的控制措施。这要求人们对系统设计非常了解,以正确地书写这些设计项。

  • 总的来说,HAZOP是一种系统性的方法,用于识别系统中可能出现的问题和风险。它通过对可能发生的事物进行头脑风暴和风险评估,帮助我们理解系统的潜在问题,并采取相应的措施来预防和减轻风险。

案例1

  • 这个案例主要讨论了汽车的电子刹车系统的设计和可能出现的问题。主讲者首先描述了系统的工作原理:驾驶员踩下刹车踏板使汽车减速,这会向嵌入式控制单元(刹车控制器)发送一个信号。一旦收到这个信号,刹车控制器就会向刹车发出信号,通过执行器对车轮施加压力,从而使车辆减速。

  • 刹车控制器在这个过程中扮演着核心角色,可能是为了实现自动刹车等功能。然而,系统的预期行为(或称 design items)以及可能的问题,非常依赖于我们考虑问题的抽象层级。
    在这里插入图片描述

  • 如果我们在 嵌入式控制单元的层级 上思考,design items 可能是: 当控制单元(ECU)检测到刹车踏板压力迅速增加时,它会全力施加刹车,实现紧急刹车。

  • 而如果我们考虑的是刹车踏板和控制单元之间的交互design items 可能是 当脚踏板压力改变时,刹车控制器接收来自刹车踏板的信号。

在这里插入图片描述

  • 因此在构建了 design items 之后,我们通常采用 what if 的思维方式来揪出可能存在的 hazards
    在这里插入图片描述

主讲者接着讨论了一种思考系统可能出现问题的方法,他称之为"有防范性的过程"。这个过程就是 根据 design items 推测可能出现的错误情况。 比如,如果设计项是 “当脚踏板压力变化时,刹车控制器接收来自刹车踏板的信号” ,我们可以想象出许多可能的错误,如 "如果没有接收到信号怎么办"、“如果信号提前或延迟到达怎么办” 等等。

  • 刹车信号未被接收:讲者指出,如果驾驶员在踩下刹车踏板后,信号没有被电子控制单元(即刹车控制器)接收,这可能会导致汽车无法停下来。这种情况的后果可能非常严重,可能导致车祸。

  • 刹车信号过早接收:如果刹车控制器过早接收到信号,可能导致汽车过早停下,驾驶员可能对此反应不及。这可能会导致后车碰撞,造成车祸。

  • 刹车信号接收过晚:如果刹车控制器过晚接收到刹车信号,可能会导致汽车无法及时停下。这种情况下可能无法阻止车辆冲入危险区域,导致事故发生。

在上面的例子中,我们系统性地使用了 “过早”(earlier) ,或者 “过晚” (later) 对 design itemsintended behaviors 情况进行假设,其实还有一些 guidewords,可以帮我们在使用HAZOPS 系统的时候更好地总结和发现问题:

在这里插入图片描述

HAZOP 工作流程

在这里插入图片描述

在这里插入图片描述

HAZOP 总结

在这里插入图片描述

  • HAZOPS(Hazard and Operability Studies)是一种系统化的危险和可操作性研究方法,通常应用于工程和系统设计中。这种方法的主要目标是通过分析设计元素(design items)(或称为设计项目或预期行为)的变异(deviation),识别潜在的风险和问题,从而可以进行预防和改进。以下是该讲者对 HAZOPS 过程的描述:

  • 首先,确定系统的设计元素或预期行为 (intended behaviors)。

  • 针对每一个 design items,使用一系列的“指导词”(Guide Words)来诱发设计元素的变异思考。例如,“早”、“晚”、“更多”、“更少”、“部分”或“全部反向”等。

  • 对于每一个引发的变异(也称为 deviation),思考可能 引发的原因,可能的后果(例如,是否会导致严重的事故),以及系统中已经存在的安全防护措施。这些安全防护措施会帮助确定该风险发生的实际可能性。

  • 对于每一种可能的风险,都需要评估其影响(例如,是否灾难性,或者只是边缘性),并据此提出改进建议,可能是增加额外的安全防护措施,或者修改系统设计以降低风险。

  • 在这个过程中,讲者强调了这是一个鼓励创新思维的过程,而不是僵化的流程。通常这不是一个人完成的工作,而是由多人共同进行头脑风暴,分享过去出错的经验,创新地进行解读。

  • 最后,所有这些过程都需要详细地记录下来,形成大量的文档,以便别人可以检查是否遗漏了任何重要的风险。这个详尽的危害清单还可以作为制定安全案例或证明系统安全性的证据。尽管这个过程可能看起来并不刺激,但有些人可能会认为这是一个富有创造性和有趣的过程。

Fault Tree Analysis

Fault Tree 定义

  • 故障树分析(Fault Tree Analysis, FTA)是一种用于确定系统可能发生故障的各种原因的方法。故障树分析起源于1960年代的美国航空航天领域,现已广泛应用于各种行业,包括航空、核电、化工、软件工程、安全工程等。

  • 故障树分析的核心是使用树状图来表示故障的原因和效果。在故障树中,顶部的事件(通常表示为一个矩形)是你关心的特定系统故障,而树的其余部分则表示可以导致该故障的原因。这些原因可能包括设备故障、设计错误、人为错误等。

  • 每个原因都可以进一步分解为更详细的原因,这些原因由“与”或“或”门连接。如果两个或两个以上的故障同时发生才会导致高级故障,则这些故障会由一个“与”门连接;如果任何一个故障发生都会导致高级故障,则这些故障会由一个“或”门连接。

  • 通过这种方式,故障树分析可以帮助我们深入理解系统故障的复杂原因,并提供更好的决策支持来优化系统设计,以避免可能的故障。同时,FTA可以帮助确定最可能导致系统故障的原因,从而在故障预防和改进中优先处理。

案例

在这里插入图片描述
故障树分析是一种反向的安全分析方法,它从一个系统的 潜在危险或故障开始 ,然后探究可能导致这些危险或故障的根本原因。下面是对这个化学混合过程的故障树案例的分析:

  • 故障树以化学混合过程中的主要危险作为起点,即:储液罐溢出,导致危险化学品泄漏。分析的目标是找出可能导致这一危险的各种可能原因。

从储液罐溢出这一主要危险出发,我们首先找到两个直接原因:

  • 输入阀门(阀门B)打开,
  • 输出阀门(阀门A)关闭。

在这里插入图片描述

这两个事件必须同时发生才能导致储液罐溢出,所以在故障树中,这两个事件通过一个"与门"(AND Gate)连接。

在这两个原因中,阀门A关闭被视为正常状态,因此不进行进一步分析。 但阀门B打开被视为异常,需要进一步研究其可能的原因。

对阀门B打开这一事件进行分析,发现它可能由以下两种情况引起:

  • 阀门B本身故障,收到了关闭的命令但没有执行;(valve B failed )
  • 或者是控制器没有向阀门B发送正确的控制信号。

在这里插入图片描述

这两个原因只要有一个发生,就能导致阀门B打开,所以在故障树中,这两个事件通过一个"或门"(OR Gate)连接。

控制器没有向阀门B发送正确的控制信号 这一事件进行分析,发现可能是以下两种情况:

  • 水位传感器(传感器X和Y)故障,没有向控制器发送正确的读数;
  • 或者是控制器本身故障(controller failed),即使收到了正确的读数,也没有发送关闭阀门B的命令。
    在这里插入图片描述

最后,对 水位传感器故障这一事件 进行分析,发现这需要两个传感器(传感器X和Y)都同时故障,才能导致控制器没有收到正确的读数。因此,这两个事件通过一个"与门"(AND Gate)连接。
在这里插入图片描述

这个故障树案例通过逐步探究可能的原因,清晰地展示了如何从一个系统的潜在危险反向分析出可能的故障原因,从而提供了一个更深入理解

Node Symbols

在这里插入图片描述

analysis outcomes

故障树分析(Fault Tree Analysis,FTA)是一种被广泛应用于工业系统安全性分析和系统可靠性评估的方法。它通过识别导致系统故障或危害事件的一系列相关因素,能够帮助我们理解和预防系统故障。以下是故障树分析的主要作用:

  • 识别系统故障的根本原因:故障树分析通过逆向工作,从系统故障开始,一步步追溯其可能的直接和间接原因,直到找到故障的根源。这可以帮助我们更好地理解导致系统故障的因素。

  • 增强系统设计:通过故障树分析,可以评估现有设计的安全性和可靠性。该分析可以揭示系统的薄弱环节,并指导系统设计者对设计进行改进,以增强其对故障的抵抗能力。

  • 提供决策支持:故障树分析可以评估不同改进措施的效果,从而为管理决策提供依据。此外,故障树分析也可以在事故调查中发挥作用,通过分析事故的可能原因,帮助决策者采取预防措施。

  • 提高安全意识:故障树分析过程可以提高团队的安全意识,使他们对可能导致故障的各种因素有更深入的理解。

预测和防止未来的故障:通过了解故障发生的机制和原因,可以预测和防止未来的故障,降低故障率,提高系统的安全性和可靠性。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/608011.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux集锦01】CentOS的安装

Centos的安装 1.创建新的虚拟机2. 自定义3.下一步4.创建虚拟空白光盘5.安装Linux系统和Centos 7 发行版6.命名虚拟机名称和选择磁盘位置7.处理器配置 主要看自己的电脑的情况8.设置虚拟机内存9.网络设置 nat10.选择IO控制器类型11.选择磁盘类型12.创建新虚拟磁盘13.设置磁盘容量…

【MyBatis】2、MyBatis 的动态 SQL 和增删改操作

目录 一、添加(1) 基本插入(2) 设置新插入记录的主键&#xff08;id&#xff09;★ 二、更新三、删除四、动态 SQL(1) if 标签(2) where 标签(3) foreach 标签 五、起别名六、sql 标签七、在 MyBatis 中集成 druid 连接池 一、添加 (1) 基本插入 <mapper namespace"s…

qtcanpool 知 99:常见问题

文章目录 前言问题构建 fancydemo 报链接库错误 后语 前言 qtcanpool 是根据 qtcreator 整理出的一套通用的工程管理模板&#xff0c;同时集成一些常见的库和插件。就像 qtcanpool 名字一样&#xff0c;它是一个 qt 池&#xff0c;用户可以从中汲取所需。 对于初次使用 qtcan…

iPad触屏笔哪个牌子好用?平替电容笔推荐

电容笔可以说是人手必备的数码产品&#xff0c;市面上的电容笔品牌数不胜数&#xff0c;很多人都快赶不上它的步伐了&#xff0c;新品的大批量上升&#xff0c;说明市场上的电容笔的需求量日益扩大&#xff0c;越来越多人在学习上、办公上等使用&#xff0c;作为资深的电容笔发…

Kafka重平衡rebalance是什么

重平衡 背景&#xff1a; 假如你是一家公司的老板&#xff0c;手下有三名员工张三、李四、王五&#xff0c;现在你有三项工作A、B、C&#xff0c;正好安排给三人。 过了一个月后&#xff0c;员工王五离开了公司。这个时候只剩下两名员工&#xff0c;你只能把原先王五安排的…

每日学术速递6.3

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Reconstructing the Minds Eye: fMRI-to-Image with Contrastive Learning and Diffusion Priors 标题&#xff1a;重建心灵之眼&#xff1a;fMRI-to-Image with Contrastive lear…

反向ajax实现

在过去的几年中&#xff0c;web开发已经发生了很大的变化。现如今&#xff0c;我们期望的是能够通过web快速、动态地访问应用。在这一新的文章系列中&#xff0c;我们学习如何使用反 向Ajax&#xff08;Reverse Ajax&#xff09;技术来开发事件驱动的web应用&#xff0c;以此来…

【Android开发基础】更新\修改Adapter适配器数据(例:聊天功能等)

文章目录 一、引言二、解决方案1、需求一2、需求二&#xff08;1&#xff09;普通方法&#xff08;2&#xff09;观察者模式&#xff08;推荐&#xff09; 一、引言 描述&#xff1a;如何在主线程&#xff08;Activity/Fragment&#xff09;UI中修改子线程&#xff08;Adapter…

小白可以看懂的「GraphQL」,GraphQL到底是啥样

GraphQL是一种用于API的查询语言&#xff0c;可以在服务端定义GraphQL Schema&#xff0c;客户端可以向服务端发送GraphQL请求&#xff0c;服务端执行GraphQL查询&#xff0c;并将结果作为JSON返回给客户端。 下面是一个使用golang实现GraphQL的示例&#xff0c;首先需要安装g…

Ajax请求与浏览器缓存

在现代Web应用程序中&#xff0c;前端代码充斥着大量的Ajax请求&#xff0c;如果对于Ajax请求可以使用浏览器缓存&#xff0c;那么可以显著地减少网络请求&#xff0c;提高程序响应速度。 1. Ajax Request 使用jQuery框架可以很方便的进行Ajax请求&#xff0c;示例代码如下&a…

RISC-V 学习篇之特权架构下的中断异常处理

RISC-V 学习篇之特权架构下的中断异常处理 控制流和Trap特权架构简单的嵌入式系统的机器模式机器模式下的异常处理mtvec&#xff08;Machine Trap-Vector Base-Address&#xff09;mepc&#xff08;Machine Exception Program Counter)mcause&#xff08;Machine Cause&#xf…

Erlang/OTP 26 正式发布

导读Erlang 是一种通用的并发函数式程序设计语言。Erlang 也可以指 Erlang/OTP 的通称&#xff0c;开源电信平台 (OTP) 是 Erlang 的常用执行环境及一系列标准组件。 Erlang/OTP 26.0 已正式发布。这是一个重要版本更新&#xff0c;包含许多新特性、改进和不兼容的变化。 主要…

C++11右值

C11右值 类型与值类别左值纯右值将亡值内置类型类类型 左值引用和右值引用内置类型右值引用&#xff1a;具有右值引用自身为左值。右值引用与函数重载函数返回值 自定义类型右值引用构造函数的隐式转换右值引用与函数重载类类型作为函数的返回值 右值引用与函数模板泛化版本&am…

Java005——idea编写和运行第一个Java程序HelloWorld

1、首相需要了解什么是IDE&#xff08;集成开发环境&#xff09;&#xff1f; 2、了解Java有哪些主流的开发工具&#xff1f; 一、创建一个文件夹用来存放Java项目 二、创建一个空项目 点击idea首页新建项目按钮 创建一个空项目 这样空项目就创建好了 三、在空项目中新建一…

leetcode 数据库题 584,585,586,595,596,601,602,607,608,610

leetcode 数据库题 第三弹 584. 寻找用户推荐人585. 2016年的投资586. 订单最多的客户595. 大的国家596. 超过5名学生的课601. 体育馆的人流量602. 好友申请 II &#xff1a;谁有最多的好友607. 销售员608. 树节点610. 判断三角形小结 584. 寻找用户推荐人 https://leetcode.cn…

<数据结构>NO7.二叉树(附Oj练习题)

&#x1f447;二叉树的完整代码在&#x1f447; syseptember的gitee仓库&#xff1a;二叉树https://gitee.com/syseptember/data-structure/tree/1513789167062c75dc172366199ce7a6b0577cc7/BinaryTree2/BinaryTree2 目录 树的概念及结构 0x01.树的概念 0x02.树的相关概念 …

快速定位接口问题,JMeter方法论,跨线程组接口关联测试!

目录 【前言】 【步骤】 1. 准备工作 2. 创建线程组 3. 创建HTTP请求 4. 添加正则表达式提取器 5. 添加HTTP请求关联控制器 6. 设置断言和验证器 7. 运行测试 【代码】 【结论】 【前言】 在进行接口测试时&#xff0c;接口之间的关联经常是我们需要重点测试的点之…

如何手写网络协议栈

哈喽&#xff0c;我是子牙&#xff0c;一个很卷的硬核男人。喜欢研究底层&#xff0c;聚焦做那些大家想学没地方学的课程&#xff1a;手写操作系统、手写虚拟机、手写编程语言…目前做了两门课&#xff1a;手写OS、手写JVM 今天想跟大家聊一个黑科技&#xff1a;手写网络协议栈…

Python的编码规范

目录 1、每个 import 语句只导入一个模块&#xff0c;尽量避免一次导入多个模块&#xff0c; 2、不要在行尾添加分号&#xff0c;也不要用分号将两条命令放在同一行&#xff0c; 3、建议每行不超过 80 个字符&#xff0c; 4、使用必要的空行可以增加代码的可读性 5、通常情…

让百万大学生崩溃的在线OJ,如何破局?

目录 一、在线OJ的的原理 二、在线OJ的使用规则 三、注意事项 1.关于作弊 2.如何防止作弊 3.输入输出格式 4.换行问题 四、经典在线OJ坑人题目以及博主被坑经历 五、提交不成功及解决方法 六、如何得心应手的拿下OJ系统 七、在线OJ的骗分技巧 在线OJ&#xff08;Onl…