ソフトウェア開発方法論の基となるもので、ソフトウェアを開発するために定義し、運用、保守等の過程を各段階別に分けたもの。
種類
- ウォーターフォール型モデル
- プロトタイプモデル
- スパイラル型モデル
- アジャイルモデル
これ以外にハイブリッド型モデル、反復型モデルとかもあります。
1. ウォーターフォール型モデル(Waterfall Model)
滝から一度落ちた水は遡ることができないように、ソフトウェア開発も前の段階に戻ることができないという前提の下、各段階を確実にまとめ、その結果を徹底的に検討し、承認過程を経た後に次の段階を進める模型
graph LR 妥当性検討 --> 計画 --> 要求分析 --> 設計 --> 実装 --> 試験 --> メンテナンス
特徴
- 伝統的なソフトウェアライフサイクルモデル
- 線形シーケンシャルモデル
- 成功事例の多さ
- 段階が終わった後は、次の段階のための結果物が明確に算出されなければならない
2. プロトタイプモデル(Prototype Model)
ユーザーの要求事項を正確に把握するために実際に開発されるソフトウェアに対する見本品(Prototype)を作って最終結果を予測する模型
graph LR 要求収集 --> スピーディーな設計 --> プロトタイプ構築 --> 顧客評価 --> プロトタイプ調整 --> 実装 --> 要求収集
特徴
- 依頼者と開発者の両方に共通の参照モデル
- 今後実装段階で使用される骨格コードとなる
- 新しい要求事項が導き出される度にこれを反映
- 短期間製作を目的としているため、非効率的な構造を持つ可能性がある
3. スパイラル型モデル(Spiral Model)
ボヘム(Boehm)が提案したもので、滝の模型とプロトタイプ模型の長所に危険分析機能を追加した模型
graph LR 計画樹立 --> 危険分析 --> 開発と検証 --> 顧客評価 --> 計画樹立
特徴
- らせんに沿って回るように数回のソフトウェア開発過程を経て最終ソフトウェアを開発
- 開発によって発生しうる危険を管理し、最小化することを目的とする
- コア技術に問題があったり、ユーザーの要求事項が理解しにくい場合に適合
- 要求事項を開発途中で添加でき、精密で、メンテナンス過程が不要
4. アジャイルモデル(Agile Model)
「手っ取り早い」「機敏な」という意味で、お客様のニーズの変化に柔軟に対応できるように一定の周期を繰り返すモデル
特徴
- お客様とのコミュニケーションに焦点を当てた方法論
- スプリント(Sprint)と呼ばれる短い開発サイクルを繰り返し
- 周期ごとに作られる結果物に対する顧客の評価と要求を積極的に受け入れる
- 小規模プロジェクト、高度に熟練した開発者、急変する要求事項に適合
種類
- スクラム(Scrum)
- XP(eXtreme Programming)
- カンバン(Kanban)
- Lean
- クリスタル(Crystal)
- ASD(Adaptive Software Development)
- 機能中心開発(FDD: Feature Driven Development)
- DSDM(Dynamic System Development Method)
- DAD(Disciplined Agile Delivery)
5. ウォーターフォール・アジャイルモデル比較
区分 | ウォーターフォール | アジャイルモデル |
新しい要求事項を反映 | 難しい | 持続的に反映 |
顧客とのコミュニケーション | 少ない | 持続的 |
テスト | 最後にすべての機能をテスト | 繰り返されるサイクルが終わるたびにテスト |
開発の中心 | 計画、文書(マニュアル) | 顧客 |
応用情報技術者試験とは違います。