エンベデッドシステムスペシャリスト 2021年 午前2 問22
問題文
プログラム実行中の特定の時点で成立していなければならない変数間の関係や条件を記述した論理式を埋め込んで、その論理式が成立していることを確認することによって、プログラムの処理の正当性を動的に検証する手法はどれか。
選択肢
ア:アサーションチェック(正解)
イ:コード追跡
ウ:スナップショットダンプ
エ:テストカバレッジ分析
🔒 解説は解答すると表示されます
アサーションチェック【午前2解説】
正解の理由
プログラムの特定の時点で成立しているべき条件を論理式として記述し、実行中にその条件が成立しているかを確認する手法がアサーションチェックです。
例えば、「配列の添字が範囲内である」「計算結果が負の値にならない」といった条件をプログラムに埋め込みます。条件が成立しなければ、異常の発生を検知できます。この説明に該当するのはアです。
解法ステップ
- 問題文から「プログラム実行中」「特定の時点」「論理式」「成立していることを確認」という語句に注目します。
- 実行時に条件の真偽を確かめる手法を考えます。
- 条件式をプログラムに埋め込んで検証する「アサーションチェック」を選びます。
選択肢別の誤答解説
- ア アサーションチェック
指定した時点で成立しているべき条件を検査します。問題文の説明に一致します。 - イ コード追跡
プログラムの実行順序や変数の変化を追い、処理の流れを調べる方法です。論理式の成立を確認する手法ではありません。 - ウ スナップショットダンプ
障害発生時などに、メモリや変数の状態を記録する方法です。特定の条件が成立しているかを自動判定するものではありません。 - エ テストカバレッジ分析
テストによって、命令や分岐などがどの程度実行されたかを分析する方法です。変数間の条件の成立を確認するものではありません。
よくある誤解
- アサーションチェックを、テストケースを実行するテスト全般と混同しないようにしましょう。アサーションは、実行時に成立すべき条件を直接検査します。
- スナップショットダンプも実行時の状態を扱いますが、状態を記録することと、条件の成立を判定することは別です。
- テストカバレッジが高くても、プログラムの正しさが保証されるわけではありません。カバレッジは実行された範囲を示す指標です。
補足コラム
アサーションで記述する条件は、実行前に満たすべき条件、実行後に満たすべき条件、処理の途中でも維持されるべき条件などに整理できます。条件が成立しない場合は、問題が起きた場所を早期に特定しやすくなります。
FAQ
Q. アサーションの条件が成立しなかった場合、どうなりますか?
A. 実装や実行環境によりますが、エラーを報告したり、処理を停止したりして異常を知らせます。
A. 実装や実行環境によりますが、エラーを報告したり、処理を停止したりして異常を知らせます。
Q. アサーションチェックを行えば、プログラムの正しさを完全に証明できますか?
A. いいえ。埋め込んだ条件が正しく、必要な箇所を十分に検査していることが前提です。すべての不具合を発見できるとは限りません。
A. いいえ。埋め込んだ条件が正しく、必要な箇所を十分に検査していることが前提です。すべての不具合を発見できるとは限りません。
関連キーワード: アサーション、事前条件、事後条件、プログラム検証

\ せっかくなら /
エンベデッドシステムスペシャリストを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

