スパイラルモデルとは?開発の流れやスパイラル開発に向くプロジェクトを解説
この記事では、スパイラルモデルの特徴やメリット・デメリット、スパイラルモデルでの開発に向くプロジェクトのタイプなどを説明します。
この記事では、スパイラルモデルの特徴やメリット・デメリット、スパイラルモデルでの開発に向くプロジェクトのタイプなどを説明します。
スキルアップ
2022/06/17 UP
- 開発
- 管理
- システムエンジニア
スパイラルモデルは、ウォーターフォールモデルやアジャイルモデルなどに並ぶ、システム開発のモデルの一つです。
この記事では、スパイラルモデルの特徴やメリット・デメリット、スパイラルモデルでの開発に向くプロジェクトのタイプなどを説明します。
なお、比較されるその他の開発手法については、こちらの記事をご覧ください。
今こそ知っておきたい「ウォーターフォールモデル」を徹底解説
アジャイル開発とはどのような開発手法か徹底解説
スクラム開発を徹底解説!メリット・デメリットも紹介
プロトタイプモデルとは?メリットやデメリット、他の開発手法との相違点も解説
スパイラルモデルとは?
スパイラルモデルは、開発途中に仕様の修正や再設計が入ることを念頭に置いた開発モデルです。
システム開発のアプローチには、大きくトップダウン設計とボトムアップ設計がありますが、スパイラルモデルは、双方の設計戦略の長所を活かす手法として考案されました。
スパイラルモデルの特徴
開発の柔軟性が、スパイラルモデルの最大の特徴です。
スパイラルモデルは、プロジェクトの開始段階では、システム全体の仕様を詰めません。サブシステム(機能)ごとに要件定義、設計、開発・テスト、評価・改善のループを繰り返し、らせん状にシステム全体を作り上げていきます。システムが完成したら本番移行をして、運用・保守に移ります。
小単位で要件定義〜テストを行なう点はアジャイルモデルに近い一方で、プロトタイプ(試作品)をクライアントに提供して評価を受ける点は、プロトタイプモデルの手法を踏襲しています。
スパイラルモデルでの開発の流れ
スパイラルモデルのおおまかな開発の流れは、次のとおりです。
1.システム全体の要件定義
2.システムを複数のサブシステム(機能)に分割し、開発順序を決定
3.サブシステム1の要件定義〜テストを実施し、プロトタイプを作成
4.サブシステム1のプロトタイプをクライアントが評価(レビュー)
5.サブシステム1のプロトタイプを改善
6.サブシステム1のレビューで受けたクライアントの要望を反映して、サブシステム2の要件定義〜テストを実施し、プロトタイプを作成
7.以降、すべてのサブシステムを順に開発
8.すべてのサブシステムが完成したら、本番環境に移行し、開発完了
スパイラルモデルでの開発のポイントは、大きく3つあります。
ポイント1
1つ目は、分割したサブシステムを開発する順序です。クリティカルな機能を有するサブシステムの開発を後ろ回しにすると、開発済みのサブシステムに手戻りが発生するリスクが生じます。
開発順序を検討する際は、「機能の優先度」「ほかのサブシステムとのハブになっているか」などをポイントとするとよいでしょう。
ポイント2
2つ目は、サブシステム間のインターフェース設計です。スパイラルモデルでは、サブシステム単位にインターフェースの仕様を詰めていくため、システム全体のインターフェースを俯瞰できません。
インターフェース設計に不備があると、プロトタイプ同士をつなげられず、連鎖的な改修コストが発生してしまいます。
ポイント3
3つ目は、コスト管理です。あるサブシステムの改善に要した工数で開発スケジュール全体が逼迫していないか、仕様変更が後続の開発コストを圧迫しないかなどを、随時精査しながら開発を進める必要があります。
スパイラルモデルで開発するメリット・デメリット
スパイラルモデルは、その特徴である開発の柔軟性が、メリットにもデメリットにも作用します。
スパイラルモデルで開発するメリット
スパイラルモデルでシステム開発するメリットの1つ目は、比較的、臨機応変にスケジュール調整を図れる点です。
スパイラルモデルは、アジャイルモデルと同様に、サブシステム単位に開発計画を立てます。不確定要素が多いなかでの長期的な計画は身動きが取れなくなるリスクがあるため、計画変更が生じやすいプロジェクトでは、コントロール可能な範囲に区切って開発計画を立てることが、結果的に開発遅延の防止につながります。
2つ目は、仕様変更に柔軟に対応できる点です。
サブシステム単位に作成するプロトタイプによって、クライアントは、実装された機能の過不足を評価しやすくなります。クライアント側が仕様の変更・追加の要望を出しやすくなると同時に、開発側もそのたびにシステムに反映でき、効率的に開発を進められます。
3つ目は、手戻りを最小限に抑えられる点です。
例えば、ウォーターフォールモデルの開発で、受入テストで致命的な不具合や問題点が発見された場合、多大な手戻りが発生します。スパイラルモデルでは、サブシステムレベルで、早期発見と迅速な解決が可能です。
スパイラルモデルで開発するデメリット
スパイラルモデルの開発の柔軟性がもたらすデメリットの1つ目は、システムの全体像を把握しにくい点です。
サブシステム単位に仕様を詰めていくスパイラルモデルでは、プロジェクト初期にはシステムの全体像が不確定です。開発中も、繰り返される仕様変更(追加)を都度キャッチアップしておかないと、全体像を把握できなくなってしまいます。
2つ目は、コスト(工数・費用)の肥大化リスクがある点です。
そもそも、スパイラルモデルでは、プロジェクト当初に見積もったコストは概括的なものです。これをコントロールしながら、開発を進めていかなければなりません。
クライアントから、プロトタイプに対して想定を超える改善や仕様変更(追加)の要望があった場合、すべてに対応していては、コストが膨れ上がるばかりか、リリース期限に間に合わなくなるリスクもあります。
3つ目は、プロトタイプの開発コストが大きくなりがちな点です。
プロトタイプは、試作とはいえ、クライアントが機能の過不足や使い勝手などを評価できるだけの実装を施す必要があります。クライアントからの要望の内容や程度によっては、改善のたびにプロトタイプを作り直す負担が生じます。
スパイラルモデルでの開発に向くプロジェクト
開発モデルの選定においては、各モデルのメリットとデメリットを踏まえて検討しましょう。一般的に、以下3つのタイプのプロジェクトが、スパイラルモデルでの開発に向くといわれているといわれています。
品質重視の大規模プロジェクト
品質重視の大規模プロジェクトでは、仕様の検討漏れ、実装ミス、また、それらの発見が遅れることでの生じる手戻りが、致命的な開発遅延やリリース後のトラブルをもたらしうります。
スパイラルモデルでは、プロトタイプを用いて、サブシステム単位に仕様や品質を細かく精査しながら開発できるため、それらのリスクを低減できるでしょう。
システム全体像の把握が煩雑になるデメリットと勘案して、検討してください。
システム開発に慣れていないクライアントとのプロジェクト
設計書をレビューしても、クライアントがシステムの挙動を具体的にイメージできているとは限りません。特に、システム開発に不慣れなクライアントは、システム開発の後半で仕様変更をともなう要望を出してくる可能性があります。
スパイラルモデルでは、プロトタイプを共有しながら開発を進めるため、クライアントも業務での利用イメージを湧かせやすくなります。
ただし、クライアントからの仕様追加によるリスク増のコストには注意が必要です。
最新技術を導入するプロジェクト
実績やノウハウが蓄積されていない最新技術を導入するプロジェクトの場合、技術的な問題や課題が生じやすくなります。
小単位でプロトタイプを作成するスパイラルモデルでは、問題や課題を早期発見できるため、大きな手戻りやアクシデントを回避できる可能性が高まります。
スパイラルモデルとアジャイルモデルとの違い
サブシステム単位で開発を進める点で、スパイラルモデルとアジャイルモデルは、よく似ています。
スパイラルモデルとアジャイルモデルの違いは、大きく2つあります。
1つ目は、スパイラルモデルがシステムの品質を重視するのに対して、アジャイルモデルはプロジェクトの開発スピードを重視する点です。アジャイルモデルでは、プロトタイプを作成しないこともあり、スパイラルモデルよりも比較的計画的に開発が進みます。
2つ目は、システムリリースのタイミングです。スパイラルモデルではすべてのサブシステムが完成してからリリースしますが、アジャイルモデルは、完成したサブシステムから順次リリースしていきます。
開発スピードが求められる現在は、アジャイル開発を採用するプロジェクトが主流です。
スパイラルモデルの柔軟性の高さはメリットにもデメリットにもなる
スパイラルモデルがウォーターフォールモデルやアジャイルモデルと大きく異なる点は、品質を重視し、開発途中に仕様の修正や再設計が入ることを念頭に置いていることです。
この特徴を実現するために、スパイラルモデルでは、サブシステムごとに「要件定義」「設計」「開発・テスト」「プロトタイプの評価・改善」を繰り返し、らせん状にシステム全体を作り上げていきます。
スパイラルモデルは、仕様変更への対応の柔軟性が、メリットにもデメリットにも作用します。スパイラルモデルを採用する際は、システムの全体像と開発コストの管理に注力しましょう。