システム開発

あなたの発注コンシェルジュ

登録者数No.1
フリーダイアル

0120-917-819

営業時間 平日 10:00~19:00

【2019年最新版】ソフトウェア開発の手法4つを徹底解説|メリット・デメリットもあわせて紹介

ノートパソコンを操作する人

更新日:2019年06月07日 | 公開日:2016年07月30日

ソフトウェア開発には手法がいくつかあり、それぞれの手法によって開発計画の進め方は大きく変わります。

現在、ソフトウェア開発の現場で使われている手法は、ウォーターフォール型、アジャイル型、プロトタイプ型、スパイラル型の4つです。

今回はこの4つの手法の特徴について一つずつ解説し、それぞれの手法のメリット・デメリットについても詳しくご紹介します。

ウォーターフォール型とは

ウォーターフォール型は1970年に提唱されたソフトウェアの開発手法です。

全体を「要件定義(計画)」「外部設計」「内部設計」「プログラム設計」「プログラミング」「テスト」の工程に分け、一つの工程が終わったら次の工程に移るという手法でプロジェクトを進めていきます。

一つの工程が終わったら次の工程に進み、原則的に前の工程には戻らないので、それがまるで滝(=ウォーターフォール)の流れのようであることからその名がつけられました。

ウォーターフォール型は容易に後戻りができないような大規模なプロジェクトに適しています。コミュニケーションをとりつつ、各部署の合意を得てから先に進む手法は、日本企業の風土にも馴染みやすく、確実性が求められる現場で採用される手法です。

メリット

ソフトウェア開発の手法の一つであるウォーターフォール型には、次の3つのメリットがあります。

・進捗管理をしやすい
ウォーターフォール型では最初に各工程でやるべきことを決め、何を成果物とするか文書化し、タスクが終了したら承認して次の工程にバトンタッチするので、プロジェクトの進捗管理がしやすいです。また、やるべきことが明確なので人事異動にも強く、計画的にプロジェクトを進めていくにはまたとない手法です。

・導入が容易
ウォーターフォール型は多くの現場で採用されている開発手法なので、ほとんどのエンジニアが経験済です。そのため、方法に関して詳細な説明は必要ではなく、手法そのものの導入が容易でしょう。

・手戻りを最小限にできる
ウォーターフォール型は各工程が終了したら次の工程に進みますが、バトンタッチの時点で前工程については品質確保できていることが前提となるので、基本的にミスや不具合は発生しにくく、手戻りを最小限にすることができます。

デメリット

ウォーターフォール型には多くのメリットがありますが、良いことばかりではありません。多くの現場で採用されている手法ではありますが、デメリットも存在します。

・途中変更の負担が大きい
ウォーターフォール型のソフトウェア開発手法は、最初に仕様や各工程のタスクを決定します。そのため、計画通り実行すれば確実にゴールにたどり着き、手戻りが少ないのは大きなアドバンテージですが、それだけに途中変更が生じたときの負担は大きく、容易に対処できなくなります。
実際にソフトウェア開発現場では、当初想定していなかった要望が途中で出てくることも。その際に手戻りが発生すると、納期の大幅な遅れや予算の水増しが生じてしまうかもしれません。

・ユーザーの意見は反映されにくい
ウォーターフォール型は要件定義から実装まで開発側だけで進めていくので、要件定義、基本設計の時点ではユーザーの要望を取り入れますが、その後はテスト段階までユーザーの意見が反映されることはありません。途中の段階でコミュニケーションをとり、問題があれば少しずつ変えていく、ということが構造的に難しいので、その点はデメリットです。

アジャイル型とは

ウォーターフォール型はリスクの少ない手法ですが、プロジェクト遂行までにある程度の時間がかかり、途中変更が生じたときに負担が大きいという課題もあります。

日進月歩で技術革新が進んでいる現代では、より柔軟でスピード感のある開発手法が求められることも多く、そうしたニーズの中で生まれたソフトウェア開発の手法がアジャイル型です。

アジャイル型は、ソフトウェア開発において「途中変更は当たり前」という前提に立ってプロジェクトを進めます。そのため、最初の要件定義は最小限にとどめて、反復(イテレーション)と呼ばれる小さい単位で設計→実装→テストを細かく繰り返し、プロジェクトを進めていきます。

設計、実装、テストを細かく繰り返すことで、不具合を都度発見しやすくなり、変更要望があっても柔軟に対応可能です。目まぐるしく要望の変化する現場では、とりわけ重宝する手法でしょう。

メリット

