スパイラル開発とは?概要やメリット・デメリットを解説します

スパイラル開発とは?概要やメリット・デメリットを解説します

「スパイラル開発」とは、システム開発のステップをいくつかの機能別に区切り、重要な機能から構築することで開発工数の効率化を目指す開発手法のことです。

システム開発手法では「ウォーターフォール開発」や「アジャイル開発」など有名で広く知られています。しかしそれほどメジャーではない「スパイラル開発」については、名前は知っているものの具体的にどのような開発手法か分からない方も多いのではないでしょうか。

実際にプロジェクトで採用する機会は少ないにしても、スパイラル開発についても知識としては理解しておきたいところ。そこで、今回はスパイラル開発について、その概要、特徴、メリット・デメリットなどを解説します。

スパイラル開発の概要

スパイラル開発の特徴

スパイラル開発とは、ソフトウェア開発におけるプロジェクト開発手法の一種で、作成するシステムをいくつかの機能別(サブシステム)に分け、それぞれの機能ごとにユーザー・クライアントからのレビューを受けながら開発を進めていく手法です。

開発チームや案件によっても異なりますが、スパイラルモデルの開発工程は主に「要件定義」「設計」「開発」「テスト」「評価・改善」のステップに分けられ、これを複数回繰り返すことでプロダクトの完成を目指します。

上記の工程を繰り返しながらプロジェクトを進め、プロダクトの完成度を上げていくので、その繰り返しの様子を螺旋に例えてスパイラルという名が付けられました。この用語は、1986年に米国のソフトウェア開発者であるBarry Boehm氏によって発表された論文で初めて紹介され、現在でもソフトウェア開発の業界において開発手法のひとつとして知られています。

スパイラル開発の流れ

先述したように、スパイラルモデルの開発工程には「要件定義」「設計」「開発・テスト」「評価」というステップがあり、これを繰り返すこととなります。

以下で具体的にスパイラル開発の開発工程を見ていきましょう。

要件定義

まずは開発するシステム・ソフトウェアに必要な要件を定めるフェーズがあります。開発するシステムの目的や用途から、盛り込むべき機能を洗い出し、それらを仕様書にまとめていきます。

設計

次のステージでは、上記で決定された事項と調査結果を元に、最初に開発する機能を選び、その機能の技術的な設計要件を具体化して設計仕様書を作成していくことになります。

スパイラル開発では、この設計段階ですべての機能について設計しないことがポイントで、まずは優先度が高い機能のみを作成します。リリース前につくられるソフトは「プロトタイプ」と呼ばれます。

開発・テスト

前工程で作成した設計を元に、実際にプログラムを開発します。これは一般的なソフトウェア開発と同じく、チームごとにシステムを機能や画面ごとなどのさらに細かい単位に分けて開発を進めて、その後に各プログラムを統合するというフローになることが多いです。

また、開発後には動作確認のためのテストをおこないます。

評価・改善

このフェーズでは、作成したプロトタイプに対して、評価・レビューをします。プロダクトはクライアントにも共有され、エラーや認識のずれについてフィードバックを受けることとなります。これによって、開発者は次のスパイラルに入る前に改善すべき点を理解することができます。また、スケジュールのずれやコスト超過などのリスクについても確認し合うことになるでしょう。

このフェーズが終わると次のスパイラルに入り、プロダクトが完成するまで上記のサイクルが繰り返されます。このサイクルによって、システムを完成へと近づけていくことが、スパイラル開発の最大の特徴です。また、プロダクトの完成後は本番環境へのリリースと運用・保守フェーズがあります。

スパイラル開発のメリット・デメリット

上記のようなフローで進行されるスパイラル開発ですが、どのようなメリット・デメリットがあるのでしょうか。

スパイラル開発により期待されるメリット

スケジュールや仕様の変更に対応しやすい

スパイラル開発では、最初のうちはプロダクト全体の設計はおこなわず、作成する機能ごとに計画を立てます。そのため、スケジュールの変更が比較的容易にできる点がメリットです。

また、スパイラル開発は仕様変更にも対応しやすい開発手法です。スパイラル開発では評価フェーズで試作機をクライアントに共有するので、そのフィードバックを受ける際に仕様の変更を伝えられることもありますが、作成する機能ごとに計画を立てているので、途中で差し込まれた要件や機能も柔軟に受け入れることができます。

