資格道場 › レッスン一覧 › システム開発技術
システム開発技術・3/12・12分

DFD・E-R図・決定表とコード設計

ゴール

DFD・状態遷移図・決定表・E-R図の「どの図が何を表すか」を見分けられるようになり、ファイルの項目から出せる集計の判断と、コード体系・チェックディジットの問題を自力で解けるようになる。

設計図の問題は「この説明はどの図か」を当てる形がほとんどです。同じ選択肢の並び(DFD・E-R図・状態遷移図・流れ図)が何度も出るので、図ごとの役割を一度覚えれば確実に取れます。要件定義の打ち合わせで出てくる図が読めるようになるという実務の利点もあります。

このレッスンで稽古する(用語チェック・過去問)

結論:図は「何を描くか」で見分ける

設計図の問題は、その図が何を描くためのものかを言えれば解けます。データの流れならDFD、データ同士の関係ならE-R図、状態の変化なら状態遷移図、条件の組合せなら決定表です。

図 描くもの 見分けのキーワード
DFD(データフロー図) 処理の間を流れるデータ データフロー・プロセス・データストア・外部の4つの記号
E-R図 管理対象(実体)と、実体どうしの関係 エンティティ(実体)とリレーションシップ(関連)
状態遷移図 状態と、状態が変わるきっかけ・そのときの動作 イベント・時間の経過・制御信号
決定表(デシジョンテーブル) 条件の組合せと、それぞれに対する動作 条件の組合せ・表形式
流れ図(フローチャート) 処理の順番と分岐(制御の流れ) 直線・矢印で制御の流れ
UML オブジェクト指向での設計 オブジェクト指向・アクティビティ

選択肢では、ほかの図の説明がそのまま混ぜられます。キーワードで見分けてください。

DFD:○はプロセス、二本線はデータストア

DFD(Data Flow Diagram)は、業務のなかでデータがどこからどこへ流れ、どこで加工されるかを描く図です。処理の順番や分岐は描きません。記号は4つだけで、試験には「○は何か」「表記として正しいのはどれか」の形で出ます。

記号 名前 意味 付ける名前
○(円) プロセス データを加工する処理 処理名(例:受注を登録する)
=(平行な二本線) データストア データをためておく場所(ファイル・DB) ファイル名・データ名
→(矢印) データフロー データの流れ 流れるデータの名前
□(四角) 外部(源泉・吸収) システムの外にいるデータの出どころ・行き先(顧客・他部署など) 外部の人・組織の名前

たとえるなら、DFDは宅配便の配送図です。荷物(データ)が矢印に沿って動き、営業所(○)で仕分けされ、倉庫(=)に保管され、送り主・受取人(□)が両端にいます。

flowchart LR
  A["□ 外部:顧客"] -->|"注文データ"| B(("○ プロセス:受注処理"))
  B -->|"受注データ"| C[("= データストア:受注ファイル")]
  C -->|"受注データ"| D(("○ プロセス:出荷指示"))
  D -->|"出荷指示"| E["□ 外部:倉庫"]

ひっかけの型:円に「ファイル名を付ける」(→それはデータストア)、四角に「画面や帳票の名前を付ける」(→四角は外部の人・組織)、二本線を「同期」と説明する(→同期の意味はない)。正しいのは矢印にデータの名前を付けるです。選択肢「アクティビティ」はUMLのアクティビティ図の用語で、DFDの記号ではありません。

E-R図:実体と関連でデータを描く(最頻出)

E-R図(Entity-Relationship図)は、システムで管理したい対象をエンティティ(実体)として、エンティティどうしのつながりをリレーションシップ(関連)として描く図です。「顧客」「注文」「商品」が箱になり、「顧客は注文を複数する」のような関係を線で結びます。

  • エンティティ:管理対象のこと。顧客・商品のような物だけでなく、「注文」「契約」のような形のない出来事もエンティティになります。
  • 属性(アトリビュート):エンティティの特性。顧客なら氏名・住所。エンティティは属性をもつのが正しい説明です。
  • インスタンス:エンティティの具体的な1件(顧客「山田さん」)。エンティティ1つにインスタンスは多数あるので、「1対1」ではありません。
  • リレーションシップ:エンティティ間の関係。1対多・多対多などの数の対応を表します。業務の手順や状態遷移は表しません。

E-R図は概念データモデル(実装方法を決める前に、業務のデータを整理したもの)です。そのため「関係データベースの表として実装することを前提に表現する」は誤りです。

