ウォーターフォールモデルは,開発工程を分析・設計・実装・テスト・運用などの各段階に分け,その名前のように「滝」の水が流れ落ちるように工程を進め,前の工程へ戻らないような進め方をする.このモデルのイメージから,前半の工程である分析・設計などは上流工程,後半の工程である実装・テストなどは下流工程と呼ばれている.
この考え方に基いたソフトウェア開発では,基本的に終了した工程の結果(要求仕様定義,設計など)が正しいものとして開発を進める.原則として前工程が完了しないと次工程には進まない.
プロジェクトにより,工程の分割や定義に差があるので,厳密にどこからどこまでが上流工程という定義はなく,中間的な工程を中流工程と呼ぶ場合もある.
一般的に上流工程は,
であり,これ以降が下流工程である.
全体の流れは,一般に次のようになる.
システム要求定義→ソフトウェア要求定義→基本設計→詳細設計→実装→テスト→運用・保守
トップダウン設計とボトムアップ設計の長所を生かしたソフトウェア開発工程のモデルであり,設計とプロトタイピングを繰り返して開発していく手法である.これにより,ユーザーからのフィードバックや要望に対して具体的に対応しながら改善を施し,らせん(スパイラル)階段を上るように徐々に完成させていく開発手法である.
基本的には,次のようなサイクルを繰り返す.
計画フェーズ → 最適化フェーズ → 開発フェーズ → 検証フェーズ
スパイラルモデルは,大規模な開発に適用されることが多く,次のような利点がある.
成長モデルは,利用者の要求仕様の変更がある度にソフトウェア開発工程を繰り返し行う.何度も繰り返すことにより,ソフトウェアプロセスが成長していくモデルである.
基本的には,次のようなサイクルを繰り返す.
モデリング → 要求定義 → 実装 → 評価
成長モデルは,変更の要求に対応するので現実のソフトウェア開発に即していると言えるが,完成するまでに何度も繰り返すので,開発工数や費用の見積もりが困難になるなど開発管理が難しくなる.
エクストリーム・プログラミング (XP) は,Kent Beck氏らが考案し提唱しているソフトウェア開発手法である. XP は,従来のウォーターフォール型の開発方法論と比較して,開発の初期段階の設計よりもコーディングとテストを重視しており,各工程を順序立てて積み上げていくよりも常にフィードバックを行って修正・再設計していくことに重点を置いている.
XP は 10人程度くらいまでの小チームに適用するのが最も適していると言われ,小~中規模のソフトウェアの開発に向いた手法とされている.また,XP はドキュメントよりもソースコードを,組織的開発よりも個人の責任と勇気を重んじる人間中心の開発プロセスであるとしている.( → エクストリーム・プログラミング)