主なソフトウェア開発モデル
ソフトウェア開発モデルとは
Section titled “ソフトウェア開発モデルとは”ソフトウェアを開発するとき、いきなりプログラムを書き始めるのではなく、「どんな順序で」「どのように進めるか」を計画的に決める必要があります。この開発の進め方のパターンをソフトウェア開発モデルと呼びます。
ソフトウェア開発には、要件定義や設計といった上流工程と、プログラミングやテストといった下流工程があります。開発モデルの違いは、これらの工程をどのような順番・やり方で進めるかの違いだと考えるとわかりやすいでしょう。
ここでは、ITパスポート試験でよく問われる代表的な開発モデルを学んでいきます。
ウォーターフォールモデル
Section titled “ウォーターフォールモデル”ウォーターフォールモデルは、最も古典的で基本的な開発モデルです。「ウォーターフォール(waterfall)」は英語で「滝」を意味します。滝の水が上から下へ一方向に流れ落ちるように、上流工程から下流工程へ順番に進めていく手法です。
具体的には、次のような流れで進みます。
- 要件定義 ── 何を作るか決める
- 設計 ── どう作るか決める
- プログラミング ── 実際にコードを書く
- テスト ── 正しく動くか確認する
- 運用・保守 ── 完成したシステムを使い続ける
ウォーターフォールモデルの最大の特徴は、原則として前の工程には戻らないということです。各工程をしっかり完了させてから次に進むため、大規模なプロジェクトで計画的に進めやすいというメリットがあります。
一方で、開発の途中で「やっぱりこの機能を変えたい」といった変更が生じると、前の工程に戻る手戻りが発生し、大きなコストと時間のロスにつながるというデメリットがあります。とくに、完成間近になって要件の誤りが見つかると、最初からやり直しに近い作業が必要になることもあります。
試験で出るポイント
プロトタイピングモデル
Section titled “プロトタイピングモデル”ウォーターフォールモデルでは、完成品ができあがるまで利用者が実際の画面や動きを確認できません。そのため「思っていたものと違う」というミスマッチが起こりがちです。
この問題を解決するために考えられたのがプロトタイピングモデルです。開発の早い段階で試作品(プロトタイプ)を作成し、利用者に実際に触ってもらいながら要件を確認・修正していく手法です。
たとえば、業務システムを開発するとき、まず画面のデザインや基本的な操作だけを再現した簡易版を作ります。利用者がそれを操作して「ここはもう少し使いやすくしてほしい」「この機能も必要だ」といったフィードバックを返します。開発者はそのフィードバックをもとに改善を繰り返し、最終的な完成品を仕上げていきます。
プロトタイピングモデルのメリットは、利用者の要望を早い段階で反映できるため、完成後の「思っていたものと違う」という手戻りを大幅に減らせることです。ただし、試作品の作成に時間がかかるため、大規模なシステムには向かないこともあります。
試験で出るポイント
スパイラルモデル
Section titled “スパイラルモデル”スパイラルモデルは、システムをいくつかの部分に分け、それぞれについて設計・開発・テストの工程を反復(イテレーション)しながら進めていく手法です。「スパイラル(spiral)」は「らせん」を意味し、らせん状にぐるぐると繰り返しながら完成度を高めていくイメージです。
各反復のサイクルでは、まずリスク分析を行い、技術的な課題や問題点を洗い出してから開発を進めます。これにより、リスクの高い部分を早い段階で発見し、対処できるのが大きなメリットです。
スパイラルモデルは、ウォーターフォールモデルの「計画的に進められる」利点と、プロトタイピングモデルの「途中で確認・修正できる」利点を組み合わせた手法といえます。
RAD(Rapid Application Development)
Section titled “RAD(Rapid Application Development)”RAD(Rapid Application Development)は、その名の通り「高速にアプリケーションを開発する」ことを目指す手法です。
RADでは、開発を支援するツール(GUIビルダーやコード自動生成ツールなど)を積極的に活用し、少人数のチームで短期間に開発を完了させます。利用者も開発に参加してフィードバックを行いながら、素早く完成品を仕上げていくのが特徴です。
RADは小規模から中規模のシステム開発に適しており、短い納期で成果物を求められる場面で効果を発揮します。
開発モデルの比較
Section titled “開発モデルの比較”ここまで学んだ4つの開発モデルを、「進め方の特徴」「メリット」「デメリット」で整理してみましょう。
| モデル | 進め方 | メリット | デメリット |
|---|---|---|---|
| ウォーターフォール | 上流→下流へ一方向に進める | 計画的で管理しやすい | 手戻りが困難、変更に弱い |
| プロトタイピング | 早期に試作品を作り確認 | 利用者の要望を反映しやすい | 試作品作成に時間がかかる |
| スパイラル | 反復(イテレーション)で段階的に開発 | リスクを早期に発見できる | 管理が複雑になりやすい |
| RAD | ツール活用で短期間に開発 | 開発スピードが速い | 大規模システムには不向き |
これらのモデルは「一方向か反復か」「早期に利用者が確認できるか」という2つの軸で整理すると、違いが明確になります。ウォーターフォールは一方向で利用者確認が遅く、プロトタイピングは早期に確認でき、スパイラルは反復しながらリスクを管理し、RADはスピード重視で進めます。
試験で出るポイント
リバースエンジニアリング
Section titled “リバースエンジニアリング”リバースエンジニアリングは、既存のソフトウェアのソースコードや動作を解析して、設計情報や仕様を抽出する手法です。通常の開発が「設計→コード」という流れであるのに対し、リバースエンジニアリングは「コード→設計」と逆方向に進むため、「リバース(reverse=逆)」と名前がついています。
たとえば、古い業務システムの設計書が残っていないとき、稼働中のプログラムのソースコードを解析して仕様書を復元するような場面で使われます。既存システムの保守や、新システムへの移行の際に役立つ手法です。
なお、リバースエンジニアリングは「開発モデル」というよりも「既存ソフトウェアを分析する手法」ですが、ITパスポートのシラバスではこの項目に含まれています。
試験で出るポイント
ソフトウェア開発モデルは、プロジェクトの規模や要件の確定度合い、リスクの大きさなどに応じて使い分けます。一つの「正解」があるわけではなく、状況に合ったモデルを選ぶことが重要です。試験では、各モデルの名前・特徴・メリット・デメリットを正しく結びつけられるかが問われます。あわせて、リバースエンジニアリングの定義と、リファクタリングとの違いもしっかり押さえておきましょう。