プロジェクトに適した開発手法を選ぶことで、製品の品質はもちろん、対外的には満足度を高めることがでる。最近主流となっているアジャイル開発とウォーターフォール開発の特徴を理解して、効果的に使い分けるようにしたい。

目次

  1. ケースに合わせた開発手法の選び方がポイント
    1. アジャイル開発とは?
    2. ウォーターフォール開発とは?
  2. アジャイル開発とウォーターフォール開発の4つの違い
    1. 1.製品の提供スピード
    2. 2.修正や変更への対応方法
    3. 3.技術者の役割
    4. 4.同一プロジェクトでのプロセスの改善
  3. 開発手法はどう選ぶ?2つの手法のメリット・デメリット
  4. アジャイル開発とウォーターフォール開発をうまく使い分けるポイント
    1. 1.それぞれの顧客の特性を理解しておく
    2. 2.テストの必要性を予測しておく
  5. プロジェクトの開発手法は、広い視野で判断することが重要

>>会員登録して限定記事・イベントを確認する

ケースに合わせた開発手法の選び方がポイント

アジャイルとウォーターフォール。ビジネスを推進する2つの開発手法
(画像=PIXTA)

ソフトウェアやシステムの開発手法には、「アジャイル開発」と「ウォーターフォール開発」がある。デジタルトランスフォーメーション(DX)のスムーズな導入が重視されているため、近年はアジャイル開発のほうが望ましいとされているが、実はどちらにもメリット・デメリットがある。

つまりソフトウェアなどの開発手法は、ケースや目的に合わせて選ばなくてはならないということだ。このことを理解しないままアジャイル開発を選ぶと、かえって効率が落ちてしまう恐れがあるので注意したい。

開発体制に課題を抱えている経営者は、これを機に2つの開発手法の特徴をチェックしておこう。

アジャイル開発とは?

アジャイル開発とは、あらかじめ短期の反復期間(1週間~1ヵ月程度)を設けて、「計画」「設計」「開発」「テスト」の4つの工程を繰り返す開発手法のことだ。テストを行った後には再度計画に戻り、徐々に新たな機能を追加することによってスピーディーな開発を実現する。

アジャイル開発は、大きく3つの手法に分けられている。それぞれの内容を簡単に確認しておこう。

・アジャイル開発の3つの手法

【1】スクラム チーム内のメンバーが計画を立て、メンバー間で進捗状況や課題などを共有しながら開発を進める手法。アジャイル開発の中では、最もポピュラーな手法として知られている。
【2】エクストリーム・プログラミング(XP) 初期の計画よりも、柔軟な修正や変更を重視する手法。顧客からの要望を受け入れたり、常に細かいチェックを行う人材を配置したりして、完成度の高い製品を目指す。
【3】ユーザー機能駆動開発(FDD) 顧客にとっての機能性を重視し、実際のニーズと合致する製品を目指す手法。事前にビジネスモデリングを行い、顧客が本当に求めているものを見極めながら開発を進める。

いずれも同じサイクルを繰り返しながら作業を進めるため、アジャイル開発は「反復増加型の手法」とも呼ばれている。

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

ウォーターフォール開発は、従来のソフトウェア開発などで用いられてきた手法だ。アジャイル開発のように同じサイクルを繰り返すことはなく、「要件定義」「・設計」「・実装」「・テスト」「・運用」の5つの工程で開発を完了させる。

ウォーターフォール開発の大きな特徴は、最初に要件定義や設計などのプランを綿密に練り上げることだ。プランをもとに製品を開発し、完成したものを顧客に提供する手法なので、実装に入った後は基本的に修正や変更を行わない。

ウォーターフォール開発は、その特徴から「工程分割型の手法」とも呼ばれる。

>>会員登録して限定記事・イベントを確認する

アジャイル開発とウォーターフォール開発の4つの違い

各ケースに最適な開発手法を選ぶためには、アジャイル開発とウォーターフォール開発の違いをしっかり理解しておく必要がある。細かく見るとさまざまな違いがあるが、ここでは開発手法を選ぶ際に特に意識したい4つの違いをまとめた。

1.製品の提供スピード

アジャイル開発では、計画からテストまでのサイクル(※イテレーションと呼ばれる)が終わるたびに新機能を追加した製品を提供できる。そのため、提供する製品によっては1週間程度で納品し、顧客から意見をもらうことが可能だ。

一方ウォーターフォール開発は完成した製品を提供するかたちなので、スピーディーな提供は難しい。

2.修正や変更への対応方法

テストを行ってから再び計画の工程に戻るアジャイル開発では、修正や変更に対する柔軟な対応が可能だ。イテレーションのたびに顧客から使用感を聞けるため、ニーズに適したものを作りやすいこともメリットといえる。

一方、ウォーターフォール開発は工程の途中における修正・変更を想定していないため、それらが必要になった場合は大きなコストが発生してしまう。また、完成品を納品するまで顧客から意見をもらえないことも、開発する企業にとってはデメリットといえるだろう。

3.技術者の役割

アジャイル開発では、一人の技術者がすべての作業を行うため、必然的にマルチに活躍する人材が育ちやすい。ただし、技術者には幅広い知識やスキルが求められるので、人材育成の難易度は高い。

一方、ウォーターフォール開発では各工程に専門的な技術者を配置する。つまり、チームごとに知識や技術を伝達できるため、人材育成の難易度はあまり高くない。

