リスク評価を繰り返しながら段階的に開発を進めるモデル。
スパイラルモデルとは、「計画→リスク評価→開発→評価」というサイクルを何度も繰り返しながら、少しずつ完成度を高めていく開発の進め方のことです。スパイラル(spiral)は「螺旋(らせん)・渦巻き」という意味で、回るたびに少しずつ規模が大きくなる様子を表しています。
身近な例で考えると、料理の味見に似ています。一気に作りきるのではなく「少し作る→味見して問題点を確認→直してまた作る」を繰り返すと、失敗のリスクを抑えながら良いものに近づけられますよね。
上の図解では、中心の「開始」から渦巻きが外へ広がっています。1周するたびに開発が一段階進むと考えると分かりやすいです。
1周(1サイクル)の中では、次の4つの活動を順番に行います。
・計画:このサイクルで何を実現するか目標と代替案を決める
・リスク評価:失敗しそうな危険な部分を洗い出し、対策を検討する
・開発:設計・実装・テストを行い、その部分を作り上げる
・評価:できたものを利用者に確認してもらい、次のサイクルへつなげる
ここで一番大事なのが「リスク評価(=うまくいかなそうな部分を前もって見極めること)」です。危険な部分を先に小さく作って試すことで、大きな失敗を防ぎます。1サイクルごとに開発する範囲を広げ、渦巻きが外へ広がるように完成へ近づけていきます。
| 項目 | スパイラル | ウォーターフォール |
|---|---|---|
| 進め方 | サイクルを繰り返す | 工程を一方向に1回 |
| リスク評価 | 毎サイクル行う | 特に行わない |
| 仕様変更 | 対応しやすい | 対応しにくい |
| 向く開発 | 不確実で大規模 | 要件が固い大規模 |
ウォーターフォールが工程を上流から下流へ一度だけ流すのに対し、スパイラルは同じようなサイクルを何度も繰り返す点が決定的に違います。
繰り返すたびにリスクを評価して対策できるため、要件があいまいだったり、新しい技術を使ったりする不確実性の高い開発に向いています。次のサイクルへ進む前に問題を見つけられるので、最後にまとめてやり直す手戻りを減らせるのが強みです。
スパイラルモデルで言う「リスク」とは、「うまくいかないかもしれない危険な部分」のことです。たとえば「この新しい技術、本当に使えるのか」「この機能、本当に作れるのか」という不安要素がリスクにあたります。
なぜリスク評価を毎サイクルの最初に行うのか。それは、問題は早く見つけるほど修正コストが小さくて済むからです。
・早期発見:まだ小さく作った段階なので、直す量が少ない
・遅い発見:大量のコードや設計書を作り終えた後なので、やり直す量が膨大になる
身近な例で考えると、旅行の計画に似ています。ホテルの予約が取れるか不安なら、ルートを全部決め切る前に先にホテルだけ確認しますよね。スパイラルモデルは「不安なことを先に確かめてから次へ進む」という考え方です。
3つのモデルは、「要件が最初から決まっているか」と「規模がどのくらいか」によって使い分けられます。
・ウォーターフォール:要件が固い大規模開発。計画どおりに進めたいとき
・スパイラル:要件がある程度あいまいで、かつ規模が大きく失敗できないとき。リスクを先に潰しながら進めたい大型プロジェクト向け
・プロトタイピング(=試作品を作って利用者に確認してもらう方式):要件がはっきりしない比較的小規模な開発。「作ってみて確かめる」が有効なとき
スパイラルとプロトタイピングはどちらも「繰り返す」点では似ていますが、スパイラルは「リスクを評価して大きなシステムを段階的に作り上げる」ことに重点があり、プロトタイピングは「利用者に見せて要件を確定する」ことに重点があります。目的が少し異なります。