アジャイル型には次の3つのメリットがあります。

・ユーザーの要望を取り入れやすい
アジャイル型は小単位ごとにテストを繰り返すので、ユーザーの要望も各単位のテスト段階で反映させることが可能です。ウォーターフォール型では開発の全工程が終了しないとユーザーの意見は反映されませんが、アジャイル型は開発段階で要望を聞き、必要であれば仕様の変更、追加も行うことができます。

・修正工数が少ない
アジャイル型は小単位でテストを繰り返すので、ミスがあってもすぐに発見でき、原因究明も簡単です。ウォーターフォール型のように手戻りが難しい手法では、一たびミスがあると原因究明に多大な労力とコストがかかるのが悩みどころ。一方アジャイル型なら、万が一ミスがあっても修正工数が少ないので、すぐに対応できます。

・短時間で納品できる
ウォーターフォール型は最初に要件定義をして全体設計をしてから着手するので、開発にどうしても時間がかかりがちです。しかし、アジャイル型は当初計画を厳密に行わないので、より短時間で納品することが可能です。

デメリット

柔軟性とスピード感を併せ持ったアジャイル型ですが、もちろんデメリットもあります。

・進捗管理がしにくい
アジャイル型は最初に厳密に計画を立てないので、変化には強い一方プロジェクトの進捗管理が困難です。ウォーターフォール型に比べてマネジメントコントロールが難しいので、管理者には経験と力量、コミュニケーション能力が求めらるでしょう。

・方向性がブレやすい
アジャイル型は最初に詳細を決めない分、方向性が途中でブレやすいという問題も抱えています。開発途中でより良いアイデアが浮かんで変更・追加をしていくうちに、当初の予定とは違うものになったり、不要な開発まですることも。
そうならないためには、プロジェクトの目的を明確にし、企画はしっかり詰めて、システム設計は徹底しておくことが肝心です。そうすることでプロジェクトの迷走を防ぐことができるでしょう。また、意思疎通がしやすいようにアイデアを文書化しておくことも有効です。

プロトタイプ型とは

プロトタイプ型は早い段階から簡単な試作機を作り、最初に製品をイメージできるようにして、全体の開発工数を減らす開発手法です。

簡易版とは言え、ユーザーは先に実際に動くものを見せてもらえるので、当初予想していなかった要求をその時点で明確にすることができます。また、当初の要求事項で不要だと判断するものがあればカットすることも可能です。

また、プロトタイプ型には時間と費用を最小限にするラピッド・プロトタイピングと、継続的に改良を重ねてプロジェクトを進めていく進化的プロトタイピングの2つがあり、プロジェクトの内容に合わせて最適な方を選択します。

メリット

プロトタイプ型には次の3つのメリットがあります。

・柔軟に対応できる
プロトタイプ型は最初に簡易版のプロトタイプを作成しますが、試作の機能は簡単に変更、追加ができるので、必要があれば適宜修正することが可能です。気に入ったら使う、ダメならやめる、といった取捨選択が柔軟に行うことができます。

・ユーザーがイメージしやすい
プロトタイプ型は早い段階で試作版を提供できるので、ユーザーがイメージしやすいのも利点です。ユーザー体験が素晴らしいものであるほど、プロジェクトの成功率は増加します。操作性、分かりやすさ、使う楽しさなど、極めて感覚的な部分のフィードバックを得られるのは大きなアドバンテージでしょう。

・大きな手戻りを防げる
プロトタイプは試作機を実際にユーザーに使ってもらえるので、開発者とユーザーの認識のずれを埋めることができます。また技術的な問題点、課題も早く発見できるので、大きな手戻りを事前に防ぐことも可能です。

デメリット

プロトタイプ型のデメリットは次の2つです。

当初の目的と違うものになる恐れ
プロトタイプ型は機能の変更・追加が柔軟にできるので、ユーザーの意見を反映しやすいのですが、局所的にどんどん変更をしていくことで、最終的に当初の目的とは違うものとなり、組織および業務全体に対して不適合なシステムになってしまう恐れがあります。また、局所的な変更をしすぎて、メンテナンスが難しく、却って柔軟性を失う結果になることもあります。

・作業計画や作業見積りが困難
プロトタイプ型はユーザーの意見を取り入れながらプロジェクトを進めるので、自ずと仕様変更なども多くなります。よって、事前に完璧な作業計画を立てることは困難でしょう。また、場合によってはプロトタイプの作成に時間がかかり、プロジェクト完遂までに多大な時間を要することもあります。当然、工程、工期が定まらないと作業見積も出せないので、開発全体のプランが不透明な点はデメリットです。

