システム開発にはいくつかの手法があります。中でもウォーターフォールモデルは要件定義からリリースまでを順序立てて進めていくスタンダードな開発手法です。本コラムでは、開発手法の中でも認知度の高いウォーターフォールモデルについて、その概要やメリット・デメリットを交えながら、ウォーターフォールモデルで開発する分野の向き不向きについても解説します。
ウォーターフォールモデルとは
ウォーターフォールモデルとは、システム開発手法の一つです。
数ある開発手法の中でももっとも認知度の高い手法で、最初にシステム全体と細かな機能までを設計して開発を始めます。開発が終わったらテストを繰り返し、バグをなくして成果物であるシステムを完成させるため、成果物の品質を高めることもできます。
基本的な流れとしては、上流工程から下流工程へ順番に進めていきます。開発プロジェクトの企画から完了までを、上から下に流れるウォーターフォール、つまり「滝」の流れのように進めていく開発手法の用語です。
ちなみに、ウォーターフォールモデルとしばしば比較されるのがアジャイル開発です。
ウォーターフォールとアジャイルの違い
開発手法であるウォーターフォールは、アジャイル開発と比較されることがあります。ウォーターフォールとアジャイルの違いは、開発工程と開発期間です。開発するシステムの性質などによって、適した手法を選択するのが一般的で、近年のWeb開発などではアジャイルを用いることが多いといえます。
ウォーターフォールでの開発工程
ウォーターフォールの開発工程を大まかに示すと以下のような流れになります。
- 要求定義
- 要件定義
- 機能設計
- 詳細設計
- コーディング
- 機能テスト
- 結合テスト
- システムテスト
ひとつのシステムを開発するのに、上記8工程を長期間かけて完成させるのが一般的です。この工程を念頭に、次のアジャイルでの開発工程をみてみましょう。
アジャイルでの開発工程
アジャイルでの開発工程を大まかに示すと以下のような流れになります。
機能の開発
- 要件定義
- 設計
- コーディング
- 機能テスト
機能の開発
- 要件定義
- 設計
- コーディング
- 機能テスト
機能の開発
- 要件定義
- 設計
- コーディング
- 機能テスト
・・・
このように、機能ごとに①から④を繰り返して開発を進めていくため、一つの機能が完成するまでの期間が短くなります。また、機能ごとに要件定義や設計を行うため、途中の仕様変更にも対応しやすいことが特徴です。
アジャイルについては、「アジャイル開発とは?メリット・デメリットからアジャイル開発の3つの手法までを解説」でも詳しく解説していますので、合わせて参考にしてください。
ウォーターフォールモデルのメリット
それでは、ウォーターフォールモデルのメリットをみていきましょう。
プロジェクト全体のスケジューリングがしやすい
上述の工程をみてもわかるように、要求定義からテストまでを段階的に進めていくため、全体をスケジューリングしやすいのがメリットのひとつです。
アジャイル開発の場合は、後の工程やスケジュールや仕様が変更されます。そのため、最初からプロジェクト全体を見渡すことが難しいのです。これに比べると、ウォーターフォールモデルはプロジェクト全体を見渡しやすい開発手法だといえます。
スケジューリングについては、「スケジューリングはプロジェクト全体を左右する?意識すべきポイントやスケジューリングの手順を紹介」で詳しく解説していますので、合わせて参考にしてください。
機能や工程を分業化しやすい
上流工程から下流工程までの全体を把握できるので、プロジェクトに必要な機能や開発・テスト工程をあらかじめ分業化しやすいというメリットもあります。
これも、アジャイル開発に比べてウォーターフォールモデルがプロジェクト全体を見渡しやすいことに起因します。
進捗管理がしやすい
プロジェクトのスタートからスケジューリングが行いやすいため、アジャイル開発に比べて進捗管理がしやすいこともメリットとして挙げられます。プロジェクト全体が見通せるため、マイルストーンを設定しやすいことも進捗管理に大きく影響するのです。
マイルストーンについては「WBSツールとは?スケジュール管理を効率化するためのツール選定ポイントと5つのおすすめツールを紹介!」で詳しく解説していますので、合わせて参考にしてください。
品質を担保しやすい
ウォーターフォールの開発工程では、機能テストや結合テストを繰り返す下流工程がありますので、品質の担保がしやすいこともメリットの一つです。
短期間で納品して、あとから修正や品質を整えていくアジャイル開発と比べると、ウォーターフォールで開発されたものは高品質で納品できます。
ウォーターフォールモデルのデメリット
次に、ウォーターフォールモデルのデメリットをみていきましょう。
仕様変更に対処しにくい
上流工程から下流工程へ順に開発を進めていくので、途中での大きな仕様変更に対処しにくいのがウォーターフォールモデルのデメリットだといえます。仕様変更をする場合、設計工程などへの大きな手戻りが発生してしまい、スケジュールに大きな遅れが出てしまいます。
問題発生時の手戻り負担が大きい
使用バグなどの問題が発生したときに、開発工程の手戻り負担が大きいこともデメリットです。コーディングに問題があれば改修するだけで済むのですが、そもそもの仕様にミスがあると設計段階からの見直しが必要になります。
開発期間が長くなりがち
上流工程で要求と仕様を詳細まで確定しておく必要がありますので、複雑なシステムになるほど上流工程で時間をとられ、開発期間が長くなってしまいます。また、システム開発にはトラブルがつきものですので、スケジュール通りに進まないケースもあります。
ウォーターフォールモデルに向いている開発分野
それでは、ウォーターフォールモデルに向いている開発分野を確認していきましょう。
長期的に仕様変更が少ないシステム
ウォーターフォールモデルは、要求定義から仕様設計などの上流工程をしっかりと固めてからシステム開発(コーディング)を行います。根本的な仕様変更が必要になった場合、もう一度仕様設計などを見直しながら、変更に対応し開発しなければなりません。ですので、長期的に仕様変更が少ない金融系や組み込み系のシステム開発に適しています。
品質を重視するシステム
アジャイル開発に比べて、ウォーターフォールはテスト工程にも時間をかけます。ですので、品質を重視するシステム開発に向いている開発手法だといえるのです。やはり、長期的に安定して稼働し、高品質なシステムが求められる金融系や、長期的に利用されるOSに向いている開発手法だといえます。
規模の大きなシステム開発
規模の大きなシステムは、要求・要件定義や機能・詳細設計に時間がかかりますし、大きな仕様変更が起こらないよう着実に仕様を固めていきます。このような開発に適しているのは、上流工程から下流工程へしっかりと開発を進めていくウォーターフォールモデルなのです。つまり、規模の大きなシステム開発のほとんどは、ウォーターフォールモデルでの開発が適しているといえます。
ウォーターフォールモデルに不向きな開発分野
一方、ウォーターフォールモデルに不向きな開発分野とはどのようなものかみていきましょう。
仕様変更が多いシステム
ウォーターフォールモデルは、上流工程から下流工程に流れるように一つのシステムを開発します。仕様変更が多いシステムをウォーターフォールモデルで開発すると「上流工程→下流工程」の中で何度も手戻りが発生してしまいます。
定期的に機能追加などがあるシステム
Web系開発のように、定期的に機能追加をするシステム開発にも向いていません。理由は、上述した「仕様変更が多いシステム」と同じで、最初に仕様を固めてしまうウォーターフォールモデルでは、機能追加に対する柔軟な対応が難しい場合も多いのです。
短期間での開発が必要なシステム
ウォーターフォールモデルでの開発は、細かな仕様書などのドキュメント作成もしっかり行い、比較的長期間の開発となります。ですので、Web系開発のようにリリースが短期間のものなどには向いていません。
まとめ
ウォーターフォールモデルは比較的長期間の開発になる一方、最初から高い品質を求められるシステムや、大規模システム開発に向いている開発手法です。アジャイル開発と比べられることも多いのですが、双方では適した開発分野に違いがあることを理解しなければなりません。ウォーターフォールモデルの特徴やメリット・デメリットを把握して、これから着手するシステムに適した開発手法を選択しましょう。
- カテゴリ:
- プロジェクト管理