情報処理安全確保支援士試験 2009年 春期 午前221


ソフトウェアを保守するときなどに利用される技術であるリバースエンジニアリングの説明はどれか。
ソースプログラムを解析してプログラム仕様書を作る。(正解)
ソースプログラムを探索して修正箇所や影響度を調べる。
ソースプログラムを見直して構造化プログラムに変換する。
ソースプログラムを分かりやすい表現に書き換える。

解説

リバースエンジニアリングの説明はどれか【午前2 解説】

要点まとめ

  • 結論:リバースエンジニアリングとは、ソースプログラムを解析してプログラム仕様書を作成する技術です。
  • 根拠:保守や改修の際に、既存プログラムの動作や構造を理解するために仕様書が必要となるため、解析して仕様書を作ることが重要です。
  • 差がつくポイント:単なる修正箇所の探索やコードの書き換えではなく、プログラムの設計意図や仕様を明確にするための解析行為である点を押さえましょう。

正解の理由

選択肢アは「ソースプログラムを解析してプログラム仕様書を作る」とあり、これはリバースエンジニアリングの本質を正確に表しています。リバースエンジニアリングは既存のソフトウェアから設計情報や仕様を抽出し、文書化することで、保守や再設計を容易にする技術です。単にコードを読むだけでなく、仕様書という形で理解を深めることが目的です。

よくある誤解

リバースエンジニアリングは単なるコードの修正や書き換えではありません。コードの解析を通じて仕様や設計を明らかにする作業である点を混同しやすいです。

解法ステップ

  1. 問題文の「リバースエンジニアリング」の定義を確認する。
  2. 各選択肢が「解析」「修正」「変換」「書き換え」のどの行為に該当するかを判断する。
  3. リバースエンジニアリングは「解析して仕様書を作る」ことと一致する選択肢を選ぶ。
  4. 他の選択肢は保守の一部作業やコード改善であり、リバースエンジニアリングの説明として不適切と判断する。

選択肢別の誤答解説

  • ア: ソースプログラムを解析してプログラム仕様書を作る。 → 正解。リバースエンジニアリングの定義に合致。
  • イ: ソースプログラムを探索して修正箇所や影響度を調べる。 → 修正作業の一部であり、解析して仕様書を作るとは異なる。
  • ウ: ソースプログラムを見直して構造化プログラムに変換する。 → コードのリファクタリングや構造化プログラミングの話で、リバースエンジニアリングではない。
  • エ: ソースプログラムを分かりやすい表現に書き換える。 → コードの可読性向上のための書き換えであり、仕様抽出とは異なる。

補足コラム

リバースエンジニアリングはソフトウェア保守だけでなく、セキュリティ解析や互換性確保のためにも利用されます。例えば、古いシステムの仕様が文書化されていない場合に、動作を解析して仕様書を作成し、後続の開発や移行を支援します。

FAQ

Q: リバースエンジニアリングとフォワードエンジニアリングの違いは?
A: フォワードエンジニアリングは仕様からプログラムを作成する工程で、リバースエンジニアリングは既存プログラムから仕様を抽出する工程です。
Q: リバースエンジニアリングは違法になることがありますか?
A: 著作権や契約により制限される場合があります。正当な目的と許可のもとで行うことが重要です。

関連キーワード: リバースエンジニアリング, ソフトウェア保守, プログラム解析, 仕様書作成, ソフトウェア保守技術
← 前の問題へ次の問題へ →

©︎2025 情報処理技術者試験対策アプリ