アジャイルとスクラム、ウォーターフォール|概要・それぞれの違いについて解説!

アジャイルとスクラム、ウォーターフォール|概要・それぞれの違いについて解説!

今の時代はプログラムの開発手法として様々なものが提供されています。学者などが多くの手法を提案して、それらの手法をもとに現場ではプログラムが開発されているケースが大半です。

その開発手法に、「アジャイル」「スクラム」「ウォーターフォール」と呼ばれるものがあります。王道の開発手法ですので皆さんも耳にしたことがあるのではないでしょうか。今回はこれらの開発手法についてどのようなものであり、それぞれにどのような違いがあるのかご説明していきます。

アジャイル、スクラム、ウォーターフォールの概要

アジャイル、スクラム、ウォーターフォールの3つの開発手法の概要をおおまかにまとめると以下の通りです。

アジャイル スクラム ウォーターフォール
概要 小さな単位でプログラム開発をし、それを繰り返す開発手法。 アジャイル開発の方法の一種。スプリントと呼ばれる短く区切られた期間を定義する。 プログラム開発に必要な工程を、上流から順に進めていく開発手法。
手順
  1. 要件定義
  2. 設計
  3. 実装
  4. テスト
  5. 要件定義に戻る

(1~5の繰り返し)

  1. 要件定義
  2. 設計
  3. 実装
  4. テスト
  5. 要件定義に戻る

(1~5の繰り返し)

  1. 要件定義
  2. 設計
  3. 実装
  4. テスト

(工程は繰り返さない)

特徴
  • 手戻りを減らせる
  • 作成文章を減らせる
  • 開発工数を短縮できる
  • 生産性の改善がしやすい
  • スコープクリープが起きる可能性がある
  • 開発手順がシンプルになる
  • 各工程の精度を高められる

アジャイル、スクラム、ウォーターフォールの3つの開発手法の概要をざっくりとおさえたところで、詳細や違いについても以下で解説していきます。

アジャイル開発とは


アジャイル開発は短期間で繰り返しプログラムを開発していく手法です。今までは後ほどご説明するウォーターフォール開発が多く利用されていましたが、現在は徐々にアジャイル開発にシフトしてきています。具体的にアジャイル開発をご説明します。

アジャイル開発の概要

アジャイル開発の「アジャイル」には英語で「機敏」などの意味があります。何と比較して「機敏か」ですが、これは従来の開発手法であるウォーターフォール開発と比較して機敏だと言われています。今までの手法よりも素早く・機敏に開発できる開発手法がアジャイル開発だということです。

ただ、プログラム開発の基本的な流れを確認してみると、一般的なプログラミング開発の流れとは大きな差がありません。具体的にどのような流れであるのか、開発手順は以下のとおりです。

  • 要件定義
  • 設計
  • 実装
  • テスト
  • 要件定義に戻る

一般的なシステム開発と同様にアジャイル開発でも「要件定義」「設計」「実装」「テスト」の順番で作業が進んでいきます。このプログラム開発の流れについて違和感のある人はあまりいないでしょう。今まで開発の経験がある人はこの流れで開発をしてきているはずです。

今までの経験とアジャイル開発が異なるのは、アジャイル開発の場合は要件定義に戻る工程がある点です。一般的なシステム開発すれば要件定義は一回しか実施しませんが、アジャイル開発はテストが終わってから再度要件定義に戻る工程があるのです。

これが意味しているのは、アジャイル開発は小さな単位でプログラム開発をし、それを繰り返す開発手法であるということです。アジャイル開発は一気にすべてを要件定義して設計や実装に進むのではなく、少しずつ要件定義をしてそこに対して設計や実装、テストをします。そして、次の要件に対して要件定義をして再度設計や実装、テストをしていきます。

アジャイル開発の特徴

アジャイル開発の特徴をご紹介します。

手戻りを減らせる

アジャイル開発は少しずつ要件定義からテストまでを繰り返しますので、手戻りが発生しにくい開発手法です。一般的に事前に要件定義をしていても、プログラム開発の工程において手戻りが発生してしまうのは事実です。そのような状態はできる限り避けなければなりませんが、実際の現場ではそのような状況が起きてしまうのです。

しかし、アジャイル開発はご説明したとおり、小さい単位でプログラム開発を繰り返す開発手法です。そのため、最初からプログラムを開発している範囲が少なく手戻りを減らせる可能性も高いのです。開発している部分が限られているため、手戻りが発生しないように開発しやすいわけです。

作成文章を減らせる

アジャイル開発は少しずつ開発を繰り返しますので作成文章を減らせるメリットがあります。要件定義や設計の範囲が広ければそれだけ作成する文章が多くなりますが、少しずつ開発をしますので作成する文章の範囲は狭くなるのです。

もちろん、開発するたびに文章を作成していくと、最終的な文章量は多くなってしまいます。他のシステム開発と同様の文章が必要となるケースは多々あります。とはいえ、一度に開発する文章量が少なくなりますので、文章作成にかかる手間を最小限に抑えられるメリットを生み出します。

開発工数を短縮できる

アジャイル開発は手戻りが少なくなりますので、結果として開発工数を短縮できます。そもそも手戻りがなければ開発工数に変化はありませんが、実体として一般的な開発は手戻りが発生してしまいます。そのため、どの程度の手戻りが発生するかで開発工数が左右されるといっても過言ではありません。

アジャイル開発を利用して手戻りが少なくなれば、それだけ開発工数の短縮が見込めます。そもそも手戻りのない開発をするのが理想的ではあるのですが、そうできない現実を解決しやすくなるのです。

スクラム開発とは

スクラム開発はアジャイル開発の方法の一種です。スクラム開発として独立した開発手法があるのではなく、アジャイル開発を利用する中でスクラム開発と呼ばれる手法が利用されるようになっています。

そのため、基本的な考え方についてはアジャイル開発と大きな差がありません。小さな単位でプログラムの開発を繰り返し行います。具体的にスクラム開発をご説明します。

スクラム開発の概要

冒頭でご説明したとおりスクラム開発はアジャイル開発の方法の一種です。そのため基本的な開発の概要についてはアジャイル開発と大きな差がありません。短期間で効率良くプログラム開発ができるような手法となっています。具体的な開発手順は以下のとおりです。

  • 要件定義
  • 設計
  • 実装
  • テスト
  • 要件定義に戻る

スクラム開発はアジャイル開発の中でも、集められたメンバーのコミュニケーションを重要視します。メンバーが協力してプログラミング開発をすることが求められていて、プロジェクトマネージャーやリーダーの指示を待つような開発手法ではありません。

また、スクラム開発ではスプリントと呼ばれる短く区切られた期間の定義が必要です。この決められた期間の中で決められた開発を済ませるのです。期限を決めて効率よく開発を進めていく手法というわけです。

なお、スプリントの範囲内でタスクに優先順位を決めるなど、効率よく開発が進むような手立てをしなければなりません。この部分の検討についてはメンバーが協力して実施しなければなりません。

スクラム開発の特徴

アジャイル開発の中でもスクラム開発の特徴をご紹介します。

生産性の改善がしやすい

アジャイル開発の中でスクラム開発はメンバーのコミュニケーションを重要視します。結果、メンバーの問題をいち早くキャッチアップできるようになりますので、生産性の改善がしやすいメリットがあります。

メンバーとのコミュニケーションが少なければ、仮に生産性に問題が発生していてもなかなかキャッチアップができません。プロジェクトマネージャーやリーダーができるだけ早くキャッチアップするべきですが、限界があるのです。

しかし、スクラム開発は小さな単位での開発を繰り返しますので、生産性に問題があるとすぐに状況がキャッチアップできます。そして、そのような状況をキャッチアップできればすぐに対策ができますので、結果的に生産性の改善がしやすくなります。

スコープクリープが起きる可能性がある

スクラム開発は開発状況を頻繁にクライアントと共有しながら開発を続けます。何かしら仕様上の誤りがあればそれを修正し新たなプログラムとして作り直します。

これを繰り返していると、プログラムの開発スコープが開発開始時よりも広がってしまうスコープクリープが起こる可能性があります。プログラムの開発スコープが際限なく広がってしまい、開発工数に影響を与えてしまいます。

何も考えずにスクラム開発をしていると、スコープクリープは自然と起こってしまいます。そのため、これを防ぐために開発側は常にスコープ管理をする必要があります。開発工数の肥大化が起こりやすいため、注意しなければならない開発手法なのです。

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

ウォーターフォール開発は一般的なシステム開発の手法です。ウォーターフォールは滝を意味する言葉で、ウォーターフォール開発とは滝のように上から下に工程が流れる開発手法を指します。具体的にウォーターフォール開発をご説明します。

ウォーターフォール開発の概要

上記でも説明したとおりウォーターフォールとは滝を意味しています。この意味から転じて、ウォーターフォール開発は滝のように一連の流れでプログラム開発をする手法としています。アジャイル開発のように開発工程が行き来することはなく、一度終わった工程を基本的に繰り返すことはありません。つまり、以下のような開発手順です。

  • 要件定義
  • 設計
  • 実装
  • テスト

