Chuyển đến nội dung chính

ソフトウェア BA の API とデータ契約: 統合要件を読み、尋ね、書き込む方法は?

Duy Tran17分
ソフトウェア BA の API とデータ契約: 統合要件を読み、尋ね、書き込む方法は?

ソフトウェア BA はバックエンド コードを記述する必要はありませんが、デジタル製品を作成する場合は、API とデータに関する次のような疑問が常に発生します。

  • どのシステムがデータを送信しますか?
  • どのフィールドが必須ですか?
  • エラーが発生した場合、どのようなメッセージを返せばよいですか?
  • データのソースは何ですか?
  • ログを監査する必要はありますか?
  • タイムアウトになった場合、API は再度呼び出されますか?
  • イベントを複製することはできますか?

BA がこの部分を完全に回避すると、要件はビジネスとエンジニアリングの間の引き継ぎ領域にギャップが生じることになります。

1. API コントラクトとは何ですか?

API コントラクトは、呼び出し元と API プロバイダーの間の契約です。

通常、契約には次の内容が含まれます。

  • エンドポイントまたはイベント名。
  • メソッド: GET、POST、PUT、PATCH、DELETE。
  • ペイロードを要求します。
  • 応答ペイロード。
  • 検証ルール。
  • エラーコード/メッセージ。
  • 認証/認可。
  • レート制限または割り当て。
  • バージョン管理。
  • SLA/可用性。

BA はすべての技術的な決定を行う必要はありませんが、契約がビジネスを正確に反映していることを確認する必要があります。

2. データ契約とは何ですか?

データ契約は、交換または保存されるデータに関する契約です。

フィールドの例 appointmentStatus:

属性値
タイプ列挙型
許可される値保留中、確認済み、キャンセル済み、完了済み、NoShow
必須はい
出典予約サービス
オーナー製品運用
敏感いいえ
保持7年
使用者UI、レポート、通知、監査

フィールドに所有者がなく、不明なソース、不明な許容値がある場合、システムは UI、API、データベース、レポートの間に簡単に不一致を生じます。

3. BA 用の統合リクエスト テンプレート

# Integration Requirement

## 1. Business context
- Business process:
- Trigger:
- Actor/system:
- Success outcome:

## 2. Systems involved
- Source system:
- Target system:
- External dependency:

## 3. API / event
- Endpoint/event:
- Method:
- Authentication:
- Frequency:
- Idempotency requirement:

## 4. Request data
| Field | Type | Required | Validation | Source | Notes |

## 5. Response data
| Field | Type | Required | Meaning | UI/report usage |

## 6. Error handling
| Error | Cause | User message | Retry? | Escalation |

## 7. Non-functional requirements
- Performance:
- Availability:
- Security/privacy:
- Audit/logging:
- Monitoring:

## 8. Open questions

このテンプレートはアジャイルで使用するのに十分軽量ですが、開発と QA が自分で理解する必要がないほど明確です。

4. 例: 約束をする

要件:

患者がスロットを選択して確認をクリックすると、システムはスロットが利用可能な場合は予約を作成し、予約コードを返す必要があります。

推奨される API:

POST /appointments

リクエスト:

{
  "patientId": "PAT-123",
  "doctorId": "DOC-456",
  "slotId": "SLOT-789",
  "reason": "Follow-up consultation",
  "channel": "WEB"
}

検証:

フィールドルール
患者ID必須、存在する必要がある、アクティブな患者
医師ID必須、存在する必要があります、予約を受け付けています
スロットID必須、送信時に利用可能でなければなりません
理由オプション、最大 500 文字
チャンネル必須、列挙型 WEB/MOBILE/CALL_CENTER

応答成功:

{
  "appointmentId": "APT-20260506-001",
  "status": "Confirmed",
  "confirmationCode": "XDA-8821"
}

エラー:

コード原因ユーザーメッセージ3 つのメモ
スロット_使用不可スロットが取られましたこのスロットは配置されたばかりです。別の時間を選択してください。代替スロットを表示する必要があります
患者をブロックしました患者は予約できません予約する前にアカウントがサポートされている必要があります。サポートへのルート
検証_エラーフィールドが欠落または無効です再度情報をご確認ください。フィールドを強調表示する
システムタイムアウトサービスタイムアウトシステムがビジー状態です。もう一度試してください。冪等性が必要

5. BA が開発/データ/QA に尋ねるべき質問

