スパイラルモデル(Spiral Model)

スパイラルモデル(スパイラル型ソフトウェア開発)について

スパイラルモデルとは

スパイラルモデルとは、機能ごとに開発の小さなサイクルを繰り返し、設計とプロトタイピングを繰り返して開発していく手法です。
この開発モデルは、Barry W. Boehmが1988年に「A spiral model of software development and enhancement」で提唱されました。


スパイラルモデルの進め方

スパイラルモデルでは、独立性の高い部分ごとに「目的・代替案・制約の決定」「代替案の評価とリスクの明確化、解消」「開発と検証」「次サイクルの検討」という4つのフェーズを繰り返しながら開発を進めていきます。
(スパイラルモデルは反復型開発を提案しており、1988年当時としてはこれは画期的な方法論でした。)

目的・代替案・制約の決定(いわゆる要件定義)の段階でプロトタイピング手法を適用することが多くあります。
ただし、プロトタイプを作るのは、あくまでもプロジェクトのリスクを識別、解決するための手段としている点が特徴です。


また、スパイラルモデルは、開発工程のリスク管理に主眼が置かれており、反復サイクル毎にリスク分析をして、リスクを最小限に抑えます。
パイロット的な小規模システムや要件の確定したサブシステムの開発を先行させることによって、リスク管理を重視したシステム開発を行うことができ、段階的に機能追加を繰り返し、各繰り返しの段階でユーザの要求を確定し、機能を充実させていきます。


Boehmが提唱したソフトウェア開発のリスク10選

リスク リスクマネジメント手法
Personnel shortfalls(人材不足) 優秀で仕事にマッチした人材の派遣。 チームビルディング。士気を高める。 クロストレーニング。
Unrealistic schedules and budgets(非現実的なスケジュールと予算) コストに応じた設計。 インクリメンタル開発。 ソフトウェアの再利用。 要件の洗い出し。
Developing wrong software functions(誤ったソフトウェア機能の開発) 組織・ミッション分析。 ユーザー調査。 プロトタイピング手法。 初期のユーザーマニュアル提供。
Developing the wrong user interface (誤った UI の開発) タスク分析。 プロトタイピング。 シナリオ。 ユーザーの特徴付け(機能、スタイル、作業負荷)。
Gold plating (金メッキ=過剰品質) 要件の洗い出し。プロトタイピング手法。費用便益分析 (Cost–benefit analysis)。 コストに応じた設計。
Continuing stream of requirement changes (継続的な要求仕様変更) High change threshold(高い変化閾値)。 情報隠蔽。 インクリメンタル開発。
Shortfalls in externally furnished components (外注部品に関する不足) ベンチマーク。 インスペクション(検査、レビュー)。 リファレンスチェック(身元照会)。
Shortfalls in externally performed tasks(外注タスクに関する不足) リファレンスチェック(身元照会)。 チームビルディング。 pre-award audits(事前監査)
Real-time performance shortfalls(リアルタイム性能の不足) シミュレーション。 ベンチマーク。 モデリング。 プロトタイピング。 チューニング。
Straining computer-science capabilities(コンピュータ科学能力を圧迫?) テクニカル分析。 費用便益分析。 プロトタイピング。 リファレンスチェック(身元照会)。

スパイラルモデルについての注意点

スパイラルモデルと成長モデルとの差は?

概念的には、スパイラルモデルは、成長モデルのひとつの形態です。
成長モデルは製品機能が積み重なることを重点としているのに対して、スパイラルモデルはリスクを最小化することに重点を置いている点が大きな違いとなります。

IPAの用語定義では、以下の通りに定義されています。
・成長モデルは「ウォータフォールモデルのプロセスを繰り返し、機能を段階的に提供していくモデル(インクリメンタルプロセスモデルともいう。)」です。
・スパイラルモデルは「一連の開発工程を何回も繰り返しながら開発機能の規模を拡大し、開発コストの増加などのリスクを最小にしつつシステム開発を行う」モデルです。


スパイラルモデルのデメリット

スパイラルモデルの最大のデメリットはコスト問題です。
反復毎にプロトタイプ作成しますが、フィードバックによって様々な問題が浮上した場合、何度も改修しなければならなくなり、開発コストと開発期間が増大していきます。
スパイラルモデルはシステムの潜在的な要求・要件を発掘できてしまうがゆえに、初期の想定よりシステム仕様が肥大化する可能性が高いといえます。


関連ページ