Data Flow Diagrams について
システム内のデータの流れをDFDで表すスキルです。標準的な記法と階層化の方法を用いて、システム分析、連携設計、プライバシー確認、セキュリティ監査を支援します。
主な機能
- 01DFDのエンティティ、プロセス、ストア、フロー
- 02レベル0のコンテキスト図
- 03レベル1のプロセス分解
- 04データ保存則と接続ルール
- 05DFDとフローチャートの違い
活用シーン
- 01レガシーシステムのデータフロー整理
- 02個人データの行き先の追跡
- 03システム連携の設計
- 04セキュリティ上の信頼境界の確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ danhvb/ my-ba-skills --skill data-flow-diagramsインストール後、Claude Code で/data-flow-diagramsを入力して読み込まれたか確認します。
詳細
データフロー図(DFD)スキル
目的
システム内でデータがどのように流れるかを可視化します。DFD はデータに対してシステムが 何をするか を示します。一方、フローチャートが示すのは制御フロー(順序)です。
使用する場面
- レガシーシステムを理解する。
- データプライバシーを分析する(PII はどこへ流れるか?)。
- インテグレーションを設計する。
- セキュリティ監査を実施する(信頼境界を特定する)。
DFD の表記法(Gane & Sarson または Yourdon)
- プロセス(円/角丸長方形):データを変換します。
- 形式:動詞+名詞。
- 例:
Calculate Tax、Validate User。
- 外部エンティティ(四角形):データの送信元または送信先(対象範囲外)です。
- 例:
Customer、Bank API、Admin。
- 例:
- データストア(開いた長方形/平行線):保存されているデータです。
- 例:
Customer DB、Orders File。
- 例:
- データフロー(矢印):データパケットの移動を示します。
- ラベル:
Order Details、Invoice。
- ラベル:
DFD のレベル
レベル 0:コンテキスト図
対象範囲:システム全体を 1 つのプロセスとして表します。 表示内容:システムの境界と外部とのやり取り。
例:
graph LR
Customer[Customer] -->|Order| System((Order Mgmt System))
System -->|Invoice| Customer
System -->|Payment Info| Bank[Bank]
Bank -->|Confirmation| System
Warehouse[Warehouse] -->|Stock Levels| System
System -->|Shipping Request| Warehouse
注:外部システムと共有されていない限り、レベル 0 ではデータストアを表示しません。
レベル 1:システムの分解
対象範囲:「1 つのプロセス」を主要なサブプロセス(3~7 個のバブル)に分解します。 表示内容:これらのプロセスが使用するデータストア。
例:
- プロセス 1.0:注文を検証する
- 入力:注文(Customer から)
- 出力:検証済みの注文
- プロセス 2.0:合計を計算する
- 入力:検証済みの注文+価格(Product DB から)
- 出力:合計金額
- プロセス 3.0:支払いを処理する
- 入力:合計金額+カード情報
- 出力:領収書
方法論のルール
- データの保存則:プロセスは何もないところからデータを作成できません(入力が必要です)。プロセスは出力せずにデータを消費できません(ブラックホール)。
- 直接接続は禁止:
- エンティティ ↔ エンティティ(対象範囲外)
- エンティティ ↔ データストア(プロセスを介す必要があります)
- データストア ↔ データストア(プロセスを介す必要があります)
- ラベル付け:すべての矢印に、移動する データ(アクションではなく)をラベルとして付けます。
DFD とフローチャートの比較
| DFD | フローチャート |
|---|---|
| データに焦点 | 制御/順序に焦点 |
| 「税額を計算する」 | 「税額 > 0 の場合、次を実行…」 |
| ループ/分岐なし | ループ/判断あり |
| 並列/非同期を暗示 | 順次処理を暗示 |
DFD の作成手順
- エンティティを特定する:誰がデータを送信/受信するか?(Customer、Manager、API)。
- プロセスを特定する:どのような論理的アクションが発生するか?(在庫を確認する、ユーザーを保存する)。
- データストアを特定する:情報をどこに保存するか?(ファイル、テーブル)。
- レベル 0 を描く:エンティティを「システム」に接続する。
- レベル 1 に展開する:システムをサブプロセスに分解する。
- 検証する:データの保存則とデータフローの欠落を確認する。
ベストプラクティス
- 論理性を保つ:物理的な実装については考慮しません(たとえば、論理 DFD では「紙のファイル」と「SQL DB」の違いは関係ありません)。
- プロセスに番号を付ける:1.0、2.0、3.0。サブプロセスには 1.1、1.2 を付けます。
- 複雑さを抑える:1 つのレベルに 7 個を超えるプロセスがある場合は、さらに分解します(レベル 2)。
ツール
- Visio。
- Lucidchart。
- Draw.io。
- Mermaid(グラフ形式)。
コメント
Markdown 対応