💨

開発の流れ

に公開

「開発工程」や「開発ライフサイクル」と呼ぶ。


✅ 開発の流れ(ウォーターフォールモデルをベース)

1. 要件定義(Requirements Definition)

  • 目的: 何を作るかを明確にする。

  • 内容:

    • ユーザーのニーズや課題の洗い出し
    • 必要な機能・性能・制約条件(法規制、対応デバイス等)の整理
    • 利用者・関係者との合意形成(ステークホルダーの調整)

2. システム設計(System Design)

  • 目的: 要件をもとに、どのように実現するかを設計する。

  • 内容:

    • 基本設計(外部設計): UI設計、機能の概要、API仕様などユーザーが関わる部分
    • 詳細設計(内部設計): データベース設計、クラス設計、処理フロー、アルゴリズムなど

3. 実装(Implementation)

  • 目的: 設計に従ってプログラムを書く。

  • 内容:

    • プログラミング言語を用いたコーディング
    • ソースコード管理(Gitなど)
    • 単体テスト(ユニットテスト)を並行して行うことも多い

4. テスト(Testing)

  • 目的: システムが正しく動くか確認する。

  • 内容:

    • 単体テスト: モジュール単位での動作確認
    • 結合テスト: 複数モジュールの連携確認
    • システムテスト: 要件通りに動くかを全体で検証
    • 受け入れテスト(UAT): 実際のユーザーが確認・承認する

5. リリース(Release / Deployment)

  • 目的: 開発したシステムを本番環境へ公開する。

  • 内容:

    • デプロイ作業(本番環境に配置)
    • リリース前の最終確認
    • ユーザーへの通知・トレーニング・マニュアル整備など

6. 保守・運用(Maintenance / Operation)

  • 目的: リリース後のトラブル対応や改善を行う。

  • 内容:

    • バグ修正
    • ユーザーからのフィードバック対応
    • バージョンアップ、機能追加など

🌀 補足: アジャイル型の場合(スプリントで反復)

アジャイル開発では上記を1サイクルとし、短い期間(例: 1~2週間)で繰り返す形になります。特に以下の特徴があります:

  • ユーザーとの対話を重視
  • 途中で仕様変更に柔軟に対応
  • スプリントごとに計画→実装→レビュー→ふりかえり(レトロスペクティブ)

アジャイル開発とウォーターフォール開発は、**ソフトウェア開発の進め方(プロセス)**における代表的な2つのアプローチです。それぞれに特徴と向き・不向きがあります。


🧱 ウォーターフォール開発(Waterfall Model)

✔ 特徴

  • 工程を上流から下流に一方向に進める(滝=ウォーターフォールのように)
  • 各工程が明確に区切られていて、次工程に進む前に前工程を完了させる
  • 文書ベースで合意・記録が多く、手戻りが少ないことが理想

📋 流れ

要件定義 → 設計 → 実装 → テスト → リリース → 保守

🟢 向いている場面

  • 要件が明確で変更が少ない
  • 大規模プロジェクトで厳密な管理が必要
  • 官公庁や重厚な産業(医療、金融、建設)などドキュメント重視の業界

🔴 デメリット

  • 要件変更に弱い(戻るのが大変)
  • 実際に動くものができるまで時間がかかる
  • 開発の後半までユーザーが成果物を確認できない

⚡ アジャイル開発(Agile Development)

✔ 特徴

  • 短い期間(スプリント)で反復的に開発
  • ユーザーやチームとの対話を重視
  • 要件や設計の変更に柔軟に対応
  • 動くソフトウェアを早期に見せながら進める

📋 流れ(例:スクラムの場合)

計画(Planning)→ 開発(Sprint)→ レビュー(Review)→ 振り返り(Retrospective)→ 次スプリント

🟢 向いている場面

  • 要件が変化しやすい
  • スタートアップやWeb系など、スピード重視
  • ユーザーのフィードバックを活かしたいとき

🔴 デメリット

  • 設計や仕様が曖昧なまま始まることがある
  • ドキュメントが少なく、属人性が高まりやすい
  • チームのスキル・コミュニケーション能力に依存しやすい

🆚 比較表(ざっくりまとめ)

項目 ウォーターフォール アジャイル
開発の進め方 一方向で段階的 短期間で反復的
要件変更への対応 苦手(初期で固定) 得意(都度柔軟に対応)
成果物の提供 最後にまとめて 毎スプリントで徐々に
ドキュメント 詳細に残す 最小限で進める
ユーザー関与 限定的(初期と受入テスト時など) 頻繁にフィードバック
管理スタイル 厳格・計画重視 自律・柔軟性重視
向いているプロジェクト 仕様が明確で変更が少ない場合 変化が多くスピードが求められる場合

Discussion