平成28年度秋期 応用情報技術者試験 午前 問49
ソフトウェアを保守するときなどに利用される技術であるリバースエンジニアリングに該当するものはどれか。
- ア ソースプログラムを解析してプログラム仕様書を作る。
- イ ソースプログラムを探索して修正箇所や影響度を調べる。
- ウ ソースプログラムを見直して構造化されたプログラムに変換する。
- エ ソースプログラムを分かりやすい表現に書き換える。
解答・解説を見る
正解:ア
AI解説
正解はア。リバースエンジニアリングは、既存のソフトウェアを解析して、その仕様や設計情報など、より上流の成果物を導き出す技術である。設計書が失われた古いシステムの保守などで、ソースプログラムを解析してプログラム仕様書や設計書を作成する作業がこれに該当する。開発の通常の流れ(仕様→コード)と逆方向(コード→仕様)であることが名称の由来である。 ア: 正解。ソースプログラムという下流の成果物から、プログラム仕様書という上流の成果物を導き出す作業はリバースエンジニアリングそのものである。 イ: 誤り。修正箇所や影響範囲を調べる作業は、保守における影響分析(影響調査)であり、仕様を導出するリバースエンジニアリングではない。 ウ: 誤り。既存プログラムを構造化されたプログラムに変換するのはリストラクチャリングの説明である。外部仕様を変えずに内部構造を改善する作業である。 エ: 誤り。ソースプログラムを分かりやすい表現に書き換えるのは、外部から見た振る舞いを変えずに内部を改善するリファクタリングに近い説明である。 💡 「コードから仕様書へ=リバース」「構造の作り直し=リストラクチャリング」「動作を変えずに書き直し=リファクタリング」の3用語をセットで区別する。リバースで得た仕様から再構築するのはリエンジニアリング(フォワードエンジニアリングとの組合せ)である。
※Web掲載用に表記を一部変更しています。著作権はIPAに帰属します。