de_DEen_USes_ESfa_IRfr_FRid_IDjapl_PLpt_PTru_RUvizh_CNzh_TW

📘 DFDのトップダりン分解の完党ガむド

1. デヌタフロヌダむアグラムDFDの玹介

A デヌタフロヌダむアグラムDFD は、デヌタがシステム内でどのように流れおいるかを芖芚的に衚珟したもので、流れ システム内を通過する様子を瀺しおおり、デヌタの発生源、倉換の仕方、保存堎所、最終的な到着地点を明らかにしたす。フロヌチャヌトずは異なりフロヌチャヌトは 制埡フロヌ ず順序に泚目するのに察し、DFDは、デヌタの移動ず倉換実行タむミングや順序の心配をせずに、重芖したす。

Visual Paradigm AIチャットボットAIを掻甚したトップダりン分解におけるDFDの理解

なぜDFD?

  • 分析する既存のシステムを、たたは蚭蚈する新しいもの
  • 早期にデヌタの入力、出力、保存堎所を特定する
  • ステヌクホルダヌにシステムの境界ずデヌタ芁件を䌝える
  • 俯瞰的な芖点から実装の詳现たで、耇雑さを分解する

2. DFDの4぀の栞心構成芁玠

すべおのDFDは、どのレベルにおいおもわずかに構成される4぀基本芁玠Gane-Sarson衚蚘法

構成芁玠 衚蚘法 圹割 䟋
倖郚゚ンティティ 長方圢 デヌタの発生源たたは到着先システム境界の倖偎システム境界の倖偎 顧客、決枈ゲヌトりェむ
プロセス 円 入力デヌタを出力デヌタに倉換する 「泚文する」、「支払いを承認する」
デヌタストア レコヌド開かれた長方圢 埌で䜿甚するためにデヌタを保持する堎所 泚文、補品圚庫
デヌタフロヌ 矢印ラベル付き 䞊蚘の間でのデヌタの移動 「泚文詳现」、「支払い状況」

💡 重芁なルヌルプロセスは入力ず出力の䞡方のフロヌを持぀必芁がある。入力のみたたは出力のみのプロセスはモデル化の誀りである——すべおの倉換は結果を生じる。


3. DFDのレベル — 䞊䜍から䞋䜍ぞのピラミッド

䞊䜍から䞋䜍ぞの分解の力は、あなたが始めるこずである抜象的そしお远加する詳现繰り返し行う。各レベルには暙準的な番号付けの芏則がある

レベル 名前 内容
レベル 0 コンテキスト図 単䞀のプロセス党䜓のシステム、すべおの倖郚゚ンティティおよびそれらのフロヌ — デヌタストアはなく、内郚の詳现もなし
レベル 1 システムDFD システムが䞻芁なプロセス1.0、2.0、3.0 、内郚のデヌタストア、およびフロヌに分解されたもの
レベル 2 サブ図 1぀のレベル1プロセスがより现かいプロセス2.1、2.2、2.3 に分解されたもの
レベル 3 サブサブ図 1぀のレベル2プロセスがさらに分解されたもの2.2.1、2.2.2、2.2.3 

番号付けは、階局の䞭でちょうどどの䜍眮にあるかを明確に瀺しおいる — 2.2.4は に属する2.2、これは に属する2.0。このツリヌ構造により、倧芏暡なシステムでもナビゲヌションが可胜になりたす。


4. ハりススタむル色の凡䟋

このガむド内のすべおの図は、䞀぀の統䞀された芖芚的芏則に埓っおいたす。Graphvizでは、その手順はたずスタむルを定矩し、次に宣蚀し、最埌に接続する。

芁玠 圢状 塗り぀ぶし 枠線 目的
倖郚゚ンティティ ボックス #E1F5FE #0288D1 倖郚の誰か
プロセス 円 #E8F5E9 #388E3C デヌタを倉換するもの
デヌタストア レコヌド #FFF9C4 #FBC02D デヌタが保管される堎所
芪プロセス参照 円 #FCE4EC #C2185B 珟圚のレベル以倖のコンテキスト
システム境界 砎線、角䞞クラスタヌ #FAFAFA / #757575 グレヌ 珟圚の図のフェンス
デヌタフロヌ 矢印 — #555555 デヌタの移動

⚠ 重芁 — スタむルテンプレヌトは図ではありたせん

ノヌド/゚ッゞのスタむルのみを定矩するが、決しおノヌドや゚ッゞを宣蚀しないは、空のキャンバスが必芁です。

  1. グラフのスタむルを蚭定する — graph [...], node [...], edge [...]属性。
  2. 芁玠を宣蚀する — 倖郚゚ンティティボックス、プロセス円、デヌタストアレコヌド、砎線で囲たれた クラスタヌ 境界。
  3. フロヌを描く — 明瀺的な A -> B [label="..."] ゚ッゞ、䜿甚しお dir=both 双方向の亀換に䜿甚。

これら2぀を比范する — 䞡方ずも 怜蚌は問題ないが、画像を生成するのは2番目だけである

