ウォーターフォール開発とアジャイル開発の違いは?メリット・デメリットも解説
thumb_waterfallagile_01
ウォーターフォール開発とアジャイル開発の違いは?メリット・デメリットも解説
アンドエンジニア編集部
2022.07.12
この記事でわかること
ウォーターフォール・モデルとアジャイル・モデル手法のそれぞれの特徴や違い
ウォーターフォール・モデルとアジャイル・モデルそれぞれに適したプロジェクト、不向きなプロジェクト
ウォーターフォール・モデルとアジャイル・モデルのメリット、デメリット

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

img_waterfallagile_01

システムエンジニアを目指す上で必ず知っておくべき言葉は、システム開発における代表的な手法、ウォーターフォール・モデルとアジャイル・モデルです。いずれのモデルも効率的なシステム開発には有効な手法ですが、両者の違いについて正しく理解しておく必要があります。

この記事ではウォーターフォール開発とアジャイル開発について、それぞれの特徴と違い、それらが適したシステム開発について解説していきます。

ウォーターフォール・モデルとは

img_waterfallagile_02

ウォーターフォール・モデルは、システム開発の現場では最もポピュラーな開発手法です。特に基幹系の開発や、大規模開発において主に使われています。ここでは、ウォーターフォール・モデルの概要、適したシステム開発、向かないシステム開発についてそれぞれ見ていきましょう。

ウォーターフォール・モデルの概要

ウォーターフォール(WaterFall)は英語で滝のことですが、滝のように上から下に向かって水が流れ落ちるように、上流工程から下流工程に向かって工程が進んでいくのが特徴です。

ウォーターフォール・モデルという言葉は、米国の科学者W.W.ロイス氏が1970年に発表した論文の内容が元だと言われていますが、「ウォーターフォール」という名称が使われたのは、TRW社に属するBellとThayerだとされています。

いずれにしても、ウォーターフォール・モデルは米国電気電子学会 (IEEE)で文書化され、誕生から半世紀を経て定着をしていきました。ウォーターフォール・モデルの大きな特徴としては、前工程が完了しないと次の工程に進むことができないという点にあります。

ウォーターフォール・モデルの手順

ウォーターフォール・モデルはその名の通り、上から下に向かって進んでいきます。ウォーターフォール・モデルでは大きな括りでとらえると、【要件定義】⇒【設計】⇒【製造】⇒【テスト】⇒【リリース】という工程で進んでいきます。

要件定義工程ではユーザーやクライアントの要求を明確にし、その要求を実現するために必要な機能・要件・性能などを明らかにします。ここが曖昧であったり、要件を出し切れていなかったりすると、多くの場合はシステム開発に失敗します。

ウォーターフォール・モデルが適したプロジェクト

ウォーターフォール・モデルが適したシステム開発業務とは、どのような開発なのでしょうか?それはシステム開発の途中で、仕様変更を前提としない仕組みの開発です。ウォーターフォールでは上から下に向かって工程が進むため、システム開発の途中で仕様変更が起きると、要件定義まで遡らなければなりません。

途中で仕様変更が少ないシステムには、基幹システムがあります。基幹システムでは要件や仕様が細かく決まっており、その仕様に従って着々と開発していきます。

逆に言えば、要件定義でミスを生じると、修正が非常に難しくなります。これまで基幹システムの開発に失敗しているケースは、そのほとんどが要件定義のミスによるものと考えられます。

ウォーターフォール・モデルが適さないプロジェクト

ウォーターフォール・モデルが適さないシステム開発業務は、システム開発の途中で仕様変更が起きやすいシステムの開発です。代表的なものとしては、Webサービスの開発があります。

Webサービスではユーザビリティ(Usability)が重視されます。ユーザビリティ(Usability)には「使いやすさ」「可用性」「有用性」などの意味があり、それらは机上で設計するのは難しく、実際に作ったシステムをユーザーに見てもらい、触ってもらう必要があります。

そのため、仕様変更や手戻りが難しいウォーターフォール・モデルによる開発はあまり適しません。

アジャイル・モデルとは

img_waterfallagile_03

