最終更新日:2026年7月25日
fe fe-technology database
まず結論
リバースエンジニアリング(Reverse Engineering)とは、既存のシステムや完成済みのソフトウェアから、内部構造や設計情報を読み取る手法です。
英語の reverse は「逆向き」という意味です。
そのため、Reverse Engineering は 完成したものから、設計へ逆向きにたどること と考えると分かりやすいです。
基本情報技術者試験では、次のように切り分けます。
Reverse Engineering :既存システム → 設計情報
Forward Engineering :設計情報 → システム
Concurrent Engineering:工程を同時並行で進める
Social Engineering :人の心理を突いて情報を得る
「本稼働中のデータベースの定義情報から、E-R図などの設計書を生成する」と出たら、リバースエンジニアリング(Reverse Engineering) と判断します。
直感的な説明
通常の開発では、先に設計書を作り、その設計に基づいてシステムを作ります。
設計書
→ システム
これは前向きの流れです。
一方、リバースエンジニアリング(Reverse Engineering)では、すでに動いているシステムやデータベースから、設計情報を読み取ります。
既存システム
→ 定義情報を読み取る
→ E-R図や設計書を作る
つまり、流れが逆向きです。
たとえば、古いシステムに設計書が残っていない場合でも、データベースのテーブル定義や関連を調べれば、E-R図を作れることがあります。
このように、作られたものから設計を復元する のがリバースエンジニアリングです。
定義・仕組み
リバースエンジニアリング(Reverse Engineering)は、既存の成果物を解析して、仕様・設計・構造などを明らかにする手法です。
データベース分野では、例えば次のような情報を読み取ります。
| 読み取る情報 | 設計書で表せる内容 |
|---|---|
| テーブル定義 | エンティティ |
| カラム定義 | 属性 |
| 主キー | 一意に識別する項目 |
| 外部キー | テーブル間の関連 |
| 制約 | データのルール |
これらをもとに、E-R図などの設計情報を生成します。
本稼働中のデータベース
→ テーブル定義・キー・関連を読む
→ E-R図を生成する
E-R図は、データベース内のデータ同士の関係を表す図です。
そのため、データベースの定義情報からE-R図を作る、という説明はリバースエンジニアリングの典型です。
公式の出題範囲やシラバスは、IPA:基本情報技術者試験 から確認できます。リバースエンジニアリングは、データベース設計やソフトウェア保守の考え方と関係します。
科目Aでどう出る?
科目Aでは、説明文から該当する「〜エンジニアリング」を選ぶ形で出題されやすいです。
選択肢を切るときは、英語の意味を見ると判断しやすくなります。
| 用語 | 英語の直感 | 判断ポイント |
|---|---|---|
| リバースエンジニアリング(Reverse Engineering) | reverse = 逆向き | 既存システムから設計情報を取り出す |
| フォワードエンジニアリング(Forward Engineering) | forward = 前向き | 設計情報から新しいシステムを作る |
| コンカレントエンジニアリング(Concurrent Engineering) | concurrent = 同時並行 | 設計・製造・テストなどを並行して進める |
| ソーシャルエンジニアリング(Social Engineering) | social = 人・社会 | 人の心理や不注意を突いて情報を得る |
例えば、次のように、
本稼働中のデータベースシステムの定義情報から、
E-R図などで表現した設計書を生成する
という説明なら、すでにあるデータベースから設計書へ戻っています。
既存DB → 設計書
なので、Reverse Engineering です。
どんな場面で使う?
データベースやシステム保守の文脈で、次のような状況を読むときに役立ちます。
- 古いシステムの設計書が不足している
- 本稼働中のデータベースからテーブル関係を整理する
- 既存システムを調査して、改修や移行に備える
- E-R図を作り直して、データ構造を把握する
このときは、作業の向きを確認します。
設計書からシステムを作る → Forward Engineering
既存システムから設計を読み取る → Reverse Engineering
作業の向きが分かれば、選択肢をかなり切りやすくなります。
よくある誤解・混同
一番混同しやすいのは、リバースエンジニアリング(Reverse Engineering)とフォワードエンジニアリング(Forward Engineering)です。
| 混同しやすい組み合わせ | 違い |
|---|---|
| Reverse Engineering と Forward Engineering | Reverseは既存システムから設計へ、Forwardは設計からシステムへ |
| Reverse Engineering と Concurrent Engineering | Reverseは解析、Concurrentは同時並行開発 |
| Reverse Engineering と Social Engineering | Reverseは技術的な解析、Socialは人をだまして情報を得る |
特に、ソーシャルエンジニアリング(Social Engineering)はセキュリティ分野の用語です。
人の心理や不注意を利用して、パスワードなどを不正に得る
という説明なら、Social Engineering です。
一方、データベースの定義情報やE-R図が出る場合は、技術的に設計情報を読み取る話です。
既存DB → E-R図
なので、Reverse Engineering と判断します。
まとめ(試験直前用)
- リバースエンジニアリング(Reverse Engineering)は、既存システムから 設計情報を読み取る 手法
reverseは「逆向き」なので、完成品から設計へ戻るイメージ- フォワードエンジニアリング(Forward Engineering)は、設計情報からシステムを作る
- コンカレントエンジニアリング(Concurrent Engineering)は、工程を同時並行で進める
- ソーシャルエンジニアリング(Social Engineering)は、人の心理や不注意を突いて情報を得る