7

复杂系统为何失败? - Richard

 3 years ago
source link: https://www.jdon.com/56507
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
复杂系统为何失败? - Richard

这是关于复杂系统发生故障性质的简短论述;如何评估故障;如何寻找故障原因的新想法。作者:Richard I. Cook, 芝加哥大学认知技术实验室医学博士。

1. 复杂系统本质上是危险的系统。

所有有趣的系统(例如运输、医疗保健、发电)都具有固有且不可避免的危险性。危险暴露的频率有时可以改变,但系统中涉及的流程本身具有内在且不可减少的危险。正是这些危害的存在推动了针对这些系统的危害防御措施的建立。

2. 复杂的系统能够成功地抵御故障

随着时间的推移,发生故障的严重后果导致先前构建的多层防御系统溃败。这些防御包括明显的技术组件(例如备份系统、设备的“安全”功能)和人力组件(例如培训、知识)以及各种组织、制度和监管防御(例如政策和程序、认证、工作规则、团队训练)。这些措施的效果是提供一系列保护措施,意图是通过严格标准的日常操作从而实现远离事故。

3. 一次大灾是多次故障累积结果,只是一次单点故障不足以成气候。

一系列防御措施在通常操作规范下是有效的,当看似无害的小故障联合起来为系统性事故创造机会时,就会发生明显的灾难性故障。这些小故障中的每一个都是造成灾难所必需的,但只有组合在一起才足以发生一次大故障(蝴蝶效应)。换句话说,发生故障的机实际会比公开暴露的系统事故要多得多。大多数初始故障痕迹都被设计的系统安全部件阻断了,仅仅在操作层面的发生故障的迹象操作者阻断了。

4. 复杂的系统包含其内部潜在故障的不断变化的混合演进。

这些系统的复杂性使得它们不可能在不存在多个Bug的情况下运行。由于这些Bug单独一个是不足以导致故障的,因此它们在操作过程中被视为次要因素。根除所有潜在故障主要受经济成本的限制,但也因为很难在事前了解此类故障如何导致事故。由于技术、工作组织和消除故障的努力不断变化,故障不断变化。

5. 复杂系统以降级模式运行。

前一点的一个推论是复杂系统是作为一台已经损坏的系统在运行。该系统继续运行,因为它包含如此多的冗余,并且尽管存在许多缺陷,但人们可以使其运行。事故审查后几乎总是注意到该系统具有先前几乎导致灾难的“原始事故”的历史。在公开事故发生之前就应该认识到这些退化条件的论点通常是基于对系统性能的幼稚概念。系统操作是动态的,组件(组织、人员、技术)出现故障并不断被替换。

6. 灾难总是指日可待。

复杂系统具有发生灾难性故障的潜力。人类从业者几乎总是在物理和时间上接近这些潜在的故障——灾难可能在任何时间和几乎任何地点发生。发生灾难性后果的可能性是复杂系统的标志。不可能消除这种灾难性故障的可能性;这种故障的可能性始终存在于系统自身的性质中。

7. 事后归因于“根本原因”是根本错误的。

因为明显的大故障需要多个小故障合成,所以没有孤立的事故“原因”。事故的成因是多方面的。这些中的每一个本身都不足以造成大事故。只有联合起来,这些原因才足以造成一次大事故。事实上,正是将这些原因联系在一起,才创造了事故所需的上下文环境。因此,不可能孤立事故的“根本原因”。基于诸如“根本原因”之类的推理的评估并不反映对失败本质的技术理解,而是反映将结果归咎于特定的、局部的力量或事件的社会、文化需求。(内卷化)

8. 事后的偏见对人类表现的事故后评估。

由于看到了发生故障的结果,这使得导致结果的事件在当时对从业者来说似乎应该比实际情况更突出。这意味着对人的表现进行事后事故分析是不准确的。结果是知识毒害了事故后观察者,使他们无法在事故发生前重现从业人员对这些因素的看法。事后诸葛亮的偏见仍然是事故调查的主要障碍,尤其是当涉及专家的人事绩效考核时。

9. 人类操作员有双重角色:作为生产者和抵御失败的捍卫者。

系统的从业人员在操作系统的目的是:生产其所需的产品并努力预防事故。系统运行的这种动态质量、生产需求与初期故障可能性的平衡是不可避免的。局外人很少承认这个角色的双重性。在没有发生事的时候,生产作用的重要性总是被强调;事故发生后,防故障作用又是被重点强调。

