SAシステムアーキテクト試験 午前Ⅱ

令和元年度秋期 システムアーキテクト 午前Ⅱ 問8

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

プログラム実行中の特定の時点で成立すべき変数間の関係や条件を記述した論理式を埋め込んで,そのプログラムの正当性を検証する手法はどれか。

選択肢

  1. ア
    アサーションチェック
  2. イ
    コード追跡
  3. ウ
    スナップショットダンプ
  4. エ
    テストカバレッジ分析
解き方のヒントを見る

検証手法を根拠の置き方で見分ける

プログラムの正しさを確かめる手法は、名称だけで覚えると混同しやすい分野です。各手法が何を拠り所にして正しさを主張しているのかという一つの観点に絞って、問題中の情報と自分の理解を照らし合わせてみましょう。

この問題で問われていること

この問題で意識したいのは、ある手法が正しさの根拠をどこから得ているかという点です。問題の中にその根拠を示す手掛かりがあるかを探し、手法の名称ではなく中身と結び付けて判断することが大切です。

視点

正当性を検証する手法は、どれも「プログラムが意図どおりに振る舞うか」を確かめるという目的は同じです。違いが出るのは、その確信をどのような材料から導くかという点です。学習の際は、手法名と定義文をそのまま暗記するより、次のことを自分の言葉で説明できるか確かめてください。その手法が何を前提に置いているか。どの範囲について何を保証しようとしているか。これができると、似た名称の手法どうしを区別しやすくなります。

確認ポイント

  • その手法が正しさを主張するとき、拠り所にしている材料は何かを自分の言葉で言えるか
  • その拠り所から、どの範囲まで正しさを言い切れるのかを説明できるか
  • 手法の名称の印象ではなく、根拠の置き方という中身で問題の内容と結び付けて判断しているか
正解と解説を見る

正解

ア

解説

アサーションチェックは、プログラム実行中の特定時点で成立すべき条件を論理式として記述し、その条件が成立しているかを確認する手法です。

理由

アサーションチェックでは、プログラム中に成立条件を埋め込み、実行時にその条件を評価します。条件が成立しなければ、想定した状態や変数間の関係が崩れていることを検出できます。

比較

コード追跡は処理の流れを追う方法、スナップショットダンプは実行時の状態を記録・出力する方法、テストカバレッジ分析はテストで実行された範囲を調べる方法です。いずれも設問の論理式による実行時条件検証そのものではありません。

選択肢ア(正解)

これは正解だよ。アサーションチェックは、実行中の特定時点で成立すべき変数間の関係や条件を論理式として記述し、その式を評価してプログラムの想定状態を検証する手法だからです。

選択肢イ

これは不正解だよ。コード追跡は、プログラムの命令や処理の流れを順に追って動作を確認する方法です。成立すべき条件を論理式として埋め込み、実行時に評価する手法を指してはいません。

選択肢ウ

これは不正解だよ。スナップショットダンプは、特定時点におけるメモリや変数などの状態を取り出して記録する方法です。記録した状態を得ることと、成立条件を論理式で検査することは異なります。

選択肢エ

これは不正解だよ。テストカバレッジ分析は、テストによって命令や分岐などがどの程度実行されたかを調べる方法です。実行時の変数間の成立条件を論理式で検証する方法ではありません。

学習のポイント

アサーションと、実行経路・状態記録・網羅率を調べる手法の違いを整理します。

出典:独立行政法人 情報処理推進機構(IPA)令和元年度秋期 システムアーキテクト試験 午前Ⅱ 問8(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針