コラム

ウォーターフォール開発とは?特徴や問題点、将来性について解説。

2021年11月05日
業界事情、トレンド

企業においてITシステムの活用はとても身近なものになってきました。そうしたシステムの開発にはいくつかの手法があり、その一つがウォーターフォール開発です。本コラムではウォーターフォール開発の特徴、アジャイル開発との違い、ウォーターフォール開発のメリットやデメリット、将来性について解説していきます。

開発手法を知ることで、数ある中からどの開発手法を採用すべきか判断しやすくなるのはもちろん、プロジェクトに必要なIT人材の解像度を上げることにもつながります。情報システム・開発部門の方はもちろん、人事担当の方もぜひ押さえておきましょう。

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

ウォーターフォール開発はシステムやソフトウェアの開発で用いられる、開発手法の一つです。ウォーターフォール(Waterfall)は英語で「滝」を意味します。その言葉通り滝のように上から下へ、つまり上流工程から下流工程へと順番に開発が進められていく開発手法です。

・最も認知度が高いと言われる開発モデル

ウォーターフォールの型が誕生したのは1970年頃で、数ある開発手法の中でも最も認知度が高いと言われています。後発にはアジャイル開発やスパイラル開発などもありますが、現在でも大型開発プロジェクトなどで採用されています。

・手戻りがないことが前提

手順を細かく確認しながら段階ごとに開発を完了させていき、基本的には前の工程に戻らないのが前提です。そのため工程ごとに開発担当者や発注者など関係者が成果物を確認し、双方で合意を取りながら工程を完了させていきます。

・テスト工程の相性が良い「V字モデル」

ウォーターフォール開発について調べていると「V字モデル」という言葉をよく見かけます。V字モデルはシステムの開発工程とテスト工程の対応関係を表したモデルの一つで、以下のような図で表されます。

image

左側は開発の工程・右側はテスト工程です。実装で折り返したV字の左右を見比べることで、各テストがどの開発工程を検証するものなのかを示しています。ウォーターフォール開発はすべての設計が終了してからテストを行うため「どの検証をすれば良いのか」が明確に分かるV字モデルは相性が良いとされています。

アジャイル開発との違い

ウォーターフォール開発とよく比較されるのがアジャイル開発です。ここでは開発工程・完成までの時間・開発担当者の役割とスキルの3つの項目における違いを解説していきます。

◇開発の工程

・ウォーターフォール開発

企画・設計・実装・テストの各工程を分割し開発を進めます。先述の通り原則手戻りはなく前工程を完了させてから次の工程に進むため、企画であれば最初の段階で開発対象であるシステムのすべての機能・仕様が決定されます。ウォーターフォール開発ではすべての工程が完了するまで開発したシステムを使うことはできません。

image

・アジャイル開発

「すばやい」を意味するアジャイル(Agile)を冠する名称の通り、開発期間がスピーディーなのが特徴です。まずは大まかな仕様を決める「計画」を立てます。ここでは細かな部分までは決めません。そのあとはイテレーションと呼ばれる反復サイクルを用いて開発を進めます。イテレーションでは開発を小さな単位に分け、「計画→設計・実装・テスト→機能のリリース」という流れを何度も繰り返していきます。一つのイテレーションは一週間~一か月ほどの短期間が一般的で、イテレーションが完了するごとに新しい機能がリリースされていきます。短期間での開発を繰り返すなかで完成度を高めていくため、途中で要求に変更があっても臨機応変に対応しやすい強みがあります。

image

◇完成までにかかる時間

・ウォーターフォール開発

企画や要件定義をじっくり行うこと、また工程ごとに成果物に対する合意が取れないと次の工程に進めないため、システム完成・リリースまでには時間がかかる傾向にあります。プロジェクトの大きさにもよりますが、大規模案件の場合は年単位で開発するケースもあります。

・アジャイル開発

開発期間がスピーディーかつ、優先順位の高い機能から着手できるため、素早いリリースを可能にします。

◇開発担当者の役割とスキル

・ウォーターフォール開発

工程ごとに専任のエンジニアを割り当て、決められた工程のみを担当します。前工程が完了した後、次の工程担当者に引継ぎながら開発を進めます。割り当てられた役割に集中できるため、比較的経験・スキルが浅いエンジニアでもプロジェクトに参加しやすい傾向にあります。

・アジャイル開発

各エンジニアが特定の専任を持たずに、開発工程のすべての役割を担います。メンバー自らが計画を立てイテレーションの進行を確認・実行していくため、マルチなスキルが求められる傾向にあります。

ウォーターフォール開発のメリット

◇作業の進捗状況を把握しやすい

事前にシステムの各機能や仕様などをすべて決め、各工程の役割・作業量を明確にしてから開発が始まります。そのためスケジュールが立てやすく、各工程の進捗状況が把握しやすいというメリットがあります。

◇品質を担保しやすい

事前に固めた計画・仕様通りに開発を進めていくため、途中で方向性がぶれることなく、計画・仕様に沿った成果物が予定通りに作られます。そのため品質を担保しやすいと言われており、発注側に安心感を与えやすい利点もあるでしょう。

◇人材育成が比較的容易

工程ごとに専門のエンジニアが割り当てられ、基本的には担当工程以外の技術は必要ではありません。特定のスキルに特化して指導できるため、人材育成が短期間かつ比較的容易にできます。

ウォーターフォール開発のデメリット

◇開発期間が長期化しやすい

ウォーターフォール開発は企画や要件定義をじっくり行ってから開発を始めます。また各工程の成果物に対して技術担当者・発注者などの合意が取れないと次の工程に進めないため、開発期間が長期化しやすい傾向にあります。

◇臨機応変な対応が困難

最初に全体像を明確にした状態で開発が進められるため、突如仕様を変更するといった臨機応変な対応には向きません。手戻りする場合であっても、ウォーターフォール開発では前工程をベースに開発を進めていくため、現在のフェーズだけをやり直すということができず、各工程をさかのぼってやり直すことになります。

◇トラブルが発生した際のコスト・リスクが大きい

開発開始後に仕様変更が難しいのは、単に各工程さかのぼることで工数が増えるからという理由だけではありません。各工程さかのぼるということは、それだけ開発をやり直す時間やコストが大きくなるということです。トラブルの発生がプロジェクトの後工程であればあるほど、そのリスクは大きくなります。

成功させるための条件

デメリットもあるウォーターフォール開発。ではウォーターフォール開発で成功を収めるためには、どのような条件を満たせば良いのでしょうか。

◇作りたいものが明確に決まっている

ウォーターフォール開発は機能や仕様を決めてから開発を開始するため、あらかじめ作りたいものが明確に決まっているプロジェクトであることが条件の一つです。

◇仕様変更を前提としていない

最初に全体像を確定させている分、問題発生時の手戻り負担が大きくなります。そのため仕様変更を前提とせず、開発開始の時点で要求が確定していることが欠かせない条件です。

image

ウォーターフォール開発の将来性について

ウォーターフォール開発はこれまで多くのシステム・ソフトウェア開発で採用されてきました。しかしながら一方で「時代遅れ」という声も聞かれるようです。その背景には何があるのでしょうか。

◇企業を取り巻く環境が変化している

企業を取り巻く環境が急速に移り変わりビジネスの不確実さが叫ばれるようになっている現在。システム・ソフトウェア開発においても、市場の変化にいち早く対応できることが望まれているという背景があります。そのため事前に各機能・仕様を確定するウォーターフォール開発ではなく、臨機応変さに強みがあるアジャイル開発などを採用する企業が増えているようです。

◇ウォーターフォール開発が向いているケース

アジャイル開発を選択する企業が増えているとはいえ、ウォーターフォール型が向いているケースもあります。

・品質が重視されるケース

たとえば銀行ATMの開発などシステム障害が許されないケースがあります。そのような場合はリリースの早さよりも品質の高さが重視されるため、品質の高さに定評があるウォーターフォール開発が向いていると言えます。ウォーターフォール開発は各工程で細かいチェックを実施するためミスなどが発生しにくく「障害発生率を限りなく0に近づけたい」という発注側の要望にも沿えます。

・プロジェクトが大規模なケース

プロジェクトが大規模であればあるほど多くの工数や時間がかかるため、開発スタート前に綿密に計画を立て進捗管理がしやすいウォーターフォール開発が向いています。また大規模プロジェクトでは多くのエンジニアが必要になりますが、ウォーターフォール開発であれば作業量が事前に把握できるため、工程によって大量の人材を確保する、人数を抑えるといったコントロールもしやすいと言えるでしょう。

◇ウォーターフォール開発は廃れる?

将来の予測が立ちにくい現在、「ウォーターフォール開発は今後廃れていく」という意見も一部で聞かれます。事実アジャイル開発やスパイラル開発といった別の開発手法を選ぶ企業も増えていますが、品質の高さが求められるケースなどでは今後もウォーターフォール開発が採用される可能性があります。各開発手法のメリット・デメリットを理解し、状況に応じて開発手法を選択していくべきです。

まとめ

ウォーターフォール開発はシステムやソフトウェアの開発で用いられる開発手法の一つで、上流工程から下流工程へと順番に開発が進められていくという特徴があります。近年では臨機応変な対応に強みを持つアジャイル開発などが選ばれやすい傾向にありますが、ウォーターフォール開発は品質を担保しやすいため、品質の高さを重視するプロジェクトでは今後も採用されていくでしょう。システム・ソフトウェア開発を進める際には各開発手法のメリット・デメリットを理解したうえで、状況に適した開発手法を採用していくことが重要です。

開発手法を採用する際に一緒に考えたいのが、プロジェクトに参加してもらうエンジニアの人物像です。開発手法にそれぞれ特徴があるように、どの開発手法を採用するかによってエンジニアに求めるスキルも異なります。ウォーターフォール開発では工程が明確に区切られており割り当てられた工程の開発に集中できるため、比較的経験が浅いエンジニアでも対応しやすいと言われています。アジャイル開発ではすべての工程を担当しなければならないため、マルチに活躍できる人物が求められます。しかし開発手法によって求めるスキルが変わることは、選択した開発手法と自社のエンジニアのスキルがマッチしていないという課題を生む可能性もはらんでいます。

「ウォーターフォール開発で進めたいが自社にノウハウがない」

「アジャイル開発が適しているが対応できる人材がいない」

そんな課題を抱えた際におすすめしたいサービスが「i-common tech」です。

「i-common tech」では、 常時2,500名以上の ITエンジニアが登録しており、その中から貴社のプロジェクトに適したスキルを持つITエンジニアをご紹介いたします。長期間はもちろん1か月など短期間での契約も可能なため、プロジェクトの状況に応じてご活用いただけます。まずはお気軽にご相談ください。

同じカテゴリーのコラム

0120-929-732
受付時間 平日9:00〜18:00まで