プロジェクトマネージャ 2009年 午前2 問16
問題文
ソフトウェアを保守するときなどに利用される技術であるリバースエンジニアリングの説明はどれか。
選択肢
ア:ソースプログラムを解析してプログラム仕様書を作る。(正解)
イ:ソースプログラムを探索して修正箇所や影響度を調べる。
ウ:ソースプログラムを見直して構造化プログラムに変換する。
エ:ソースプログラムを分かりやすい表現に書き換える。
🔒 解説は解答すると表示されます
リバースエンジニアリング【午前2解説】
正解の理由
リバースエンジニアリングとは、既存のソフトウェアやプログラムを解析し、設計や仕様などの情報を取り出す技術です。ソースプログラムを調べてプログラム仕様書を作成するアが該当します。
保守では、仕様書が古かったり存在しなかったりする場合があります。そのようなとき、プログラムの内容から仕様を把握するために利用されます。
解法ステップ
- リバースエンジニアリングの「reverse」は、開発の流れを逆にたどることだと捉えます。
- 通常の開発では、仕様や設計を基にプログラムを作成します。
- その逆に、既存のプログラムを解析して仕様や設計を明らかにする選択肢を選びます。
選択肢別の誤答解説
- ア:ソースプログラムから仕様を読み取り、プログラム仕様書を作成します。リバースエンジニアリングの説明です。
- イ:修正箇所や変更による影響範囲を調べる作業です。保守に役立ちますが、仕様を取り出すリバースエンジニアリングとは異なります。
- ウ:プログラムの構造を見直し、構造化された形に変換する作業です。既存プログラムの解析結果を仕様書にする説明ではありません。
- エ:プログラムを読みやすい表現に整える作業です。表記や構造を改善することと、仕様を解析して明らかにすることは別です。
よくある誤解
- 「保守に使う技術」ならすべてリバースエンジニアリングだと思う
保守で行われる作業は幅広く、影響範囲の調査やプログラムの整形なども含まれます。リバースエンジニアリングの要点は、既存の成果物から仕様や設計を導き出すことです。 - プログラムを修正・改善する技術だと思う
リバースエンジニアリングは、主に解析して情報を得る技術です。修正や再構成そのものを指すわけではありません。
補足コラム
通常の開発では、仕様からプログラムを作成します。この流れは「順方向」です。一方、リバースエンジニアリングでは、プログラムを起点に仕様や設計を調べます。
また、既存のソフトウェアを解析したうえで、機能を追加・変更しながら新しいシステムへ移行することを、リエンジニアリングと呼ぶ場合があります。用語の細かな定義は文脈によって異なりますが、試験では「プログラムから仕様を明らかにする」がリバースエンジニアリングの基本です。
FAQ
Q. リバースエンジニアリングでは、必ずプログラム仕様書を作成しますか?
A. 必ずしも仕様書の作成に限りません。プログラムを解析して、設計や構造などの情報を明らかにすることが基本です。
A. 必ずしも仕様書の作成に限りません。プログラムを解析して、設計や構造などの情報を明らかにすることが基本です。
Q. プログラムの修正箇所や影響範囲を調べるのも、リバースエンジニアリングですか?
A. それは主に保守のための影響分析です。既存プログラムから仕様や設計を導き出すこととは区別して考えましょう。
A. それは主に保守のための影響分析です。既存プログラムから仕様や設計を導き出すこととは区別して考えましょう。
関連キーワード: リバースエンジニアリング、プログラム仕様書、ソフトウェア保守、影響分析、リエンジニアリング

\ せっかくなら /
プロジェクトマネージャを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

