コンテンツにスキップ

主なソフトウェア開発モデル

ソフトウェアを開発するとき、いきなりプログラムを書き始めるのではなく、「どんな順序で」「どのように進めるか」を計画的に決める必要があります。この開発の進め方のパターンをソフトウェア開発モデルと呼びます。

ソフトウェア開発には、要件定義や設計といった上流工程と、プログラミングやテストといった下流工程があります。開発モデルの違いは、これらの工程をどのような順番・やり方で進めるかの違いだと考えるとわかりやすいでしょう。

ここでは、ITパスポート試験でよく問われる代表的な開発モデルを学んでいきます。

ウォーターフォールモデルは、最も古典的で基本的な開発モデルです。「ウォーターフォール(waterfall)」は英語で「滝」を意味します。滝の水が上から下へ一方向に流れ落ちるように、上流工程から下流工程へ順番に進めていく手法です。

具体的には、次のような流れで進みます。

  1. 要件定義 ── 何を作るか決める
  2. 設計 ── どう作るか決める
  3. プログラミング ── 実際にコードを書く
  4. テスト ── 正しく動くか確認する
  5. 運用・保守 ── 完成したシステムを使い続ける

ウォーターフォールモデルの最大の特徴は、原則として前の工程には戻らないということです。各工程をしっかり完了させてから次に進むため、大規模なプロジェクトで計画的に進めやすいというメリットがあります。

一方で、開発の途中で「やっぱりこの機能を変えたい」といった変更が生じると、前の工程に戻る手戻りが発生し、大きなコストと時間のロスにつながるというデメリットがあります。とくに、完成間近になって要件の誤りが見つかると、最初からやり直しに近い作業が必要になることもあります。

試験で出るポイント

ウォーターフォールモデルは「上流工程から下流工程へ一方向に進む」「手戻りが困難」という特徴がキーワードです。アジャイル開発との対比で出題されることもあります。

ウォーターフォールモデルでは、完成品ができあがるまで利用者が実際の画面や動きを確認できません。そのため「思っていたものと違う」というミスマッチが起こりがちです。

この問題を解決するために考えられたのがプロトタイピングモデルです。開発の早い段階で試作品(プロトタイプ)を作成し、利用者に実際に触ってもらいながら要件を確認・修正していく手法です。

たとえば、業務システムを開発するとき、まず画面のデザインや基本的な操作だけを再現した簡易版を作ります。利用者がそれを操作して「ここはもう少し使いやすくしてほしい」「この機能も必要だ」といったフィードバックを返します。開発者はそのフィードバックをもとに改善を繰り返し、最終的な完成品を仕上げていきます。

プロトタイピングモデルのメリットは、利用者の要望を早い段階で反映できるため、完成後の「思っていたものと違う」という手戻りを大幅に減らせることです。ただし、試作品の作成に時間がかかるため、大規模なシステムには向かないこともあります。

試験で出るポイント

プロトタイピングの定義は「開発の早期に確認用のソフトウェア(プロトタイプ)を作成し、利用者に確認してもらう」です。2025年の試験でも出題されています。

スパイラルモデルは、システムをいくつかの部分に分け、それぞれについて設計・開発・テストの工程を反復(イテレーション)しながら進めていく手法です。「スパイラル(spiral)」は「らせん」を意味し、らせん状にぐるぐると繰り返しながら完成度を高めていくイメージです。

各反復のサイクルでは、まずリスク分析を行い、技術的な課題や問題点を洗い出してから開発を進めます。これにより、リスクの高い部分を早い段階で発見し、対処できるのが大きなメリットです。

スパイラルモデルは、ウォーターフォールモデルの「計画的に進められる」利点と、プロトタイピングモデルの「途中で確認・修正できる」利点を組み合わせた手法といえます。

RAD(Rapid Application Development)は、その名の通り「高速にアプリケーションを開発する」ことを目指す手法です。

RADでは、開発を支援するツール(GUIビルダーやコード自動生成ツールなど)を積極的に活用し、少人数のチームで短期間に開発を完了させます。利用者も開発に参加してフィードバックを行いながら、素早く完成品を仕上げていくのが特徴です。

RADは小規模から中規模のシステム開発に適しており、短い納期で成果物を求められる場面で効果を発揮します。

ここまで学んだ4つの開発モデルを、「進め方の特徴」「メリット」「デメリット」で整理してみましょう。

モデル進め方メリットデメリット
ウォーターフォール上流→下流へ一方向に進める計画的で管理しやすい手戻りが困難、変更に弱い
プロトタイピング早期に試作品を作り確認利用者の要望を反映しやすい試作品作成に時間がかかる
スパイラル反復(イテレーション)で段階的に開発リスクを早期に発見できる管理が複雑になりやすい
RADツール活用で短期間に開発開発スピードが速い大規模システムには不向き

これらのモデルは「一方向か反復か」「早期に利用者が確認できるか」という2つの軸で整理すると、違いが明確になります。ウォーターフォールは一方向で利用者確認が遅く、プロトタイピングは早期に確認でき、スパイラルは反復しながらリスクを管理し、RADはスピード重視で進めます。

試験で出るポイント

各モデルの名前と特徴を結びつける問題がよく出ます。とくに「ウォーターフォール=一方向・手戻り困難」「プロトタイピング=試作品で早期確認」「スパイラル=反復+リスク分析」の組み合わせを正確に覚えましょう。

リバースエンジニアリングは、既存のソフトウェアのソースコードや動作を解析して、設計情報や仕様を抽出する手法です。通常の開発が「設計→コード」という流れであるのに対し、リバースエンジニアリングは「コード→設計」と逆方向に進むため、「リバース(reverse=逆)」と名前がついています。

たとえば、古い業務システムの設計書が残っていないとき、稼働中のプログラムのソースコードを解析して仕様書を復元するような場面で使われます。既存システムの保守や、新システムへの移行の際に役立つ手法です。

なお、リバースエンジニアリングは「開発モデル」というよりも「既存ソフトウェアを分析する手法」ですが、ITパスポートのシラバスではこの項目に含まれています。

試験で出るポイント

リバースエンジニアリングは「ソースコードを解析して仕様書・設計情報を抽出する」手法です。「リファクタリング」と混同しないよう注意しましょう。リファクタリングは「外部から見た機能を変えずに内部構造を改善する」手法であり、目的がまったく異なります。この違いは過去に繰り返し出題されています。

ソフトウェア開発モデルは、プロジェクトの規模や要件の確定度合い、リスクの大きさなどに応じて使い分けます。一つの「正解」があるわけではなく、状況に合ったモデルを選ぶことが重要です。試験では、各モデルの名前・特徴・メリット・デメリットを正しく結びつけられるかが問われます。あわせて、リバースエンジニアリングの定義と、リファクタリングとの違いもしっかり押さえておきましょう。

アプリで問題を解こう!