ウォーターフォールとアジャイルの違い:進め方・計画・変更への対応・テスト・向いている開発を比較
ウォーターフォールモデルは、要件定義、設計、プログラミング、テストの工程を上流から順に進め、原則として前の工程の成果物を確定させてから次の工程に進む開発モデルです。最初に全体の計画を立てるので、進み具合や費用を管理しやすい一方、後の工程で要件の誤りが見つかると手戻りが大きくなります。アジャイル開発は、数週間程度の短い期間の反復を繰り返し、そのたびに動くソフトウェアを作って利用者の意見を取り入れ、変化する要求に合わせて計画を見直していく進め方の総称で、代表的な手法にスクラムやエクストリームプログラミング(XP)があります。要求が明確で変わりにくいならウォーターフォール、要求が変わりやすく、早く使える機能を届けたいならアジャイルが向きます。
| 項目 | ウォーターフォールモデル | アジャイル開発 |
|---|---|---|
| 工程の進め方 | 要件定義 → 設計 → プログラミング → テストの工程を、上流から順に1回ずつ進める | 計画・設計・実装・テストを含む短い反復(スクラムではスプリント)を、何度も繰り返す |
| 計画の立て方 | 最初に全体の範囲、日程、費用を決め、その計画に沿って進める | 大まかな方向を決め、反復ごとに、優先順位の高いものから計画を見直す |
| 要求の変更への対応 | 前の工程の成果物を確定させた後の変更は、手戻りが大きい。変更の管理の手続きを経て行う | 変更を前提にしており、次の反復の計画に取り込みやすい |
| 動くソフトウェアができる時期 | 主に開発の終盤。テストを終えてから、まとめて引き渡す | 反復ごとに、動くソフトウェア(スクラムではインクリメント)ができる |
| テストの時期 | プログラミングの後に、単体テスト・結合テスト・システムテスト・受入れテストを順に行う(V字モデルで設計の工程と対応させる) | 反復ごとに行う。自動化したテストと継続的インテグレーションで、変更のたびに確かめることが多い |
| 文書 | 工程ごとに要件定義書や設計書などを作り、レビューで確定させる | 動くソフトウェアを重視し、文書は必要な分に絞ることが多い |
| 利用者(発注者)の関わり方 | 主に最初の要件定義と、最後の受入れテスト | 反復ごとに成果物を見て意見を伝える。スクラムでは、プロダクトオーナーが作るものの優先順位を決める |
| 進み具合の管理 | 工程の完了と成果物で測る。WBSやガントチャートで管理しやすい | 反復ごとに、完成して動く機能で測る |
| 向いている開発 | 要件が明確で変わりにくい開発、ハードウェアと一緒に仕様を早く固める開発、契約で範囲と費用を先に決める必要がある開発 | 要求が変わりやすい開発や、作りながら利用者の反応を確かめたい新しいサービスの開発 |
数値は代表的な目安で、世代や製品によって異なります。