ソフトウェア
モデル検査(Model Checking)の説明として正しいものはどれか。
ア.テストケースを大量に実行して統計的にバグ数を推定する手法であり、仕様の網羅的検証は行わない。
イ.システムの有限状態モデルを構築し、時相論理式で表現した性質を状態空間の網羅的探索によって自動検証する手法である。正解
ウ.ソースコードのスタイル(インデント・命名規約)を自動チェックするlintツールの総称である。
エ.モデル検査はハードウェア設計にのみ適用可能で、ソフトウェアには使えない。
解説
モデル検査は「ゲームのすべてのルートを機械に探索させて、どこかでバグが起きないか確かめる」手法。人間が見落とすコーナーケースも、機械的全探索なら逃がさない。
なぜ イ が正解か
イが正解。モデル検査(Model Checking)は①システムを有限状態機械(FSM)としてモデル化②「デッドロックが起きない」「特定の状態に必ず到達する」等の性質をCTL・LTL等の時相論理式で記述③状態空間を網羅的に探索して性質が成立するか自動検証する手法。SPIN、NuSMV、UPPAAL等のツールが有名。
出典: AI生成問題(学習用)