開発技術

基本情報技術者試験リエンジニアリング」の問題

マネジメント系開発技術難易度:normal
設計書が失われた既存プログラムから、ソースコードを解析して仕様や設計情報(処理構造やデータ構造)を抽出し、上位の設計文書を復元する技術はどれか。
要件や設計から実装へと上流から下流へ成果物を生成するフォワードエンジニアリング
プログラムを実行して挙動を観察する動的テスト
既存資産を作り直して品質を高めるリファクタリング
完成した実装物から逆向きに上位の設計図を起こすリバースエンジニアリング
正解
完成した実装物から逆向きに上位の設計図を起こすリバースエンジニアリング

リバースエンジニアリングは、既存のプログラムやソースコードを解析して、その処理構造やデータ構造といった設計・仕様情報を抽出し、失われた上位の設計文書を復元する技術である。設問の記述に合致する。

?選択肢ごとの解説

ア ×フォワードエンジニアリングは要件・設計から実装へと上流から下流に成果物を生成する通常の開発方向であり、コードから設計を抽出する逆方向の技術ではない。
イ ×動的テストはプログラムを実行して挙動を確認するテスト技法であり、設計情報を抽出して文書化する技術ではない。
ウ ×リファクタリングは外部の振る舞いを変えずに内部構造を改善する技術であり、設計情報の抽出・復元そのものを目的とはしない。
エ ○リバースエンジニアリングは、既存のプログラムやソースコードを解析して、その処理構造やデータ構造といった設計・仕様情報を抽出し、失われた上位の設計文書を復元する技術である。設問の記述に合致する。

くわしく

既存システムの再生に関わる概念群は方向で整理できる。フォワードエンジニアリングは設計→実装の順方向、リバースエンジニアリングは実装→設計の逆方向、そして両者を組み合わせて既存システムを解析・再構築する取り組みがリエンジニアリングである。リバースは『情報を取り出す』段階、リエンジニアリングは『取り出した上で作り直す』全体活動という包含関係を押さえるとよい。

本番での押さえどころ

試験のコツ

『コードから設計・仕様を抽出』『逆方向』とあればリバースエンジニアリング、『解析した上で作り直す』ならリエンジニアリングと判断する。

覚え方

リバース=逆走。完成品(コード)から設計図へ逆向きにたどる、と方向で覚える。

よくある誤り

リバースエンジニアリングとリエンジニアリングを同一視しがちだが、前者は設計情報の抽出、後者は抽出を含めた再構築全体を指す点を区別する。

開発技術の他の問題

この問題を、AIの8-ways解説つきで。

基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。

無料ではじめる →

ukamiru 過去問 · 基本情報技術者試験 · fe-a2-0096

【基本情報技術者試験】リエンジニアリングの問題 — 解答・解説|ukamiru 過去問