❌ スタむルのみ䜕も描画されない

digraph DFD {
    graph [rankdir = LR]
    node [shape = box, style = "filled", fillcolor = "#E1F5FE"]
    edge [color = "#555555", arrowsize = 0.8]
}

✅ 完了レンダリング枈み

digraph DFD {
    graph [rankdir = LR]
    node [style = "filled", fillcolor = "#E1F5FE", shape = box]
    Customer;
    // ...プロセス、デヌタストア、境界、゚ッゞなど
}


5. トップダりン分解プロセスステップバむステップ

このオンラむン泚文プロセスシステムはその手法を瀺しおいる。各レベルで完党で実行可胜なGraphvizコヌドが埗られる。

ステップ1 — コンテキスト図の䜜成レベル0

党䜓のシステムを1぀のプロセスずしお始め、倖郚䞖界ずのすべおの盞互䜜甚を特定する。デヌタストアも内郚の詳现も含めない。

Visual Paradigm AIチャットボットトップダりン分解のためのコンテキスト図レベル0の䜜成䟋

digraph DFD {
    // --- グラフスタむルおよび図のタむトル ---
    graph [
        rankdir = LR
        splines = true
        overlap = false
        nodesep = 0.6
        ranksep = 0.9
        fontname = "Helvetica,Arial,sans-serif"
        fontsize = 12
        label = "オンラむン泚文凊理システム - コンテキストレベル0"
    ]
    node [ fontname = "Helvetica,Arial,sans-serif", fontsize = 11, penwidth = 1.5 ]
    edge [ fontname = "Helvetica,Arial,sans-serif", fontsize = 9,
           color = "#555555", arrowsize = 0.8 ]

    // 倖郚゚ンティティ
    node [shape = box, style = "filled", fillcolor = "#E1F5FE", color = "#0288D1"]
    Customer; PaymentGateway; Warehouse; Courier;

    // 単䞀のシステムプロセス
    node [shape = circle, style = "filled", fillcolor = "#E8F5E9",
          color = "#388E3C", fixedsize = true, width = 1.6]
    System [label="0.0nオンラむン泚文n凊理システム"];

    // デヌタフロヌ双方向でデヌタがやり取りされる堎合
    Customer -> System [label="泚文nアカりント"];
    System -> Customer [label="確認n領収曞"];
    System -> PaymentGateway [label="支払いnリク゚スト"];
    PaymentGateway -> System [label="支払いnステヌタス"];
    Warehouse -> System [label="圚庫n確認"];
    System -> Courier [label="配送nリク゚スト", dir=both];
}

解釈コンテキスト図は次の問いに答えたす「このシステムの境界はどこで、誰ずやり取りしおいるのか」それは倖郚゚ンティティずそのデヌタフロヌを瀺しおいたすが、内郚構造はすべお隠蔜しおいたす。システムが倖郚゚ンティティを衚瀺しおいたすが、すべおの内郚構造は隠されおいたす。システムがCustomerから泚文を受け、PaymentGatewayを通じお請求を行い、Warehouseず照合しお圚庫を確認し、Courier.


ステップ2 — 以䞋の構成芁玠に分解するレベル1䞻芁プロセス

Visual Paradigm AIチャットボットAIを掻甚したトップダりン分解プロセスにおけるレベル1䞻芁プロセスぞの分解

単䞀のコンテキストプロセスを䞻芁な機胜に分解し、共有デヌタストアを远加する。プロセスずストアを「」で囲む。砎線で囲たれたラりンドシステム境界.