アジャイル・モデルは、柔軟性やスピードを優先したシステム開発の手法の1つで、現在の主流となっている手法です。伝統的な開発手法であるウォーターフォール・モデルとよく比較されます。

ここでは、アジャイル・モデルの概要、アジャイル・モデルが適したシステム開発、適さないシステム開発についてそれぞれ見ていきましょう。

アジャイル・モデルの概要

アジャイル(Agile)とは「素早い」を意味する英語です。イテレーション(Iteration)「反復の意味」 と呼ばれる短い開発期間の単位を採用して、開発期間の短縮とリスクの軽減を目的とする開発手法です

モバイル分野などの日進月歩のスピードでテクノロジーが進化している分野、要件が途中で変更されるような分野との相性が良い方式です。

アジャイル・モデルでは小さな単位で計画・設計・実装・テストを繰り返すため、途中で問題が生じてもその影響がイテレーション内にとどまり、プロジェクト全体への影響が少ないというメリットがあります。

アジャイル・モデルと似た手法でスパイラル・モデルがあり混同しがちですが、スパイラル・モデルはプロトタイプ(試作)を提供しながらユーザーの要望に近づけ、品質向上を目指していく手法です。工数が膨れやすいため、潤沢な予算やリソースを確保できないと、とん挫するリスクがあります。

アジャイル開発の特徴、メリット・デメリット、DXとの関係など

アジャイルソフトウェア宣言

アジャイル・モデル登場の発端は、「スクラム」や「XP」などの開発手法を提唱した技術者たちによって出された、2001年に「アジャイルソフトウェア開発宣言」※にあります。

日本で初めてアジャイル・モデルが採用されたのは、2000年代の半ば頃です。2009年には「アジャイルジャパン」※1が初めて開催され、毎年継続的に開催され、日本におけるアジャイル・モデルの普及に貢献しています。

【参考】:※アジャイルソフトウェア開発宣言

【参考】:※1Agile Japan EXPO

アジャイル開発宣言の内容を解説!開発に活かす道筋を探る

アジャイル・モデルの手順

アジャイル・モデルでは、チーム単位で、要件定義・設計・実装・テスト・リリースなどの開発工程を小さな機能の単位で繰り返して行います。まさしく素早く(Agile)、ユーザーと一緒に機能のブラッシュアップを図りながら、システムを作り上げていくという手順で進めます。全ての機能を横断的に進めていくウォーターフォール・モデルとは異なり、比較的軽量で柔軟な開発手法です。

アジャイル・モデルが適したプロジェクト

アジャイル・モデルが適するシステム開発業務は、ユーザーの要求にマッチしたシステムやサービスをスピーディにリリースすることを優先し、ブラッシュアップしていくようなシステム開発です。

つまり、出来上がりの都度、ユーザーやクライアントの承認を得られたものから逐次リリースしていく方式です。

アジャイル・モデルが適さないプロジェクト

アジャイル・モデルが適さないシステム開発は、「正確性や安全性が求められるシステム」です。例えば、財務・会計システムなどの基幹システム構築では初めに要件を固める必要があります。

会計基準に従って詳細設計まで行うため、基本的に要件の変更はありません。また、企業会計は厳しい監査を受けるため、システム設計に関するドキュメントは必須です。

そのため、基幹システムの開発はウォーターフォール・モデルによる開発が一般的であり、ウォーターフォール・モデルは適さないという説が根強くあります。

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

伝統的な開発手法であるウォーターフォール・モデルに代わり、要件変更や仕様変更に柔軟な対応が可能なアジャイル開発は主流になってきていますが、アジャイル・モデルにはいくつかの手法があります。ここでは、アジャイル・モデルの代表的な手法について3つ紹介します。

1.スクラム アジャイル・モデルでは最も有名な手法です。ラグビーのスクラムが語源で、ラグビーのようにチームが一丸となり、コミュニケーションを重視しながらシステム開発を進めます。チームには以下の3つの役割を持つメンバーがいます。

▪プロダクト・オーナー:プロジェクトチーム全体の管理者 ▪スクラム・マスター:開発のチームリーダー ▪開発者:システムの開発に携わるエンジニア

