ソフトウェアプロセスモデル
定義
ソフトウェア開発の活動をどの順序・構造で行うかを定めたフレームワーク。
定義型 vs 経験型
プロセスには根本的に異なる2種類がある:
- 定義型(Defined): 入力・タスク・成果物が事前に完全定義できる。繰り返し可能で予測可能。要件が安定しているプロジェクトに向く。
- 経験型(Empirical): 要件や解決策が変化する複雑な問題に向く。検査・適応を繰り返して前進する(Scrum等)。
この違いを理解せずにプロセスを選ぶと、コンテキストに合わないモデルを強制することになる。
主要モデルの比較
| モデル | 構造 | 向いているケース |
|---|---|---|
| ウォーターフォール | 直線的・順次 | 要件が固定・変更が少ない |
| インクリメンタル | 小さなウォーターフォールを反復 | 優先度の高い機能から段階リリース |
| エボリューショナリー(スパイラル) | リスク駆動で反復 | 要件が不明確・リスクが高い |
| アジャイル(スクラム等) | 短いイテレーション・フィードバック重視 | 変化が速い・顧客関与が高い |
なぜ重要か
プロセスモデルの選択ミスは、プロジェクト後半での手戻りやチームの混乱につながる。「どのモデルを使うか」より「なぜそのモデルが自分たちのコンテキストに合うか」を説明できることが重要。
Pressmanの視点
どのモデルも「コミュニケーション → 計画 → モデリング → 構築 → デプロイ」の5活動を含む。違いはその繰り返し方と順序。
実践ルール
- プロセスを選ぶ前に問題の複雑さ(要件の安定性・リスクの大きさ)を評価する
- プロセスはチームに合わせて適応させる(従うだけにしない)
- どのプロセスでもデプロイ後のフィードバックループを組み込む
適用場面
- プロジェクト立ち上げ時にプロセスモデルを選定するとき
- チームが「なぜスクラムをやっているのか」を問われたとき
- 現行プロセスが機能していない原因を診断するとき
関連概念
出典
実践ソフトウェアエンジニアリング(Pressman)第2〜4章