ひっかけの型:「時間や行動に応じて状態が変化する」(→状態遷移図)、「データの流れを表す」(→DFD)、「データの生成から消滅までの操作」(→E-R図の役割ではない)、「オブジェクト指向モデル」(→UML)。実体と関連の2語があればE-R図です。

実体と関連で描くE-R図顧客属性:氏名・住所注文形のない出来事注文する1多山田さん顧客B顧客Cインスタンスは多数ある(エンティティと1対1ではない)業務の手順・状態の変化は描かない
エンティティ「顧客」と「注文」が関連で1対多につながり、顧客1つにインスタンスが多数ぶら下がる様子。

状態遷移図:イベントで状態が変わるシステム向け

状態遷移図は、システムがとる状態、状態を変えるきっかけ(イベント:時間の経過・センサの信号・ボタン操作など)、そのとき実行する動作を描く図です。信号機が「青→黄→赤」と時間で切り替わるのが典型的な例です。

「状態遷移図が向くシステムはどれか」もよく出ます。答えはセンサや信号で状態が変わる制御系です(例:温室制御・エレベータ・自動販売機)。

向くシステム 向かないシステム
温室制御(温度センサで暖房をON/OFF) 在庫棚卸の集計
エレベータ・自動販売機 水道料金の計算
リアルタイムの機器制御 稼働状況のレポート出力

集計・計算・帳票出力のようなバッチ処理(データをまとめて処理する方式)は、データの流れが中心なのでDFDやE-R図で設計します。

温室制御の状態遷移図イベント:温度が下がる動作:暖房をつける状態暖房OFF状態暖房ONイベント:温度が上がる動作:暖房を消すきっかけで状態が変わる=制御系向き
温室制御で、温度センサのイベントをきっかけに「暖房OFF」と「暖房ON」の状態が行き来し、そのとき動作が実行される様子。

決定表とデータ中心アプローチ

決定表(デシジョンテーブル)は、条件の組合せと、それぞれに対してどの動作をするかを表の形で整理したものです。「会員か」「購入額が1万円以上か」の組合せごとに割引率を決める、という使い方をします。

データ中心アプローチ(DOA:Data Oriented Approach)は、業務の処理手順よりも先に、業務で扱うデータの構造に注目してシステムを設計する考え方です。データを全社の共有資源とみなして一元管理するので、業務の手順が変わってもデータ構造は変わりにくくなります。

設計の考え方 注目するもの 試験での説明
データ中心(DOA) 情報資源のデータ構造 データを共有資源として一元管理する
プロセス中心 業務の処理・手順 業務プロセスに合わせてデータ構造を作る
構造化設計 機能の分割 モジュールの独立性が高くなるように分割する
オブジェクト指向 データと手続のまとまり 変更を局所化しやすい

ファイルの項目から出せる集計を判断する

「このファイルで出力できる集計はどれか」という問題は、集計の軸ごとに、その期間のデータがどのファイルにあるかを確かめれば解けます。表を結合すれば何でも出せる、と考えると間違えます。

確認するのは次の2点です。

  1. 集計の軸(顧客別・商品別・担当者別など)を表す項目が、そのデータに付いているか。
  2. 期間(当月・過去の月・日別)のデータがあるか。日別の集計なら日付の項目が必要です。

解き方は下の例題を見てください。

コード設計:コード体系とチェックディジット

コード設計は、商品・顧客などに付ける番号の付け方を決める作業です。試験には体系の名前を答える問題と、入力ミス対策の問題が出ます。

コード体系 別名 特徴 例
表意コード ニモニックコード 値から対象の内容が連想できる TV-32(32型テレビ)
連番コード シーケンスコード 1から順に番号を付ける 0001, 0002…
区分コード ブロックコード 番号の範囲ごとに分類を割り当てる 100番台=食品、200番台=衣料
桁別コード グループ分類コード 桁の位置ごとに大分類・中分類…を表す 1桁目=部門、2〜3桁目=品目
デシマルコード 十進分類コード 0〜9の10区分を繰り返して細かくする(図書分類など) 913.6

チェックディジット(検査文字)は、コードの値から決まった計算(モジュラス11など)で求めた数字を末尾に付け、入力されたコードの値の誤り(打ち間違い・数字の入れ替え)を見つける仕組みです。入力ミスが業務に重大な影響を与えるコードでは採用します。

