データーフロー図 by PlantUML

データーフロー図をPlantUMLで記述する試み。
題材:トム・デマルコ「構造化分析とシステム仕様」の図31

データーフロー図

f:id:borsalino:20161012224800p:plain

PlantUMLスクリプト

@startuml
rectangle "ダイアグラム0" {
  rectangle "1.\n更新をチェックする" as p0.1
  rectangle "2.\nマスター-\n領域を設定する" as p0.2
  rectangle "3.\nレコードを置き換える" as p0.3

  boundary "更新-\nカード" as b0.1
  boundary "旧-\nマスター-\nレコード" as b0.2
  boundary "新規-\nマスター-\nレコード" as b0.3

  b0.1-->p0.1
  b0.2-->p0.2
  p0.3-->b0.3
  
  p0.1-->p0.3:"フォーマット化した-\n更新-\nレコード"
  p0.2-->p0.3:"マスター-\nレコード"
}

rectangle "ダイアグラム1" as d1 {
  rectangle "1.1\n順序をチェックする" as p1.1
  rectangle "1.2\n仕分ける" as p1.2
  rectangle "1.3\n書き換える" as p1.3

  boundary "更新-\nカード" as b1.1
  entity "フォーマット化した-\n更新-\nレコード" as e1.3

  () "リジェクト" as r1.1
  () "リジェクト" as r1.2

  b1.1-->p1.1
  p1.1-->p1.2:"順番になった-\nカード"
  p1.2-->p1.3:"有効-\nカード"
  p1.3-->e1.3

  p1.1-->r1.1
  p1.2-->r1.2
}

rectangle "ダイアグラム2" as d2 {
  rectangle "2.1\nチェック合計を確認する" as p2.1
  rectangle "2.2\n拡張する" as p2.2
  boundary "旧-\nマスター-\nレコード" as b2.1
  entity "マスター-領域" as e2.1

  () "リジェクト" as r2.1

  b2.1-->p2.1
  p2.1-->p2.2:OK-マスター
  p2.2-->e2.1
  p2.1-->r2.1
}

rectangle "ダイアグラム3" as d3 {
  rectangle "3.1\n照合する" as p3.1
  rectangle "3.2\n更新する" as p3.2
  rectangle "3.3\nフォーマットを出力する" as p3.3
  rectangle "3.4\nチェック合計を付ける" as p3.4
  boundary "新規-\nマスター-\nレコード" as b3.1
  entity "マスター-\n領域" as e3.1
  entity "フォーマット化した-\n更新-\nレコード" as e3.2
  () "リジェクト" as r3.1

  p3.1-->p3.2:一致した-\n組
  p3.1-->p3.3:不一致の-\n組
  p3.2-->p3.3:新規-\nマスター-\n領域
  p3.3-->p3.4:フォーマット化した-\nマスター
  p3.4-->b3.1

  p3.1-->r3.1
  e3.1-->p3.1
  e3.2-->p3.1
}

p0.1 ..> d1
p0.2 ..> d2
p0.3 ..> d3
@enduml