読者です 読者をやめる 読者になる 読者になる

ソフトウェアの災いを表す用語


バグ

定義は曖昧なバグという言葉は広く使われています。 古くはパンチカードに紛れ込んだ虫がまさに問題の原因だったかも知れませんが、
今では、この災いはどこか我々の関与しないところから飛んできた罪のない虫によりもたらされたもので、我々開発者も困っているんですよ、
といった責任転嫁に都合の良いメタファーとして使われている。
 

バートランド・メイヤーによる災いの定義

オブジェクト指向入門 にて用語定義されています。

オブジェクト指向入門 第2版 原則・コンセプト (IT Architect’Archive クラシックモダン・コンピューティング)

オブジェクト指向入門 第2版 原則・コンセプト (IT Architect’Archive クラシックモダン・コンピューティング)

  • エラー(error)

     ソフトウェアシステムの開発中になされた誤った決定  
    
  • 欠陥(defect)

     意図した振る舞いからシステムが逸脱してしまう原因となるソフトウェアシステムの特性  
    
  • フォルト(fault)

     何らかの実行中に意図した振る舞いから逸脱してしまうソフトウェアシステムのイベント
    

ソフトウェアの災いは、
「ソフトウェアシステムの開発中になされた誤った決定」により「意図した振る舞いからシステムが逸脱してしまう原因となるソフトウェアシステムの特性」が埋め込まれ、「何らかの実行中に意図した振る舞いから逸脱してしまうソフトウェアシステムのイベント」が発生する。 つまり、

    エラーから欠陥が生じ、フォルトは欠陥により引き起こされる。

 
 

バグという言葉は、エラー・欠陥・フォルトを曖昧に語る。

    「このルーチンにほかにバグが残っていないのは確かか?」
    「このルーチンにほかに欠陥(defect)が残っていないのは確かか?」

 

    「われわれはこの3週間の間に、バグの出ない処理を実現した」
    「われわれはこの3週間の間に、フォルト(fault)の出ない処理を実現した」

 

    「リストをソートせずに使ったことがバグである」
    「リストをソートせずに使ったことがエラー(error)である」

 
 

ISO/IEC 2382-14(JIS X 0014) (SQuBOK)

SQuBOKでのこれらの用語は JIS X 0014に準拠した用語として使用されている。

ソフトウェア品質知識体系ガイド―SQuBOK Guide

ソフトウェア品質知識体系ガイド―SQuBOK Guide

  • 誤り(error)

     計算,観測若しくは測定された値又は状態と、真の、指定された若しくは理論的に正しい値又は状態との間の相違
    
  • 障害(fault)

     要求された機能を遂行する機能単位の能力の、縮退又は喪失を引き起こす、異常な状態。
    
  • 故障(failure)

     要求された機能を遂行する、機能単位の能力がなくなること。
    

     

ISTQB(International Software Testing Qualifications Board)

ソフトウェアテストの基礎:ISTQBシラバス準拠

ソフトウェアテストの基礎:ISTQBシラバス準拠

  • 作者: ドロシー・グラハム,エリック・ファン・フェーネンダール,イザベル・エバンス,レックス・ブラック,秋山浩一,池田暁,後藤和之,永田敦,本田和幸,湯本剛
  • 出版社/メーカー: ビー・エヌ・エヌ新社
  • 発売日: 2008/07/01
  • メディア: 単行本(ソフトカバー)
  • クリック: 19回
  • この商品を含むブログ (4件) を見る

  • エラー(error

     間違った結果を生み出す人間の行為
    
  • 欠陥(defect)/ フォールト(fault)

     コンポーネント又はシステムに要求された機能が実現できない原因となる、コンポーネント又はシステムに含まれる不備。たとえば、不正なステートメント又はデータ定義。実行中に欠陥に遭遇した場合、コンポーネント又はシステムの故障を引き起こす。
    
  • 故障(failure)

     コンポーネントやシステムが、期待した機能、サービス、結果から逸脱すること
    

     

まとめると

error は人間系の判断の誤りを表し、
defect は error によりシステムが振る舞う特性を表し、
failure は defect が要因となり期待しない振る舞いとして観測された結果

で、fault はシステムの異常な状態を表す
    という理解で良いのではないでしょうか。