システム開発をする場合、まずお客様の要望を漏れなく整理します。その後ソフトウェア設計を行うために、顧客情報を分かりやすくまとめて誰もがその情報を理解できるようにすることが大切です。
特にソフト設計・初期段階の「要件定義」のフェーズでは、要求事項の整理が必修となります。
この記事では、視覚的に情報を整理する「データフロー図」の役割とその使い方についてどこよりも詳しく解説します。
- 目次 -
Part 1: データフロー図(DFD)とは?
データフロー図(DFD:Data Flow Diagramの略)は、ソフトウェア等の大きなシステムを設計する場合に、データの流れ(Flow)を分かりやすく表現した図となります。
例えばソフトウェアを作成する場合、そのソフトが簡単なレベルであればメモ程度の設計仕様でプログラミングが可能です。この場合はソフト機能が単純で分かりやすいレベルの為、プログラミング・ミス(バグ)の発生も少なくなります。
ところが、複雑な機能を備えたシステムの場合は、直ぐにプログラミングを行うことができません。
その理由はソフトウェア開発を開始する前に、データがどのように動くかを詳細に整理しなければ設計を開始できないためです。そのため求められる機能をデータの流れとしてデータフロー図(DFD)に落とし込んで整理する必要があります。
DFDは1970年代米国のソフトウェア技術者トム・デマルコ氏などにより図面、文書の階層構造を明らかにする目的で開発しました。その後ソフトエンジニアの間で広く利用されています。
例えばシステム仕様書を作成する際、彼はデータ、処理(プロセス)、データストア等を記号により簡略化しデータの流れを図面上に可視化しました。
また、DFDはシステム開発初期に実施する要件定義(必要な機能や要求をわかりやすくまとめる作業)で大変役に立っています。
さらに、ソフト開発エンジニアはこのDFDによりシステム全体のデータやプロセスの動きを把握できます。またその後の基本設計、詳細設計、コーディング、テスト等の一連の開発工程における「機能漏れ」「機能重複」「バグ発生」の防止にも大いに役立つこととなります。
Part 2: データフロー図を導入するための目的
2.1 DFDの目的とは
DFDには大きく4つの目的があります。
① データの流れを分かりやすく整理
これから開発するシステム(または既存のシステム)を分かりやすく整理し、全体像を理解できます。
② 関係者の情報共有
システムを使用する(または開発する)関係者全員が具体的にシステム全体をイメージできるため、情報共有が可能となります。
③ 機能漏れ、重複の確認
システムに要求される機能の漏れ・重複が無いかを容易に確認できます。
④ データの流れを理解
要求された処理(プロセス)とデータを構造化することにより、データが処理される流れを詳細に理解できます。
2.2 データフロー図と業務フロー図・フローチャートの違いは
データフロー図と他の業務フロー図・フローチャートとの違いは次のようになります。
■ データフロー図
データフロー図は「データをどのような流れで処理するか」をまとめた関連図です。つまり「インプットデータ」「アウトプットデータ」「処理(プロセス)」「データ保管」の関連を一目で分かるようにしています。
■ 業務フロー図
業務フロー図は、「仕事の内容や手順を分かりやすく図で表したもの」で「誰が」、「いつ」、「どこで」「何を」等の情報が含まれています。
一般的には企業毎の「仕事の流れ」を表し、業務毎の繋がりや作業手順を含めて業務フロー図と呼ばれています。
その目的はデータフロー図とは異なり、「いろいろな作業手順・方法」の中から最も効率的な方法を選択して実施する「仕事の流れ」なのです。
■ フローチャート
フローチャートは、業務プロセスやソフトウェアのアルゴリズムを表す流れ図です。複雑化した業務の流れを記号や文字を使用して分かりやすく伝える手法です。
一方、データフロー図(DFD)は「データとその処理の関連性」を明確にすることを目的としています。ところが「フローチャート(流れ図)」は、業務処理の実行順や各種制御の順序を表すために作成されており目的が異なるのです。
EdrawMaxは各種のフローチャートをシンプルに書けるようなソフトウェアです。EdrawMaxは無料体験可能なのでぜひ一度ご体験してみます!
Part 3: データフロー図のメリットとデメリット
• データフロー図のメリット
➤ システム全体像を常に確認
DFDでシステム全体を記述し、その後種々の内部処理を詳細に記載します。そのため全体像を確認しながら詳細部分を作成できるのです。
➤ 機能の「曖昧な部分」「漏れ」「重複」は直ぐに発見
データフロー図(DFD)はシステム構成の要素を記号で表すため、「曖昧な表現」を簡単に見つけ出し、機能の漏れ・重複を防止します。
➤ データソースや出力先の明確
データの流れを明確化する為、データの入力元(発生個所)や出力先(取引き先等)及びフデータストア(ファイルやデータベース)を明確にできます。
• データフロー図のデメリット
➤ プログラムの流れとDFDを同期させることが難しい
実際のプログラム動作にはデータフロー図と同期していないケースがあります。つまりDFDの流れ通りに動かないことがあるのです。その理由はデータフロー図作成後の後々にプログラム動作が決められるため、実際の動きと同期しないケースが生じるのです。
➤ 判断処理を記載できない
「条件分岐」のような判断処理を記載できないため、処理(プロセス)の次にどのようなステップに進むかを表現しにくいのです。
Part 4: データフロー図でよく使う記号
データフロー図(DFD)でよく使用される記号は、「処理(プロセス)」「外部エンティティ」「データストア」「データフロー」の4種類です。
No | 要素 | 記号の意味 | ||
---|---|---|---|---|
名称 | デマルコ式 記号 |
ゲイン・サーソン式 記号 |
||
1 | 処理(プロセス) | インプット先から受け取ったデータを加工する | ||
2 | 外部エンティティ | データ入力先、または出力先の外部要素(取引先など) | ||
3 | データストア | データ保管所(ファイル、フォルダ、HDDなど) | ||
4 | データフロー | データの移動方向を示したもの |
データフロー図の記号は、主に2パターンに分かれます。発案者により記号の形状が異なり 書き方が違いますので憶えておいて下さい。
① 処理(プロセス)
処理(プロセス)は、データ加工を行う重要な要素です。デマルコ式記号では処理(プロセス)を円形記号で表します。
またゲイン・サーソン式記号では処理(プロセス)を角の取れた長方形で表現します。さらに記号には処理名を記載し、どのような処理か分かるようにします。
データフロー図で処理(プロセス)を記述する場合、処理(プロセス)毎に通し番号を付けます。特にデータフロー図を階層にする場合は、上位から下位へ展開する流れを番号で分かるようにします。
② 外部エンティティ
外部エンティティとは、システムの外側にいる組織、人、会社等の外部要素を示しています。
システムにインプットする要素とシステムからアウトプットする受取先を示します。インプットとアウトプットを明確にする必要があるのでできるだけ分かりやすい名称を記載します。
③ データストア
データストアは臨時、または永久にデータ保管ができる場所です。具体例としてはメモリなどのデータファイルやSSD/HDD、テープなどのデータベースがあります。
データストアでは、どのようなデータが格納されているか名前を付けて分かりやすくします。また、通し番号を付けて分かりやすくする方法もあります。
④ データフロー
データフローは、データの流れを示す矢印です。直線や曲線の矢印を使用して「外部エンティティ」から「処理(プロセス)」、「データストア」へ至る一連の流れを分かりやすく表現します。
また、データフローの矢印には必ず名前を記載し、どのような情報が動くのか明確にします。
今回ご紹介するベクタードローソフト「EdrawMax」(エドラマックス)のライブラリには、下記のようにDFDの主な4要素以外にも多種の要素記号を用意しています。
EdrawMaxはデータフロー図を書くためのフローチャート用記号を複数搭載しています。EdrawMaxは無料試用可能なので是非一度ご体感下さい!
Part 5: データフロー図のルールとヒント
① 処理(プロセス)、データストアは入力元と出力先を明示
データフロー図の処理は、コンピューターや人により実行されるデータ加工のプロセスです。
そのため処理(プロセス)は、受け取ったデータの入力元や加工したデータの出力先を必ず明記しなければなりません。
このデータフロー図は、「入力元(インプット)」→「処理(プロセス)」→「出力先(アウトプット)」の3要素で1つの流れを構成しています。これはデータフロー図の基本構成ですので是非憶えて下さい。
尚、入力元や出力先は1つとは限らず複数の場合もあります。
また、同様にデータストアにも入力元、出力先の明示が必要です。その理由はデータを保存するだけでは意味がなく、使用されてこそそこに利用価値が生じるためです。
② データストア同士は直接データフロー(矢印)で連結しない
データストア同士を連結することはできません。もし連結が必要な場合は、処理(プロセス)を間に挟みます。
③ データフロー図の要素には全て名称を記載
データフロー図は「データのやり取り」を分かりやすく表す機能関連図ですので、「処理(プロセス)」「外部エンティティ」「データストア」「データフロー(矢印)」等の各要素には全て名前を付けなければなりません。
この名前により、どのような情報が処理、保存、移動するのかが一目で理解できます。
当然名前を付けにくい要素も有りますが、その場合はデータフロー図を使うユーザー視点から「どのように書けば理解されるか」「具体的に処理内容がイメージできるか」を考えて、分かりやすい名前を付けましょう。
そのために「○○のデータ」「○○の処理」「○○の機能」などの抽象的な名前付けは禁止となります。
④ データフロー(矢印)には処理を記載しない
データフロー(矢印)の名前に処理を記載することは間違いです。「どのようなデータが流れるのか」を分かりやすく記載しましょう。
⑤ 処理順番や処理責任者(責任部署)の情報は記載しない
データフロー図は「どこのデータ」を「どのように処理」して「どこに送るか」という場所(位置)の観点で図が作成されます。よって、「いつ」、「だれが」の情報は記載しません。
そのような情報を記載する場合は「業務フロー図」「フローチャート」等の別の図で記載しましょう。
⑥ 処理順番や処理責任者(責任部署)の情報は記載しない
データフロー図は「どこのデータ」を「どのように処理」して「どこに送るか」という場所(位置)の観点で図が作成されます。よって、「いつ」、「だれが」の情報は記載しません。
そのような情報を記載する場合は「業務フロー図」「フローチャート」等の別の図で記載しましょう。
⑦ データフロー図の階層構造は上位プロセスに下位プロセスを対応させる
最上位のデータフロー図(コンテキストプログラムと呼ぶ)を作成した後、段階的に下位プロセスを作成します。その際、上位プロセスは階層分けが分かりやすいように0,1,2などの番号を付与し、下位プロセスは上位に対応するように0.1,0.2等の番号付けを行います。
Part 6: おすすめのデータフロー図を書くツール5選
① astah
astahはデマルコ式記号とゲイン・サーソン式記号の両方の表記方式に対応するソフトです。作図以外にはCRUD(登録、参照、変更、削除機能)との連携やプロセス階層表のExcel出力、UML、ER図、マインドマップとも連携しています。対応OSはWindows、MacOSです。
② Lucidchart
Lucidchartは既存のプラットフォームと連携ができるデータフロー図のソフトです。Microsoft Office ,G Suite ,Slack ,Salesforce等と連携してデータを取り組むことが可能です。特に、Salesforceと連携するとアウトソーシングを実施する企業データを取り込めます。さらにクラウドサービスを使用してネット上で編集管理が行えます。
③ draw.io
draw.ioは、Web上で使用できる無料のフローチャート作成ツールです。インストールの必要が無く初心者でも気軽に使用できるようになっています。日本語にも対応していますのでdraw.ioにアクセスして直ぐに作図を開始することができます。また、エクセル 、パワーポイントより多いライブラリを保有していますのでフローチャートの作成が容易です。
④ EdrawMax(エドラマックス)
EdrawMax(エドラマックス)は作図・製図業務に特化したオールインワン・ドローイングソフトウェアです。フローチャート、UML、組織図、電気回路図などの役立つダイヤグラムを280種類以上搭載しているため、思い通りの作図を行うことができます。さらにPDF、ワード、エクセル、パワーポイント形式の出力ができます。対応OSはWindows、MacOS、Linuxとなります。
EdrawMaxは無料体験可能なのでぜひ一度ダンロードしてみてください!
⑤ Visio
Microsoftが開発販売する作図ソフトで各種設計図やダイヤグラムの作図が可能です。Microsoft Officeシリーズの製品ですが、Windows用のみリリースされておりMacOSは有りません。
Part 7: EdrawMax(エドラマックス)を利用したデータフロー図の書き方
Step1: EdrawMax(エドラマックス)初期画面の操作
アプリ画面を立ち上げると、初期画面として上記のメイン画面が現れます。
次に一番左上の矢印マークを押します。
Step2: 操作画面から「テンプレートギャラリー」を選択
矢印マークを押すと、上記画面に遷移します。 次に簡単操作でデータフロー図を作成するため、操作画面中央にある「テンプレートギャラリー」を選びます。
Step3: テンプレートの選択
テンプレートのギャラリーが表示されますので、左側の選択項目から「テンプレート」>「ソフトウェア」>「データフロー図」を選びます。
Step4: データフロー図の選択
気に入ったデータフロー図のテンプレートを選択し編集するベース資料とします。
Step5: カスタムのデータフロー図を作成
データフロー図左下にあるライブラリの要素を使用して書き換え、カスタムのテンプレートを編集します。その後テンプレートを保存すれば編集は終了です。
まったく新しいデータフロー図を作成する場合は、②のメイン画面で「新規作成」を選択すると新しい図を作成することができます。
Part 8: まとめ
データフロー図は入出力データとその処理に特化した機能関連図です。そのためそれ以外の情報はこの図から読み取ることができません。逆に、データとその処理はこの図を見れば一目瞭然ですので、データの流れに関しては最強のツールです。
よって、データフロー図のメリット・デメリットを十分認識し、与えられた業務の中で「どのように使えば効果が得られるか」をよく検討することが重要です。 EdrawMaxはデータフロー図を書くための優れたソフトウェアです。ぜひ一度ご体験してみます!