目次
スパイラルモデルの開発の流れ
スパイラルモデルとは、システムを複数のサブシステムに分割して、それぞれのサブシステム毎に順番に開発を進めていく手法です。
例えば、サブシステム1~3から構成されるシステムが存在していたとして、システム1を開発、納品した後、システム2を開発納品し、次にシステム3を開発納品する、といった形で進めていきます。
なぜ複数のサブシステムに分けるかというと、開発規模が大きいシステムでは、発注したお客様が完成品を確認するまでに時間がかかります。サブシステムに分けることで、サブシステムの開発が完了した時点でお客様に見せることができ、手戻りが少なくなり、システム全体の完成度を高めていくことができるのです。
スパイラルモデルのメリットとデメリット
メリット
スパイラル開発のメリットとしては、手戻りが少ないことが挙げられます。主流な開発手法であるウォーターフォールモデルは、要件定義完了の段階でシステムの要件がすべて明確になっている必要があり、要件定義をベースとして開発がすすめられ、要件に漏れがあると大幅な仕様変更が生じてしまいます。
スパイラルモデルは短い期間に「設計」→「開発」を繰り返す手法の為、途中の仕様変更にも柔軟に対応しやすい開発手法です。
デメリット
一方でデメリットとしては、システムの全貌が事前に見えにくいという点です。サブシステムごとに構築を進めていくので、当初からシステムの全貌が見えなかったり、予定していた規模感から肥大してしまうということが考えられます。その結果、運用負荷やシステム開発コストが増大してしまう可能性があります。
プロセス面の注意点
プロセス面の注意点としては、「サブシステムの切り方」「請負と準委任契約の判断分岐」「人の異動を考慮する」が挙げられます。
サブシステムの切り方
どの単位をサブシステムとして扱うかについては検討が必要です。細かく分割しすぎると、検収の確認や事務コストがかさんでしまいます。逆に分割の単位を大雑把にしてしまうと、スパイラルモデルのメリットをうまく享受できない可能性があります。
請負と準委任契約の判断分岐
構築を行うベンダーを雇う場合は、サブシステムを細かく分割する関係上、請負契約と準委任契約を組み合わせて委託することが少なくありません。
一般的に請負契約は割高になりますが、準委任契約ばかりだとサブシステム構築の各フェーズごとに遅延が発生してしまい、開発期間が長期化する可能性があります。例えば、連携するシステム数によってシステムの重要度を定め、最重要のシステムは請負契約にしておく、などの整理を計画段階で実施しておくことが重要です。
人の異動を考慮する
サブシステムを1つずつ構築していくという関係上、初期の開発担当者と後期の開発担当者が異なっているという事態は生じえます。したがって、ナレッジマネジメントやドキュメンテーションについては、一定の基準や方式を設け、もれなくスキルトランスファーできるようにしておく体制を用意しておく必要があります。
特に各システム開発のフェーズにおいて、何らかの判断を下した際の経緯はきちんと記録しておく必要があります。記録しておくことで手戻りやトラブル等を大幅に削減することができます。
リソース面の注意点
リソース面の注意点については「仕様の肥大化に注意」「スパイラルモデルの経験者は少ない」が挙げられます。
仕様の肥大化に注意
先述の「デメリット」にも記載した通り、スパイラルモデルの開発は仕様変更にも柔軟に対応できる事から、初期の想定よりシステムの仕様が肥大化してコストが増大する危険性がある開発手法といえます。
予算オーバーになってしまってはシステム開発がとん挫してしまう可能性も考えられるため、予算等のリソースについては都度検討と見直しを進めていくことが求められます。
スパイラルモデルの経験者は少ない
世間においては、ウォーターフォールモデルやアジャイルモデルの開発手法が主流で、スパイラル開発モデルはどちらかというとあまり経験者がいない状況です。スパイラル開発を進めるためのマネージャーの選定や、担当者のスキル見極めは慎重に実施する必要があります。
また、遂行中の案件について、プロジェクトの進行やドキュメンテーションの管理、マネジメントの状況などは、IPA(情報処理推進機構)が公開しているレポートなども合わせて確認すると良いでしょう。
(参考:非ウォーターフォール型開発に関する調査)
スパイラルモデルを使う案件
スパイラルモデルはどのような案件を実施する際にメリットがあるのでしょうか。具体的に見ていきます。
大規模なシステム開発案件
大規模なシステムは全ての機能を最初から要件定義すると、それだけで長期間かかってしまう場合もあります。また、大規模なシステムにおいては、要件定義がすぐ完了するサブシステムと、徹底的に詰める必要があるサブシステムの差も存在しています。
このようなシステムにおいて、スパイラル開発の手法を用いてサブシステムごとに構築を進めていくと、実際のサブシステムを動かしながら次の機能の要件定義をするので複雑なシステムの要件定義がスムーズにいく場合があります。
システムのリプレース等において、一部機能を新規開発する案件
システムのリプレース時に、一部機能を新規開発するなど、事前に要件が決まっているシステムと、決まっていないシステムが混在している場合の開発においては、スパイラルモデルの活用が有効です。リプレース担当と新規開発担当のチームに分けて、密にコミュニケーションをとることで効率的なスケジュールで開発を行うことができます。
その他の開発手法との違い
その他の開発手法とはどのような違いがあるのでしょうか。主要な開発手法であるウォーターフォール、アジャイルについてどのような違いがあるかを具体的に見ていきましょう。
ウォーターフォール
ウォーターフォールとは現在も主流の開発手法の一つです。ウォーターフォール(滝)に水が流れるように、要件定義、設計、開発、テスト、リリースの各工程を一つ一つ終わらせ、次に進んでいきます。
シンプルで理解しやすく全体の予算感・スケジュール感を把握しやすいというメリットがあります。一方で、要件定義の段階で時間がかかったり、突発的な仕様の変更に対応するのが難しかったり、手戻りに非常に弱いという問題があります。
アジャイル
アジャイルは、ウォーターフォールに次いで現在主流となっている開発手法です。アジャイル(agile:素早い)という言葉を冠する通り、スピード感が特徴的な手法です。開発期間を細かく分割して開発を進める、という点では非常にスパイラルモデルと似ています。
アジャイルは実現したい機能や実装したい機能に対し、1週間や1か月などの、細かい単位で期間を設けて期間内に細かくテストを実施することで徐々に要件定義を進め、プロジェクトを完成形に近づけることを目的にしています。一方でスパイラルは期間をサブシステムごとに分割し、完成したサブシステムを確認しながら次の工程に進めるという特徴があります。
まとめ
今回の記事では、スパイラルモデルついて解説しました。コンサルティング案件などを探している方、事例を知りたい方は、ぜひfoRProまでご相談ください。