問題
問39
自社開発して長年使用しているソフトウェアがあるが、ドキュメントが不十分で保守性が良くない。保守のためのドキュメントを作成するために、既存のソフトウェアのプログラムを解析した。この手法を何というか。
- ウォータフォールモデル
- スパイラルモデル
- プロトタイピング
- リバースエンジニアリング
[出典:ITパスポート試験 平成30年度秋期 問39]
正解
正解は「エ」です。
解説
リバースエンジニアリングとは、完成した製品やプログラムを分析して、その構造や動作原理、設計情報などを解明する手法のことです。この問題では、ドキュメントが不十分で保守が困難になった古いソフトウェアのプログラムを解析し、その仕組みを理解して保守のための新しいドキュメントを作成しようとしています。これはまさにリバースエンジニアリングの典型的な適用例です。
例えば、おもちゃを分解して、どの部品がどのように組み合わさって動いているのかを調べ、組み立て方を記録するようなイメージです。これにより、元の設計情報がなくても、後から保守や改善を行うための手がかりを得ることができます。
ア(ウォータフォールモデル):
ウォータフォールモデルは、ソフトウェア開発の工程を「企画→要件定義→設計→開発→テスト→運用」のように、滝のように上流から下流へ順に進める開発手法です。プログラムの解析とは異なります。
イ(スパイラルモデル):
スパイラルモデルは、ソフトウェア開発をいくつかの工程に分割し、それぞれの工程で「設計→開発→テスト」を繰り返しながら、段階的にソフトウェアを完成させていく開発手法です。既存プログラムの解析ではありません。
ウ(プロトタイピング):
プロトタイピングは、開発の初期段階で簡易的な試作モデルを作成し、利用者からのフィードバックを得ながら開発を進める手法です。既存プログラムを解析する目的とは異なります。
難易度
この問題の難易度は中程度です。ソフトウェア開発の手法に関する知識が問われますが、特に「リバースエンジニアリング」はITパスポート試験で頻出する用語の一つです。他の選択肢も基本的な開発モデルであるため、それぞれの概念をしっかり理解していれば正解を導き出すことができます。各開発モデルの目的や特徴を把握しているかがポイントとなります。
用語補足
ウォータフォールモデル:
ソフトウェア開発の伝統的な手法で、開発工程を「企画、要件定義、設計、開発、テスト、運用」のように上流から下流へ順番に進めるものです。一度完了した工程には原則として戻りません。例えば、家を建てる際に、設計図を完成させてから資材を調達し、基礎工事から内装まで順に進めるようなイメージです。
スパイラルモデル:
ソフトウェア開発を小さなサイクルに分け、各サイクルで「計画→リスク分析→開発→評価」を繰り返しながら、段階的に機能を増やしていく開発手法です。大規模でリスクの高いプロジェクトに適しています。例えば、新しいゲームを作る際に、まず基本的な動きができるバージョンを作り、テストして改善点を洗い出し、次の機能を追加したバージョンを作る、ということを繰り返すようなイメージです。
プロトタイピング:
開発の早い段階で試作モデル(プロトタイプ)を作り、利用者に使ってもらって意見を聞き、それを基に改善を繰り返して最終製品に近づけていく開発手法です。顧客の要望をより正確に反映させることができます。例えば、新しいスマホアプリを開発する際に、まず基本的な画面構成だけを動くようにしてユーザーに触ってもらい、使いやすさの意見を聞いてから本格的な開発に入るようなイメージです。
リバースエンジニアリング:
既に完成している製品やソフトウェアの構造、設計、動作原理などを分析し、その情報を解明する手法です。元の設計図やドキュメントがない場合に、その仕組みを理解するために使われます。例えば、壊れた家電製品を分解して、なぜ動かなくなったのか、どの部品がどう繋がっているのかを調べる作業のようなものです。
対策
ソフトウェア開発モデルに関する問題はITパスポート試験で頻繁に出題されます。ウォータフォールモデル、スパイラルモデル、アジャイル開発、プロトタイピング、そしてリバースエンジニアリングといった主要な開発手法について、それぞれの特徴、目的、メリット・デメリットを正確に理解しておくことが重要です。特に、問題文で示される具体的な状況に対して、どの手法が最も適切であるかを判断できるように、各手法の適用例を合わせて学習すると効果的です。