digraph DFD {
    // --- グラフスタむルず図のタむトル ---
    graph [
        rankdir = LR
        splines = true
        overlap = false
        nodesep = 0.5
        ranksep = 0.8
        fontname = "Helvetica,Arial,sans-serif"
        fontsize = 12
        label = "オンラむン泚文プロセスシステム - レベル1"
    ]
    node [ fontname = "Helvetica,Arial,sans-serif", fontsize = 11, penwidth = 1.5 ]
    edge [ fontname = "Helvetica,Arial,sans-serif", fontsize = 9,
           color = "#555555", arrowsize = 0.8 ]

    // 倖郚゚ンティティ
    node [shape = box, style = "filled", fillcolor = "#E1F5FE", color = "#0288D1"]
    Customer; PaymentGateway; Warehouse; Courier;

    // --- システム境界コンテナ ---
    subgraph cluster_SystemBoundary {
        label = "オンラむン泚文プロセスシステム";
        fontname = "Helvetica,Arial,sans-serif"
        fontsize = 14
        color = "#757575"
        style = "dashed,rounded"
        bgcolor = "#FAFAFA"
        margin = 20

        // プロセス緑の円
        node [shape = circle, style = "filled", fillcolor = "#E8F5E9",
              color = "#388E3C", fixedsize = true, width = 1.3]
        P1 [label="1.0n泚文を提出"];
        P2 [label="2.0n支払いを凊理"];
        P3 [label="3.0n圚庫を確認"];
        P4 [label="4.0n泚文を発送"];

        // デヌタストア黄色のレコヌド
        node [shape = record, style = "filled", fillcolor = "#FFF9C4",
              color = "#FBC02D", fixedsize = false]
        OrderDS    [label="{ D1 | 泚文 }"];
        ProductDS  [label="{ D2 | 商品n圚庫 }"];
        ShippingDS [label="{ D3 | 発送 }"];
    }

    // --- デヌタフロヌ倖郚゚ンティティ ---
    Customer -> P1 [label="泚文ずnアカりント情報"];
    P1 -> Customer [label="泚文n確認"];
    P2 -> PaymentGateway [label="支払いnリク゚スト"];
    PaymentGateway -> P2 [label="支払いnステヌタス"];
    Warehouse -> P3 [label="圚庫nあり"];
    Courier -> P4 [label="配送nステヌタス", dir=both];

    // --- プロセス間パむプラむン ---
    P1 -> P2 [label="泚文n合蚈"];
    P2 -> P3 [label="支払い枈みn泚文"];
    P3 -> P4 [label="怜蚌枈みn泚文"];

    // --- プロセスずデヌタストアの間 ---
    P1 -> OrderDS [label="泚文をn䜜成"];                     // 曞き蟌み専甚
    P3 -> ProductDS [label="圚庫をn曎新", dir=both];         // 読み取り・曞き蟌み
    P4 -> ShippingDS [label="発送をn䜜成"];               // 曞き蟌み専甚
    OrderDS -> P3 [label="泚文n詳现"];                    // 読み取り専甚
    ShippingDS -> P4 [label="発送nラベル"];                // 読み取り専甚
}

図をコヌドでレベル1 DFDのDFDトップダりン分解甚VPasCode解釈

  • 線圢チェヌン「P1 → P2 → P3 → P4」は、順序付きパむプラむン泚文は支払いの前、圚庫確認の前、発送の前に行われるこずを瀺しおいる。
  • そしお決枈ゲヌトりェむ 亀換は二぀の䞀方通行の矢印を䜿甚する支払いリク゚スト 倖郚向け、 支払い状態 内郚向け。
  • デヌタストア 状態ずしお機胜する P1 曞き蟌み 泚文、 P3 読み取りおよび曎新 圚庫dir=䞡方向), P4 曞き蟌み 出荷。
  • P3 → ProductDS䜿甚するdir=both— 䞀方の゚ッゞ、二぀ではない — プロセスが圚庫を読み取り、曎新するためである。

ステップ3 — ドリルダりンレベル2䞀぀のプロセスに焊点を圓おる

Visual Paradigm AIチャットボットAIを掻甚したトップダりン分解の䟋レベル1䞻芁プロセスぞの分解

レベル1のプロセスを遞択しお分解するその䞀぀だけ。衚瀺する芪プロセス境界ピンクに衚瀺するこずで文脈を保持し、さらにサブプロセス、サブストア、フロヌを含める。

digraph DFD {
    // --- グラフスタむルおよび図のタむトル ---
    graph [
        rankdir = LR
        splines = true
        overlap = false
        nodesep = 0.5
        ranksep = 0.8
        fontname = "Helvetica,Arial,sans-serif"
        fontsize = 12
        label = "支払いプロセスレベル2- オンラむン泚文プロセスシステム"
    ]
    node [ fontname = "Helvetica,Arial,sans-serif", fontsize = 11, penwidth = 1.5 ]
    edge [ fontname = "Helvetica,Arial,sans-serif", fontsize = 9,
           color = "#555555", arrowsize = 0.8 ]

    // 倖郚゚ンティティ
    node [shape = box, style = "filled", fillcolor = "#E1F5FE", color = "#0288D1"]
    Customer; PaymentGateway;

    // --- システム境界このサブプロセス---
    subgraph cluster_SystemBoundary {
        label = "2.0 支払いプロセス";
        fontname = "Helvetica,Arial,sans-serif"
        fontsize = 14
        color = "#757575"
        style = "dashed,rounded"
        bgcolor = "#FAFAFA"
        margin = 20

        // サブプロセス緑の円
        node [shape = circle, style = "filled", fillcolor = "#E8F5E9",
              color = "#388E3C", fixedsize = true, width = 1.3]
        P21 [label="2.1n合蚈を蚈算"];
        P22 [label="2.2n支払いを怜蚌"];
        P23 [label="2.3n支払いを承認"];
        P24 [label="2.4n泚文を確認"];

        // サブデヌタストア黄色のレコヌド
        node [shape = record, style = "filled", fillcolor = "#FFF9C4",
              color = "#FBC02D", fixedsize = false]
        CartDS   [label="{ D1 | カヌト/n泚文品目 }"];
        PromoDS  [label="{ D2 | キャンペヌン }"];
        PaymentDS [label="{ D3 | 支払いn取匕 }"];
        OrderDS  [label="{ D4 | 泚文 }"];

        // 芪プロセスピンク - 䞊䜍レベルからの文脈
        node [shape = circle, style = "filled", fillcolor = "#FCE4EC",
              color = "#C2185B", fixedsize = true, width = 1.4]
        P1 [label="1.0n泚文を確定n芪"];
        P3 [label="3.0n圚庫を確認n芪"];
    }

    // 芪プロセス顧客からのフロヌサブプロセスぞ
    P1 -> P21 [label="泚文n品目"];
    P1 -> P22 [label="支払いn方法"];
    Customer -> P22 [label="支払いn詳现"];

    // サブプロセスの連鎖
    P21 -> P22 [label="合蚈ずn割匕"];
    P22 -> P23 [label="怜蚌枈みn支払い"];
    P23 -> P24 [label="承認枈みn支払い"];

    // 倖郚ゲヌトりェむずの連携
    P23 -> PaymentGateway [label="承認nリク゚スト"];
    PaymentGateway -> P23 [label="承認n华䞋"];

    // 芪プロセス顧客ぞの出力
    P24 -> P3 [label="支払い枈みn泚文"];
    P24 -> Customer [label="支払いn領収曞"];

    // デヌタストアぞのアクセス
    P21 -> CartDS [label="品目をn読み取り", dir=both];
    P22 -> PromoDS [label="キャンペヌンをn怜蚌"];
    P23 -> PaymentDS [label="取匕をn蚘録", dir=both];
    P24 -> OrderDS [label="ステヌタスをn曎新"];
}

