コンテンツにスキップ

ソフトウェア開発プロセスと生成AIによる変革

1. 開発プロセスと成果物・ドキュメント一覧

ウォーターフォール型とアジャイル(スクラム)型の各工程における主な実施内容と成果物をまとめました。

プロセス 工程/イベント 主な実施内容 主な成果物・ドキュメント
ウォーターフォール 要件定義 顧客の要望をヒアリングし、機能・非機能要件を定義する。 要件定義書 (BRD/SRS)、機能要件一覧、ユースケース図、画面遷移図
基本設計 (外部設計) ユーザーから見えるインターフェースやシステムの基本構造を設計する。 基本設計書、画面設計書、帳票設計書、IF設計書、ER図
詳細設計 (内部設計) プログラムの実装に必要な詳細なロジックやデータ構造を設計する。 詳細設計書 (クラス図, シーケンス図)、DB物理設計書、API仕様書
実装 (コーディング) 設計書に基づきプログラムを作成する。単体テストも実施する。 ソースコード、単体テスト仕様書・成績書
結合テスト (IT/ST) 複数のモジュールやシステム全体を結合して動作を確認する。 結合テスト計画書、結合テスト仕様書・成績書、不具合管理表
総合テスト (UAT) 実際の運用環境に近い状態で、業務要件を満たしているか確認する。 総合テスト計画書、総合テスト仕様書・成績書、受入検収書
運用保守 システムのリリース後、安定稼働のための監視や改修を行う。 運用マニュアル、保守手順書、障害報告書
アジャイル (スクラム) スプリントプランニング スプリントで達成すべきゴールと、対象となるバックログアイテムを決定する。 スプリントバックログ、スプリントゴール
デイリースクラム 開発チームが進捗や課題を毎日共有し、計画を微修正する。 (日次の進捗共有、カンバンボードの更新)
実装・テスト スプリント期間内に設計・実装・テストを行い、動作するソフトウェアを作成する。 インクリメント (動作するソフトウェア)、コード、自動テストスクリプト
スプリントレビュー 成果物(インクリメント)をステークホルダーにデモし、フィードバックを得る。 (フィードバック記録、プロダクトバックログの更新)
スプリントレトロスペクティブ チームのプロセスや働き方を振り返り、改善点を議論する。 KPT表、改善アクションアイテム
(全体管理) プロダクト全体の方向性と優先順位を管理する。 プロダクトバックログ、プロダクトビジョン、バーンダウンチャート

2. 成果物の具体例 (テンプレート・イメージ)

2.1 要件定義書 (Software Requirements Specification: SRS)

システムが「何を」すべきかを定義する最重要ドキュメントです。

目次構成例: 1. はじめに (目的、範囲、定義・略語) 2. 全体説明 (製品の視点、ユーザー特性、制約事項、前提条件) 3. 機能要件 (システム機能ごとの詳細) * 3.1 ユーザー登録機能 * 入力項目: 氏名, メールアドレス, パスワード * 処理: 重複チェック, DB登録, 確認メール送信 * 出力: 登録完了画面 4. 非機能要件 (性能、セキュリティ、信頼性) * 性能: 画面遷移は2秒以内 * セキュリティ: パスワードはソルト付きハッシュ化 5. 外部インターフェース要件 (UI, ハードウェアIF, ソフトウェアIF)

2.2 詳細設計書 (Detailed Design Document: DDD)

開発者がコーディングできるように、システムの構造を詳細に記述します。

目次構成例: 1. はじめに (目的、範囲) 2. システムアーキテクチャ (全体構成図、技術スタック) 3. モジュール設計 (各クラス・関数ごとの詳細) * 3.1 UserService クラス * registerUser(UserDto user): ユーザー登録処理 * 引数: UserDto (氏名, Email, Pass) * 戻り値: UserResponse (ID, Status) * 処理フロー: 1. バリデーションチェック 2. DB存在確認 (UserRepository.exists) 3. パスワードハッシュ化 4. DB保存 (UserRepository.save) * 例外処理: DuplicateUserException 4. データベース設計 (ER図、テーブル定義書) * users テーブル: id (PK), email (Unique), password_hash, created_at 5. API仕様書 (エンドポイント、リクエスト/レスポンス例)

2.3 プロダクトバックログアイテム (PBI) / ユーザーストーリー

アジャイル開発における要件定義の単位です。「誰が」「何を」「なぜ」したいかを簡潔に記述します。

テンプレート (ユーザーストーリー形式):

[ユーザーの種類] として、 [機能・ゴール] をしたい。 それは [価値・メリット] のためだ。

具体例: * タイトル: 商品検索機能 * ストーリー: 「ECサイトの利用者として、商品名で商品を検索したい。それは欲しい商品をすぐに見つけるためだ。」 * 受入条件 (Acceptance Criteria): * [ ] 検索ボックスにキーワードを入力し、検索ボタンを押すと検索結果が表示されること。 * [ ] 該当する商品がない場合、「該当する商品はありません」と表示されること。 * [ ] 検索結果は価格の安い順に並び替えられること。 * [ ] 部分一致検索が可能であること。


