jjzjj

Fault、Error及Failure的解释

一仿 2023-09-21 原文

1 背景

在讨论安全关键系统时,经常涉及3个术语,即Fault、Error、Failure。

它们是什么意思,有什么异同,有什么关系,常感到不清楚。本文整理标准中对三个术语的定义,并解释它们的关系。

2 术语定义

先看看ISO 26262中的定义:

  • 差错(Error):计算的、观测的、测量的值或条件与真实的、规定的、理论上正确的值或条件之间的差异。

  • 注:差错可由系统或组件的内部缺陷(fault)引起

  • 失效(Failure):由于缺陷而导致要素(element)或相关项(item)预期功能的终止。

  • 缺陷(Fault):可引起要素(element)或相关项(item) 失效(fail)的异常情况;

  • 注:当一个子系统处于差错(error)状态时,可能导致系统缺陷(fault)

再看看ARP-4754A中的定义:

  • 差错(Error):An omitted or incorrect action by a crewmember or maintenance person, or a mistake in requirements, design, or implementation;机组人员或维修人员的疏忽或不正确的行为,或需求、设计或实施中的错误。

  • 失效(Failure):An occurrence which affects the operation of a component, part or element such that it can no longer functionas intended, (this includes both loss of function and malfunction). Note: errors may cause Failures, but are not considered to be Failures. 影响部件、零件或元件运行,使其无法按预期运行(包括功能丧失和不期望的行为)。注:差错可能导致失效,但不被视为失效。

  • 缺陷(Fault):A manifestation of an error in an item or system that may lead to a failure. 项目或系统中可能导致失效的差错所表现的行为。

看完定义,陷入了更深的迷惑。😓

3 三者的关系

Fault、Error、Failure这三个术语,理解较为一致的是Failure,即失效。例如,一个卫星定位设备,不能提供定位信息或者提供了错误的定位信息,那它就是“失效”(Failure)了。

Fault和Error的关系则较为模糊,甚至存在两种相反的解释。经过比较,在文章“Basic concepts and taxonomy of dependable and secure computing”中系统阐述了三者的关系,逻辑合理,因此这里采信该文的说法。

简而言之,三者关系如下图所示。

Fault(缺陷)可能导致 Error(差错)。一段代码中存在缺陷(例如,本应计算a+b,实际为a-b),在该段代码未被调用时,该缺陷处于休眠状态,因此不会引起Error;当该段代码被调用时,缺陷被激活,Error产生了。

Error(差错)可能导致Failure(失效)。在系统内的一个组件中产生的Error,不一定能够被传播到系统的边界,也就不会引起系统失效。例如,系统存在冗余机制,一个控制单元的Error会被过滤掉,因此不会引起系统失效。当一个或多个Error最终传递到系统边界导致系统功能丧失或非预期的功能时,Failure(失效)就发生了。

4 关于术语翻译

对于这几个词的翻译,也有不同的处理。

Failure翻译为“失效”,这个较为一致。

Error翻译为“差错”,或者“错误”。参照ISO 26262对Error的定义:“计算的、观测的、测量的值或条件与真实的、规定的、理论上正确的值或条件之间的差异”,尤其当Error与Mistake出现在同一句子中时,则Error翻译为“差错”似乎更加合理。

Fault常翻译为“故障”、“缺陷”。结合上文中对Fault的解释,本文认为翻译为“缺陷”更加合理。例如句子“代码中存在缺陷”,似乎语感上更好些。

还有一些其他表达故障、缺陷的词。参照[Algirdas 2004],Bug、Defect、Flaw等也用于表示Fault(缺陷);Breakdown、Malfunction等表示Failure(失效)。

5 总结

本文讨论Fault、Error和Failure的定义及关系。简而言之,三者关系为:Fault(缺陷)可能导致Error(差错),Error(差错)可能导致Failure(失效)。

