SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

データフローダイアグラム いにしえの技術がもたらすシステム設計の可能性

データフローダイアグラム(DFD)を活用して身近なサービスをモデル化しよう

第4回 カフェでのやりとりをDFDで表現してみよう

  • X ポスト
  • このエントリーをはてなブックマークに追加

2. コンテキストダイアグラムの作成

 DFDを描くための最初のステップとして「コンテキストダイアグラム」を作成します。このステップでは、今回のモデリングの対象である「カフェという空間でお客さまがコーヒーを注文してから代金の支払いが完了するまで」の一連の流れを1つの大きなプロセスとして捉えることにします。

 この1つの大きなプロセスには、実際には内部で行われているさまざまな処理があったり、プロセスの中でもさまざまな情報のやりとりが行われていたりするはずです。しかし、ここではそれらの詳細なことには触れずに(ある種のブラック・ボックス的な)「お店というシステム」として捉えておくことがポイントです。

 そして、その大きなプロセスと「何らかのやりとりを行う存在(外部エンティティ)」であるお客さまや店員、そしてバリスタとの間でどのようにデータが流れるのかを最もシンプルな形で示したものになります。

 先ほどから「1つの大きなプロセス」と呼んでいる「注文を受ける」「コーヒーを提供する」「支払いを受け取る」といったカフェで行われる一連の行為(プロセス群)を仮に「カフェ・システム」と呼ぶことにしましょう。このカフェ・システムと呼ぶことにしたプロセスを図の真ん中の大きなスペースに配置してみましょう。

 あらためて強調しておきたいのが、「コンテキストダイアグラムにおいてはプロセスを表す記号は1つ」という点です。そこから外部エンティティへのデータの入出力を表すデータフローがあります。

 このカフェ・システムからお客さまや店員、バリスタといった人物のような「外部」の存在とどのようなやりとりをしているのかを文字どおり「大きく」捉えてみることがポイントです。この段階では真ん中に「カフェ・システム」を配置して、それを囲むように「お客さま」「店員」「バリスタ」といった外部エンティティを配置した図が想像できているのではないでしょうか。そして、カフェ・システムとのやりとりをデータフローの矢印で結んだ図がイメージできていることでしょう。

 ここでは外部エンティティもデータフローも未確定ですので、ひとまず仮に配置しておくことにしましょう。

図3.1.1:最初に1つの大きなプロセスを配置
図3.1.1:最初に1つの大きなプロセスを配置

 次にこのカフェ・システムと外部とのデータのやりとりを描き込んでいきますが、先に整理した注文から支払いの流れを「データフロー」として整理してみると次のようになります。

お客さまがコーヒーを注文

 お客さまがカフェで注文をすると、その「注文」がカフェ・システムへのインプットとなります。このデータフローは「お客さま」から「カフェ・システム」への「注文」が伝達される流れです。

店員が料金を提示

 次に「カフェ・システム」がお客さまからの注文内容を確認して、料金を計算してお客さまに提示します。このデータフローでは「カフェ・システム」から「お客さま」に対して「料金の提示」が行われます。

お客さまが料金を支払う

 お客さまが料金を支払うと、その「支払い」が「カフェ・システム」に入力されます。このデータフローでは、「お客さま」から「カフェ・システム」に対して「支払い」が送られて処理されます。

レシートがお客さまに発行される

 支払いが「カフェ・システム」によって確認されると、お客さまに対して支払い確認の証明として「レシート」が発行されます。このデータフローでは、「カフェ・システム」から「お客さま」に対して「レシート」が発行されます。

バリスタに作業指示が送られる

 次に、カフェ・システムからバリスタに対してコーヒーを作るように作業指示が送られます。このデータフローでは、「カフェ・システム」から「バリスタ」へ「作業指示」が伝えられます。

コーヒーの完成と提供

 最後に、バリスタがコーヒーを淹れて、カフェ・システムを通じて商品が提供されます。ここでは、「バリスタ」から「カフェ・システム」へ「コーヒー」が渡されます。そして最終的に、お客さまにコーヒーが提供される流れになります。

図3.1.2:カフェ・システムと外部とのやりとりを整理
図3.1.2:カフェ・システムと外部とのやりとりを整理

 読者の皆さんはここまでの流れを読んで「あること」に気がついたでしょうか? ここまでに列挙したデータフローは、カフェ・システムとお客さまの間を結ぶものか、カフェ・システムとバリスタの間を結ぶものになっていて、店員と何かを結ぶデータフロー(=情報の流れ)がありません。別の言い方で表すと、店員は「カフェ・システム」とお客さま、あるいはバリスタとの間でデータを受け渡すためのインターフェースとして働いています。

 コンテキストダイアグラムでは、システム内で行われる詳細な処理や役割分担はあまり描かず、外部エンティティとのやりとりをシンプルに表現します。そのため、この例での店員のようにシステム内の操作や業務に関わる人物は、外部エンティティではなくシステムの一部としてみなすことで全体を簡潔に描写することができます。

 これを踏まえて、次にデータの入力元や出力先となる外部エンティティを記述します。ここでは外部エンティティは先に図の真ん中に配置した大きなプロセスを囲むように端の方に配置しておくと進めやすいでしょう。

 今回はカフェでの一連の流れで登場する「コーヒーを注文し、受け取り、支払いをする人(お客さま)」と「作業指示を受けコーヒーを淹れて、コーヒーを(カフェ・システム経由で)お客さまに渡す人(バリスタ)」を図の両端に配置します。

 そして、真ん中の大きな「カフェ・システム」のプロセスから「お客さま」と「バリスタ」という外部エンティティをここまで洗い出したデータフローで結ぶと次図のようになります。

図3.1.3:カフェでの一連の流れをコンテキストダイアグラムで表したもの
図3.1.3:カフェでの一連の流れをコンテキストダイアグラムで表したもの

次のページ
3. 物理モデルの作成

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
データフローダイアグラム いにしえの技術がもたらすシステム設計の可能性連載記事一覧

もっと読む

この記事の著者

大嶋 和幸(オオシマ カズユキ)

 株式会社アクアシステムズ SE、IT コンサルタントとしてCRM、HRM、BPR などの各種案件に関与し、企画立案から設計、実装、試験、運用、保守を経験。その後、事業会社数社にて事業企画、管理会計、総務、社内情報システム担当など多岐にわたる業務に従事。アクアシステムズ入社後は、各種データベースの導...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

松永 守峰(マツナガ モリオ)

 株式会社アクアシステムズ オープンシステムの黎明期にはじめてリレーショナルデータベースに触れて以降、ソフトウェアベンダーのサポート技術者、大手メーカーのIT 部門ではDBA、コンサルティングファームでのDB コンサルタントと立場を変えながらデータベースに関わる。アクアシステムズに入社後はパフォーマ...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

湊川 あい(ミナトガワ アイ)

 IT漫画家。マンガと図解で、技術をわかりやすく伝えることが好き。著書『わかばちゃんと学ぶ』シリーズが発売中のほか、マンガでわかるGit・マンガでわかるDocker・マンガでわかるRubyといった分野横断的なコンテンツを展開している。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/21345 2025/05/23 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング