[システム開発] アジャイル、スクラム、ウォーターフォール
Cloud システム開発
Published : 2020-12-24   Lastmod : 2020-12-24

アジャイルの特徴とは?

アジャイル(Agile)とは、日本語に訳すと素早い、機敏なという意味合いがあり、システム構築であったり、ソフトウェア開発をする際に用いるプロジェクト開発の手法の1つです。アジャイルの特徴ですが、それは従来の手法に比べるとかなり開発期間を短縮することができるという点になります。そのことから、素早いということでアジャイルと名付けられたのです。アジャイルは、短期間で繰り返しテストを行い、スピード感を持って開発を進めていくという手法になります。アジャイルですが、ソフトウェア開発、アプリ開発など、開発中で仕様変更や新しい機能が追加される確率が高いプロジェクトに適しているのです。

アジャイルの大きな特徴として、1週間~4週間といった短い期間の中で機能性を高め装備を追加していく開発プロセスだという点になります。アジャイル開発は、「動くソフトウェア」、「顧客との協調」「変化への対応」を重視しているのです。従来のウォーターフォール開発だと変化への対応にうまく対応できなかったのですが、アジャイル開発はウォーターフォール開発とは違い、変化にしっかりと対応できます。顧客が求めるもの、必要なものだけを作り提供することができるのがアジャイル開発です。さらに、アジャイル開発では個人との対話を重視しているため、開発チームのメンバーは全員同じ場所で作業を行うのが基本です。顧客の要件要望に優先順位をつけ重要な機能を決め、機能ごとに設計やコーディング、テストを行い動くソフトウェアを作り上げます。

アジャイル開発ではソフトウェアの計画段階では特に厳密な仕様を決めることなく、おおよその仕様、要求だけを決めておきます。なぜなら、開発を進めていく場合、途中で仕様の変更があることは当たり前なためです。アジャイル開発ではもし途中で仕様の変更があってもそれに対応することができるため、比較的容易に顧客ニーズに応えられます。そして、おおよその仕様と要求を決定すれば、イテレーション(iteration)と言われるサイクルを繰り返し行い開発を進めていきます。イテレーションは反復という意味合いがあり、開発をいくつかの過程に分け、計画→設計→実装→テストと進めていき、機能のリリースを繰り返すのです。イテレーションは1週間~2週間ごとがに行うのが一般的であり、イテレーションごとに毎回新しい機能をリリースします。

スクラムの特徴とは?

スクラムとは、アジャイル開発の手法の1つです。ワールドカップでも盛り上がったラグビーに精通している方であればご存じだと思いますが、スクラムは仲間同士で肩を組み合いチームが一丸となりぶつかり合うフォーメーションのことを言います。その名前の通り、スクラムは開発チーム間のコミュニケーションを非常に重視していることが特徴になります。スクラムはメンバーが計画を立案してイテレーションごとに開発の進行に問題、不具合がないか、制作物が正常に動作しているのかを精査していきます。ですので、開発メンバー同士のコニュニケーションがとても重要となり、もしコミュニケーションがしっかりとできていなければ、期間内に制作物をリリースできなかったり、リリースした機能が正常に作動しなかったりと、さまざまな問題が生じる可能性が高まります。そのため、チーム全員がしっかりと協力し開発を進めることが必要になるのです。

スクラム開発ではアジャイル開発の自由さを守りつつも、プロジェクトの状況、進行具合に問題がないか、メンバー同士でコミュニケーションが取れて毎日確認し合い制作物が正しく機能しているかなど、コミュニケーションを重視している点が特徴になります。メンバーそれぞれがその日にこなすべき仕事をちゃんと認識して、課題を解決するのためにお互いが助け合うことを目的としているのです。

そして、顧客の要望に優先順位をつけた「プロダクトバックログ」を作りメンバー同士が共有することで、仕様変更の要求が追加がされた場合でも、どれを優先しリリースすれば良いかの判断を素早く理解できます。スクラム開発では、テスト駆動開発(TDD)や継続的インテグレーション(CI)といった他の開発手法と組み合わせて進めていきます。

ウォーターフォールの特徴とは?