その結果として、クライアントのニーズを適切に反映した高品質なプロダクトの開発にもつながるでしょう。スパイラル開発では比較的品質が高いプロダクトをリリースできる点も特徴です。

手戻りを最小限にできる

スパイラル開発では、本番に近い機能・デザインの試作機が早い段階で作られるので、完成品のイメージを共有しやすくなり、プロダクトに関する開発者とクライアントの間の認識のずれが回避できます。また、プロトタイプをつくり、実際のユースケースを想定しながら操作していると、不具合にも気づきやすくなります。

このように、早い段階でフィードバックを受けたり、ミスを認識したりすることができるので、スパイラルごとに修正ができ、大きな手戻りが発生しにくいです。

スパイラル開発におけるデメリットやリスク

プロジェクトの全体像が把握しにくく、プロジェクト期間が長引くリスクがある

スパイラル開発では、毎回そのスパイラルで作成する機能以上には設計を詰めません。そのため、プロジェクトの全体像を把握しにくく、プロジェクトが進むにつれて必要な作業量(スパイラルをまわす回数)が多いことが判明し、開発コストが事前の見込み以上になってしまうことがあります。

また、大規模なシステム開発のようにステークホルダーが多い案件でもその長期化のリスクがあります。この原因としては、プロジェクトに関わる人が多くクライアントが試作機のチェックや仕様を確認する際に時間がかかること、想定以上のフィードバックを受けて作業量が増加してしまうことなどが挙げられます。

試作機の開発コストが大きい

スパイラル開発では、試作機の開発コストが大きくなる点もデメリットです。プロトタイプとはいえ、クライアントから評価を受けるためには実際にきちんと動作をする機能を開発する必要があり、その工数は決して小さくありません。

スパイラルごとに前回のスパイラルで指摘された課題の修正をおこない、さらに新たな機能の開発をする必要があるうえに、案件によってはクライアントから何度も修正の依頼を受けるおそれもあるでしょう。そのため、開発者の負担は想定を超えて大きくなる可能性があります。

スパイラル開発に適した案件とは

スパイラル開発の特徴やメリット・デメリットを踏まえると、以下のような特性を持つ案件にはスパイラル開発が適していると言えるかもしれません。

品質重視の比較的大規模な案件

スパイラル開発は、ウォーターフォール開発の「設計→実装→テスト」というプロダクト開発の計画性を残しながらも、そのデメリットである仕様ミスの発見の遅れや修正コストの大きさをカバーするべく、開発ループの概念を取り入れた手法です。

そのため、ウォーターフォール開発と同様に、ある程度の時間をかけてでも品質を担保したい大規模なシステム開発に向いています。

ただし先述したように、大規模なプロジェクトであるほど、プロジェクトの全体像が把握しにくく、プロジェクト期間が不明瞭になってしまうという問題が起きやすくなるリスクもあるので、この点については十分検討を重ねる必要があるでしょう。

クライアントがシステム開発に慣れていない案件

クライアントがシステム開発の発注に慣れていない場合、プロトタイプを共有しながらプロジェクトを進めることができるスパイラル開発が適している可能性があります。完成品のイメージを持ってもらうことで、具体的に要件を引き出せるようになるでしょう。

一方でこちらの場合は、クライアントが慣れていない分だけ後から追加的に要件が増えて、結果として試作機の開発コストが増大してしまうリスクが考えられます。そのため、この問題を回避する方法を考えておく必要があります。

まとめ

上記で検討したように、使いどころがやや難しく、近年は採用される機会もあまり見かけないスパイラル開発。実際にプロジェクトで関わることは少ないかもしれませんが、案件の性質によっては適度な計画性と柔軟性を併せ持つスパイラル開発が適していることもあるので、知識としてはしっかり押さえておきましょう。

記事監修:早坂貴大(メンバーズエッジカンパニー)

採用情報

メンバーズエッジで最高のチームで最高のプロダクトを作りませんか?

最高のプロダクトをつくる 最高のチームで働く

在宅でも、地方でも、首都圏でも。多様な働き方で最高のチームをつくり、お客様のプロダクトパートナーを目指します。アジャイル開発を通じ、開発現場の第一線で活躍し続けたいエンジニアを募集しています。