什么是问题根因分析

根本原因分析(root cause analysis):通过调查和分析问题哪里出错、为什么出错,寻求防止差错事故再次发生的必要措施,从而提高服务安全和质量。

根因分析目标

  • 问题(发生了什么)
  • 原因(为什么发生)
  • 措施(什么方法能够阻止问题再次发生)

WHY-WHY分析法(5WHY,5W)

5W分析:是一个诊断性技术,用于识别和说明因果关系链,它的根源会恰当地定义问题。不断提问为什么前一个事件会发生,直到回答“没有好的理由”或者直到一个新的故障模式被发现才停止提问。解释根本原因以防止问题重演。具体步骤如下:

一、把握现状

步骤1:识别问题

  • 我知道什么?(大、模糊或复杂问题 ——> 详细事实)

步骤2:澄清问题

  • 实际发生什么?
  • 应该发生什么?

步骤3:分解问题

  • 还知道什么?
  • 是否存在其他子问题?

步骤4:查找原因要点(PoC)

  • 需要去哪里?
  • 需要看什么?
  • 谁可能掌握有关问题的信息?

步骤5:把握问题的倾向

  • 谁?
  • 哪个?
  • 什么时间?
  • 多次频次?
  • 多大量?

二、原因调查

步骤6:识别并确认异常现象的直接原因

  • 问题为什么发生时?
  • 是否能看见问题直接原因?
  • 如果不能,怀疑什么是潜在原因?
  • 怎么核实最可能的潜在原因?
  • 怎么确认直接原因?

步骤7:使用5WHY调查方法来建立一个通向根本原因的原因/效果关系链

  • 处理直接原因能防止再发生吗?
  • 如果不能,是否可以发现下一级原因?
  • 如果不能,我怀疑什么是下一级原因?
  • 怎么才能核实和确认下一级有原因呢?
  • 处理这一级原因会防止再发生吗?

如果不行,继续问“为什么”直到找到根本原因。
在必须处理以防止再发生的原因处停止,问:

  • 我已经找到问题的根本原因了吗?
  • 我能通过处理这个原因来防止再发生吗?
  • 这个原因能通过以事实为依据的原因/效果关系链与问题联系起来吗?
  • 这个链通过了“因此”检验了吗?
  • 如果我再问“为什么”会进入另一个问题吗?

还需要使用5WHY回来这些问题:

  • 为什么我们有了这个问题?
  • 为什么问题会到达顾客/用户处?(为什么没有发现问题?)
  • 为什么我们的系统允许问题发生?

三、问题纠正

步骤8:采取明确的措施来处理问题

  • 使用临时措施去处理异常现象直到根本原因能够被处理。
  • 实施纠正措施来处理根本原因以防止再发生。
  • 跟踪并核实结果:解决方案是否有效?如何确认?

四、通过“差错防止”过程进行预防

  • 采取明确措施确保问题不会再发生,典型的措施是“差错防止”过程。
  • 铭记吸取到的教训。

10why问题分析

  • 1w:这个问题是什么?有什么影响?
  • 2w:为什么会出现这个问题?什么场景会出现这个问题?
  • 3w:这个问题在哪个阶段发现?——是否能更早?
  • 4w:缺陷是在哪个阶段引入?
  • 5w:为什么会在这个阶段引入问题?
  • 6w:(how)如何避免引入这个问题?
  • 7w:应该在哪个阶段发现问题?
  • 8w:为什么没有在这个阶段发现问题?
  • 9w:(how)如何才能在这个阶段发现问题?
  • 10w:(how)如何基于风险测试过程,提前预估到这样的产品风险?

改进/优化措施思路

  1. 问题如何规避?

    1. 事情重来,过程哪些可以优化?
    2. 换一个人,是否能避免?
  2. 如果不能规避,哪个阶段最容易发现?如何保障这个阶段及时发现问题?
    1. 发布前——是否有工具/机制及时发现问题(如代码扫描)?发布性用例?
    2. 灰度——监控、反馈机制?
    3. 线上——监控、数据、反馈机制、反馈通道
  3. 问题处理过程是否可优化?
    1. 有效——解决过程决策是否正确?决策过程具体怎样?
    2. 效率——处理速度?哪里可以提效?
  4. 换位思考,如果是我会怎么做
  5. 结果负责:如何保障结果/产出
  6. 吸取教训:经验沉淀

参考:http://wiki.mbalib.com/wiki/WHY-WHY%E5%9B%BE

