非ウォーターフォール・モデル
スパイラル・モデル
スパイラル・モデルとは、システム全体を幾つかの部分に分け、分けられた部分を単位として開発を進める開発プロセスです(図2)。スパイラル・モデルでは、システム全体を分割した単位で、設計~テストのサイクルを繰り返しながら開発を進めていきます。これにより、ウォーターフォール・モデルにおける「工程の最初の段階でしか要件を決められない」というデメリットを解決しよう、という考え方です。
スパイラル・モデルと一口に言っても、「反復型」と「インクリメンタル型」に分けることができます。
・反復型
サイクルを繰り返していくことで、実装する機能を深めていく。システム全体を部分に分ける際には、機能の深さ(優先度や重要度)によって分割するイメージ。各部分を、プロトタイプ・モデルとして進めていくと考えて良い。
・インクリメンタル型
サイクルを繰り返していくことで、実装する機能を広げていく。システム全体を、機能ごとにサブシステムとして分割するイメージ。各部分を、ウォーターフォール・モデルとして進めていくと考えて良い。
このため、スパイラル・モデルにおいては、システム全体を分割する単位が非常に重要となります。反復型においては、プロトタイプ・モデルと同じような問題点(さじ加減の難しさ)がありますし、インクリメンタル型においては、システム全体の境界線をうまく引けるかどうかが難しい、という問題点があります。
スパイラルモデルのメリット/デメリット
スパイラル・モデルのメリットとしては、以下の点が挙げられます。
・開発単位が小さい
開発の局面において、「動くシステム」を比較的早い段階でリリースすることができます。これにより、リリースしたシステムの評価や新たに発生した要件等のフィードバックを、これから開発する部分に適用できるため、要件の追加や変更に対応しやすいと言えるでしょう。
また、稼働の局面においては、システム変更によるインパクトを小さく抑えることができ、また、段階的な稼働も可能となります。例えば、企業への業務システム導入等は、業務変更へのインパクトがエンドユーザーへの大きな負担となることがあるので、段階的稼働のメリットは無視できません。
対して、デメリットとしては、次の点が挙げられます。
・開発の初期段階でシステム全体を見通せない
スパイラル・モデルでは、ある意味、開発の初期段階ではシステム全体を詳細に見極めないでも、開発を進めることが可能となっています。そのため、分割された各部分をそれぞれ進めていく中で、進むべき方向性が違うことに気がつくことがあります。この場合には、すでに完成している部分を修正するコストが膨らんでしまいます。
また、システム全体を詳細に見極めていないことから、部分への分割がうまくいかないこともあるでしょう。例えば、システム全体を機能ごとにサブシステムとして分割することは、よくあると思います。この際、各サブシステムの開発を進めていった過程で、関連が弱いと思われていたサブシステム間での密な連携を行わなければならないことが判明した場合には、連携機能を別途開発しなければならなくなります。このような分割ミスもスケジュール遅延やコストを押し上げる要因となります。
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- 開発プロセスモデル
- 開発手法を徹底比較!アジャイル vs.ウォーターフォール
- アジャイル開発とは?プロジェクト推進からチームビルディング、見積もりのコツまでを完全解説
- DX時代に求められるエンジニアでも知っておきたいスキル・知識
- さまざまな開発手法
- いろいろなプロセス ~V字モデルとスクラム~
- エンタープライズモバイルに必要なアプリの品質とは?―Think IT Mobile Developer Seminar 2016レポート
- CNDT2021、大規模ウォーターフォール開発をクラウドネイティブにするためのヒントをNTTデータのエバンジェリストが解説
- インフラの中核を担う「サーバ」を知ろう
- 開発ドキュメントを何で作成するか?