コード設計の原則は次のとおりです。

  • 付番は業務を知っている人が行う(システム設計担当者に任せない)。
  • 属性や桁数は、コンピュータの処理効率より使いやすさ・将来の拡張を重視して決める。
  • 追加・廃止・変更の保守方法は設計段階で決める(運用テストまで待たない)。
チェックディジットの仕組みコードの値1234決まった計算(モジュラス11など)1234 + CC=チェックディジット(末尾)1234C正しく入力1243C数字の入れ替え再計算と一致受け付ける再計算と不一致誤りを検出見つけるのはコードの値の誤り英字混入・桁数・範囲外は別のチェック
コードの値から計算したチェックディジットを末尾に付け、入力時に再計算して数字の入れ替えなどの誤りを見つける流れ。

試験での問われ方

  • 「○は何か」:プロセス。二本線(データストア)・矢印(データフロー)・アクティビティ(UMLの用語)を混ぜてきます。
  • 「〇〇図の説明はどれか」:4つの選択肢が、DFD・E-R図・状態遷移図・決定表/流れ図/UMLの説明になっています。キーワード(データの流れ/実体と関連/状態とイベント/条件の組合せ)で選びます。
  • 「状態遷移図が適切なシステム」:センサや信号を使う制御系を選びます。集計・計算・帳票のシステムはひっかけです。
  • 「チェックディジットの目的」:コードの値の誤りの検出です。英字の混入(数値チェック)、桁数(桁数チェック)、範囲外の値(範囲チェック)は、それぞれ別の入力チェックです。
  • 「出せない情報はどれか」:日付・期間・集計軸の項目が、本当にその表にあるかを確かめます。
例題 1

4つのファイルで当月分と直前3か月分を出せる受注実績はどれか

ある企業では,顧客マスタファイル,商品マスタファイル,担当者マスタファイル及び当月受注ファイルを基にして,月次で受注実績を把握している。各ファイルの項目が表のとおりであるとき,これら四つのファイルを使用して当月分と直前の 3 か月分の出力が可能な受注実績はどれか。
ファイル項目備考
顧客マスタ顧客コード,名称,担当者コード,前月受注額,2 か月前受注額,3 か月前受注額各顧客の担当者は 1 人
商品マスタ商品コード,名称,前月受注額,2 か月前受注額,3 か月前受注額————
担当者マスタ担当者コード,氏名————
当月受注顧客コード,商品コード,受注額当月の合計受注額

ア 顧客別の商品別受注実績
イ 商品別の顧客別受注実績
ウ 商品別の担当者別受注実績
エ 担当者別の顧客別受注実績

出典:平成26年度 秋期 基本情報技術者試験 午前 問24

解き方と答えを見る
  1. 期間ごとに、どのファイルにデータがあるかを整理する。当月:当月受注ファイル(顧客コード×商品コードごとの受注額)。前月〜3か月前:顧客マスタ(顧客ごとの金額)と商品マスタ(商品ごとの金額)だけ。
  2. 過去3か月分は「顧客ごと」か「商品ごと」の金額しかない。顧客×商品の組合せの過去データは、どのファイルにもない。
  3. ア(顧客別の商品別)とイ(商品別の顧客別)は、過去の月について顧客×商品の組合せが必要。データがないので出せない。
  4. ウ(商品別の担当者別)は、過去の月について商品×担当者の組合せが必要。商品マスタには担当者の項目がなく、顧客との対応も過去の月にはないので出せない。
  5. エ(担当者別の顧客別)を確かめる。顧客マスタに担当者コードがあり、各顧客の担当者は1人なので、顧客を担当者ごとにまとめられる。過去3か月分は顧客マスタの金額をそのまま使い、当月分は当月受注を顧客コードごとに合計すればよい。
  6. 4か月分すべてそろうのはエだけ。

答え:エ(担当者別の顧客別受注実績)

要点(試験直前に読む)

  • DFDの4記号:○=プロセス、二本線=データストア、矢印=データフロー(データ名を付ける)、□=外部。
  • E-R図=実体(エンティティ)と関連(リレーションシップ)。エンティティは属性をもつ。概念モデルなので実装前提ではない。
  • 状態遷移図=イベントで状態が変わる様子。センサを使う制御系(温室制御など)に向く。
  • 決定表=条件の組合せと動作。DOA=データ構造に注目し、データを共有資源として一元管理する。
  • 表意コード=ニモニック(値から内容が連想できる)。チェックディジット=コード値の入力誤りを見つけるために末尾に付ける。
  • 集計できるかの問題は、集計の軸と期間の項目がそのファイルにあるかを確かめる。

