3秒でわかる
フローチャートで条件による分かれ道を表す菱形の記号。処理の流れがどこで二手に分かれるかを図の上で明示するために置きます。
もう少し詳しく
どういうものか
判断はフローチャートの記号の一つで、菱形で描きます。中に条件を書き、そこから出る線に「はい」と「いいえ」を添えて、流れが二手に分かれることを示します。プログラムの if 文、繰り返しの継続条件、業務手順の承認可否など、進む先が状況で変わる箇所はすべてこの記号になります。
四角の処理記号との役割の違いは出口の数です。処理記号は入口も出口も一つですが、判断記号は出口が二つ以上あります。図を読む人は、菱形を見た瞬間にここで流れが分岐すると分かります。
なぜ必要か
条件分岐を文章で書くと、入れ子になった途端に読めなくなります。図にすると、どの条件がどの範囲に効いているか、どの経路を通ると何も処理されずに終わるかが一目で分かります。仕様の抜けは、たいてい菱形から出た片方の線が行き先を持たないまま放置されている箇所に現れます。
テスト設計の起点にもなります。網羅すべき経路の数は菱形の並び方で決まるため、図を描いてから確認項目を数えると漏れが減ります。
具体例
会員の割引判定を図と条件式の両方で表します。
+-----------+
| 開始 |
+-----+-----+
v
/ 会員か \ --いいえ--> [ 通常価格 ]
\ /
| はい
v
/ 5000円以上 \ --いいえ--> [ 5%引き ]
\ /
| はい
v
[ 10%引き ]def price_rate(is_member, amount):
if not is_member:
return 1.0
if amount >= 5000:
return 0.9
return 0.95つまずきやすいところ
条件が「はいかいいえ」で答えられる形になっていないことがよくあります。菱形に「会員種別」と書いてしまうと出口が三本にも四本にもなり、線が交差して読めなくなります。判定は一つずつに分け、菱形を縦に並べます。
境界の書き方も落とし穴です。「5000 円以上」と「5000 円超」では、ちょうど 5000 円の人の扱いが変わります。等号を含むかどうかを図の段階で決めておかないと、実装とテストで解釈がずれます。分岐した線が合流せず、どちらの経路でも通るはずの終了処理が片方に書かれていない、という抜けも頻出です。
覚え方
菱形は道の分かれ目。線が二本出ていないなら、それは判断ではなく処理です。