プログラム開発に必要な工程を丁寧に進めていく開発手法となっています。アジャイル開発とは異なりますので要件定義が完了すれば設計の工程に移行し、その後は要件定義の工程には戻りません。滝のように工程は流れていくのです。

もちろん、開発の過程において手戻りが発生する可能性はあります。ウォーターフォール開発においても「逆流」する可能性があるのです。「ウォーターフォール開発であるから全く工程が戻らない」というわけではなく、必要に応じて臨機応変に対応する必要はあります。

ただ、あまりにも「逆流」するとウォーターフォール開発のメリットが薄れてしまいます。そのため、基本的には工程が戻らないと考えておくべきです。

ウォーターフォール開発の特徴

ウォーターフォール開発の特徴をご説明します。

開発手順がシンプルになる

アジャイル開発のように同じ工程を繰り返す作業がありませんので、開発工程がシンプルになるメリットがあります。アジャイル開発は繰り返しが発生するため、開発工程が複雑になってしまう可能性があります。

それに対してウォーターフォール開発は、基本的には終わった工程を繰り返す必要はありません。場合によっては手戻りが発生してしまう可能性はありますが、そのように特別な事情がない限りは繰り返しが発生しないのです。結果、シンプルな開発を実現できます。

各工程の精度を高められる

ウォーターフォール開発は、開発の手順がシンプルになりますので各工程の精度を高められるメリットがあります。くりかえしの工程があるとどうしてもミスが発生してしまう可能性があるのですが、ウォーターフォール開発では繰り返しはなく、工程が承認されてから先に進みます。

つまり、承認されている内容ですので、あとから精度が悪く手戻りが発生する可能性が低いのです。クライアントと合意してしっかりと開発を進められます。現実的には手戻りが発生するケースはあるのですが、理論的には精度が高くなります。

アジャイル開発とスクラム開発、ウォーターフォール開発の違い


ここまでアジャイル開発・スクラム開発・ウォーターフォール開発についてそれぞれご説明しました。そこで続いては、これらの違いについて簡単にまとめていきます。なお、アジャイル開発とスクラム開発は根本的には同じものですので、アジャイル開発とウォーターフォール開発で比較していきます。

開発工程の違い

大きな違いとして、開発工程の流れが挙げられます。アジャイル開発は要件定義からテストまでを小さな単位で繰り返しますが、ウォーターフォール開発では要件定義からテストまでを繰り返さずに一回で終わらせます。

一般的な開発工程はウォーターフォール開発だと思われますので、アジャイル開発の開発工程には慣れない人が多いかもしれません。特にスクラムはチームメンバーが主体となる開発手法ですので、ウォーターフォール開発でプロジェクトマネージャーやリーダーの指示を受けていた人は違いを感じやすいでしょう。

仕事の進め方の違い

アジャイル開発では何度も要件定義をしながら繰り返し設計や開発、テストを行います。要件定義のたびにクライアントと接触しますので、何度も打ち合わせの機会などを設けてもらいながらプロジェクトが進みます。

それに対して、ウォーターフォール開発では要件定義や設計が終わってから、開発に着手します。開発に着手した段階ではクライアントと接触する必要は少なくなってしまい、定期的な報告のみになってしまうとの違いがあります。

クライアントとの接触機会が減ると、それだけ要件のミスや開発のミスに気づく可能性が遅れてしまいます。つまり、クリティカルな影響が出てしまう可能性があるのです。ウォーターフォール開発からアジャイル開発に切り替えると、クライアントとの接触機会が増えますので、クリティカルな影響の発現タイミングに違いが生まれます。

まとめ

アジャイル開発とウォーターフォール開発、そしてアジャイル開発の開発手法であるスクラム開発についてご説明しました。アジャイル開発は現在トレンドの開発手法ですので、どのような開発手法であるのか正しく理解しておきましょう。

アジャイル開発とウォーターフォール開発の大きな違いは、「一気に開発するか少しずつ開発するか」という部分です。アジャイル開発は少しずつ開発しますので、機敏に開発を進め方向転換が可能です。

ただ、アジャイル開発は機敏であるがゆえに、要件が肥大化しやすいなどの問題もあります。特徴を理解することが重要で、一概にアジャイル開発が良いとは言い切れないのです。

登録フォームボタン
登録フォームボタン

SHAREこの記事をシェアする

admin