ウォーターフォール開発の特徴として、工程分割タイプを採用し、工程を企画、設計、実装、テストに分割して開発を進めていくことです。ソフトウェア開発を例に出すと、開発当初の企画の段階で、ウォーターフォールは対象のソフトウェアの機能をすべて決定します。そして、企画、設計、実装、テストのそれぞれの工程を決められた技術者が担当することになるのです。前の工程でドキュメントを作成して、次の工程へ引き継ぐことになります。ウォーターフォール開発は、すべての工程が完了した後に、ようやくソフトウェアを利用することができます。アジャイル開発との違いは、アジャイル開発では開発当初に綿密な仕様を決めませんが、ウォーターフォール開発では開発当初に綿密な仕様を決定する点が違います。

アジャイルのメリット

アジャイル開発のメリットは以下の点になります。

  • 不具合があったときに戻る工数が少ない
  • 素早い開発が実現できる
  • 仕様の変更・顧客の要望にしっかりと対応できる

これらが、アジャイル開発のメリットになります。 アジャイル開発の1つ目のメリットとして、不具合があったときに戻る工数が少ないため、それだけ手間を大きく省けるのがメリットです。従来の開発手法であるウォーターフォールでは最初に決めた設計や計画を重視していたこともあり、トラブルが発生した箇所によっては戻る工数がとても大きく、時間やコストが非常にかかるという問題がありました。 ですが、アジャイル開発であれば、小さな単位で計画、設計、実装、テストを繰り返し行うので、テストで問題が発生しても1つのイテレーション内を戻るだけの工数で済むのです。

そして、アジャイル開発の2つ目のメリットは、素早い開発が実現できるという点です。その名の通り、素早い、機敏なという意味を持つアジャイル開発なので、スムーズな開発でウォーターフォール開発よりも短期間の開発でリリースすることができます。そのため、コスト面を考慮してもアジャイル開発はメリットを実感できるでしょう。アジャイル開発はアプリ開発に最適です。

アジャイル開発の3つ目のメリットは、仕様の変更・顧客の要望にしっかりと対応できる点です。従来の手法ウォーターフォール開発では顧客の要望、仕様の変更に素早く対応できませんでしたが、アジャイルではスムーズに顧客の要望、仕様の変更に対応できるのがメリットになります。

アジャイルのデメリット

アジャイル開発のデメリットは下記になります。

  • 最初に厳密な仕様を決めないことで開発の方向性がブレやすい
  • チーム内での毎日のコミュニケーションが必須となる
  • スケジュールや進捗具合が把握しづらい

これらが、アジャイル開発のデメリットになります。 アジャイル開発の1つ目のデメリットですが、最初に厳密な仕様を決めないことで開発の方向性がブレやすいという点です。ウォーターフォール開発では開発初期に厳密な仕様を決めて進めていきますが、アジャイル開発はウォーターフォールとは違い、厳密な仕様を決めずに進めます。そのため、開発の方向性がブレやすいのがデメリットとなるでしょう。

アジャイル開発の2つ目のデメリットは、チーム内での毎日のコミュニケーションが必須となるという点です。顧客との対話だけでなく、開発チーム内での対話も重視しているため、コミュニケーションを仲間と取って開発を進めるのが苦手な人はデメリットを感じてしまうかもしれません。

そして、アジャイル開発の3つ目のデメリットは、スケジュールや進捗具合が把握しずらいという点になります。アジャイル開発は計画を詳細に決めないため、スケジュールや進捗状況が把握しづらく、チームごとに小単位で開発を繰り返すので全体を把握するのが難しく、気がついたときには納期に間に合わなかったという可能性もあるのがデメリットです。

スクラムのメリット

スクラム開発のメリットとして、以下の点が挙げられます。

  • 早期にリリースすることができる
  • 早期に顧客からのフィードバックを得ることができる
  • 変化に柔軟に対応することができる

これらが、スクラム開発のメリットとなります。 まずスクラム開発の1つ目のメリットとして、早期にリリースすることができることです。スプリントごとに動作するプロダクトが作られるので、リリースに必要な機能が出揃った段階でリリースすることができます。そのため、完成を待たずして顧客にプロダクトの一部を提供することが可能なのがメリットです。

