ソフトウェア検証

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

ソフトウェア検証は、ソフトウェアが期待されるすべての要件を完全に満たすことを保証することを目的とした ソフトウェアエンジニアリングの分野です。

広い範囲と分類

検証の広い定義は、ソフトウェアテストと同等になりますその場合、検証には2つの基本的なアプローチがあります。

  • 動的検証。実験動的テスト、または単にテストとも呼ばれます。-これは、障害(ソフトウェアのバグ)を見つけるのに適しています。
  • 静的検証(分析または静的テストとも呼ばれます)-これは、プログラムの正当性を証明するのに役立ちます。ただし、ソフトウェアが実際に実行するプロセスと静的検証で想定されるプロセスとの間に1つ以上の競合がある場合は、誤検知が発生する可能性があります。

動的検証(テスト、実験)

動的検証はソフトウェアの実行中に実行され、その動作を動的にチェックします。これは一般にテストフェーズとして知られています。検証はレビュープロセスです。テストの範囲に応じて、次の3つのファミリに分類できます。

  • 小規模でのテスト:単一の関数またはクラスをチェックするテスト(単体テスト
  • 大規模なテスト:次のようなクラスのグループをチェックするテスト
    • モジュールテスト(単一モジュール)
    • 統合テスト(複数のモジュール)
    • システムテスト(システム全体)
  • 受け入れテスト:ソフトウェアの受け入れ基準をチェックするために定義された正式なテスト

ソフトウェアの動的検証の目的は、アクティビティによって発生したエラーを見つけることです(たとえば、生化学的データを分析するための医療ソフトウェアを使用する)。または、1つ以上のアクティビティの繰り返し実行(Webサーバーのストレステストなど、アクティビティの現在の製品がアクティビティの開始時と同じくらい正しいかどうかを確認します)。

静的検証(分析)

静的検証は、実行前にコードを検査することにより、ソフトウェアが要件を満たしていることを確認するプロセスです。例えば:

分析による検証-分析検証方法は、調査、数学的計算、論理的評価、および古典的な教科書の方法または一般的に受け入れられている一般的なコンピューターの方法を使用した計算による検証に適用されます。分析には、サンプリングを行い、測定データと観測されたテスト結果を計算された期待値と相関させて、要件への適合を確立することが含まれます。

狭い範囲

より厳密に定義すると、検証は静的テストと同等であり、アーティファクトに適用することを目的としています。また、(ソフトウェア製品全体の)検証は動的テストと同等であり、実行中のソフトウェア製品(要件を除くアーティファクトではない)に適用することを目的としています。要件の検証は静的および動的に実行できることに注意してください(アーティファクトの検証を参照)。

検証との比較

ソフトウェア検証は、ソフトウェア検証と混同されることがよくあります。検証妥当性確認の違い

  • ソフトウェア検証では、「製品を正しく構築していますか?」という質問があります。つまり、ソフトウェアはその仕様に準拠していますか?(家はその青写真に準拠しているため。)
  • ソフトウェア検証では、「適切な製品を構築していますか?」という質問があります。つまり、ソフトウェアはユーザーが本当に必要としていることを実行しますか?(家は所有者が必要としているものに適合しているので。)

も参照してください

参照

  • IEEESWEBOK:ソフトウェアエンジニアリング知識体系のガイド
  • Carlo GhezziMehdi JazayeriDino Mandrioliソフトウェアエンジニアリングの基礎、Prentice Hall、ISBN  0-13-099183-X
  • Alan L. Breitler人工ニューラルネットワークから派生したソフトウェアの検証手順、Journal of the International Test and Evaluation Association、2004年1月、Vol 25、No4。
  • Vijay D'Silva、Daniel Kroening、Georg Weissenbacher:正式なソフトウェア検証のための自動化された手法の調査IEEETrans。集積回路およびシステムのCADに関する27(7):1165-1178(2008)