10 参与者的一切行为都是赌博。

事故发生后,明显的失败往往似乎是不可避免的,而从业者的行为则是失误或故意无视某些即将发生的失败。但是从业者的所有行为实际上都是赌博,即在不确定结果面前发生的行为。不确定性的程度可能会随时变化。事故发生后,从业者的行为似乎是赌博。一般来说,事后分析将这些赌博视为糟糕的赌博。但反过来说:成功的结果也是赌博的结果;没有得到广泛的赞赏。

11. 细节尖端的行动解决了所有的歧义。

对于生产目标、资源的有效利用、经济性和运营成本以及可接受的低和高后果事故风险之间的关系,组织通常是有意的模棱两可。所有的歧义都由系统的细节尖端的从业者的行动来解决。事故发生后,从业者的行为可能会被视为“错误”或“违规”,但这些评估严重偏向于事后​​,忽略了其他驱动力,尤其是生产压力。

12. 人类从业者是复杂系统的适应性元素。

从业人员和一线管理人员积极调整系统,以最大限度地提高产量并最大限度地减少事故。这些适应经常发生在每时每刻的基础上。其中一些调整包括: (1) 重构系统以减少易受攻击的部件出现故障。(2) 将关键资源集中在预期高需求领域。(3) 提供从预期和意外故障中撤退或恢复的途径。(4) 建立早期检测系统性能变化的方法,以允许优雅地削减生产或其他增加弹性的方法。

13. 复杂系统中的人类专业知识不断变化

复杂的系统在操作和管理方面需要大量的人类专业知识。这种专业知识随着技术的变化而变化,但也会因为需要替换离开的专家而发生变化。在每种情况下,技能和专业知识的培训和改进都是系统本身功能的一部分。因此,在任何时候,一个给定的复杂系统都会包含具有不同专业知识程度的从业者和受训者。与专业知识相关的关键问题源于 (1) 需要使用稀缺的专业知识作为最困难或最苛刻的生产需求的资源,以及 (2) 需要开发专业知识以备将来使用。

14. 变化引入了新的失败形式。

可靠系统中的低公开事故率可能会鼓励变革,尤其是新技术的使用,这是为了减少后果程度低但发生频率高的故障数量。这些变化实际上可能为新的、频率低但后果严重的故障创造机会。当新技术用于消除众所周知的系统故障或获得高精度性能时,它们通常会为大规模的灾难性故障引入新的途径。这些新的、罕见的灾难比新技术消除的灾难具有更大的影响,这并不少见。由于这些新的、后果严重的事故发生率很低,事故发生前可能会发生多个系统的变化,因此很难看出技术对故障的贡献。

15.“原因”的观点限制了防御未来事件的有效性。

事后对“人为错误”的补救措施通常对减少进一步事故的可能性几乎没有作用。事实上,发生相同事故的可能性已经非常低,因为潜在故障的模式不断变化。事故后补救措施通常不会增加安全性,反而会增加系统的耦合度和复杂性。这增加了潜在故障的潜在数量,也使事故轨迹的检测和阻断更加困难。

16. 安全是系统的特征,而不是其组件的特征

安全是系统的一种涌现emergent属性;它并不驻留在组织或系统的个人、设备或部门中。安全不能购买或制造;它不是与系统的其他组件分开的功能。这意味着安全不能像原料或原材料一样被操纵。任何系统中的安全状态总是动态的;持续的系统变化可确保危害及其管理不断变化。

17. 人们不断创造安全问题。

无故障操作是工作人员将系统保持在可容忍性能范围内的活动的结果。这些活动在大多数情况下是正常操作的一部分,表面上很简单。但是因为系统操作从来都不是没有问题的,人类从业者对不断变化的条件的适应实际上时时刻刻都在创造安全问题。

18. 无故障操作需要有失败经验。

识别危险并成功地操纵系统操作以保持在可容忍的性能边界内,需要与故障密切接触。在操作人员能够识别“封装边缘”的系统中,可能会出现更稳健的系统性能。这是系统性能开始恶化、变得难以预测或无法轻易恢复的地方。在本质上危险的系统中,操作人员应以能够产生理想的整体性能的方式遇到并理解危险。提高安全性取决于为操作员提供危险的校准视图。它还取决于提供有关其操作如何将系统性能移向或移离封装边缘的校准。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK