会員登録

ウォーターフォールとアジャイル開発の違い、説明できますか?

この記事のポイント

  • ウォーターフォールは工程を順番に進める手法で、大規模案件のスケジュール管理に向いています
  • アジャイルは短いサイクルを繰り返す手法で、仕様変更への柔軟な対応が強みです
  • どちらが正解というものはなく、プロジェクトの規模や性質によって使い分けるのが基本です
おすすめ

IT業界の仕事をもっと詳しく知りたい方へ

エンジニア就活に無料登録しよう

IT・SE志望の就活生を専門エージェントがサポート。
未公開求人の紹介や個別相談もすべて無料で利用できます。

システムを開発するということ

皆さんはこれまでにプログラミングに触れた経験はありますか?文系学生の皆様は全く触れたことがない方が多いでしょう。また理系学生であってもプログラミングに触れた方はそう多くないと思います。

しかし実際に少し勉強してみると分かると思いますが、実は皆さんが思っているよりもプログラミングというものは簡単です。プログラミング言語ごとにルールはありますが、いくつかの文法を覚えればある程度の機能は実現できます。

そのため、個々人で生産性のバラつきこそはありますが、システムエンジニアとして働いている人たちは、保守性(拡張・修正などのメンテナンスしやすいか)・可読性(読みやすいコードか)などを考えなければ、目的のシステムを問題なく開発できるでしょう。

では、システム開発とは何が難しいのでしょうか?私自身が常日頃から感じているのはプログラミング自体よりも、いかにお客様が欲しいシステムを「チーム」として、「高品質」で「期間内」に作り上げるかという点が最も難しいのだと思います。

この点を解決するために、古くから様々な検討が繰り返され、開発手法というものが生まれました。現在、主流となっている開発手法はいくつかありますが、今回は「ウォーターフォール」と「アジャイル」という開発手法についてご紹介しようと思います。

就活生のみなさんは、自分が志望する企業がどういう開発手法を取り入れているかを知ることで、業務内容をイメージする参考にしてください。

ウォーターフォールとは

まずは「ウォーターフォール」についてご紹介します。ウォーターフォールは1970年頃から始まった歴史がある開発手法です。直訳すると「水が落ちる」となりますが、その名の通り作業工程(水)が上から下に進んでいく(落ちていく)イメージで作業は進みます。

ウォーターフォールは、開発作業を以下のような工程に分けます。

要件定義…お客様にヒヤリングを行ったものをベースに分析などを行い、システムに要求される機能を洗い出し、決定します。

基本設計…外部設計とも呼ばれます。システムの操作画面や操作方法や、帳票類のフォーマットなど、DBのレイアウトなどを決定します。

詳細設計…内部設計とも呼ばれます。基本設計で決定した内容について、どういった構成や内容でプログラムに落とし込むかを決定します。

実装…詳細設計までの内容を元にして、プログラミングを行いシステムをつくります。

単体テスト…システムについて、主に詳細設計の内容をテストする。

結合テスト…システムについて、主に基本設計の内容をテストする。

システムテスト…システムについて、主に要件定義の内容をテストする。

この工程について、要件定義が完了したら基本設計。基本設計が完了したら詳細設計…と工程を1つずつ進んでいく手法を、ウォーターフォールと言います。

それぞれの工程の期間については、開発を行う前に必要なコストと作業量から予測して算出します。そのため、大規模なプロジェクトであれば、要件定義〜システムテストまでに数百人・数千人のチームで数年単位を要するものもありますし、小規模なプロジェクトであれば、1人で1か月といったものもあります。

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

大きなメリットとしては2つあります。

1つ目はスケジュールの見通しを立てやすいため、リリースまでの人員調整やプロジェクトの管理が比較的容易であることです。

昨今はエンジニアの人材不足が問題となっていますが、ウォーターフォールの場合は全体のスケジュールを予測しているため、いつごろにどれくらいの人材を確保すればよいというのが明確ですし、作業の遅れも比較的把握しやすいです。

2つ目は、開発側としては各工程ごとにバッファ(何か問題があった場合の予備的な工数)を積みやすいため、ある程度スケジュールに余裕をもって進めることができます。

※ただし、当然ですがお客様に見積を提示する際の金額にバッファ分も含まれるため、過度なバッファの確保は受注自体に影響します。

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

デメリットとしては大きいものとして2つあります。

1つ目は工程を跨ぐような問題が発生した場合の影響が甚大であることです。