2.エクストリーム・プログラミング(略称:XP) エクストリーム・プログラミングはエンジニア、中でもプログラマー重視の開発手法です。ペアでコードを共有し、相互チェックと助け合いでプログラミングを進めます。これにより、仕様変更やエラーなどに柔軟かつ効率的に対応を行います。

3.ユーザー機能駆動開発(略称:FDD) 「顧客価値」にフォーカスした開発手法です。顧客の課題抽出、課題解決に向けた機能選定を重視し、プロジェクトマネジメントに重きを置いています。

また、イテレーションの期間は短く設定されるため、工程の手戻りのリスクが比較的大きく、進捗管理を定量的に行う必要があります。アジャイル・モデルの中ではウォーターフォール・モデルに近い手法とされています。

メリット・デメリットを比較

img_waterfallagile_04

ウォーターフォール・モデルとアジャイル・モデルにおいて重要なのは、それぞれの違い、メリット・デメリットを理解した上で、システム開発に最適な手法を選定できるようになることにあります。以下に、それぞれのメリット・デメリットについて見ていきましょう。

ウォーターフォール・モデルのメリット・デメリット

ウォーターフォール・モデルの代表的なメリットとデメリットは以下の通りです。

■メリット ウォーターフォール・モデルのメリットとしては、開発計画や予算見積りが容易で、その精度が高いことです。また、開発内容や必要な人材があらかじめ明確になっており、開発に必要な人材・スキル・リソース確保が計画的に行えるため、プロジェクトマネジメントが行いやすいモデルです。

■デメリット ウォーターフォール・モデルでは、各工程を順番にこなしていきます。そのため、システム開発が大きく進捗した後に、新たな要件が追加されたり、大きな不具合が見つかったりすると、大きな手戻りが発生するリスクがあります。これによって開発に関わる時間とコストが当初計画から大きくぶれてしまいます。

アジャイル・モデルのメリット・デメリット

続いて、アジャイル・モデルの代表的なメリットとデメリットを紹介します。

■メリット アジャイル・モデルでは、反復(イテレーション)ごとに開発とリリースを行うため、短期間でプロダクトやサービスをユーザーに提供できる点が大きなメリットです。また独立した小さな単位で開発を進めるため、仕様変更や手戻りの影響が最小限で済む点もメリットです。

■デメリット アジャイル・モデルはユーザーのニーズや要件に柔軟に対応できる反面、この柔軟さゆえにシステム開発が当初の方針から外れてしまったり、予算や全体スケジュールの管理がしにくかったりといったデメリットがあります。

アジャイル開発が失敗するパターンと成功に導くための5つの心得
アジャイル開発のメリット・デメリットや代表的な手法について解説!

いずれの手法にも対応できるエンジニアを目指しましょう

img_waterfallagile_05

ここまで、ウォーターフォール・モデルとアジャイル・モデルについて比較を交えながら紹介してきました。どちらが優れている・劣っているという訳ではなく、それぞれに向き不向き・一長一短があります。

大切なことは、そのプロジェクトにどちらの手法が向いているかを正しく判断することです。他に両モデルを併用したハイブリッド・モデルもありますので、選択肢として検討してください。

システムを開発する上でそれぞれのモデルについてより知識を深め、いかなるプロジェクトにも対応できるよう準備しておくことが求められます。当記事を参考に、今後もさらなる理解を深めましょう。

気になる人のXをフォローしよう!
アンドエンジニア公式LINEでは
新着記事やエンジニアに役立つ情報をお届け!
日々のキャッチアップをお手伝いします!
マイナビITエージェント

編集部オススメコンテンツ

Sponsored
【年収±診断】6つの質問に答えて、真の市場価値をチェック!
マイナビITエージェント
Sponsored

アンドエンジニアへの取材依頼、情報提供などはこちらから

お問い合わせ・情報提供
はじめて転職される方へ
SE・システムエンジニア(IT/通信/インターネット) 求人一覧

編集部おすすめコンテンツ

Sponsored
【年収±診断】6つの質問に答えて、真の市場価値をチェック!
マイナビITエージェント
Sponsored

アンドエンジニアへの取材依頼、情報提供などはこちらから

Powered by マイナビ AGENT