ソフトウェア開発モデル(Software Development Model)

ソフトウェア開発

ソフトウェア開発モデル(Software Development Model)

  • 典型的なソフトウェア開発に対する手順
  • 最上位での開発手順
  • 「料理」の手順はどんな料理でも大体同じ
    • 何を作るか決める
    • どうやって作るか決める
    • 食材を買いに行く
    • 作る
    • 食べる
    • 片付ける
ソフトウェア開発
  • 「工程」と「プラクティス」(practice,慣行,ならわし)で構成

    • 工程(process,プロセス):料理の例における「何を作るか考える」など
    • プラクティス:どうしたらうまく作れるか(料理を決める時に家族に聞く,買い物に行く前に広告をチェックする,など)
  • 良い「プロセス」は良い「プロダクト」を作る

    • 典型的な「プロセス」を「モデル化」し,それぞれの段階で「するべきこと」をすると,良い「プロダクト」が作れる.
ソフトウェア開発

ソフトウェア開発プロセスモデル

  • ウォーターフォールモデル(Waterfall Model)
  • Vモデル(V Model)
  • プロトタイピング型開発(Prototyping Model)
  • スパイラルモデル(Spiral Model)
  • インクリメンタル開発(Incremental Model)
  • アジャイル(agile)開発(Agile Development)
  • etc.
ソフトウェア開発

ウォーターフォールモデル(Waterfall Model)

  • 1970 年代に誕生
  • 特徴
    -「工程」の考え方
    • 工程間の(小さな)フィードバック
  • 工程
    • 要求分析:ユーザ要求からシステムの仕様を決める
    • 設計:仕様を実現する構造や実装方法を決める
    • 構築:プログラムを作成する
    • テスト:設計や仕様通りに動作するかを確認する
    • 運用・保守:バグの修正や機能の追加する
ソフトウェア開発
  • ドキュメント駆動プロセス(Document-Driven Process)
    • 各工程を完了して次の工程へ引き継ぐ
    • 工程間の引き継ぎはドキュメントで行う
      (ドキュメントのレビューを行う)

center

ソフトウェア開発
  • V モデル(ウォータフォールモデルの変化版)
    • テストの段階を明示
    • 上流工程との対応付け

center

ソフトウェア開発
  • 長所
    • 各工程で,マイルストーン(達成目標)と成果物(この場合は成果物=ドキュメント)があるのでスケジュール管理が行いやすい
    • 分業が容易
  • 短所
    • リスク管理が難しい
    • ソフトウェア開発には必ず「戻り工程」が存在する
  • 対象例
    • 大規模で高い信頼性が要求されるシステム
ソフトウェア開発

プロトタイピングモデル(Prototyping Model)

  • ウォーターフォールにおける「手戻り」リスクを低減
  • 最終的に運用するソフトウェアシステムを作る前に,実験的なシステム(プロタイプ)を作る
  • 特に「要求分析」段階(フェーズ)で行うことが多い
  • どの程度の「プロトタイプ」を作成するかが難しい(短所)

center

ソフトウェア開発

インクリメンタルモデル(Incremental Model)

  • 小さな機能範囲のシステムから作成
  • 改良(バージョンアップ)によるシステム構築
  • 典型的には「確実に必要な機能」から作成していく
    (プロトタイピングは「不確実な機能を明らかにする」)
  • 設計が貧弱になりコードのメンテナンス性が悪くなる(短所)のでリファクタリング(再構築)が必要になる場合がある

center

ソフトウェア開発

関連する分野:さらなる勉強にむけて

(ここはみんなで作るページです)

  • モデルベース開発
ソフトウェア開発