API を使用する場合:

  • API は同期ですか、それとも非同期ですか?
  • 重複を避けるために冪等キーが必要ですか?
  • タイムアウトはどれくらいですか?
  • 再試行はありますか?何回再試行しますか?
  • どのエラーがユーザーに表示され、どのエラーがログに記録されるだけですか?
  • API にはバージョンがありますか?
  • 重要なリクエスト/レスポンスの監査ログはありますか?

データあり:

  • フィールドの真実の情報源とはどのようなシステムですか?
  • フィールドを null にすることはできますか?
  • PII/PHI/財務データはありますか?
  • 保存ルールと削除ルールとは何ですか?
  • レポートはリアルタイム データまたはバッチ データを使用しますか?
  • ソースからダッシュボードまでのデータの系統はありますか?

QA付き:

  • 契約テストはありますか?
  • 重複したリクエストに対するテスト ケースはありますか?
  • 古いデータのテスト ケースはありますか?
  • 権限テストはありますか?
  • 下位互換性テストはありますか?

6. API/データ要件のチェックリスト

  • エンドポイント/イベントの名前が明確になっています。
  • ビジネストリガーを明確にします。
  • リクエスト/レスポンスには、タイプ、必須、検証のフィールドがあります。
  • エラー処理には、コード、原因、ユーザー メッセージ、再試行/エスカレーションが含まれます。
  • 許可をクリアします。
  • 機密データにはマークが付けられます。
  • 監査/ログをクリアします。
  • 測定可能なパフォーマンスと可用性。
  • トランザクションがある場合の冪等性/重複処理をクリアします。
  • 契約にはバージョンまたは変更ポリシーがあります。

7. よくあるエラー

エラー 1: データではなく画面のみを書き込みます

UIはほんの一部です。データがどこから来てどこへ行くのかが不明確であれば、レポート、通知、監査、統合は間違ったものになります。

エラー 2: エラーの説明がありません

幸せな道は通常は簡単です。新たなエラーは、ユーザー エクスペリエンスとサポート コストが急増する点にあります。

エラー 3: 冪等性を求めていない

注文の作成、支払い、スケジュール設定、およびトランザクションの再試行では、重複が発生する可能性があります。 BA は、ビジネス ルールと UX が欠落しないように、早めに質問する必要があります。

より完全な API コントラクトの例

エンドポイント:

PATCH /appointments/{appointment_id}/reschedule

ビジネスルール:

  • ユーザーは、サポート権限を持つ所有者またはカスタマー サービスである必要があります。
  • 予定は確認済み状態である必要があります。 ・販売開始時間は4時間以上となります。
  • 新しいスロットが利用可能である必要があります。 ・ リクエストリトライは複数回作成できません。

リクエスト:

{
  "new_slot_id": "SLOT-20260507-1000",
  "reason": "Customer requested a later time",
  "idempotency_key": "a9c6d2f0-7e2b-4b15-a4b9-118e6f21c001"
}

応答成功:

{
  "appointment_id": "APT-20260506-001",
  "old_slot_id": "SLOT-20260507-0900",
  "new_slot_id": "SLOT-20260507-1000",
  "status": "Confirmed",
  "updated_at": "2026-05-06T10:30:00Z"
}

検証とエラー:

コードHTTP原因ユーザーメッセージ再試行
所有者ではありません403ユーザーは販売を所有していませんこのスケジュールを変更する権利はありません。いいえ
無効なステータス409予約は確認されていませんこの予定は変更できません。いいえ
カットオフ_期限切れ409残り 4 時間未満スケジュールは近日公開予定です。ホットラインにお電話ください。いいえ
スロット_使用不可409新しいスロットが配置されましたこのスロットは配置されたばかりです。別の時間を選択してください。はい、別のスロットを選択してください
重複リクエスト200同じ冪等性キー最初のリクエストの結果を返します。安全

監査ログ:

フィールド意味
俳優ID誰がスケジュールを変更したのか
俳優の役割顧客/顧客サービス/管理者
予定IDスケジュール変更
古いスロット ID/新しいスロット ID前後
理由変更理由
タイムスタンプ時間

これは、開発者が実装するには十分な詳細であり、QA はコントラクト/ネガティブ テストを作成し、ビジネスはシステムが各ケースを拒否する理由を理解するのに十分です。

参照元

結論

API/データ リテラシーは、ソフトウェア BA が統合段階で盲目的にならないようにするのに役立ちます。コードを記述する必要はありませんが、契約、検証、エラー、セキュリティ、監査、データの所有権について適切な質問をする方法を知る必要があります。これは、スライドの要件を作成する BA と実際のソフトウェアの要件を作成する BA を区別する機能です。