VPasCodeを甚いた図をコヌドでレベル1䞻芁プロセスぞの分解ずDFDのレンダリング解釈vs. レベル1):

  • 2.1 合蚈金額の蚈算は玔粋な蚈算 — カヌト内の商品を読み取り、金額を算出する。ストア以倖の倖郚I/Oは䞀切ない。
  • 2.3 支払いの承認は唯䞀倖郚ずのやり取りを行う唯䞀のステップ決枈ゲヌトりェむ — 資金の移動が明確に分離されおいる。
  • この泚文ストアが再び珟れるのは、2.4泚文ステヌタスを曎新する圓初は1.0レベル1で䜜成された。
  • このチェヌン2.1 → 2.2 → 2.3 → 2.4は順次怜蚌パむプラむンを3.0ピンクの芪プロセス。
  • 芪プロセス 1.0 および 3.0はピンクで描かれる倖偎境界線の倖偎にあり、フロヌの発生点ず終了点を固定する。

ステップ 4 — 再び詳现を確認するレベル-3再垰的に繰り返す

Visual Paradigm AIチャットボット再び詳现化AIを掻甚したトップダりン分解の䟋レベル3再垰的に繰り返す

ただ耇雑すぎる任意のサブプロセスに察しお、同じ手法を繰り返す。我々は2.2 支払いの怜蚌.

digraph DFD {
    // --- グラフスタむルおよび図のタむトル ---
    graph [
        rankdir = LR
        splines = true
        overlap = false
        nodesep = 0.5
        ranksep = 0.8
        fontname = "Helvetica,Arial,sans-serif"
        fontsize = 12
        label = "支払いの怜蚌レベル-3- オンラむン泚文プロセスシステム"
    ]
    node [ fontname = "Helvetica,Arial,sans-serif", fontsize = 11, penwidth = 1.5 ]
    edge [ fontname = "Helvetica,Arial,sans-serif", fontsize = 9,
           color = "#555555", arrowsize = 0.8 ]

    // 倖郚゚ンティティ
    node [shape = box, style = "filled", fillcolor = "#E1F5FE", color = "#0288D1"]
    カスタマヌ;

    // --- システム境界このリヌフレベルのサブプロセス---
    subgraph cluster_SystemBoundary {
        label = "2.2 支払いの怜蚌";
        fontname = "Helvetica,Arial,sans-serif"
        fontsize = 14
        color = "#757575"
        style = "dashed,rounded"
        bgcolor = "#FAFAFA"
        margin = 20

        // リヌフプロセス緑の円
        node [shape = circle, style = "filled", fillcolor = "#E8F5E9",
              color = "#388E3C", fixedsize = true, width = 1.3]
        P221 [label="2.2.1n確認nカヌド/支払いn詳现"];
        P222 [label="2.2.2n䞍正nチェック"];
        P223 [label="2.2.3nプロモヌションnコヌドの怜蚌"];
        P224 [label="2.2.4n最終n金額の蚈算"];

        // リヌフデヌタストア黄色のレコヌド
        node [shape = record, style = "filled", fillcolor = "#FFF9C4",
              color = "#FBC02D", fixedsize = false]
        CardDS  [label="{ D1 | カヌドnレゞストリ }"];
        FraudDS [label="{ D2 | 䞍正nルヌル }"];
        PromoDS [label="{ D3 | プロモヌション }"];
        CartDS  [label="{ D4 | カヌト/n泚文アむテム }"];

        // 芪プロセスピンク
        node [shape = circle, style = "filled", fillcolor = "#FCE4EC",
              color = "#C2185B", fixedsize = true, width = 1.4]
        P21 [label="2.1n合蚈金額のn蚈算n芪"];
        P23 [label="2.3n支払いのn承認n芪"];
    }

    // 入力
    P21 -> P221 [label="合蚈金額 &n日付"];
    カスタマヌ -> P221 [label="支払いn詳现"];

    // 順次怜蚌、䞊列分岐あり
    P221 -> P222 [label="確認枈みn詳现"];
    P222 -> P223 [label="䞍正フラグなしn䞊列"];

    // 最終蚈算ぞの入力
    P21 -> P223 [label="プロモヌションnコヌド"];
    P221 -> P224 [label="支払いn合蚈"];
    P223 -> P224 [label="割匕n適甚枈"];

    // 芪ぞの出力
    P224 -> P23 [label="怜蚌枈み &n割匕枈みn合蚈"];

    // デヌタストアぞのアクセス
    P221 -> CardDS [label="カヌドn確認"];
    P222 -> FraudDS [label="ルヌルnチェック"];
    P223 -> PromoDS [label="照䌚n適甚"];
    P224 -> CartDS [label="アむテムn読み取り", dir=both];
}

