エンベデッドシステムスペシャリスト 2009年 午前2 問25
問題文
ソフトウェアを保守するときなどに利用される技術であるリバースエンジニアリングの説明はどれか。
選択肢
ア:ソースプログラムを解析してプログラム仕様書を作る。(正解)
イ:ソースプログラムを探索して修正箇所や影響度を調べる。
ウ:ソースプログラムを見直して構造化プログラムに変換する。
エ:ソースプログラムを分かりやすい表現に書き換える。
🔒 解説は解答すると表示されます
リバースエンジニアリング【午前2解説】
正解の理由
リバースエンジニアリングとは、既存のソフトウェアやプログラムを解析し、その構造や仕様を明らかにする技術です。ソースプログラムからプログラム仕様書を作成するアが該当します。
保守の際、仕様書が不足していたり、実際のプログラムと仕様書に食い違いがあったりする場合に、プログラムを解析して仕様を把握するために利用されます。
解法ステップ
- 「リバース(逆方向)」という言葉に注目します。
- プログラムを作るのとは逆に、できあがったプログラムから仕様や設計を明らかにすることだと考えます。
- ソースプログラムを解析し、プログラム仕様書を作成するアを選びます。
選択肢別の誤答解説
- ア:ソースプログラムから仕様を読み取り、仕様書を作成する説明です。リバースエンジニアリングに該当します。
- イ:修正箇所や変更による影響を調べる作業です。保守で重要な影響分析ですが、仕様を逆に導き出すリバースエンジニアリングそのものではありません。
- ウ:プログラムの構造を整理し、構造化された形に変換する作業です。既存プログラムを解析して仕様を明らかにする説明とは異なります。
- エ:プログラムを読みやすい表現に書き換える作業です。可読性を高めることが目的であり、仕様を導き出す作業ではありません。
よくある誤解
- ソースコードを調べる作業はすべてリバースエンジニアリングだと思う
ソースコードを調べても、目的が修正箇所や影響範囲の特定であれば、影響分析など別の作業です。 - プログラムを改善・書き換えることだと思う
リバースエンジニアリングの中心は、既存の成果物を解析して仕様や構造を明らかにすることです。必ずしもプログラム自体を変更するわけではありません。 - プログラム仕様書からソースプログラムを作ることだと思う
それは設計・仕様からプログラムを作成する通常の開発方向です。リバースエンジニアリングはその逆方向です。
補足コラム
リバースエンジニアリングは、既存のプログラムから仕様や設計情報を導き出す手法です。一方、仕様や設計からプログラムを作る通常の開発は、フォワードエンジニアリングと呼ばれます。
FAQ
Q. リバースエンジニアリングでは、必ずソースプログラムを使いますか?
A. ソースプログラムが利用できる場合は、それを解析して仕様を把握します。状況によっては、実行可能なプログラムの動作などを手掛かりに解析することもあります。
A. ソースプログラムが利用できる場合は、それを解析して仕様を把握します。状況によっては、実行可能なプログラムの動作などを手掛かりに解析することもあります。
Q. リバースエンジニアリングを行うと、プログラムも自動で改善されますか?
A. いいえ。主な目的は仕様や構造の把握です。改善や修正は、解析結果を基に別途行います。
A. いいえ。主な目的は仕様や構造の把握です。改善や修正は、解析結果を基に別途行います。
関連キーワード: リバースエンジニアリング、フォワードエンジニアリング、プログラム仕様書、影響分析、ソフトウェア保守

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

