スパイラル開発は開発するシステムを機能ごとに分割して、それぞれの機能のプロトタイプをユーザーやクライアントでレビューしながら進め、全ての機能について実装が完了したらリリースするという流れで進める開発手法です。
1つの機能ごとに要件定義や設計・テストなどのプロセスを行い、それらを何度も繰り返すのがスパイラル開発です。何度も繰り返して行うことから、「螺旋」を意味する言葉である「スパイラル」開発と呼ばれています。
ウォーターフォール開発は各工程の後戻りを許容しない開発手法であるため、修正などが必要になった場合の工数が問題視されていました。このデメリット部分を改善するために作られた手法がスパイラル開発です。
スパイラル開発はアジャイル開発と同様に開発工程を繰り返しながら進められますが、工程の途中でプロトタイプを作ってクライアントと目線を合わせながら進めます。さまざまな開発手法のハイブリッドのような開発手法がスパイラル開発です。
スパイラル開発では開発する機能ごとに要件定義から評価・改善までを進めていく手法なので、スケジュールや仕様変更を比較的容易に行うことができます。また、スパイラル開発ではプロトタイプを用いて評価・改善を行うため、その時点で問題が認識できる場合には即座に反映することができます。実施にリリースされる機能の実装に役立たせることができるため、ユーザーやクライアントの要望を聞きながら品質を高めることが期待できます。
スパイラル開発では小分けにした機能ごとに実装を進めるため、ウォーターフォール開発と比較しても手戻りを抑えられるというメリットもあります。早い段階でフィードバックを受けることで、手早い改善・不具合改修ができるため成果物の品質向上も可能になります。
スパイラル開発はクライアントと一緒に評価・改善を模索し進められますが、そのプロトタイプ実行にも相応な工数がかかります。1つの機能を実装するごとにレビューを行い、そこでの修正や機能不足を補うための追加などというケースも多いため、想定以上にシステム開発コストが必要になるケースもあるのです。
スパイラル開発では個別に機能を実装していくことから、システムの全体像が把握しづらいとうデメリットがあります。さらに最初の段階で全ての要件を定義するわけではないため、開発コストをはじめに見積もっておくことも難しく、想定以上のフィードバックが起こった場合にはウォーターフォール開発以上に開発が長期化する可能性も否定できません。
ここまでに述べた通り、スパイラル開発では機能ごとに各工程を繰り返します。具体的には要件定義⇒設計⇒実装⇒テスト⇒評価・改善という流れで進められ、これらのプロセスを機能ごとに繰り返していくのがスパイラル開発です。
どんな機能を作るのかを決定する要件定義から始まりますが、必要な機能の洗い出しや仕様書の作成に失敗すると後々に大きな影響を及ぼす可能性があります。次に仕様書をもとに画面や処理の設計を行う設計では、優先度の高い機能から設計していくことがポイントです。他の機能とのハブになるような機能やクリティカルな機能から優先順位付けし、ここが不十分だと機能同士をうまく結びつけられなくなる可能性もあります。そして設計した内容をもとに実際に機能を実装したあと、設計通りに機能が実装されているかどうかをテストしそれらを評価しながら改善を図っていきます。これらのプロセスを機能ごとに繰り返し、開発工程を進めていきます。
ここまででもいくつか触れましたが、代表的な開発手法である「ウォーターフォール開発」「アジャイル開発」との違いについて紹介します。ウォーターフォール開発はスパイラル開発と同様の手順を踏んでリリースまで進めますが、スパイラル開発では機能単位で小分けにすることに対してウォーターフォール開発ではシステム全体の仕様を決めて進めていくという違いがあります。
アジャイル開発はスパイラル開発と似ている開発手法ですが、スパイラル開発ではすべての機能が完成次第リリースするのに対してアジャイル開発はあらかじめ設定した期間内で実装された機能を都度リリースしていく流れになります。そういう意味ではスパイラル開発が「品質重視」であることにたいし、アジャイル開発では計画やプロジェクトの進捗度を重視している開発手法といえるでしょう。
前述した通り、それぞれの開発手法では重視するポイントが異なっています。自社のプロジェクトが何を重視しているのかでどの手法を採用するかを検討し、決めあぐねる場合にはプロに相談してみるというのも方法の一つではないでしょうか。