ひっかけ

  • 「○は何か」に「データストア」「アクティビティ」と答えさせようとする。円はプロセス。二本線がデータストアで、アクティビティはUMLの用語。
  • 「〇〇図の説明」では、ほかの図の説明が並ぶ。データの流れ=DFD、実体と関連=E-R図、状態とイベント=状態遷移図、条件の組合せ=決定表、制御の流れ=流れ図。
  • 「状態遷移図が適切なシステム」で集計・料金計算・レポートを選ばせる。これらはバッチ処理なので、センサを使う制御系を選ぶ。
  • チェックディジットの目的で、桁数チェック・範囲チェック・英字混入(数値チェック)を混ぜる。正解は「コードの値の誤り」。
  • 「表を結合すれば出せる」と思わせる。日別の集計には日付の項目が要る。過去の期間は、どの軸で金額が残っているかを確かめる。

用語(17)

DFD Data Flow Diagram(データフロー図)
業務の中でデータがどこから来て、どこで加工され、どこへ行くかを4つの記号で描く図。
⚠ 流れ図(フローチャート)は処理の順番と分岐を描く。DFDは順番を描かない。
プロセス ぷろせす
DFDで円(○)で表す、データを加工する処理。
⚠ データストア(二本線)は加工せずにためるだけ。
データストア でーたすとあ
DFDで平行な二本線で表す、データをためておくファイルやデータベース。
⚠ 「同期」の記号ではない。円(プロセス)と取り違えさせる選択肢に注意。
データフロー でーたふろー
DFDで矢印で表すデータの流れで、流れるデータの名前を付ける。
⚠ 流れ図の矢印は制御(処理の順番)の流れで、意味が違う。
外部(源泉・吸収) がいぶ(せんせん・きゅうしゅう)
DFDで四角で表す、システムの外にいるデータの出どころ・行き先となる人や組織。
⚠ 入力画面や帳票を表す記号ではない。
E-R図 Entity-Relationship図
管理対象を実体(エンティティ)、実体どうしのつながりを関連(リレーションシップ)として描く、データの関係の図。
⚠ データの流れならDFD、状態の変化なら状態遷移図。「実体と関連」があればE-R図。
エンティティ Entity(実体)
システムで管理する対象のことで、物だけでなく注文のような出来事も含み、特性を表す属性をもつ。
⚠ インスタンスはエンティティの具体的な1件で、1つのエンティティに多数ある(1対1ではない)。
リレーションシップ Relationship(関連)
エンティティどうしの関係で、1対多などの数の対応を表す。
⚠ 業務の手順や状態遷移を表すものではない。
属性 アトリビュート(Attribute)
エンティティがもつ特性で、顧客なら氏名や住所。
状態遷移図 じょうたいせんいず
システムの状態、状態を変えるきっかけ(イベント)、そのとき実行する動作を描く図。
⚠ 機能の階層構造はHIPOなど、段階的な詳細化は機能分解、データの流れはDFD。制御系システムに向く。
決定表 デシジョンテーブル(Decision Table)
条件の組合せと、それぞれに対する動作を表の形で整理したもの。
⚠ 実体を長方形で結ぶのはE-R図、制御の流れを矢印で描くのは流れ図。
DOA Data Oriented Approach(データ中心アプローチ)
業務で扱うデータの構造に注目して設計し、データを共有資源として一元管理する考え方。
⚠ プロセス中心は業務手順に合わせてデータを作る。オブジェクト指向はデータと手続をまとめる。
表意コード ニモニックコード(Mnemonic Code)
コードの値から対象の内容が連想できるコード体系。
⚠ シーケンス(連番)・ブロック(区分)・デシマル(十進分類)は内容を連想できない。
シーケンスコード Sequence Code(連番コード)
対象に1から順番に番号を付けるコード体系。
ブロックコード Block Code(区分コード)
番号の範囲ごとに分類を割り当てるコード体系。
⚠ 桁別コードは範囲ではなく桁の位置で分類を表す。
デシマルコード Decimal Code(十進分類コード)
0〜9の10区分を繰り返して分類を細かくしていくコード体系で、図書分類が典型。
チェックディジット Check Digit(検査文字)
コードの値から計算した数字を末尾に付け、入力されたコード値の誤りを見つける仕組み。
⚠ チェックポイントはDBの障害回復の用語。桁数・範囲・数値チェックは別の入力チェック。

このレッスンの過去問

このレッスンで稽古する