/note/tech

ソフトウェア開発で「なぜなぜ分析」はアンチパターン

要約:

■ 1. なぜなぜ分析がソフトウェア開発に不適切な理由

  • なぜなぜ分析(根本原因分析・RCA・5 Why手法)はソフトウェア開発においてアンチパターンである
  • ソフトウェアは平均的に複雑系である
  • 複雑系は複雑な方法で故障する
  • インシデントや問題に対する単一の因果関係を持つ単一の根本原因はそもそも存在しない
  • なぜなぜ分析は単一な根本原因に焦点を当てるために過度または誤った抽象化を行いやすい
  • 適用すべきではないというより有害である
  • なぜなぜ分析はその特性上人的ミスに帰結しやすい点も問題である
  • 超シンプルで小さなソフトウェアには有効かもしれないが現代ではそのようなソフトウェアは存在しない

■ 2. なぜなぜ分析がなくならない理由

  • 会社のルールだから:
    • 古い会社のルールを見直さず放置している
  • 偉い人が言うから:
    • 偉い人が学習を怠り過去の自分の成功体験を繰り返している
  • 他の方法を勉強していない
  • なぜなぜ分析の結果は対外的に説明しやすい:
    • シンプルな因果関係やストーリーはわかりやすい
    • しかし選択したシンプルな因果関係やストーリーはすぐに破綻する
    • また別の理由で次のインシデントが発生する
    • 再発防止策がさらに増える
    • チェックリストが拡充される
    • 無駄な作業ばかりが増え生産性は落ちていく

■ 3. なぜなぜ分析のダメな例(SREをはじめようより)

  • システムダウンの事例:
    • システムがダウンした
    • →サーバーが停止した
    • →ディスクがいっぱいになった
    • →ログが肥大した
    • →ログローテしてなかった
    • →設定ファイルが漏れていた(根本原因)→すべての設定ファイルにログローテーションの設定があることを確認という分析
  • 問題点:
    • 観察した1つの事柄を深く掘り下げる際に他の要因を無視している
    • なぜを繰り返す前に何が起こったのかの質問にすべて答える必要がある
    • 単一の根本原因に焦点を当てることが失敗から学ぶ上で不利になる
    • 明確な因果の連鎖を1つ特定できたと思った時点でインシデントを深く観察することをやめてしまう

■ 4. 根本原因という正解の不在

  • インシデントの原因は無数にある
  • 複合要因をちゃんと分析すべきである
  • 根本原因という用語はすべての背後に1つの真の原因があるように見えてしまう点でダメである
  • 現代は唯一解のない正解がいくつもある時代である
  • 問題を分析しその問題の正解を外から持ってくるという思考法だけでは通用しない
  • 少し前の教育を受けていた世代は優等生主義や正解主義のきらいがある

MEMO: