GraphvizでDFDを書く(凡例つき)

昨日のつづき。subgraphで凡例をつける。

GraphvizでDFD(凡例つき)

DFD_example.dot

digraph sample {
  graph [fontname = "monospace", fontsize = 10, rankdir = LR];
  node  [fontname = "monospace", fontsize = 10];
  edge  [fontname = "monospace", fontsize = 10];

  // legend
  subgraph cluster_legend {
    label = "凡例";
    source    [shape = box,    label = "入力/出力"];
    function  [shape = circle, label = "プロセス"];
    data_base [shape = folder, label = "データストア"];

    source   -> function  [label = "フロー"];
    function -> data_base [label = "フロー"];
  }

  // node
  order    [shape = box,    label = "受注"];
  goods    [shape = folder, label = "納品物"];
  accept   [shape = circle, label = "受注処理"];
  shipment [shape = circle, label = "発送"];
  deliver  [shape = box,    label = "納品"];

  // edge
  order    -> accept   [label = "発注書"];
  accept   -> shipment;
  accept   -> goods    [label = "納品物追加", dir = back];
  goods    -> shipment [label = "納品物参照"];
  shipment -> deliver;

  // rank
  {rank = same; goods; accept; };
}

コマンド

dot -Tgif DFD_example.dot -o tmp.gif