有关Fault、Error及Failure的解释的更多相关文章

  1. ruby-on-rails - Ruby on Rails : . 常量化 : wrong constant name error? - 2

    我正在使用这个:4.times{|i|assert_not_equal("content#{i+2}".constantize,object.first_content)}我之前声明过局部变量content1content2content3content4content5我得到的错误NameError:wrongconstantnamecontent2这个错误是什么意思?我很确定我想要content2=\ 最佳答案 你必须用一个大字母来调用ruby​​常量:Content2而不是content2。Aconstantnamestart

  2. ruby-on-rails - 错误 : Error installing pg: ERROR: Failed to build gem native extension - 2

    我克隆了一个rails仓库,我现在正尝试捆绑安装背景:OSXElCapitanruby2.2.3p173(2015-08-18修订版51636)[x86_64-darwin15]rails-v在您的Gemfile中列出的或native可用的任何gem源中找不到gem'pg(>=0)ruby​​'。运行bundleinstall以安装缺少的gem。bundleinstallFetchinggemmetadatafromhttps://rubygems.org/............Fetchingversionmetadatafromhttps://rubygems.org/...Fe

  3. ruby - 有人可以帮助解释类创建的 post_initialize 回调吗 (Sandi Metz) - 2

    我正在阅读SandiMetz的POODR,并且遇到了一个我不太了解的编码原则。这是代码:classBicycleattr_reader:size,:chain,:tire_sizedefinitialize(args={})@size=args[:size]||1@chain=args[:chain]||2@tire_size=args[:tire_size]||3post_initialize(args)endendclassMountainBike此代码将为其各自的属性输出1,2,3,4,5。我不明白的是查找方法。当一辆山地自行车被实例化时,因为它没有自己的initialize方法

  4. ruby - RVM "ERROR: Unable to checkout branch ."单用户 - 2

    我在新的Debian6VirtualBoxVM上安装RVM时遇到问题。我已经安装了所有需要的包并使用下载了安装脚本(curl-shttps://rvm.beginrescueend.com/install/rvm)>rvm,但以单个用户身份运行时bashrvm我收到以下错误消息:ERROR:Unabletocheckoutbranch.安装在这里停止,并且(据我所知)没有安装RVM的任何文件。如果我以root身份运行脚本(对于多用户安装),我会收到另一条消息:Successfullycheckedoutbranch''安装程序继续并指示成功,但未添加.rvm目录,甚至在修改我的.bas

  5. ruby - 解释为局部变量会覆盖方法名称吗? - 2

    如thisquestion,当在其自己的赋值中使用未定义的局部变量时,它的计算结果为nil。x=x#=>nil但是当局部变量的名称与现有的方法名称冲突时,就比较棘手了。为什么下面的最后一个示例返回nil?{}.instance_eval{a=keys}#=>[]{}.instance_eval{keys=self.keys}#=>[]{}.instance_eval{keys=keys}#=>nil 最佳答案 在Ruby中,因为可以在没有显式接收器和括号的情况下调用方法,所以在局部变量引用和无接收器无参数方法调用之间存在语法歧义:f

  6. 语法类似于 GitHub Flavored Markdown 的 Ruby markdown 解释器? - 2

    我使用Jekyll运行博客,并认为我会解决RedcarpetMarkdown解释器,因为它是developedandusedbyGitHub.好吧,我只是碰巧遇到了一个错误,去检查问题,然后foundthis.Maintainersays,"Asyouprobablyhavenoticed(harharharhar)Idon'thavetimetomaintainRedcarpetanymore.It'snotapriorityforme(IfindMarkdownthoroughlyboring)andit'snotapriorityforGitHub,becausewenolong

  7. ruby-on-rails - 尝试设置 Amazon 的 S3 存储桶 : 403 Forbidden error & setting permissions - 2

    我正在关注Hartl的railstutorial.org并已到达11.4.4:Imageuploadinproduction.我做了什么:注册亚马逊网络服务在AmazonIdentityandAccessManagement中,我创建了一个用户。用户创建成功。在AmazonS3中,我创建了一个新存储桶。设置新存储桶的权限:权限:本教程指示“授予上一步创建的用户读写权限”。但是,在存储桶的“权限”下,未提及新用户名。我只能在每个人、经过身份验证的用户、日志传送、我和亚马逊似乎根据我的名字+数字创建的用户名之间进行选择。我已经通过选择经过身份验证的用户并选中了上传/删除和查看权限的框(而不

  8. ruby - 有人可以解释一下在 Ruby 中注入(inject)的真实、通俗易懂的用法吗? - 2

    我正在学习Ruby,遇到了inject。我正处于理解它的风口浪尖,但当我是那种需要真实世界的例子来学习一些东西的人时。我遇到的最常见的例子是人们使用inject来添加一个(1..10)范围的总和,我不太关心这个。这是一个任意的例子。在实际程序中我会用它做什么?我正在学习,所以我可以继续使用Rails,但我不必有一个以Web为中心的示例。我只需要一些我可以全神贯注的目标。谢谢大家。 最佳答案 inject有时可以通过它的“其他”名称reduce更好地理解。它是一个对Enumerable进行操作(迭代一次)并返回单个值的函数。它有许多有

  9. ruby-on-rails - 冒号(:) gives load error in locale YAML file - 2

    我在en:语言环境中有一个字符串display_device:toplay:getplayer冒号给我的错误是cannotloadtranslationsfromC:/DocumentsandSettings/rajg/discoveryaws/branches/internationalization/config/locales/en.yml,expectedittoreturnahash,butdoesnot我怎样才能让它工作? 最佳答案 如果你用这样的引号将它括起来,你可以在你的字符串中转义冒号(和其他“重要”字符):dis

  10. ruby - gem install pg error : couldn't understand kern. osversion `14.0.0' on Yosemite w/Ruby 2.1.5 - 2

    我使用RVM安装Ruby-2.1.5并再次运行bundle。现在pggem不会安装,我得到这个错误:geminstallpg-v'0.17.1'----with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_configBuildingnativeextensionswith:'--with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config'Thiscouldtakeawhile...ERROR:Error

随机推荐