いまさら聞けない! ウォーターフォール開発、アジャイル開発、ハイブリッド開発手法の違い
見出し画像

いまさら聞けない! ウォーターフォール開発、アジャイル開発、ハイブリッド開発手法の違い

ソフトウェアやITシステムの業務に関わっていなくても、「アジャイル開発」「ウォーターフォール開発」という言葉を目にしたことがあるのではないでしょうか。今回は、2つの開発手法の基本を解説するとともに、「ハイブリッド開発」もご紹介し、それぞれの開発手法でどのような価値を得られるのかをカンタンにご説明します。


そもそも「何を」開発するの?

ここでいう開発とは、ソフトウェアそのもの、もしくはソフトウェアを含むシステムを、新たに作る、古いものを刷新するといった業務を指します。どちらにせよ今までなかったモノを作り上げるわけです。

1970年代、コンピュータが企業の業務を支援するようになったころ、ソフトウェアは品質や信頼性、操作性が評価の対象でした。まともに動くのかどうかが、重要な点だったのです。

その後、ソフトウェアの信頼性は大きく向上し、インターネットが登場するころにはソフトウェアを含むITシステムは支援を超えて、ビジネス戦略の要になってきました。そのため素早く戦力をアップしたいと考えた企業は、ソフトウェアの開発スピードにも注目するようになりました。

最近では、品質、コスト、納期の目標を達成するより、いかにビジネスに価値をもたらすかが、ソフトウェア開発の成功を左右するとまで言われています。それではその開発手法について見ていきましょう。


画像2

はじまったら“一直線”な「ウォーターフォール開発」

ウォーターフォール(waterfall)とは「滝」に由来します。ウォーターフォール開発は、ソフトウェア開発の多様な工程を、最初から順番に、後戻りせず実施していく様子を、水が上から落ちてくる滝に例えた開発手法です。ウォーターフォール開発のやり方そのものは古くからあり、以下のような工程になっています。

1:要件定義/希望する機能や性能を検討し、決定します。重要なのは、望まれる機能は何で、開発側が実現できる範囲はどこまでか、ということをはっきりさせることです。

2:概要設計/望みを満たす具体的な方法を決定します。このとき決まったことを基本設計書として、クライアントと開発側で交わすこともあります。

3:詳細設計/開発者(プログラマー)に向けて、何を開発するかを指示します。開発者に対しては詳細設計書を提供します。

4:実装/開発者が詳細設計書に基づきソフトウェアをプログラミングします。

5:テスト/作成したソフトウェアが仕様書通りに動作するか検証します。

6:リリース・運用/ソフトウェアが完成したら、それを使ったシステムを運用していきます。

大まかにはこのような工程を上から順番に行い、基本的に後戻りしない、クライアントは工程の最初と最後に参加する、といった点がウォーターフォール開発の特徴です。

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

ウォーターフォール開発やアジャイル開発のメリットやデメリット、それぞれに向いている開発は何か、見てみましょう。

●ウォーターフォール開発の場合
メリット:スケジュールやコストなどを管理しやすい、開発途中での人員交換にも対応しやすい

デメリット:開発が始まった後の仕様変更や追加が難しい、もしくは工数がかかる

ウォーターフォール開発に向いているプロダクト:安定して稼働していたシステムを再構築するといった、開発途中で仕様変更が発生しにくいプロダクト開発に向いています。また金融や管理系といった情報の正確さが重要なシステムでは、厳密な定義が必須で、柔軟な仕様変更のニーズはありません。これらのケースでは、複数回開発サイクルを回すアジャイル開発はかえって非効率になります。

途中で何度も見直す「アジャイル開発」

画像2

アジャイル(agile)とは「速い、すばしこい」といった意味の言葉を由来にしています。アジャイル開発は、ウォーターフォール開発に比べ、短い期間で開発を繰り返し、途中での仕様変更に柔軟に対応できるのが特徴です。

アジャイル開発は、ソフトウェアを速く開発したい、開発している間に希望する要件が変わることもある、といった使う側(企業)の要望を意識した手法です。2001年にソフトウェア開発の有識者が集まり発表した「アジャイルソフトウェア開発宣言」(*1)が、世の中に広まるきっかけだと言われています。「計画に従うことよりも変化への対応を」といったメッセージを掲げて、速くて柔軟性のある開発を目指しました。

*1:参照先: 