VPasCodeを甚いた図をコヌドで再び詳现化レンダリング甚の䟋レベル3再垰的に繰り返す解釈

  • 2.2.1 カヌドの怜蚌はゲヌト— これは䞍正怜査が開始される前に成功しなければならない。
  • 2.2.2 (䞍正)か぀2.2.3 (プロモヌション)は䞊列䞡方ずもルヌルを読み蟌み、最終蚈算にデヌタを䟛絊する。 「(䞊列)」ラベルがこれを瀺しおいる。
  • 2.2.4 最終金額の蚈算はファンむンポむント—それは結合する 支払い合蚈 + 割匕芪に送出される怜蚌枈み出力ぞず統合する2.3.
  • カヌド登録および䞍正芏則はレベル2では芋えない詳现レベルのストアであり、分解を進めるに぀れお自然に新しいストアが珟れる。

ステップ5 — プロセスが「原始的」になったら停止する

各プロセスが を蚘述するたで分解を続ける単䞀で明確か぀実装可胜なアクション深さに固定はない。プロセスが1぀の関数たたは1぀の意思決定に明確に察応する時点で停止する。䞊蚘のレベル2.2.12.2.4はすでに原始的である。


6. 最良の実践法ずよくある萜ずし穎

✅ 最良の実践法

  1. プロセスを階局的に番号付けする (2.2.4) これにより、どの図もツリヌ内で自己䜍眮特定可胜になる。
  2. 芪プロセスを境界に描くピンクこれにより、フロヌが文脈を保持する — 入出力を孀立させない。
  3. 1぀の双方向゚ッゞを䜿甚する (dir=both) を、2぀の別々の矢印ではなく双方向のやり取りに䜿甚する。ごちゃごちゃを枛らす。
  4. ラベルは説明的だが、簡朔に保぀「支払い承認」、ではなく「AP」
  5. 䞀床に1぀のプロセスを分解する— 各レベルは独自の図である。耇数のレベルを1぀の図に詰め蟌たない。
  6. 図のバランスを取る— 芪レベルの入力/出力は、子芁玠の入力/出力の合蚈ず等しくなければならないバランスルヌル。
  7. 垞に芁玠を宣蚀する— 芁玠を宣蚀しないスタむル専甚のテンプレヌトは、空のキャンバスを描画する。すべおのDFDは必須である。スタむルを適甚し、次に宣蚀し、最埌に接続する.
  8. デヌタストアの名前は䞀意に子図の䞭で、しかし自己完結性のためにロヌカルに再番号付けD1、D2 する。

❌ 䞀般的な萜ずし穎

  1. 孀立したプロセス— 入力も出力もないプロセス。すべおのプロセスは䜕かを倉換する。
  2. バランスの欠劂 — レベル1にフロヌが珟れるが、そのレベル2の子䟛のいずれもそれが生成消費しおいない。
  3. 過床な詳现 — レベル0のコンテキスト図でデヌタストアを公開しおいるそれらは䞋䜍レベルでのみ適切。
  4. 制埡フロヌの思考 — DFDにルヌプや刀断蚘号を含めおいるそれはフロヌチャヌトに残すように。DFDはデヌタを瀺すものであり、順序ではない。
  5. 二぀の平行な矢印 䞀぀であるべきものを dir=both ゚ッゞ — 重耇線の混雑を匕き起こす。
  6. 間違ったストアアクセス方向 — ストアを ずしおラベル付けしおいる読み取り専甚 実際には曞き蟌みが行われおいるたたはその逆堎合。
  7. スタむルテンプレヌトを図ず誀認しおいる — ノヌドず゚ッゞを宣蚀するこずを忘れるずうたくいかず、空癜のグラフになる。

7. 䞊䜍から䞋䜍ぞの怜蚌チェックリスト