例えば結合テストでバグが発生した場合、その根本原因が基本設計にあったとすると、作業のやり直し範囲が広範囲になりがちです。また、開発中に仕様の変更が入った場合も、同様の問題が起こるリスクがあります。

2つ目は、完成したシステムがお客様が欲していたものではないという点に気づきにくいという点です。

ウォーターフォールの場合、動作するものについては最終段階近くにならないと確認することができません。そのため、実際に動かしてみると「使い物にならない」「ほしいものと違う」という問題が発生することがあります。

アジャイルとは

次に「アジャイル」についてご紹介します。

なお、厳密にはアジャイルにもいくつかの手法があるのですが、今回は「スクラム開発」という手法をアジャイル開発としてご紹介します。

アジャイルは2000年頃に生まれた比較的若い開発手法です。直訳すると「早い」「機敏」ですが、これは当時の主流であったウォータフォールと比較して、小回りが利く開発手法という意味が込められています。

アジャイル開発は「スプリント」というある一定のサイクルを繰り返しながら開発作業を進めます。「スプリント」の間隔については、プロジェクトにもよりますが、基本的には1週間〜2週間とされることが多いです。

1つのチームにおける1スプリントでの作業可能量については、「このチームであれば1つのスプリントにおいて、これくらいの作業ができる」といった具合にあらかじめ決めておきます。

この1チームでの作業量を「ベロシティポイント」といいます。

つぎに各スプリントで行う作業についてですが、これはタスクといわれる単位で作業を行います。このタスクとはは開発対象の機能を可能な限り細分化したものを指します。

例えば「登録機能の追加」という作業があった場合、「仕様検討」「UI変更」「UI実装」「DB部分実装」「テスト」…といった具合に、1つの機能について細かい単位にまで作業を落としこみます。(現場ではタスクをちぎるという表現をすることもあります。)

さらにその1つ1つの機能に対して、どれくらいの作業負荷であるのかをポイントを付けていきます。このポイントは誰かが決めるのではなく、チーム全員で懸念事項などを出した上で決定します。

これにより、「1チームでの1スプリントの作業量」と「各機能の作業量」を把握できます。

実際の作業については、お客様と開発側が協議しながら「このスプリントではこのタスクをやる」といった具合に、ベロシティポイントと各タスクのポイントを考慮しながら作業内容を決定するのです。

アジャイルのメリット

アジャイル開発のメリットとしては、やはり仕様変更などへの対応が柔軟に可能な点だと思います。

作業は1スプリントで完結する事が基本なので、仕様変更などを取り入れやすくなります。また、お客様のご意見を取り入れやすく、完成したシステムとのギャップがあった場合も比較的傷は浅くて済みます。

アジャイルのデメリット

デメリットとしては、仕様変更が頻繁に発生する可能性があることです。

特にゴールが決まった開発でなければあまり影響はありませんが、リリース日が決定しているようなシステムでは、要求されるものを全て対応していると全体のスケジュールに影響を及ぼします。

もちろんリクエストを断ればよいのですが、アジャイル手法自体の正しい理解がまだ浸透しておらず、アジャイルは万能というイメージがあるので、お客様も「アジャイルならできるでしょ」と思いがちです。

また、基本的にはスプリントごとの作業しか把握できないため、ウォーターフォールと比較すると最終的なスケジュールを計画しづらい点もデメリットの1つだといえます。

ウォーターフォール・アジャイルの使いどころ

こちらについては各方面で様々な議論があります。ウォーターフォールは過去のやり方だという方もいますし、アジャイルでやるといつまでたってもプロジェクトが終わらないという方もいます。

おそらく今後も白黒はつかないので、完全に個人的な見解となりますが、私自身は以下のように考えています。

一般的にウォーターフォールは大規模案件向きであるといわれていますが、こちらについては私自身も同意です。ただし、開発手法が大規模案件に向いているというよりも、問題があった場合のリスクを低減させることができるためだと思います。

大規模案件において、開発側のミスにより手戻りを起こすと、金銭的な補償を行う必要があったり、最悪の場合訴訟を起こされたりすることもあります。

ウォーターフォールは、各工程の成果物がきちんとアウトプットされるので、その成果物についてお客様に確認・了承を頂くことで、お客様と責任の共有が可能です。

一方、アジャイル開発は、比較的小規模案件を複数行う場合などに向いていると感じています。

