ウォーターフォール開発とアジャイル開発を使い分けるポイントは、仕様変更の有無です。仕様変更が起きないシステムであれば、ウォーターフォール開発が向いています。一方で、仕様変更の可能性がある予見性が低いシステムなら、アジャイル開発が向いています。それぞれの開発手法の特徴や注意点を考慮したうえで、適切な方法を選びましょう。
アジャイル開発とウォーターフォール開発の違い
アジャイル開発とウォーターフォール開発は、どちらもシステム開発の手法です。しかし、メリット・デメリットや、向き・不向きな開発業務の種類は異なります。まず、アジャイル開発では機能単位で開発を繰り返します。一方、ウォーターフォール開発は上から下へ各工程を進め、原則として後戻りすることはありません。具体的な相違点を以下に解説します。
クライアントや取引先との対応
ウォーターフォール開発は、計画をすべて決めてから着手します。そのため、原則としてクライアントや取引先がプロジェクトに関与しません。アジャイル開発は、各機能の開発を個別に進めます。開発が一定のラインに到達したら、クライアントや取引先の要望を聞く場合があります。
サービスの提供スピード
ウォーターフォール開発は実施期間が長期化する傾向にあり、サービスの提供スピードが遅くなりやすいです。アジャイル開発は、機能やサービスに優先順位を付けて開発するため、利用開始までの時間を短縮できます。
テストの頻度
ウォーターフォール開発は、最初に全体の開発プロセスを決める際にテスト工程も決めます。そして、テストを実施するタイミングはテスト工程のみです。アジャイル開発は小さな単位で開発を繰り返し、その都度継続的にテストを実行します。
ウォーターフォール開発とは
ウォーターフォール開発について解説します。誕生した背景やメリット・デメリットなどは、以下の通りです。
誕生した背景
ウォーターフォールという手法自体は、製造業や建設業などの業界で用いられていました。そして、ウォーターフォール開発の原型となるアイデアは1970年代に生まれました。
情報工学博士のウィンストン・W・ロイスによって、基礎となる考え方が提唱されています。しかし、1956年のハーバート・D・ベニントンの論文ですでに言及されていたともされ、いつ誰がウォーターフォールを定義したのかは不明とされています。
開発手順
ウォーターフォール開発における開発手順は以下の通りです。
1. 要件定義
2. 設計
3. 製造
4. テスト
5. リリース
ウォーターフォール開発の特徴は、ある工程を飛ばして特定の工程に進めないことです。つまり、工程を進めたい場合は、その工程を完了させなければなりません。そのため、開発を始める前の要件定義の段階で、性能の程度や実装する機能を定めます。そして、順番通りに工程を進めていきます。
メリット
完成品の品質を確保できることが、ウォーターフォール開発のメリットです。作るべきものが明確で、取り組む事項があらかじめ決められていることが要因です。その性質上、プロジェクト開始時点で、必要なエンジニアの数や作業量も把握できます。そのため、予算の見積もりやスケジュール管理がしやすいことも利点です。
また、各工程で成果物が決まっているため、経験の浅いエンジニアも参加しやすいでしょう。実際の開発業務を通して、経験を積むことができます。
デメリット
ウォーターフォール開発では、開発途中で仕様を見直すことが難しい傾向にあります。なぜなら、ユーザーの要求を実現するために、最初の段階で性能の程度や実装する機能を決めているためです。
仕様を見直したとしても、コストの大幅な増加と納期の遅延が起こりかねません。また、品質を重視するため、開発期間が長期化しやすい傾向です。そのため、市場の変化に対応した新機能の提供が求められるシステムには不向きとされています。
向いている開発業務
ウォーターフォール開発に向いているのは、仕様変更をしないことを前提としているシステムの開発です。たとえば、基幹システムの構築を目指すプロジェクトには、ウォーターフォール開発が向いています。
基幹システムの構築は、基本的に詳細な仕様を決定してからプロジェクトを始めます。そして、プロジェクトが始まったら、原則として仕様変更は起こりません。仕様変更しないシステムには、ウォーターフォール開発が適しています。
不向きな開発業務
ウォーターフォール開発は、後々に仕様変更が起こる可能性のあるシステムには向いていません。特に、ユーザビリティが重視されるWebサービスには適していません。Webサービスは、常にユーザビリティを意識することが求められます。また、ユーザビリティ次第で変化する要件があれば、頻繁に仕様変更が起こりかねません。
しかし、ウォーターフォール開発では、仕様変更によって手戻り工数が増えたり、開発期間が長期化したりします。以上の理由から、ウォーターフォール開発はWebサービスの構築には適していません。
アジャイル開発とは
アジャイル開発について解説します。誕生した背景やメリット・デメリットなどは、以下の通りです。
誕生した背景
ウォーターフォール開発には、不具合が発覚した際に対応のための戻る工数が多くなるというデメリットがあります。このウォーターフォール開発の問題を克服するために、アジャイル開発が誕生しました。具体的には、2001年に米国ユタ州で発祥したとされています。17名の技術者やプログラマーが、開発手法における重要な部分の統合について議論し、アジャイル開発が生まれました。
開発手順
アジャイル開発の手順は、細かな機能単位で開発を繰り返しながら進めます。具体的な工程は以下の通りです。
・要件定義
・設計
・開発
・テスト
・リリース
また、手順を進めるにあたって、ユーザーも巻き込みながら機能をブラッシュアップすることも特徴です。
メリット
アジャイル開発のメリットとして、段階的に機能をリリース可能なことが挙げられます。なぜなら、計画や設計、実装やテストといった工程を小さな単位で繰り返しながら開発を進めるためです。また、計画の段階では詳細な仕様を決めず、開発途中でフィードバックを受けて変更や修正をします。ユーザーとコミュニケーションを取りながら進めるため、顧客ニーズを適切に反映したシステム開発が狙えます。
さらに、不具合が発生したとしても、1つの作業やプロセスを修正するだけで済むため、コストがかかりにくい点もメリットです。
デメリット
アジャイル開発は、適切な対応をしないと開発の方向性が変わりやすい点がデメリットです。開発途中で方向性が変わってしまうと、プロジェクトの長期化やコストの増加が発生したり、プロジェクトが中止になったりします。
そのため、最初に定めた方針を定期的に見直すことが大切です。方針を変更する際は、スケジュールや進捗を適切に修正する必要があり、担当者の管理スキルが求められます。
向いている開発業務
アジャイル開発に向いている開発業務の特徴は以下の通りです。
・商品やサービスをユーザーニーズにマッチさせたい
・開発開始からリリースまでの期間を短くしたい
・リリース後にブラッシュアップをしたい
顧客に継続的に利用してもらうサービスや製品、そして拡大を目指すクラウドビジネスに向いています。
不向きな開発業務
安全性や正確性が重視されるシステムには、アジャイル開発は不向きです。アジャイル開発の特徴は柔軟性があることですが、開発の方向性がブレやすいです。
そのため、スケジュールや進捗管理が難しくなる傾向にあります。また、安全性や正確性を求めること自体が、開発の方向性を左右しかねません。そのため、アジャイル開発は安全性や正確性が求められるシステムには向いていません。
ウォーターフォール開発とアジャイル開発を使い分けるポイント
ウォーターフォール開発とアジャイル開発を使い分けるポイントは、仕様変更の有無です。仕様変更が起きないシステムであれば、ウォーターフォール開発が向いています。一方で、仕様変更の可能性がある予見性が低いシステムなら、アジャイル開発が向いています。それぞれの開発手法の特徴や注意点を考慮したうえで、適切な方法を選びましょう。
アジャイル開発とウォーターフォール開発のハイブリットは可能?
アジャイル開発とウォーターフォール開発の両方を取り入れる方法もあります。具体的には、中流工程をアジャイル開発で行い、上流工程や下流工程をウォーターフォール開発で行います。中流工程で実施することは、詳細設計や製造、単体テストなどです。そして、上流工程や下流工程では、要件定義や基本設計、総合テストなどを実施します。
それぞれの手法のデメリットをカバーしつつ、メリットを生かすことができます。たとえば、アジャイル開発における方向性の変わりやすさは、ウォーターフォール開発の仕様や計画の変更のしにくさで補うことが可能です。
まとめ
アジャイル開発とウォーターフォール開発は、それぞれ向いている開発業務が異なります。メリットやデメリットも異なるため、システムの種類や目的に合わせて選択することが重要です。しかし、どちらの手法を取るとしても、リソースが不足していたりノウハウがなかったりすると、適切に開発を進めることはできません。
株式会社Sun Asteriskは、さまざまなプロジェクトを支援しています。圧倒的に柔軟な開発リソースや、DXコンサルティングから設計、本格的な開発まで一貫してサポートできる幅広い能力を持っていることが強みです。システム開発を検討している場合は、ぜひ株式会社Sun Asteriskをご利用ください。
貴社の状況にあわせて最適なチームをご提案します。アジャイル開発のご相談やお見積りのご依頼は、お気軽にお問い合わせください。
Sun*アジャイル開発に関するソリューションやこれまでの開発実績をまとめた資料のダウンロードはこちらから。