戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

ITパスポート 2023年 39


問題文

運用中のソフトウェアの仕様書がないので、ソースコードを解析してプログラムの仕様書を作成した。この手法を何というか。

選択肢

コードレビュー
デザインレビュー
リバースエンジニアリング(正解)
リファクタリング

🔒 解説は解答すると表示されます

運用中のソフトウェアの仕様書がないので、ソースコードを解析してプログラムの仕様書を作成した。この手法を何というか。【ITパスポート 解説】

正解の理由

選んだべき答えは のリバースエンジニアリングです。
リバースエンジニアリング(reverse engineering:逆向きに設計をたどること)は、既にあるソフトウェアや製品から、その設計や仕様を解き明かす手法です。問題文では「仕様書がない」「ソースコード(プログラムを人が読める形で書いたファイル)を解析して仕様書を作成した」とあります。これはまさに既存の成果物(ソースコード)から仕様を導き出す行為なので、定義と一致します。
対して他の選択肢は目的が異なります。コードレビューやデザインレビューは品質確認のための手続きですし、リファクタリングは「振る舞いを変えずに内部を整理する行為」です。したがって、仕様を「作る(復元する)」という点で最も合うのは です。

解法ステップ

  1. 問題文のキーワードを見つける
    • 「仕様書がない」→既存の仕様が欠けている状況
    • 「ソースコードを解析して仕様書を作成」→ソースコードから仕様を取り出す行為
  2. 各選択肢の意味を短く確認する
    • コードレビュー:コードの品質や不具合をチェックする作業
    • デザインレビュー:設計段階の設計書を評価する会議
    • リバースエンジニアリング:既存物から設計や仕様を逆にたどる行為
    • リファクタリング:動作を変えずに内部構造を改善する作業
  3. 意味が最も合致する選択肢を選ぶ
    • 「既存のコードから仕様を書く」=リバースエンジニアリング →

選択肢別の誤答解説

  • ア: コードレビュー
    • 意味:複数人でソースコードを読み、不具合や読みやすさを指摘する作業。品質改善が目的です。
    • なぜ不正解か:仕様を「復元して作成する」ことが主目的ではありません。
  • イ: デザインレビュー
    • 意味:設計(デザイン)の段階で設計書をチェックする会議。事前評価が目的です。
    • なぜ不正解か:設計書がある前提で評価する行為であり、既存のコードから仕様を取り出す行為ではありません。
  • : リバースエンジニアリング
    • 意味:既存のソフトウェアや製品を解析して、設計や仕様、構造を明らかにすること。ソースコードを読み解いて仕様書を作る行為そのものです。
  • エ: リファクタリング
    • 意味:外から見た動作(振る舞い)を変えずに、コードの内部構造を改善すること。読みやすさや保守性を高める目的です。
    • なぜ不正解か:仕様を抽出して文書化することが目的ではなく、あくまで内部の改善作業です。

よくある誤解

  1. 「ソースコードを読む=コードレビュー」と混同する
    • コードを読む行為自体は両方に含まれることがありますが、目的が違います。コードレビューは品質確認、リバースエンジニアリングは仕様や設計の復元が目的です。
  2. リバースエンジニアリングは必ずしも違法ではないが注意が必要
    • 解析自体は技術的手法ですが、著作権や契約(利用許諾)によって制限される場合があります。業務で行う際は権利関係を確認してください。
  3. 「リファクタリングで仕様が分かる」は誤り
    • リファクタリングは設計を改善しますが、仕様を新たに文書化する作業とは性質が違います。

補足コラム

  • よく使われる手法・ツール
    • 静的解析(実行せずにコードやバイナリを調べる)。例:ソースコードの構造を解析するツール。
    • 動的解析(プログラムを実行して挙動を観察する)。例:ログやトレースを取る。
    • 逆コンパイラ(デコンパイラ):バイナリ(コンピュータが実行する機械語)を高級言語に近い形に戻すツール。ただし完全な元のソースには戻らないことが多いです。
  • なぜリバースエンジニアリングが必要か
    • 仕様書や設計書が紛失したレガシーシステムの保守。
    • 他社製品の挙動を理解して相互運用を行う場合(ただし法的制約に注意)。
  • 試験対策のコツ
    • 「目的(何をするか)」で選ぶ練習をすること。問題文の目的語(仕様を作る、品質を確認する、構造を改善する)を見極めると選択肢が絞れます。

FAQ

Q1. リバースエンジニアリングはソースコードがない場合でもできる?
A1. はい。バイナリ(実行ファイル)を解析して挙動や構造を推定することも含まれますが、解析の難易度や結果の精度は下がります。
Q2. リバースエンジニアリングとデバッグは違う?
A2. 違います。デバッグはプログラムの不具合を見つけて修正する行為。リバースエンジニアリングは設計や仕様を明らかにする行為です。目的が異なります。
Q3. 業務でリバースエンジニアリングを行うときに気をつけることは?
A3. 著作権やライセンス、契約で制限されていないかを必ず確認してください。場合によっては許可が必要です。

関連キーワード: リバースエンジニアリング、逆解析、逆コンパイル、デコンパイラ、静的解析、動的解析、ソフトウェア保守、レガシーシステム、仕様書作成、コードレビュー、リファクタリング
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

ITパスポート
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について