4.同一プロジェクトでのプロセスの改善

イテレーションが終わるたびにプロセスを見直せるアジャイル開発とは違い、ウォーターフォール開発では同一プロジェクトでのプロセス改善はできない。一つのプロジェクトが終わらない限りプロセスに関する反省点を活かせないので、場合によっては製品の質が下がってしまう。

・アジャイル開発とウォーターフォール開発の違い

アジャイル開発 ウォーターフォール開発
・製品の提供スピード 早い 遅い
・顧客からの要望 一つのサイクルが終わるたびに要望を聞くことができる 完成品を提供した後でしか要望を聞くことができない
・修正や変更への対応 プロジェクトの途中でも可 プロジェクトが始まると不可
・技術者の役割 すべての業務に携わる 各工程の専門家として機能する
・人材育成 難しい 比較的容易
・育つ人材 マルチに活躍する人材 一つの工程に特化した人材
・プロセスの改善 プロジェクトの途中でも可 プロジェクトが始まると不可

上の表を見るとわかるとおり、アジャイル開発とウォーターフォール開発は、どちらが優れているとはいえない。どちらにもメリットとデメリットがあるため、新しい手法だからといって安易にアジャイル開発を選ぶことは避けたい。

開発手法はどう選ぶ?2つの手法のメリット・デメリット

アジャイル開発とウォーターフォール開発は、それぞれどのような製品開発に適しているのだろうか。それを見極めるために、まずはそれぞれの開発手法のメリット・デメリットを整理しておこう。

・アジャイル開発とウォーターフォール開発のメリット・デメリット

主なメリット 主なデメリット
アジャイル開発 ・開発スピードが早い
・顧客の要望を満たしやすい
・プロジェクトの途中でも仕様変更に対応できる
・不具合が発生した場合の修正工数が少ない
・マルチに活躍する人材を育てられる
・開発の方向性がブレやすい
・人材育成が難しい
・進捗をコントロールしづらい
・チーム間のコミュニケーションが必須になる
ウォーターフォール開発 ・全体的な計画を立てやすい
・開発費用を見積もりやすい
・人材育成や採用のハードルが低い
・進捗をコントロールしやすい
・開発スピードが遅い
・プロジェクト途中での仕様変更に対応できない
・不具合が発生したときの修正工数が多い
・顧客の満足度を高めにくい

上記のメリット・デメリットを踏まえると、アジャイル開発は仕様の追加や変更が生じやすいケースに適した手法といえる。例えば、最先端技術に関わる分野は新たな発見によってニーズが変わりやすいため、基本的にはアジャイル開発のほうが適しているだろう。なお、アプリ開発もアジャイル開発のほうが望ましいとされているが、すべてのアプリ開発に当てはまるわけではないので注意したい。

一方で、要件の全体像が明確なプロジェクトや、すでに技術が確立された分野ではウォーターフォール開発のほうが適している。具体例としては、一昔前のシステムをリプレースする場合や、顧客からの要望がシンプルかつ明確な場合などが挙げられる。

このように、適した開発手法はプロジェクトの内容によって変わるため、状況に合わせて柔軟に開発体制を構築していこう。

アジャイル開発とウォーターフォール開発をうまく使い分けるポイント

アジャイル開発とウォーターフォール開発をうまく使い分けると、コスト削減や業務効率化、顧客の満足度アップなど、多くのメリットが生じる。ただし、実際のプロジェクトではさまざまな要素が複雑に絡み合うこともあるため、開発手法の判断に迷うこともあるだろう。

そこで、2つの開発手法を使い分けるポイントをまとめた。

1.それぞれの顧客の特性を理解しておく

同じ製品を開発する場合でも、顧客によって適した開発手法は変わる。例えば、チームの一員として開発に携わってくれる顧客は、プロジェクトの途中で要望を伝えてくる可能性が高いので、修正工数が少ないアジャイル開発のほうが適している。

一方で、顧客の中には要件だけを伝えて、依頼先にプロジェクトを一任するような企業もある。伝えられた要件が明確であれば、全体的な計画を立てやすいウォーターフォール開発のほうが適しているだろう。

たがって、プロジェクトの開発手法を選ぶ前に「顧客の特性」をチェックしておきたい。この工程を挟むだけで、それぞれの顧客に適した開発手法を選びやすくなるはずだ。

2.テストの必要性を予測しておく

製品開発において、テストの回数や頻度は品質を大きく左右する要素だ。仮に複雑な仕様や動作が組み込まれるシステムを開発する場合は、こまめにテストを実施できるアジャイル開発を選ばないと、致命的な欠陥が生じる恐れがある。

そのため、開発手法を選ぶ前に製品に関する「テストの必要性」を予測しておきたい。1回のテストで済むシンプルな製品であれば、納品の直前にテストをするウォーターフォール開発を選んでも問題ないだろう。

プロジェクトの開発手法は、広い視野で判断することが重要

アジャイル開発とウォーターフォール開発には、それぞれメリットとデメリットがある。従来の開発手法だからといって、ウォーターフォール開発が劣っているわけではない。

前述のとおり、ウォーターフォール開発のほうが適しているケースもあるため、各プロジェクトに適した開発手法は広い視野で判断するようにしたい。

文・片山雄平(フリーライター・株式会社YOSCA編集者)