スクラム開発の2つ目のメリットは、早期に顧客からのフィードバックを得ることができる点になります。スクラム開発は短期間で動作するプロダクトを作成することができるので、定期的に顧客からフィードバックが得られます。これにより、開発最終段階での顧客とのトラブル、ミスマッチを防ぐことが可能です。

そして、スクラム開発の3つ目のメリットは、変化に柔軟に対応することができる点です。スプリントごとに要件を見直し方向性を調整することができることもあり、仕様の変更や機能の追加への対応が柔軟に行えるのがメリットとなります。しかし、仕様の変更、要望に対応ばかりしていると完了するのが困難なため、そこは顧客との対話、調整が必要です。

スクラムのデメリット

スクラム開発のデメリットとして、下記が挙げられます。

  • 習得するのが困難
  • 顧客と協力し合うことが必要
  • 顧客の要望に応えすぎると開発が長引く

これらが、スクラム開発のデメリットになります。 スクラム開発の1つ目のデメリットとして、習得することが困難な点です。ウォーターフォール開発とは違い、移行する際の習得がかなり困難なのがスクラム開発のデメリットです。さらに、チームのメンバー全員がスクラムをしっかりと理解していなければ、プロジェクトが失敗に終わる可能性も高いでしょう。

スクラム開発の2つ目のデメリットは、顧客と協力し合うことが必要な点です。早期にフィードバックを得るために、顧客との協力が必須になります。フィードバックを得られないとスクラムの良さを発揮できないために、しっかり顧客と協力して取り組むことが大切です。

スクラム開発の3つ目のデメリットは、顧客の要望に応えすぎると開発が長引く点です。顧客からの要望にすべて応えようとすると、余分な時間がかかってしまい、長引いてしまう可能性が高いでしょう。そのため、顧客と話し合い、どこまで対応できるかを決めておく必要があります。

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

ウォーターフォール開発のメリットとして、下記が挙げられます。

  • 全体的な計画を立てやすい
  • プロジェクトの進捗管理がしやすい
  • 引継ぎがしやすい

これらが、ウォーターフォール開発のメリットです。 ウォーターフォール開発の1つ目のメリットは、全体的な計画を立てやすい点です。開発のスタート時点で要件を定義して詳細に綿密に決定するため、始めにやるべき事項を洗い出しスケジュールを立てやすいのがメリットになります。

ウォーターフォール開発の2つ目のメリットは、プロジェクトの進捗管理がしやすい点です。ウォーターフォール開発は全体を把握し工程別に作業を分配していくので、プロジェクトの進捗管理がしやすいのです。

ウォーターフォール開発の3つ目のメリットは、引継ぎがしやすい点になります。ウォーターフォール開発は各工程で制作物を完成させてから次の工程に移ります。そのため、参加者が入れ替わっても、開発当初に仕様書が決められているので、それぞれの過程で何をするかが明白で引継ぎがスムーズに行えます。

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

ウォーターフォール開発のデメリットは、以下になります。

  • 仕様の変更が困難
  • テスト段階になるまでフィードバックがもらえない
  • 開発が長くなる

これらが、ウォーターフォール開発のデメリットになります。 ウォーターフォール開発の1つ目のデメリットは、仕様の変更が困難な点です。開発当初に要件を定義しているので、もし進行中に仕様の変更が生じても対応が難しく負担となるのがデメリットとなります。

ウォーターフォール開発の2つ目のデメリットは、テスト段階になるまでフィードバックがもらえない点です。スクラム開発と違ってテスト段階になるまで顧客に制作物を確認してもらえないないため、意見が取り入れにくいのがウォーターフォール開発のデメリットです。

ウォーターフォール開発の3つ目のデメリットは、開発が長くなる点です。顧客からの要望、仕様の変更に柔軟に対応することができないため、ウォーターフォール開発はどうしても開発に時間がかかってしまいます。前の工程で仕上がったものをベースとして開発を進めていくため、1つ前に戻ってやり直すということができないのがデメリットになります。

関連する記事