具体的には、ソフトウェアの多様な機能をいくつかの単位に分け、単位ごとに開発サイクル(イテレーション)を設定し、このサイクルを何度も繰り返すことで、完成を目指します。ウォーターフォール開発の場合は、要求を出す立場の人はリリースの直前に参加して、良い悪いといった判断をしますが、アジャイル開発の場合は、複数ある開発サイクルにおいて、その度に参加し意見を述べる必要があります。

全部作ってしまってから指摘が入るより、途中で意見をもらえれば、修正や後戻りの工数も少なくなるので、全体の効率が良くなり結果として速くゴールに達するのがアジャイル開発の特徴です。小さな失敗を繰り返して改善をしながら、品質を高めていくやり方とも言えます。

アジャイル開発の代表的な手法の1つに「スクラム開発」があります。スクラム(Scrum)開発とは、両チームが姿勢を低くして押し合う、ラグビーでよく見かけるスクラムが語源となっています。

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

メリット:開発のスピードが速い、仕様変更への対応がスムース、変化する要求に応えられる

デメリット:仕様変更に柔軟に応じるため開発の方向性や目的がぶれやすい。変更ありきなので進捗をコントロールしづらく、納期が読めない場合もある。

アジャイル開発に向いているプロダクト:

技術革新が目覚ましいモバイル、研究分野での開発、仕様の変更が発生しやすいWebサービスなどのプロダクト開発に向いています。またデジタル技術の進化やユーザー動向、市場変化に合わせてビジネスを変革するDX(デジタルトランスフォーメーション)でも、アジャイル開発は適しています。

一般的なアジャイル開発では、イテレーションを設けたうえで優先度の高い要件から開発を進めていきます。一方、スクラム開発はアジャイル開発の特徴をとり入れつつ、高い頻度でミーティングや進捗会議を開催することで、開発者同士のコミュニケーションの活発化を促します。これにより、素早く価値の高い製品をリリースするのです。ちなみに、スクラム開発では、開発の設計、実施、評価、改善というサイクルをイテレーションではなく「スプリント」と呼び、これを繰り返して開発を進めます。

両者を比べた時、大きな違いは、ウォーターフォール開発は「最初の要件定義で決まった仕様を100%満たす」ことを優先し、アジャイル開発は「開発―テストを繰り返しながら完成度を限りなく高めていく」ことと言えるでしょう。

先に述べたように、現在のトレンドであるDXを推進するうえではスピード感が重視されるため、アジャイル開発が最適です。とはいえ、クライアントの業界や業務の特性上、ウォーターフォール開発の方がフィットするということもあります。無理のない範囲でアジャイル開発を取り入れて作業を回していくのが良いでしょう。

ウォーターフォールとアジャイルを“いいとこ取り”する「ハイブリッド開発」とは?

ハイブリッド(Hybrid)とは「混成物、混成部品から成るもの」という意味で、ここではウォーターフォール開発とアジャイル開発の良いところを合わせた手法を言います。

例えば、プロダクトの仕様や全体の管理を事前に明確にしたいが、途中で仕様変更や機能追加が予想される場合は、要件定義や概要設計はウォーターフォール開発で行い、実際の開発がはじまったらアジャイル開発で行うといった手法が考えられます。また最初はアジャイル開発、次はウォーターフォール開発といった形で開発を進めるケースもあります。これをハイブリッド開発と呼びます。

より具体的に考えてみましょう。クライアントの要求がまだはっきりしていない、技術的な課題が不明確などの理由で、要件定義や設計仕様を固めきれない場合、最初はアジャイル開発で小さな要求を満たす機能の開発から始め、定義や仕様がきっちり決まってきた段階でウォーターフォール開発に切り替えて、後戻りせず最後まで作りきるやり方です。またウォーターフォール開発が必須だが、変化に柔軟に対応していきながら開発を進めていきたい場合、大きなマイルストンはウォーターフォール的に管理し、開発自体はアジャイルに進めていくなど、まさに”いいとこ取り”ができるのがハイブリッド開発です。


このように開発手法にもアンテナを張っておくとおもしろいですよ。これからも、トレンドとして理解しておいて損はない情報を発信していきますね!


この記事が参加している募集

note新エディタ

最新情報はTwitterでも発信しております!ぜひのぞいてみてくださいね。

スキ、嬉しいです!ぜひ他の記事もご覧になってくださいね〜
SlackやTrelloなどの公式パートナーとしてさまざまなSaaSツールの導入支援を提供するリックソフトが、自慢の技術力やノウハウを発揮し、気になるITトレンドを分かりやすく解説するnoteです。あなたの「ITってよく分からない」を解消する記事をお届けします!