お客様にご確認をいただくスパンはアジャイル開発の方が圧倒的に短いので、実際にお客様の意見を取り入れやすく最終的な満足度も高い印象があります。

まとめ

今回はシステム開発の手法をご紹介しましたがいかがでしたか?

どういった手法を採用するかはプロジェクト毎に異なりますし、これが正解というものはありません。日本でもアジャイル開発の採用は年々増加しており、DX(デジタルトランスフォーメーション:業務や事業をデジタル技術で変革すること)推進を背景に、スタートアップから大企業まで幅広い現場で取り入れられるようになっています。

今後も当分の間、日本国内において「ウォーターフォール」と「アジャイル」という手法はスタンダードであり、どの現場に行っても必ず使う手法となるでしょう。ぜひ、基本的な内容は押さえておきましょう。

よくある質問

Q. ウォーターフォールとアジャイルはどちらが主流ですか?

どちらが優れているというものではなく、プロジェクトの規模や性質によって使い分けます。大規模・長期の案件ではウォーターフォール、仕様変更が多い小規模案件やサービス開発ではアジャイルが選ばれる傾向があります。

Q. 就活でウォーターフォール・アジャイルの知識は必要ですか?

志望企業がどちらの開発手法を採用しているかを把握しておくと、面接での業務理解のアピールや入社後のギャップ防止に役立ちます。基本的な概念を押さえておくと選考でも好印象を与えられるでしょう。

Q. アジャイル開発のスクラムとは何ですか?

スクラムはアジャイル開発の代表的な手法で、1〜2週間の「スプリント」と呼ばれる短いサイクルを繰り返しながら開発を進めます。チームで作業量を共有しながら進めるため、変化への対応力が高いのが特徴です。

おすすめ

IT業界への就活を始めよう

エンジニア就活に無料登録しよう

IT・SE志望の就活生を専門エージェントがサポート。
求人紹介から面接対策まで、すべて無料で利用できます。
編集後記

編集後記

ウォーターフォールとアジャイル、どちらの手法も実際の現場で使われている大切な知識です。
志望企業の開発スタイルを事前に調べておくと、面接でのアピールにもつながりますよ。
エンジニア就活

編集者

エンジニア就活

ITエンジニアを目指す就活生に向けて、求人情報・選考ノウハウ・業界研究など実践的なコンテンツを届けています。
就活生の疑問や不安に寄り添いながら、日々コンテンツを更新しています。

オススメ記事一覧

  • SEはなぜ「きつい」?メンタル不調を招く要因とホワイト企業の見極め方

    SEはなぜ「きつい」?メンタル不調を招く要因とホワイト企業の見極め方

    詳しく見る
  • 金融系(銀行系)SEの仕事内容・年収・やりがい

    金融系(銀行系)SEの仕事内容・年収・やりがい

    詳しく見る
  • 学生のうちから狙える「ITエンジニアがとるべき資格」まとめ

    学生のうちから狙える「ITエンジニアがとるべき資格」まとめ

    詳しく見る
  • 客先常駐「やめとけ」の実態とは?エンジニア志望が知るべきメリット・デメリット

    客先常駐「やめとけ」の実態とは?エンジニア志望が知るべきメリット・デメリット

    詳しく見る
  • カスタマーエンジニアとは。仕事内容や魅力、やりがいや年収

    カスタマーエンジニアとは。仕事内容や魅力、やりがいや年収

    詳しく見る
  • 就活生なら知っておきたいAI(人工知能)の基礎知識

    就活生なら知っておきたいAI(人工知能)の基礎知識

    詳しく見る
  • SEという職業に求められる資質とは。業務改善プロセスから探る

    SEという職業に求められる資質とは。業務改善プロセスから探る

    詳しく見る
  • RPA (ロボティクス・プロセス・オートメーション)とは【就活で知っておきたいIT用語】

    RPA (ロボティクス・プロセス・オートメーション)とは【就活で知っておきたいIT用語】

    詳しく見る
もっと見る
完全無料!

1で登録完了!

エンジニアの仕事・年収や選考ノウハウ記事が読めるほか、
会員にはプログラミング講習やES・面接対策などリアルな無料サポートも充実。
ここだけの求人情報も多数。

今すぐ新規会員登録

会員登録はこちら(無料)

エンジニア就活に登録して
ワンランク上の就活を始めよう!

「エンジニア就活」に会員登録をすると、求人情報への応募ができるほか、便利な機能や就職、就活支援サービスを利用することができます。

登録はこちらから