図示は、システム分析およびソフトウェア設計における基本的なスキルです。抽象的な概念を、チームが理解し、批判できる視覚的な構造に変換します。しかし、実務者の中ではしばしば混乱を招く2つの手法があります:データフローダイアグラム(DFD)とフローチャートです。両者ともプロセスを表しますが、それぞれ異なる目的を持ち、異なる記号を使用し、システム動作の異なる側面に注目しています。適切でないツールを選択すると、誤解が生じたり、論理的な誤りが生じたり、開発サイクルが非効率になる可能性があります。このガイドでは、両手法の明確で信頼できる解説を提供します。
これらの図の違いを理解することは、要件定義、システムアーキテクチャ、プロセス改善に関与するすべての人にとって不可欠です。この文書では、技術的仕様、実用的応用、そして重要な違いについて検討し、正確なモデル化を確保します。

フローチャートは、アルゴリズム、ワークフロー、またはプロセスの図式的表現です。特定の結果を得るために取られる手順の順序を明示します。フローチャートの主な焦点は、制御フローです。プロセスが開始から終了までどのように移行するかという論理を詳細に示し、判断ポイント、ループ、条件分岐のパスを含みます。
フローチャートは、通常ANSIまたはISO規格に関連する標準化された形状のセットに依存しています。各形状は、実行されているアクションに関する特定の意味を持ちます:
論理の流れは、これらの形状を結ぶ矢印で示されます。この視覚的な階層構造により、分析者はプログラムやビジネス手順の実行経路を追跡できます。特定の条件下でのシステムの振る舞いを文書化する際に特に有用です。
フローチャートは、複雑さが論理と意思決定プロセス内にある場合に最適です。以下の状況を検討してください:
フローチャートの強みは、分岐パスを示す能力にある。ユーザーが無効なデータを入力した場合、フローチャートは明確に修正ステップへ誘導する。データが有効な場合、処理ステージに移行する。この制御論理に焦点を当てる点が、データ中心のモデルと区別される要因である。
データフローダイアグラム(DFD)は、システム内の情報の流れを表すために用いられる構造化分析ツールである。フローチャートとは異なり、DFDは処理の順序やイベントのタイミングを示さない。代わりに、データの移動に注目する。データがどのように変換され、保存され、システム内の異なる部分間で送信されるかを示す。
DFDは、Yourdon/DeMarcoやGane & Sarsonなどの手法で定義された特定の記号セットを使用する。焦点は、データそのものであり、それを制御する論理ではない。
DFDにおける重要なルールは、プロセスを介さずに2つのデータストア間をデータが直接流れることはないし、外部エンティティからデータストアへ直接データが流れることもないということである。これにより、すべてのデータ保存が何らかの変換または管理を伴うことが保証される。
DFDは階層的である。複雑さを管理し、必要に応じて詳細を提供するために、レベルに分けて表現される。
DFDは、システムの機能要件を定義するのに最も適している。ステークホルダーがシステムが扱うデータとその移動方法を理解するのを助ける。使用例には以下が含まれる:
DFDの主な利点は、タイミングや論理を抽象化し、情報アーキテクチャにのみ焦点を当てる能力にある。システムが「何をすべきか」をどう決定するかではなく、「データはどこへ行くのか?」という問いに答える。
両方の図が矢印とボックスを使用するものの、その背後にある哲学は大きく異なる。これらを混同すると、システムの真の性質を捉えられないモデルになってしまう。
| 特徴 | フローチャート | DFD |
|---|---|---|
| 焦点 | 制御フロー(論理と順序) | データフロー(移動と変換) |
| 記号 | 楕円、長方形、菱形 | 正方形、円、開かれた長方形 |
| 矢印 | 手順の順序を示す | データの流れの方向を示す |
| 時間 | 順序とタイミングを示唆する | 順序やタイミングを示唆しない |
| 決定ポイント | 中心(菱形) | なし(論理はプロセスの中に隠されている) |
| データストア | 明示的に示されていない | 明示的に示されている(リポジトリ) |
| 最も適している分野 | プログラム論理、ワークフロー | システムアーキテクチャ、要件 |
最も重要な違いは制御の概念にある。フローチャートは制御の地図である。次に何が起こるかを教えてくれる。条件Aが満たされたらステップBに移行し、満たされなければステップCに移行する。これはプログラミングや運用手順において極めて重要である。
DFDはデータの地図である。どのデータが利用可能で、どこへ移動するかを教えてくれる。ステップBがステップCより先に実行されるかどうかは気にしない。DFDでは、プロセスは並列、順次、または非同期に実行される可能性がある。図は単にプロセス1がデータXを生成し、プロセス2がデータXを消費していることを示しているだけである。
フローチャートは通常、データストレージを含まない。行動に焦点を当てる。フローチャートでファイルが言及される場合、それは通常、小さな入出力ステップに過ぎない。一方、DFDではデータストアは一等公民である。システムの記憶を表している。データストアを早期に特定することは、データベース設計において極めて重要である。DFDはアナリストに永続性について考えるよう強いるが、フローチャートは線形実行を前提としている。
図を描くのは簡単だが、正確で有用な図を描くのは専門的なスキルである。これらの手法の間を切り替えるとき、または明確な戦略なしに描画するときに、いくつかの一般的な誤りが生じる。
よくある誤りは、決定のダイアモンドをDFD内に配置することである。DFDはロジックを扱わない。プロセスが条件に依存する場合、その条件は図のプロセスに付随するテキストで説明すべきであり、ダイアモンドとして描くべきではない。これにより、図はデータに集中した状態を保てる。
DFDでは、すべてのデータストアには少なくとも1つの入力フローと1つの出力フローが必要である(死データストアは稀である)。データベースが存在しても、プロセスが書き込みも読み込みも行わない場合、図は誤りである。同様に、フローチャートでは、すべての決定ダイアモンドには少なくとも2つの出力パスが必要である。
矢印や形状のラベルは正確でなければならない。「データ」はラベルではない。「顧客注文詳細」はラベルである。「データを処理する」は弱い。「注文を検証して保存する」は強い。明確な命名規則は開発中の誤解を防ぐ。
1つの図に多すぎる内容を詰め込むと、可読性が低下する。プロセスボックスに5~7個以上のサブプロセスが含まれる場合は、低レベルのDFDに分解すべきである。目的は複雑さを管理することであり、隠すことではない。
図が目的を果たすことを確実にするため、以下のガイドラインに従うべきである。これらの実践は、使用する図示ツールに関係なく適用可能である。
フローチャートとDFDの両方とも、ソフトウェア開発ライフサイクル(SDLC)の不可欠な部分であるが、異なる段階で登場する。
初期段階では、DFDがしばしば主なツールとなる。情報処理の観点から、システムが何を実行すべきかを定義するのを助ける。必要な入力と期待される出力を特定するのに役立つ。これにより、技術チームがビジネス目標と一致する。
プロジェクトが設計段階に移行すると、フローチャートがより重要になる。DFDから得られた高レベルの要件が、具体的な論理フローに変換される。開発者はフローチャート(または疑似コード)を使用して、DFDで特定されたデータを処理するアルゴリズムを実装する。
両方の図はテスト中に参照ポイントとして機能する。テストケースはフローチャートの経路から導き出せる。データ整合性のチェックはDFDの流れから導き出せる。変更が求められた際、これらの図を更新することで、ドキュメントの正確性が保たれる。
企業レベルのシステムでは、単純な図だけでは不十分な場合がある。これらの2つの手法の間のギャップを埋めるために、高度なモデリング技術が存在する。
フローチャートの一種であり、責任の次元を追加する。各ステップを誰が実行するかを示す。複数の部門が関与する場合に有用である。フローチャートの論理と組織構造の文脈を組み合わせる。
オブジェクトの状態が重要なシステム(例:注文が「支払い済み」から「出荷済み」に変わる場合)では、フローチャートはあまりにも線形的になりすぎる。状態図は、イベントによって引き起こされる状態間の遷移を示す。これはDFDがデータの移動に注目するのに対し、フローチャートは手順的なステップに注目する点で異なる。
実際には、チームは両方を併用することが多い。DFDはシステムの境界とデータアーキテクチャを定義する。フローチャートは特定のプロセス内の論理を定義する。例えば、DFDは「注文処理」がプロセスであることを示す。その後、フローチャートはその「注文処理」がクレジットカードの検証と在庫照合を行う内部論理を詳細に示す。
DFDとフローチャートのどちらを選ぶかは、どちらが優れているかという問題ではない。特定の質問に適しているかどうかが重要である。データの流れを知りたい場合はDFDを使用し、意思決定の仕組みを知りたい場合はフローチャートを使用する。
両方を習得することで、包括的なシステムモデリングが可能になる。アーキテクチャの整合性(DFD)と論理の実行可能性(フローチャート)を保証する。標準に従い、一般的な落とし穴を避けることで、時代を経ても通用するドキュメントを作成でき、技術者と非技術者間の明確なコミュニケーションを促進できる。
図は生きた文書であることを忘れないでください。システムが進化するにつれて、図も進化すべきである。定期的なレビューと更新により、視覚的表現が運用上の現実を正確に反映し続ける。シンプルなワークフローのマッピングであっても、複雑な企業アーキテクチャであっても、明確さが図の作成における最終的な目標である。
要件から始める。範囲を定義する。ニーズに合ったツールを選択する。そして正確にドキュメント化する。この規律あるアプローチにより、より良いシステムが構築され、誤解も少なくなる。