YouTube

Got a YouTube account?

New: enable viewer-created translations and captions on your YouTube channel!

Japanese subtitles

← 01-18 How Failures Come To Be

Get Embed Code
4 Languages

Showing Revision 1 created 06/09/2014 by K2480.

  1. プログラム状態が連なって
    プログラムを形成しています
  2. それぞれのプログラム状態は
    変数と値からできています
  3. プログラムを実行すると
    これらの状態は新しい状態に変えられます
  4. 例えば変数を読み取って書き出す行為です
    これがノーマルモードです
  5. しかし初めはノーマル入力だったのに
    ここで最後に不具合が出ています
  6. プログラム内に問題の原因となる
    欠陥があるということです
  7. 実行したこの命令文に欠陥があると仮定しましょう
  8. 今起きていることはなんですか?
    実行します
  9. プログラム状態にエラーが出ました
    これが感染です
  10. この感染はおそらく
    他の状態へと拡大されていきます
  11. そして最終的に
    ユーザにも不具合が見える形になります
  12. ここで起こっているのは原因と結果の連鎖です
  13. 不具合つまり感染が確認できます
    前の感染が原因で起きています
  14. 原因となる感染がない状態の場合
    入力状態は問題ないですが
  15. 出力が感染しています
    この時に実行した命令文を見ます
  16. 感染なしの状態を
    感染状態に変えた原因となる命令文です
  17. これが感染の原因となった命令文
    つまり欠陥のある命令文なのです
  18. デバッグする時は
    この原因と結果の連鎖の特定が必要です
  19. 特定するだけでなく
    この連鎖を中断させる必要もあります
  20. 欠陥から不具合に至る連鎖を中断させれば
    デバッグは終了です
  21. 簡単そうに見えますが
    実際は見た目よりもはるかに複雑です
  22. 欠陥がすべて不具合の原因になるわけではないからです
  23. この欠陥が感染を起こしていたとしても
    本物の感染のように
  24. 拡大していくものではありません
  25. 感染は広がらずユーザにも見えない
  26. 他に不具合も引き起こさないし
    欠陥のある命令文もありません
  27. ある特定の状況下でだけは感染し
    不具合を起こすことはあるかもしれません
  28. これは実験上の話なので
    プログラムは何度も作成できます
  29. 不具合も欠陥もありませんが
    いざ本当にプログラムが失敗すると
  30. つまり実際に不具合を確認した場合は
    原因となった欠陥をたどることになります
  31. 原因と結果の連鎖をたどることで
    常に修正することはできます
  32. しかしここでまた問題が生じます
    状態が大量にあるいうことです
  33. 数えてみるとここには変数が12ありますね
    かわいいものです
  34. 実際にはこのような変数が一万あります
    一万あるのは変数だけではありません
  35. 欠陥と不具合の間に
    一万ステップあるということです
  36. ですから原因と結果の連鎖をたどることは
  37. この画面上の状況よりも
    はるかに複雑なものとなります
  38. 原因と結果の連鎖が長ければ
    処理する時間も長くなりますし
  39. 処理する状態も増えて
    デバッグがますます困難になります
  40. 状態が大きければ
    感染をさらに調査しなければなりません
  41. こうしてデバッグがどんどん難しくなるのです
  42. 干し草の山の中から針を見つけるくらい至難の業です
  43. 想像を絶するほど大きな
    干し草の山になることもありえます