図を提瀺する前に、次を確認する

  • ✅ すべおのプロセスに1぀以䞊の入力ず1぀以䞊の出力がある。
  • ✅ すべおのフロヌのラベルは 名詞 「泚文の詳现」、動詞ではない。
  • ✅ すべおのデヌタストアは読み蟌たれるおよび ある時点で曞き蟌たれる明確に倖郚参照デヌタである堎合を陀く。
  • ✅ レベルの境界バランス子は芪が亀換した内容を正確に消費および生産する。
  • ✅ 倖郚゚ンティティは境界の端にのみ珟れ、境界内郚には決しお珟れない。
  • ✅ dir=both は双方向の亀換に䜿甚されるそれ以倖は片方向の矢印。
  • ✅ ピンク色の芪プロセス参照は、分解されおいるレベルを正しく瀺しおいる。
  • ✅ コヌドは実際のノヌド、゚ッゞ、境界を宣蚀しおいる——単なるスタむルルヌルではない。

8. 䞊䜍から䞋䜍ぞの分解プロセスの芁玄

䞊䜍から䞋䜍ぞのDFD分解は、抜象から詳现ぞ:

  • コンテキストL0 — 1぀のボックス、すべおの境界および倖郚゚ンティティ。
  • システムL1 — 䞻芁なプロセス、ストア、およびデヌタパむプラむン。
  • サブダむアグラムL2、L3  — 䞀床に䞀぀のプロセスに再垰的にズヌムむンし、芪コンテキストを可芖化したたた、ロヌカルストアを番号付けする。

各レベルは異なる質問に答えたす L0は「システムのフットプリントは䜕か」ず尋ね、L1は「䞻芁なデヌタフロヌは䜕か」ず尋ね、L2以降は「このデヌタはどのように正確に倉換されるか」ず尋ねる。

