主に下記のように分かれる
**1)企画:**ビジネス可能性、ROI算出、リスク分析を基に開発要否を判断する
2)要件定義では、業務要件とシステム要件を含む
2.1)業務要件定義(BRD):業務目標、範囲、指標、プロセスなどを明確する
・システム化の目的(何のため)、背景、目標(どんなメリット)
・Stakeholders一覧と関連図
・ビジネスプロセス関連図:各業務モデル間(例えば、部門、子システム)の関連性
・現状の業務フロー(As-Is)、及び業務一覧
・課題一覧、制約(タイムライン、予算、リスク)など
・システム化業務フロー(To-Be)、及び要求一覧:UMLのUse Case図、Activity図でよく利用する
・業務機能構成表:業務プロセスを階層的に細分化して、機能一覧へ落とし込む
・業務処理定義書:各業務処理の詳細を定義する
・遵法性:法令、業界規制、アクセス権限、ログ保管、ライセンス
2.2)システム要求仕様(SRS):機能(入出項目一覧、業務ロジック、ユーザ権限、外部連携)を明確し、非機能の検収標準を定める。
2.2.1)機能要件:
・画面:画面一覧、及び入出項目の形式と検証ルールなど
・帳票:帳票一覧、及び出力項目の形式
・ジョブまたはバッチ:処理一覧、起動条件
・業務ロジック:サーバー側の計算公式、判断ロジック、状態遷移ルールなど
・認証・権限:ログイン、操作範囲など
・外部インターフェース:外部システム関連図、インターフェース一覧及び定義書
2.2.1)非機能要件:
・信頼性Reliability:MTBF(平均故障間隔)、MTTR(平均復旧時間)
・可用性Availability:稼働率(システム種類別によって異なり、常に99.99%)
・耐久性Durability:障害時でもデータの失わない度合い、常に99.9999999%
・セキュリティ:ネットワーク、ストレージ、OWASP
・性能Performance:RT,TPS、リソース利用率、エラー率
・拡張性Scalability:
・保守性Maintainability:ドキュメント完璧、高凝集と疎結合、DevOps自動化
・移行性Portability:環境別(OS、フレームワークなど)の適用性
・本番データ:保存方式、保留期間などのライフサイクル、マスキング、審査用
3)設計:外部設計と内部設計を含む
3.1)外部設計(基本設計/概要設計):
・データ容量予測
・アーキテクチャ:全体構成図、設計方針(モノリシック、分散システム、マイクロサービス、サーバレス)
・インフラ:ハードウェア構成図、ネットワーク構成図、
・アプリケーション構成
・UIデザイン
・インタフェース設計:外部システム関連図、通信仕様のProtocol(HTTP、TCP、WebSocket、gRPC)、データ形式(JSON、CSV)など
・技術スタック:OS、仮想マシン、DB、ミドルウェアの選定
・DevOps:CICDなど
・運用設計:サーバ監視、ログ、リリース及びリカバリ
3.2)内部設計(詳細設計):
・FSD:各機能の詳細仕様書(エラー処理、制約条件などを補足)
・テーブル定義、ER図
・API仕様書:子モジュール間の呼び出し、API種類(RESTful API、RPC)
・テスト設計:テストケースなど
・セキュリティの対応方法:認証(OAuth2、JWT、RBAC)、暗号化、脆弱性診断(OWASP)
・データ移行:既存システムを再構築する場合、必要
・クラス設計:クラス図、シーケンス図
4)開発:ドキュメントをソースコードへ
5)テスト:ソースコードの正確性、性能、セキュリティを検証する
6)運用:本番稼働、監視、及びメンテナンス