2. コンテキストダイアグラムの作成
DFDを描くための最初のステップとして「コンテキストダイアグラム」を作成します。このステップでは、今回のモデリングの対象である「カフェという空間でお客さまがコーヒーを注文してから代金の支払いが完了するまで」の一連の流れを1つの大きなプロセスとして捉えることにします。
この1つの大きなプロセスには、実際には内部で行われているさまざまな処理があったり、プロセスの中でもさまざまな情報のやりとりが行われていたりするはずです。しかし、ここではそれらの詳細なことには触れずに(ある種のブラック・ボックス的な)「お店というシステム」として捉えておくことがポイントです。
そして、その大きなプロセスと「何らかのやりとりを行う存在(外部エンティティ)」であるお客さまや店員、そしてバリスタとの間でどのようにデータが流れるのかを最もシンプルな形で示したものになります。
先ほどから「1つの大きなプロセス」と呼んでいる「注文を受ける」「コーヒーを提供する」「支払いを受け取る」といったカフェで行われる一連の行為(プロセス群)を仮に「カフェ・システム」と呼ぶことにしましょう。このカフェ・システムと呼ぶことにしたプロセスを図の真ん中の大きなスペースに配置してみましょう。
あらためて強調しておきたいのが、「コンテキストダイアグラムにおいてはプロセスを表す記号は1つ」という点です。そこから外部エンティティへのデータの入出力を表すデータフローがあります。
このカフェ・システムからお客さまや店員、バリスタといった人物のような「外部」の存在とどのようなやりとりをしているのかを文字どおり「大きく」捉えてみることがポイントです。この段階では真ん中に「カフェ・システム」を配置して、それを囲むように「お客さま」「店員」「バリスタ」といった外部エンティティを配置した図が想像できているのではないでしょうか。そして、カフェ・システムとのやりとりをデータフローの矢印で結んだ図がイメージできていることでしょう。
ここでは外部エンティティもデータフローも未確定ですので、ひとまず仮に配置しておくことにしましょう。

次にこのカフェ・システムと外部とのデータのやりとりを描き込んでいきますが、先に整理した注文から支払いの流れを「データフロー」として整理してみると次のようになります。
お客さまがコーヒーを注文
お客さまがカフェで注文をすると、その「注文」がカフェ・システムへのインプットとなります。このデータフローは「お客さま」から「カフェ・システム」への「注文」が伝達される流れです。
店員が料金を提示
次に「カフェ・システム」がお客さまからの注文内容を確認して、料金を計算してお客さまに提示します。このデータフローでは「カフェ・システム」から「お客さま」に対して「料金の提示」が行われます。
お客さまが料金を支払う
お客さまが料金を支払うと、その「支払い」が「カフェ・システム」に入力されます。このデータフローでは、「お客さま」から「カフェ・システム」に対して「支払い」が送られて処理されます。
レシートがお客さまに発行される
支払いが「カフェ・システム」によって確認されると、お客さまに対して支払い確認の証明として「レシート」が発行されます。このデータフローでは、「カフェ・システム」から「お客さま」に対して「レシート」が発行されます。
バリスタに作業指示が送られる
次に、カフェ・システムからバリスタに対してコーヒーを作るように作業指示が送られます。このデータフローでは、「カフェ・システム」から「バリスタ」へ「作業指示」が伝えられます。
コーヒーの完成と提供
最後に、バリスタがコーヒーを淹れて、カフェ・システムを通じて商品が提供されます。ここでは、「バリスタ」から「カフェ・システム」へ「コーヒー」が渡されます。そして最終的に、お客さまにコーヒーが提供される流れになります。

読者の皆さんはここまでの流れを読んで「あること」に気がついたでしょうか? ここまでに列挙したデータフローは、カフェ・システムとお客さまの間を結ぶものか、カフェ・システムとバリスタの間を結ぶものになっていて、店員と何かを結ぶデータフロー(=情報の流れ)がありません。別の言い方で表すと、店員は「カフェ・システム」とお客さま、あるいはバリスタとの間でデータを受け渡すためのインターフェースとして働いています。
コンテキストダイアグラムでは、システム内で行われる詳細な処理や役割分担はあまり描かず、外部エンティティとのやりとりをシンプルに表現します。そのため、この例での店員のようにシステム内の操作や業務に関わる人物は、外部エンティティではなくシステムの一部としてみなすことで全体を簡潔に描写することができます。
これを踏まえて、次にデータの入力元や出力先となる外部エンティティを記述します。ここでは外部エンティティは先に図の真ん中に配置した大きなプロセスを囲むように端の方に配置しておくと進めやすいでしょう。
今回はカフェでの一連の流れで登場する「コーヒーを注文し、受け取り、支払いをする人(お客さま)」と「作業指示を受けコーヒーを淹れて、コーヒーを(カフェ・システム経由で)お客さまに渡す人(バリスタ)」を図の両端に配置します。
そして、真ん中の大きな「カフェ・システム」のプロセスから「お客さま」と「バリスタ」という外部エンティティをここまで洗い出したデータフローで結ぶと次図のようになります。