その オンラむン泚文プロセス 䟋は、完党なチェヌンを 完党で実行可胜なGraphvizコヌド — 4゚ンティティの コンテキストダむアグラム、4ステップの 怜蚌ルヌチン (2.2.1 → 2.2.4。 番号の根元を敎理するこずにより, フロヌのバランスを取るこずにより、䞀貫性のある 色の凡䟋青いボックス、緑の円、黄色のレコヌド、ピンクの芪参照、砎線のグレヌ境界、そしお垞にすべおのノヌド゚ッゞを明瀺的に宣蚀する、どんなに倧きなシステムでもナビゲヌト可胜で曖昧さがなくなりたす——そしおすべおの図が実際に描画されたす。

9. ツヌルVisual Paradigm AIを甚いたDFDのトップダりン分解

Visual Paradigm AIは、AIチャットボットをモデリングツヌル内に盎接搭茉。すべおのレベルを手で描くのではなく、䌚話圢匏で党䜓の分解を進め、その埌結果を埮調敎できたす。このガむドで玹介するアプロヌチを実際に䜿う方法を以䞋に瀺したす。

9.1 DFD䜜業のコア機胜

このVP AIチャットボットはテキストずコヌドのアシスタント察話圢匏で䞀緒に䜜業できるアシスタントです。DFDのトップダりン分解においお、以䞋のこずができたす

機胜 あなたにできる事
図のコヌドを生成 指定されたプロセスの説明に察しお、GraphvizDOTを生成する——1レベルず぀
添付された画像を分析 アップロヌドした手曞きたたは既存のDFD画像を読み取り、構造化されたモデルに倉換する
段階的に改善する フィヌドバック「2.2にズヌムする」、「倱敗の分岐を远加する」などをもずに図を再生成する
解釈を説明する 各゚ンティティ、プロセス、ストア、フロヌの意味を順に説明する
構文を怜蚌する レンダリングする前にDOTが構造的に健党であるか確認する
戊略チャヌト出力を行う DFDを補完するための支揎チャヌトやフレヌムワヌク䟋スむムレヌン、組織構造を生成する

📌 泚蚘 Visual Paradigmはさたざたな図匏蚘法をサポヌトしおいたす。スタヌト゚ンドむベント、ゲヌトりェむ、スむムレヌンを必芁ずするビゞネスプロセスモデリングには BPMN を掚奚したす。䞀方、このガむドで瀺すように厳密なデヌタフロヌモデリングには GraphvizベヌスのDFD を䜿甚しおください。


9.2 実䟋察話 — オンラむン泚文プロセスの分解

ここでは、私たちが歩いたステップを反映した珟実的なチャットセッションを瀺したす。各プロンプトが1段階深くズヌムしおいるこずに泚目しおください。たさにトップダりンアプロヌチです。

プロンプト1 — コンテキスト図の䜜成

「オンラむン泚文プロセスシステムのコンテキスト図レベル0を䜜成する。倖郚゚ンティティ顧客、決枈ゲヌトりェむ、倉庫、配達業者。」

VP AIが応答するレベル0のDFDを提瀺する——䞭心ずなる1぀のプロセス、4぀の倖郚゚ンティティ、およびそれらのフロヌ——を図に配眮する。

プロンプト2 — 詳现床を远加する

「今、これをレベル1のDFDに分解しおください。プロセスずしお1.0 泚文の䜜成、2.0 支払い凊理、3.0 圚庫確認、4.0 泚文の出荷。泚文、補品圚庫、出荷のデヌタストアを远加しおください。」

VP AIが返すプロセスが順次連結されたレベル1の図、ストアが接続され、倖郚゚ンティティのフロヌが保持されたもの——ガむドのステップ2で芋たパむプラむン。

プロンプト3 — 1぀のプロセスにズヌムむンする

「2.0 支払い凊理にズヌムむンしおください。2.1 合蚈金額の蚈算、2.2 支払いの怜蚌、2.3 支払いの承認、2.4 泚文の確認を含むレベル2のサブ図を䜜成しおください。1.0ず3.0は芪参照ずしお保持しおください。」

VP AIが生成するレベル2のサブ図サブプロセス、ロヌカルストアD1–D4、決枈ゲヌトりェむずのやり取り、1.0ず3.0のピンク色の芪参照——ステップ3ず䞀臎する。

プロンプト4 — もう䞀床詳现に掘り䞋げる

「2.2 支払いの怜蚌をレベル3の図ずしお掘り䞋げる2.2.1 カヌドの確認、2.2.2 フェむク怜出の確認、2.2.3 プロモヌションの怜蚌、2.2.4 最終金額の蚈算。カヌド登録、フェむクルヌル、プロモヌション、カヌトアむテムのストアを远加しおください。」

VP AIが生成するファンむン蚈算2.2.4ず䞊列のフェむク/プロモヌションの分岐を備えたレベル3のリヌフ図——たさにステップ4ず䞀臎する。

プロンプト5 — 異垞凊理を远加する

「倱敗パスを远加するもし2.2.2 フェむク怜出が取匕を譊告した堎合、顧客に戻るキャンセル通知プロセスにルヌティングする。」

VP AIが最適化する拒吊分岐を図に远加し、フロヌを自動的に再調敎する。


9.3 効果的なプロンプトパタヌン

信頌性が高く、メ゜ドロゞヌに沿った結果を埗るためにこれらのパタヌンを䜿甚する

目的 䟋のプロンプト
1レベルさらに詳现に分解する “ズヌムむンしお 3.0 圚庫確認 をレベル2のサブダむアグラムずしお。”
番号を指定する “番号付きのプロセスを䜿甚しお 2.1, 2.2, 2.3.”
芪コンテキストを保持する “保持しお 1.0 ず 3.0 を境界䞊の芪参照ずしお。”
デヌタストアを远加 「ストアを含めるD1 カヌトアむテム, D2 プロモヌション.”
双方向のフロヌを衚瀺 「䜿甚するdir=bothプロセス↔ストアの読み取りおよび曞き蟌みに䜿甚。」
レベルをバランスさせる 「入力ず出力が芪レベルず䞀臎しおいるこずを確認しおください。」
倱敗パスを远加 「䟋倖が発生した堎合に、䟋倖ブランチを远加する支払いが拒吊されたずき.”
深さを制限する 「基本的なプロセスたでで停止する——単䞀で実装可胜なアクションたで。」

9.4 分析甚画像のアップロヌド

手曞きたたはレガシヌデヌタフロヌダむアグラムをお持ちで、デゞタル化したい堎合

  1. 画像を添付しおくださいチャットに添付しおくださいスクリヌンショット、写真、たたは既存のDFDの゚クスポヌト。
  2. 尋ねる「このDFD画像を分析しお、線集可胜な構造化モデルに倉換しおください。」
  3. VP AIが画像を怜査したす圢状、ラベル、矢印を読み取り゚ンティティ、プロセス、ストア、フロヌを線集可胜な図ずしお再構成したす。

📌 AIは画像のコンテンツ— 四角圢、円、レコヌド、およびそれらのラベル — を適切な蚘法で再珟したす。これは、ざっくりずしたスケッチから、きれいな階局構造のモデルぞず玠早く移行する方法であり、その埌さらに分解できたす。


9.5 アヌティファクトワヌクフロヌによる反埩

VP AIは、生成された各図を アヌティファクトずしお保存し、粟緻化䞭に参照できたす

  • 「レベル2のアヌティファクトを粟緻化しお、䞍正拒吊の分岐を远加する。」— 既に生成された特定の図を察象ずし特定の既に生成された図再生成するのではなく。
  • 「コンテキスト図を再生成するが、倉庫゚ンティティを陀倖する。」— スコヌプが倉曎されたずきにアヌティファクトを眮き換えたす。
  • 「バランスを調敎するために、レベル2ずレベル3のアヌティファクトを比范しおください。」— 芪子のフロヌ敎合性を確認する。

アヌティファクトが䌚話の状態を保持しおいるため、以前の意思決定を倱うこずなく、段階的に粟緻化を重ねおいくこずができたす。これがトップダりン分解の本質です。


9.6 掚奚されるワヌクフロヌチェックリスト

段階 アクション
1. スキャフォヌルディング たず、コンテキスト図レベル0のプロンプトを提瀺する。
2. レベル1を蚭定する ストアず境界を含む䞻芁プロセスの分解を求める。
3. 詳现化する 䞀床に䞀぀のプロセスに泚目する。芪の参照を維持する。
4. 粟緻化する 䟋倖パス、バランス調敎、ストアの修正を芁求する。
5. 怜蚌する AIにDOT構文を確認しおもらうセクション7のチェックリストを確認する。
6. ドキュメント 各レベルに䜵蚘する解釈ナラティブを芁求する。

9.7 䟋の出力 — VP AIにレベル1のコヌド生成を䟝頌する

チャットボットからの兞型的な応答は、ステップ2の分解は、以前に芋た完党で実行可胜なDOT:

オンラむン泚文プロセスシステムのレベル1 DFD。顧客、決枈ゲヌトりェむ、倉庫、配達業者の盞互䜜甚を瀺す。

digraph DFD {
    graph [
        rankdir = LR, splines = true, overlap = false,
        nodesep = 0.5, ranksep = 0.8,
        fontname = "Helvetica,Arial,sans-serif", fontsize = 12,
        label = "オンラむン泚文プロセスシステム - レベル1"
    ]
    node [ fontname = "Helvetica,Arial,sans-serif", fontsize = 11, penwidth = 1.5 ]
    edge [ fontname = "Helvetica,Arial,sans-serif", fontsize = 9,
           color = "#555555", arrowsize = 0.8 ]

    // 倖郚゚ンティティ
    node [shape = box, style = "filled", fillcolor = "#E1F5FE", color = "#0288D1"]
    Customer; PaymentGateway; Warehouse; Courier;

    subgraph cluster_SystemBoundary {
        label = "オンラむン泚文プロセスシステム";
        fontname = "Helvetica,Arial,sans-serif"
        fontsize = 14
        color = "#757575"
        style = "dashed,rounded"
        bgcolor = "#FAFAFA"
        margin = 20

        node [shape = circle, style = "filled", fillcolor = "#E8F5E9",
              color = "#388E3C", fixedsize = true, width = 1.3]
        P1 [label="1.0n泚文n䜜成"];
        P2 [label="2.0n支払いn凊理"];
        P3 [label="3.0n圚庫n確認"];
        P4 [label="4.0n泚文n発送"];

        node [shape = record, style = "filled", fillcolor = "#FFF9C4",
              color = "#FBC02D", fixedsize = false]
        OrderDS    [label="{ D1 | 泚文 }"];
        ProductDS  [label="{ D2 | 商品n圚庫 }"];
        ShippingDS [label="{ D3 | 発送 }"];
    }

    // フロヌ
    Customer -> P1 [label="泚文nアカりント情報"];
    P1 -> Customer [label="泚文n確認"];
    P2 -> PaymentGateway [label="支払いnリク゚スト"];
    PaymentGateway -> P2 [label="支払いnステヌタス"];
    Warehouse -> P3 [label="圚庫n確認"];
    Courier -> P4 [label="配送nステヌタス", dir=both];

    P1 -> P2 [label="泚文n合蚈"];
    P2 -> P3 [label="支払い枈みn泚文"];
    P3 -> P4 [label="怜蚌枈みn泚文"];

    P1 -> OrderDS [label="泚文n䜜成"];
    P3 -> ProductDS [label="圚庫n曎新", dir=both];
    P4 -> ShippingDS [label="発送n䜜成"];
    OrderDS -> P3 [label="泚文n詳现"];
    ShippingDS -> P4 [label="発送nラベル"];
}

それをVP図に貌り付け、完党に構造化されたレベル1モデルが埗られる——次のプロンプトで再び分解できる状態になる。


10. たずめ

トップダりン型DFD分解は、抜象から詳现ぞ:

  • コンテキスト (L0) — 1぀のボックス、すべおの境界および倖郚゚ンティティ。
  • システム (L1) — 䞻芁なプロセス、ストア、およびデヌタパむプラむン。
  • サブダむアグラム (L2, L3
) — 1぀のプロセスに順次ズヌムむンし、芪コンテキストを可芖化したたた、ロヌカルなストアを番号付けする。

各レベルは異なる質問に答えたすL0は「システムの範囲はどこですか」ず尋ね、L1は「䞻芁なデヌタフロヌは䜕か」ず尋ね、L2以降は「このデヌタはどのように正確に倉換されるのですか」ず尋ねたす。

そしおVisual Paradigm AI、すべおの段階が察話圢匏になりたすL0のプロンプトを入力し、分解を䟝頌し、1぀のプロセスず぀ズヌムむンし、䟋倖ルヌトを芁求し、既存の図をデゞタル化するために画像をアップロヌドしたす。厳密な番号付け, フロヌのバランス、䞀貫した色の凡䟋、完党な宣蚀しおから接続するコヌド化すれば、どんな倧きなシステムでもナビゲヌト可胜で、曖昧さがなく、すべおの図が実際に描画される。🚀