システムアーキテクト 2009年 午前2 問02
問題文
図は、階層化されたDFDにおける、あるレベルのDFDの一部である。プロセス1を子プロセスに分割して詳細化したDFDのうち、適切なものはどれか。ここで、プロセス1の子プロセスは、プロセス1-1、1-2及び1-3と表す。


選択肢
ア:
イ:(正解)
ウ:
エ:
🔒 解説は解答すると表示されます
DFDの入出力保存【午前2解説】
正解の理由
DFDを階層化して詳細化するときは、親プロセスに出入りするデータフローを、子プロセス群全体の入出力としてそのまま保つ必要があります(バランシング)。図のプロセス1には、外部からの入力が2本あり、プロセス1からの出力はプロセス2へ向かうものとプロセス3へ向かうものの2本です。したがって子図でも、外部からの入力が2本、外部への出力が2本でなければなりません。また、子プロセス一つ一つも、入力と出力の両方をもつ必要があります。
イは、1-1と1-2がそれぞれ外部から1本ずつ入力を受け、1-1から外部へ1本、1-3から外部へ1本の出力が出ています。外部との入出力は親と同じ2本ずつで、1-1・1-2・1-3のどれも入力と出力をもっているため、適切な分割です。
解法ステップ
- 親図でプロセス1に入るフロー(2本)と、プロセス1から出るフロー(プロセス2行きとプロセス3行きの2本)を数える。
- 各選択肢で、子図の外側から入る矢印と外側へ出る矢印の本数を数え、親と一致するか確かめる。
- 一致するものについて、入力のない子プロセスや出力のない子プロセスがないかを確かめる。
- 両方を満たすものを選ぶ。
選択肢別の誤答解説
- ア:外部からの入力が1-1への1本しかなく、親の入力2本と合いません。
- イ:入力2本(1-1・1-2へ1本ずつ)と出力2本(1-1・1-3から1本ずつ)が親と一致し、どの子プロセスにも入出力があるので正解です。
- ウ:入力は2本ですが、外部への出力が1-3からの1本しかなく、親の出力2本と合いません。また、1-2には入力しかなく出力がありません。
- エ:入力2本・出力2本は親と一致していますが、1-2に入力がありません。入力のないプロセスはデータを生み出すことができないので、DFDとして誤りです。
よくある誤解
外部からの2本の入力を同じ子プロセスで受けること自体は誤りではありません。ウが誤りなのは、入力を1-1にまとめたことではなく、出力の本数が親と合わず、1-2が出力をもたないためです。また、エのように入出力の本数だけを合わせても、入力のないプロセスがあればDFDとして成り立ちません。
補足コラム
階層化DFDの子図を確かめるときは、次の二つを順に見ると判断しやすくなります。
- 親プロセスに出入りするフローの本数と向きが、子図の境界で保たれているか(バランシング)
- 子図の中のプロセスが、それぞれ入力と出力の両方をもっているか(入力だけで出力のないプロセスは「ブラックホール」、出力だけで入力のないプロセスは「奇跡」と呼ばれる誤り)
親図のプロセス2とプロセス3の間にある2本の平行線はデータストアです。プロセス1の分割には関係しないので、子図には現れません。
FAQ
Q: 子図の中で、子プロセス同士をつなぐフローは自由に追加してよいですか?
A: 子プロセス同士のフローは親図には現れない内部のフローなので、詳細化に必要なら追加できます。親と一致させる必要があるのは、子図の境界を出入りするフローです。
Q: 子図の出力が、親図のどの出力に当たるかまで確かめる必要がありますか?
A: 実務ではフローに名前を付けて対応を確かめます。本問の図にはフロー名がないので、本数と向きで判断します。
関連キーワード: DFD、階層化、プロセス分割、バランシング、データフロー、データストア、ブラックホール

\ せっかくなら /
システムアーキテクトを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

