システム開発のフェーズについて

主に下記のように分かれる

**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)運用:本番稼働、監視、及びメンテナンス