2021.06.30  ラーニング・ツリー・インターナショナル【徹底解説】アジャイル開発とウォーターフォール開発との違い

「アジャイル開発とウォーターフォール開発」は良く比較されますが、どちらが良い悪いでは無く、それぞれの内容を理解し、プロジェクトの状況に応じ適切な開発手法を選択することです。

そこで今回は、アジャイル開発とウォーターフォール開発の違いについて解説します。各開発手法の概要から、強み・弱みまでまとめています。

アジャイル開発とは(機能的な背景)

2000年代に入り提唱されたアジャイル開発(Agile Software Development)は、それまでの開発手法の考え方を大きく変えました。

その概要は、「開発スピードと柔軟性を重視し、ユーザーにとって価値あるソフトウェアを継続的に提供すること」です。 アジャイル開発では要求やリスクを基準に、開発優先度を決めます。優先度の高い開発工程から着手し、2~3週間、長くても2~3ヶ月間の短い開発サイクル(イテレーションと呼ぶ)でプロダクト作りを進めます。

いくつものイテレーションを繰り返した末にプロダクト全体を完成させていく開発手法です。このため、アジャイル開発は「反復型」と表現されます。

ウォーターフォール開発とは

「従来型」として知られるウォーターフォール開発では、滝の水が上から下へと落ちるように、基本的には不可逆な開発手法になります。

大まかに説明しますと、「要件」「設計」「開発」「テスト」の4工程からプロジェクトが形成され、各工程が全体のマイルストーン(進捗基準)になります。 要件が定義できたら設計、設計が完了したら実装といった具合に、一つ一つの工程をステップごとに完了させていく手法です。

アジャイル開発が提唱される以前のソフトウェア開発は、このウォーターフォール開発が主流でした。しかし当時の開発現場に不満を抱いていた17名の開発者が集まり、議論したことでアジャイル開発という新しい開発手法が誕生します。

その内容は、『アジャイルソフトウェア開発宣言』にまとめられています。

アジャイル開発の強みと弱み

昨今のソフトウェア開発において主流となっているアジャイル開発。強みは多いですが、当然ながら弱みもあります。ここでその両方を確認しておきましょう。

<強み>開発途中の要求変更も大歓迎

アジャイル開発は「開発途中の要求変更は当たり前」というマインドが根底にあるので、柔軟性の高さが最大の強みになります。

ビジネス側の人間の目線に立って考えると、「価値のあるソフトウェア」の基準は常に変化します。開発者の役割がそうした人々に対して価値のあるソフトウェアを提供することだとすれば、計画時に予測できなかった事態に対処することはは歓迎すべきことだとアジャイル開発では主張しています。

イテレーションごとに開発・リリースを繰り返すので、サービス提供がスムーズというのも強みの一つです。これはビジネス側の人々の目線に立って、ユーザーファーストを追求した結果だと言えます。

<弱み>熟練のプロジェクトリーダーが不可欠

一方、アジャイル開発の弱みは「プロジェクト全体の俯瞰が難しいこと」です。ソフトウェアの大まかな要件は最初に定義するものの、優先順位ごとに開発を進めますし、その都度の要求変更を受け入れるため最終的なプロダクトが見えにくくなる可能性があります。

そのためアジャイル開発の現場では熟練のプロジェクトリーダーが全体を統括し、柔軟性を確保しながら計画性も併せたプロジェクト進行が欠かせません。

ウォーターフォール開発の強みと弱み

一方、ウォーターフォールの強みと弱みとは何でしょうか。

<強み>開発者ごとのスキルを最大限活かせる

ウォーターフォール開発では全体の要件を定義したら、また全体の設計を行います。次の開発、最後にテストといったように工程が完全に区切られている開発手法です。

開発者によって得意不得意が分かれるので、スキルごとに工程を割り当てれば、各開発者に得意分野で活躍してももらうことができ、スキルを最大限活かせるのが大きな強みです。

新人エンジニアにも早期段階でプロジェクトに参画してもらえるので、教育上でも有効な開発手法と言えます。

また、工程ごとの工数が明確なのでプロジェクト全体のスケジュールを管理しやすくなります。

<弱み>要求変更に対するリスクは高い

前述のように、ソフトウェア開発の現場では要求変更が起きます。これを無視しながらプロジェクトを進めれば、最終的に完成されるプロダクトはビジネス側の意見を無視したものになります。すなわち、「価値のないソフトウェア」を作ってしまうということです。

しかし、ウォーターフォール開発では工程ごとにプロジェクトが進行するので、途中の要求変更に対応しきれないという弱みがあります。時にはプロジェクトそのものを覆すような要求変更が生じることもあるので、アジャイル開発よりもリスクが高いのが難点です。

まとめ

自社にとって最適なソフトウェア開発手法は、アジャイル開発か?あるいはウォーターフォール開発か?開発者にとっては今でも難しいテーマです。

アジャイル開発が主流だからといって、それが最適解とは限りません。今回の解説が、皆さんにとって「どちらが最適なのか?」の答えを出すためのヒントになれば幸いです。

理想はどちらの開発手法も経験した上で、それぞれのメリット・デメリットを自社なりに分析した上で最適解を見つけることです。小さな独自システムを2つの手法で同じように開発してみて、アジャイル開発とウォーターフォール開発について理解を深めるというのも、良いかもしれませんね。

リンク

【公開講座・オンラインライブ研修】はじめてのスクラム│ラーニング・ツリー・インターナショナル (learningtree.co.jp)

【公開講座・オンラインライブ研修】プロジェクトマネジメント:成功のための技能│ラーニング・ツリー・インターナショナル (learningtree.co.jp)

一覧へ戻る