「バグ」というマジックワード
よくソフトウェア開発で問題が起きた場合は、「バグだね」とか「エラーが起きた」という言い回しをよく使う。
しかし、考えてみると発生した事象に対して「これはバグ」だとか「これはエラー」だとかという明確な線引を教わっていない気がした。
「オブジェクト指向入門 第2版 原則・コンセプト」を読んでいる時にそこらへんの記述があったのでメモしとく。
どうやらバグというのはソフトウェア畑の人が使った便利なマジックワードのようであるらしい。
本では、「誤りが外からソフトウェアの中に入り込んできたような、誰か他のものを責めるために使われたもの」としている。
厳密な区別が必要な場合はバグではなく、以下の用語で補足されるべきとのこと。
ソフトウェアの災いを表す用語
エラー(error)とは、ソフトウェアの開発中になされた誤った決定である。
欠陥(defect)とは、意図したふるまいからシステムが逸れてしまう原因となるソフトウェアシステムの特性である。
フォルト(fault)とは、何らかの実行中に意図した振る舞いから逸れてしまうソフトウェアシステムのイベントである。
因果関係は明確である。すなわち、エラーから欠陥が生じ、フォルトは欠陥によって起こる
この定義の中だと、ソフトウェアの記述ミスである「欠陥」を自分はバグの意味で使っている。
例えば、境界値の判定条件を間違えたなどの意味合い。
他にもエラーやフォルトの意味でのバグの使い方は以下の通りになる。
エラー :「リストをソートせずに使ったことがバグの原因」
フォルト:「バグの出ない処理を実現した」
またこの中では特にエラーを勘違いしていた。
ここだとエラーは人間による判断ミスだと解釈できる。
これまで、ソフトウェアが出力するいわゆる”エラー画面”のエラーだと勝手に思っていた。
その意味だとソフトウェアシステムのイベントなので、ここでの定義によればフォルト(障害?)に当たる。
バグへの共通認識
このような用語があるからといって「バグというマジックワードを使うのをやめよう」と言っても、
文化として根付いた言葉遣いはなかなか変わらない。
さらに区別したからといって起きている問題は変わらないし、発生した”バグ”は修正しなければならない。
区別してもあまり旨味はないかもしれないが
このような区別がお互いの共通認識を確認するきっかけにはなるのかなと思う。
相手がどういう事象をバグと読んでいるのか確かめ合ってみるのも良さそう。