スパイラル型とは

スパイラル型は小さな単位で設計、実装、テスト、プロトタイプ(試作)を繰り返していくことでゴールを目指す開発手法です。

小単位の反復で設計からテストまで行うのはアジャイル型に近いですが、まだ品質が保証されていない段階で試作をユーザーに提供するやり方はプロトタイプ型を踏襲しており、その両方のメリットを取り入れ、最終的にクオリティの高い製品を作ることを目指します。

スパイラル型は早い段階からユーザーにプロトタイプを提供できるので、顧客の要望に対応しやすい点で支持されています。トップダウン設計とボトムアップ設計の両方の良さを活かした手法で、大規模なプロジェクトで活用されることが多いようです。

メリット

スパイラル型には次の3つのメリットがあります。

・スケジュール変更が容易
スパイラル型はアジャイル型同様、最初に詳細を決めず、小単位ごとに計画を立てます。そのため、スケジュールの変更が容易なのが大きなメリットです。長期的な計画は時として臨機応変な対応の足かせになることも多いので、目まぐるしく変更がでる現場では重宝するでしょう。

・仕様変更に対応できる
スパイラル型は仕様変更にも強く、ユーザーからの変更の要望が出ても柔軟に対応することが可能です。プロトタイプを実際に見せると、ユーザーもイメージがしやすくなります。よって仕様変更の要望を出しやすく、開発側もその都度対処することが可能です。

・手戻りを最小限にできる
スパイラル型は小単位ごとにプロトタイプを提供するので、ユーザーからのフィードバックをその都度もらうことができます。また不具合にもいち早く気がつけるので修正も簡単です。工期の延長も最小限で抑えられるでしょう。ウォーターフォール型のように不具合が出たら手戻りが難しい手法ではないので、やり直しの負担を大きくしたくない場合におすすめです。

デメリット

スパイラル型のデメリットは次の3点です。

・プロジェクトの全体像が把握しにくい
スパイラル型はアジャイル型と同様、初期の段階では計画を詰めないので、もともとプロジェクトの全体像を把握しにくい傾向にあります。全体の見極めがないうちに顧客の要望に応えていると、当初の目的よりシステムが肥大化し、業務とかけ離れたものが出来てしまう恐れがあります。そのため、進捗状況の管理には十分な注意が必要です。

・期間内に出来上がらない恐れがある
設計とプロトタイピングを繰り返すことで、ユーザーの要望を取り入れられる点はメリットです。一方、ユーザーレビュー・評価によってどこまでもシステム改変をしていると、期間内にできあがらない恐れがあります。最悪リリースが期限に間に合わなくなることもあるので、その点を十分気をつけながら計画的に進める必要があるでしょう。

・開発側の負担が重くなる
スパイラル型はループの回数を増やすほどコストは増大します。また、ユーザーは何度でも無料修正を依頼してくる恐れもあり、開発側の負担が重くなる可能性があります。

【まとめ】ソフトウェア開発の手法を理解し、開発を成功に収めよう

ソフトウェア開発は、それぞれの手法の特徴をよく理解して、自社に最適の方法を選んで開発を実行する必要があります。

ウォーターフォール型は進捗管理をしやすく、導入が容易で、手戻りを最小限にすることが可能です。一方で、途中変更の負担が大きいので、バグ発生時の対応や開発途中に発生したユーザーニーズの反映には向いていません。

アジャイル型は計画を柔軟に変更できるので、ユーザーの要望を取り入れやすいですが、進捗管理がしにくく、方向性が途中でブレる恐れがあります。

プロトタイプ型は簡易版のプロトタイプを作成するのでユーザーがイメージしやすく、要望にも柔軟に対応することができます。また、大きな手戻りのリスクもありません。しかし、ユーザーの要望を聞き入れているうちに、当初の目的と違うものになる恐れはあります。

スパイラル型はアジャイル型同様、スケジュール変更、仕様変更が容易ですが、開発者側の負担が重く、丁寧に対応をしていると納期をオーバーすることもあるでしょう。

このようにそれぞれの手法にはメリット・デメリットがあり、どれが良いかは会社によって異なります。ソフトウェア開発の際にはそれぞれの手法の特徴をよく捉えて、ぜひ自社に一番合う方法を選んでください。

“システム開発”のことなら
コンシェルジュに無料で相談!

お急ぎの方はこちら

0120-917-819

営業時間 平日 10:00~19:00

Kadono