【笔记】两个根因分析方法:5WHY&10WHY的更多相关文章

  1. memcached学习笔记——存储命令源码分析上篇

    原创文章,转载请标明,谢谢. 上一篇分析过memcached的连接模型,了解memcached是如何高效处理客户端连接,这一篇分析memcached源码中的process_update_command ...

  2. python笔记之常用模块用法分析

    python笔记之常用模块用法分析 内置模块(不用import就可以直接使用) 常用内置函数 help(obj) 在线帮助, obj可是任何类型 callable(obj) 查看一个obj是不是可以像 ...

  3. Java内存溢出分析方法(Eclipse Memory Analyzer 使用简单入门)

    转载至:http://outofmemory.cn/java/jvm/OutOfMemoryError-analysis 工具 安装Memory Analyse Tools(MAT) 工具, 可以直接 ...

  4. tensorflow笔记:多层LSTM代码分析

    tensorflow笔记:多层LSTM代码分析 标签(空格分隔): tensorflow笔记 tensorflow笔记系列: (一) tensorflow笔记:流程,概念和简单代码注释 (二) ten ...

  5. 面向对象分析方法(I)

    找出最关键的一些业务场景:一般通过动词来寻找,比如招聘系统中,一个应聘人投递一个职位就是一次应聘,应聘就是一个业务场景:一个学生参加某门课的考试,那么考试就是一个业务场景:一个学生去图书馆借书,那么借 ...

  6. Linux内核源码分析方法

    一.内核源码之我见 Linux内核代码的庞大令不少人“望而生畏”,也正因为如此,使得人们对Linux的了解仅处于泛泛的层次.如果想透析Linux,深入操作系统的本质,阅读内核源码是最有效的途径.我们都 ...

  7. memcached学习笔记——存储命令源码分析下篇

    上一篇回顾:<memcached学习笔记——存储命令源码分析上篇>通过分析memcached的存储命令源码的过程,了解了memcached如何解析文本命令和mencached的内存管理机制 ...

  8. 【JVM】Java中的JavaCore/HeapDump文件及其分析方法

    产生时间 Java程序运行时,有时会产生JavaCore及HeapDump文件,它一般发生于Java程序遇到致命问题的情况下. 有时致命问题发生后,Java应用不会死掉,还能继续运行: 但有时致命问题 ...

  9. 《构建之法》教学笔记——Python中的效能分析与几个问题

    <构建之法:现代软件工程>中第2章对效能分析进行了介绍,基于的工具是VSTS.由于我教授的学生中只有部分同学选修了C#,若采用书中例子讲解,学生可能理解起来比较困难.不过所有这些学生都学习 ...

随机推荐

  1. Leetcode 10. 正则表达式匹配 - 题解

    版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - L ...

  2. Chorme浏览器渲染MathJax时出现竖线的解决方法

    Chorme浏览器渲染MathJax时出现竖线的原因分析与解决方法 查资料知,Chorme中显示MathJax时出现竖线的原因如下: 新版的Chorme浏览器在解析css时,会对其中的值进行向上取整( ...

  3. JavaScript面向对象--继承 (超简单易懂,小白专属)

    一.继承的概念 子类共享父类的数据和方法的行为,就叫继承. 二.E55如何实现继承?探索JavaScript继承的本质 2.1构造函数之间的"复制粘贴" 第一条路是通过构造函数来继 ...

  4. Docker折腾手记-linux下安装

    Linux下的安装方法 博主用的是centos7,其它也是大同小异 我根据的是官网的教程进行的操作,地址是 https://docs.docker.com/engine/installation/li ...

  5. 谈谈.NET Core中基于Generic Host来实现后台任务

    目录 前言 什么是Generic Host 后台任务示例 控制台形式 消费MQ消息的后台任务 Web形式 部署 IHostedService和BackgroundService的区别 IHostBui ...

  6. ELK 经典用法—企业自定义日志收集切割和mysql模块

    本文收录在Linux运维企业架构实战系列 一.收集切割公司自定义的日志 很多公司的日志并不是和服务默认的日志格式一致,因此,就需要我们来进行切割了. 1.需切割的日志示例 2018-02-24 11: ...

  7. [五] JavaIO之InputStream OutputStream简介 方法列表说明

      InputStream 和 OutputStream 对于字节流的输入和输出 是作为协议的存在 所以有必要了解下这两个类提供出来的基本约定 这两个类是抽象类,而且基本上没什么实现,都是依赖于子类具 ...

  8. 痞子衡嵌入式:并行接口NAND标准(ONFI)及SLC Raw NAND简介

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是ONFI标准及SLC Raw NAND. NAND Flash是嵌入式世界里常见的存储器,对于嵌入式开发而言,NAND主要分为两大类:S ...

  9. Jquery 强大的表单验证操作

    参考资料: 1.https://www.cnblogs.com/linjiqin/p/3431835.html(此篇最佳) 2.https://blog.csdn.net/pengjunlee/art ...

  10. MVC_分页方法调用

    /// <summary> /// 分页页脚 /// </summary> /// <param name="currentPageIndex"> ...