リバースエンジニアリングとは何か、簡単に言うと「プログラムを解析」する事

システム開発を行う、またはシステムを運用するのにはさまざまな手法があります。今回はシステム運用の一つである「リバースエンジニアリング」について簡単に解説していきます。

リバースエンジニアリングの基本とメリット

商品開発、分析、保守などを行う上で重要な事は沢山あります。中でも、「自社製品を開発した人がいなくなり、製品の事がよくわからない」、「他社の商品がどうなっているのか知りたい」という場合に「リバースエンジニアリング」が役に立ちます。

リバースエンジニアリングとは

リバースエンジニアリングとは、すでにあるソフトウェアの動作を解析し構造を分析することです。分析することで、動作原理、設計図、ソースコードなどの仕様を導きだします。

通常の開発(エンジニアリング)は仕様書からソフトウェアを製作します。その逆という意味で「リバースエンジニアリング」となります。

リバースエンジニアリングのメリットは今ではなく将来

リバースエンジニアリングのメリットは「自社製品の保守やセキュリティ強化ができる」、「他社製品の技術仕様を明らかにできる」ことです。

特に昔の製品の中には詳細な設計書や動作確認書などのドキュメントが不足しているものも多く、開発者がいない場合もあります。トラブルがあった際に原因を突き止めるのに時間がかかるケースや新しく製品を作り直す時に時間がかかるケースがあります。そんな将来のために事前に解析しておくことでいざ問題に直面した時に慌てなくて済みます。

リバースエンジニアリングはITパスポート試験でも出題

この「リバースエンジニアリング」という用語はITパスポート試験でも出題される一般的な用語です。

ITパスポート試験での過去の出題例

H30.秋の問39では下記のような形で出題されています。

出題

自社開発して長年使用しているソフトウェアがあるが,ドキュメントが不十分で保守性が良くない。保守のためのドキュメントを作成するために,既存のソフトウェアのプログラムを解析した。この手法を何というか。

回答選択肢

  1. ウォータフォールモデル
  2. スパイラルモデル
  3. プロトタイピング
  4. リバースエンジニアリング

簡単な解説

ウォータフォールモデルとは「ウォータ(水)がフォール(落ちる)」、つまり滝のように上から順番にプロジェクトを進めていく手法の事です。「要件定義」、「設計」、「プログラミング」、「テスト」などそれぞれの作業工程をしっかり決めて進めていくもので柔軟性がないですが、大規模なプロジェクト(参加人数が多いプロジェクト)に向いているとされています。

スパイラルとは日本語にすると「らせん」という意味になります。スパイラルモデルは独立したパーツを作り、最後に組み上げることです。システムをあらかじめパーツごとに分け、パーツごとに、設計・プログラミング・テストを行い、最終的にパーツを組み上げるものです。

プロトタイプを日本語にすると「試作品」という意味になります。開発の早い段階で試作品を作り、利用者に動作を確認を取りながら開発を進めていく手法がプロトタイピングです。試作品を作るという手間は増えますが、作り手と利用者の認識の違いを早い段階で見つけることができズレを生じさせないという利点があります。

「リバースエンジニアリング」以外の選択肢は全てシステム開発(ソフトウェア開発)に関する手法のことですね。

タイトルとURLをコピーしました