リバースエンジニアリング
更新日:
用語解説
リバースエンジニアリングは、既存のソフトウェアや製品を分析し、その構成要素、相互関係、設計又は仕様をより抽象度の高い表現として明らかにする作業です。
■ 試験で押さえるポイント
ソースコード、実行結果、データ形式、通信、機械部品等を観察・解析し、失われた設計書の復元、互換性確保、保守、脆弱性調査等に用います。
既存システムを分析して理解するのがリバースエンジニアリングで、その理解を基に再構成・改善して新しい形へ作り直すリエンジニアリングとは区別します。
ソフトウェアではコードからモジュール構造、データモデル、処理仕様等を抽出しますが、通常は対象の機能や外部的振る舞い自体を変更しません。
著作権、営業秘密、ライセンス、契約、アクセス制御等の制約を受けるため、技術的に可能でも目的・方法が常に許されるとは限りません。
■ 選択肢での判断ポイント
順方向開発が要求・設計からコードへ進むのに対し、逆向きに既存コード等から設計・仕様を抽出します。「解析」と「改変・再開発」を混同しないことが要点です。
例: 設計書のない旧システムのソースを静的解析し、呼出し関係図とデータベースER図を復元して移行計画の入力にします。