ITパスポート試験 / 平成30年度 秋期 ITパスポート試験 公開問題 / 問39
certification-simodake-work

平成30年度 秋期 ITパスポート試験 公開問題 問39 解説 リバースエンジニアリング

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

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

解説

この問題は「既存の完成品を分析して、その設計図や仕様を導き出す」というキーワードを見つけるのがポイントです。

選択肢にある用語はすべてソフトウェア開発の手法に関するものですが、リバースエンジニアリングのみが「完成した製品をバラして構造を調べる」という意味を持っています。プログラムから仕様書を逆算する作業は、まさにリバース(逆)のエンジニアリング(工学)そのものと覚えましょう。

リバースエンジニアリングの役割と意義

通常、ソフトウェア開発は「要件定義→設計→プログラミング→テスト」という流れで進みます。これをフォワードエンジニアリングと呼びます。しかし、今回のように「設計書が残っていない」システムを保守する場合、いきなり修正を加えるのはリスクが非常に高いです。

そこで、既存のソースコードを読み解き、どのような処理を行っているかを解析して、後からドキュメントを再構成します。これがリバースエンジニアリングです。この手法を用いることで、ブラックボックス化していたシステムの仕様を可視化し、安全な機能追加やバグ修正が可能になります。

ただし、注意が必要な点もあります。他社の製品に対してリバースエンジニアリングを行うと、著作権侵害や不正競争防止法違反などの法的リスクが生じることがあります。あくまで自社システムなど、正当な権利を持つ対象に対して、メンテナンス目的で行うのが基本です。

選択肢にある他の手法との違い

今回の問題に関連する他の用語も、ITパスポートでは頻出です。それぞれの立ち位置を整理しておきましょう。

ウォータフォールモデルは、工程を上流から下流へ順番に完了させていく、伝統的な開発モデルです。

スパイラルモデルは、システムをいくつかの機能に分け、設計・開発・テストのサイクルを繰り返しながら完成度を高めていくモデルです。

プロトタイピングは、開発の初期段階で試作品(プロトタイプ)を作成し、ユーザーからのフィードバックを得ながら本開発を進める手法です。

これら3つは「新しいシステムを作る際の手順」であるのに対し、リバースエンジニアリングは「すでにあるものを理解するための解析手法」である点が決定的に異なります。

  • ソフトウェア工学におけるリバースエンジニアリングとは(Qiita)

学習の記録にははてなブックマーク!

気づいたこと・覚えたことをコメントにメモしよう