3. 開発プロセスの可視化 (Mermaid図)

3.1 ウォーターフォール型開発プロセス

flowchart TD
    A([開始]) --> B[要件定義<br/>(Requirements)]
    B --> C[基本設計<br/>(Basic Design)]
    C --> D[詳細設計<br/>(Detailed Design)]
    D --> E[実装・単体テスト<br/>(Implementation & Unit Test)]
    E --> F[結合テスト<br/>(Integration Test)]
    F --> G[総合テスト<br/>(System Test)]
    G --> H[受入テスト<br/>(UAT)]
    H --> I[リリース・運用保守<br/>(Operation & Maintenance)]
    I --> J([終了])

    subgraph "ドキュメント中心"
    B -.-> K[要件定義書]
    C -.-> L[基本設計書]
    D -.-> M[詳細設計書]
    end

3.2 アジャイル (スクラム) 開発プロセス

flowchart LR
    subgraph "準備フェーズ"
    Start([開始]) --> PB[プロダクトバックログ<br/>(要望リスト)]
    end

    subgraph "スプリント (1-4週間)"
    direction TB
    PB --> SP[スプリント<br/>プランニング]
    SP --> SB[スプリント<br/>バックログ]
    SB --> DS((デイリー<br/>スクラム))
    DS --> Imp[実装・テスト]
    Imp --> Inc[インクリメント<br/>(動く成果物)]
    Inc --> SR[スプリント<br/>レビュー]
    SR --> Retro[スプリント<br/>レトロスペクティブ]
    end

    Retro --> SP
    SR -->|フィードバック| PB

4. 各工程の生産性向上要件と現時点での問題点

工程 生産性を高めるために必要なこと 現時点での典型的な問題点・ボトルネック
要件定義/管理 ・明確で一貫性のある要件定義
・ステークホルダーとの密な合意形成
要件の曖昧さと頻繁な変更 (手戻りの最大要因)
・ドキュメント作成の工数過多と陳腐化
設計 ・再利用可能なアーキテクチャの採用
・標準化されたデザインパターンの適用
技術的負債の蓄積 (急ぎの対応による設計破綻)
・属人化した設計と知識共有の不足
実装 ・集中できる環境 (フロー状態) の確保
・高機能なIDEと自動化ツールの活用
割り込みや会議によるコンテキストスイッチ
・ボイラープレートコード記述の単純作業
・ライブラリ/ツールの選定・学習コスト
テスト ・テストの自動化 (CI/CDパイプライン)
・早期のバグ検出 (シフトレフト)
手動テストの負担とヒューマンエラー
・テストデータの作成・管理コスト
・複雑な依存関係による結合テストの難易度
全体/マネジメント ・自律的なチーム運営と心理的安全性
・適材適所のリソース配置
マイクロマネジメントによるモチベーション低下
・非現実的な納期設定と過度なプレッシャー
・コミュニケーション不全

5. 生成AI中心の開発への変化 (GenAI-Native Development)

生成AI (Generative AI) の導入により、SDLC (Software Development Life Cycle) 全体が大きく変容しつつあります。

全体的な変化

  • 「書く」から「レビューする」へ: 開発者はコードやドキュメントをゼロから書くのではなく、AIが生成したものをレビューし、修正・統合する役割にシフトします。
  • 自然言語プログラミング: 複雑な構文を覚える必要性が下がり、自然言語での指示 (プロンプト) で機能を実装できるようになります。

各工程における具体的な変化

  1. 要件定義の高度化と自動化

    • 現状: ヒアリング内容を手動で整理しドキュメント化。
    • GenAI導入後: 会議録音やメモからBRD/SRSを自動生成。過去の類似プロジェクトや業界標準に基づき、要件の欠落や矛盾を指摘・補完する。
  2. 設計プロセスの加速

    • 現状: アーキテクチャ図やAPI仕様書を手動で作成。
    • GenAI導入後: 要件定義書からアーキテクチャ案、データモデル、API仕様書を即座に生成。複数の設計パターンを提示し、メリット・デメリットを比較評価させることも可能。
  3. 実装の爆発的な効率化 (AIペアプログラミング)

    • 現状: 手書きでコーディング、StackOverflowでの調査。
    • GenAI導入後: GitHub Copilot 等がコードの大部分を自動補完・生成。ボイラープレートコードは一瞬で作成され、単体テストコードも実装と同時に生成される。開発者はビジネスロジックや複雑なアルゴリズムの設計に集中できる。
  4. テストと品質保証の自動化

    • 現状: 手動でのテストケース作成、限定的な自動テスト。
    • GenAI導入後: 仕様書やコード変更から網羅的なテストケースとテストデータを自動生成。エッジケースの発見もAIが支援し、バグ修正案も同時に提示する。
  5. レガシーコードの刷新

    • 現状: 解読困難な「スパゲッティコード」の塩漬け。
    • GenAI導入後: COBOL等のレガシー言語から現代的な言語への変換 (Transpilation) や、コードの意図を解説するドキュメントの生成、リファクタリング案の提示が可能になる。

6. 参考資料 (調査に使用したURL)