【開発手法】 ソフトウェアプロセスモデル ~ ラウンドトリップ、成長モデルなど~

ウォータフォールモデル(water fall model)

 * システム開発を、以下のような工程に分け、上流工程から下流工程へ順番に開発を進めてゆく開発手法
 1) 要求分析
 2) 外部設計
 3) 内部(詳細)設計
 4) プログラム
 5) 単体テスト
 6) 結合テスト
 7) 総合テスト(システムテスト、運用テスト)

メリット

 * 開発管理がしやすい
  => 大規模開発向き

デメリット

 * 前の工程に戻る(出戻り)場合、修正コスト(時間、費用)が大幅にかかる

■ プロトタイプモデル (prototype model)

 * 設計の早い段階から実際に稼動する製品モデルの作成と検証を反復することにより、
   仕様の検討や詳細な設計を進めていく手法

メリット

 * ユーザのフィードバックしながら開発を進めるため、大きな手戻りが発生しにくい

デメリット

 * 大規模システム開発では、完成までに時間がかかってしまう

■ スパイラルモデル (spiral model)

 * 独立性の高いサブシステムに分割し、そのプログラムを元に
   ユーザからのフィードバックやインターフェースの検討などを経て、さらに設計・実装を繰り返していく開発手法
 * 一軒家に例えると、1階を先に作って、その後に2階、…と作るようなイメージ

※プロトタイプモデルとの違い
 * サブシステムに分割し、ぞのサブシステムはウォーターフォールモデルで開発している点
  => 「ウォータフォールモデル」と「プロトタイピングモデル」の両方の手法を取り入れた手法と言える

メリット

 * 以下のようなシステム開発に有効
  1) 大規模システム << ★プロトタイプモデルのデメリットをカバー★
  2) 未経験分野のシステム

デメリット

 * 開発中に仕様変更が入るため、以下のような事項が起こる可能性があり、
   その結果、品質が悪くなる可能性がある
  1) インターフェースの矛盾
  2) 変更し忘れ

■ エボリューショナルモデル/成長モデル(evolutional model)

 * 利用者の要求仕様の変更がある度にソフトウェア開発工程を繰り返し行う開発手法
 * 何度も繰り返すことにより,ソフトウェアプロセスが成長していく
 * 一軒家に例えると、家を建てて、その後にリフォームしていくイメージ

■ ラウンドトリップ (Round Trip)

 * オブジェクト指向開発において、分析と設計、プログラミングを何度か行き来しながら
   トライアンドエラーで、完成させていく開発手法

■ インクリメンタルモデル(incremental model)

 * 最初にシステム全体の要求定義を行い、要求された機能をいくつかのシステム分割して、
   段階的に開発し、リリースするプロセスモデル

■ RAD (Rapid Application Development)

 * 以下の関連記事を参照のこと
http://blogs.yahoo.co.jp/dk521123/34646556.html


関連記事

リーンソフトウェア開発

http://blogs.yahoo.co.jp/dk521123/35027994.html