決定表
複数の条件の組合せに対して、実行する動作や判定結果を表で定める方法。複雑な分岐を整理し、組合せに抜けや重なりがないかを確認するのに使う。
イマシルちゃんの解説
注文の内容によって、受付の案内が変わるお店を考えてみよう。
「この場合はこうする」を文章で並べ続けると、抜けている場合を見つけにくいよね。
あり得る場合を一つずつ並べ、対応する案内をそろえて書いておく。
似ている場合も比べやすくなり、違う案内が重なっていないか確かめられるんだ。
より深い解説
分岐を表にする
一つの規則は、確認する条件と、それが成立した場合の動作から構成される。規則を行に並べる形式も、列に並べる形式もある。向きよりも、何を入力としてどう判断するかが重要である。
| 要素 | 内容 |
|---|---|
| 条件部 | 入力の値や状態を調べる |
| 動作部 | 実行する処理や結果を決める |
| 規則 | 条件の組合せと動作を一組にしたもの |
独自の例
商品の貸出しで、利用登録の有無と在庫の有無から処理を決めるとする。
| 利用登録 | 在庫 | 結果 |
|---|---|---|
| あり | あり | 貸出し可能 |
| あり | なし | 予約を案内 |
| なし | あり | 登録を案内 |
| なし | なし | 登録と予約を案内 |
二つの二値条件を独立に組み合わせると、場合の数は4となる。一般にはk個の独立した二値条件で2のk乗の組合せを考える。ただし、業務上成立しない組合せは、その理由とともに区別する。
漏れと競合を確認する
| 確認事項 | 意味 |
|---|---|
| 網羅性 | 想定する入力のすべてに結果があるか |
| 重複 | 同じ入力が複数の規則に当たらないか |
| 矛盾 | 重なった規則が異なる結果を要求しないか |
| 境界 | 以上・未満などの端が正しく定義されているか |
同じ入力で複数規則が成立する設計もある。その場合は、すべてを実行するのか、優先する一つだけを選ぶのかという評価方針を明示する必要がある。
関係しない項目をまとめる
ある入力が結果に影響しない場合、表では不問などと表して規則をまとめられる。ただし、まとめた範囲へ意図しない入力まで含まないかを確認する。
簡潔にすることだけを優先せず、規則をまとめる前後で結果が変わらないことを確かめる。テストでは、表に整理した規則を基に代表値や境界値を選ぶ。
ほかの表記法との比較
| 表記法 | 中心となる観点 |
|---|---|
| 決定表 | 入力の組合せと結果 |
| 状態遷移図 | 現在の状態と事象による変化 |
| データフローダイアグラム | データの流れと加工 |
| 特性要因図 | 結果に影響し得る要因 |
条件分岐を整理することと、時間を追って状態が変わることは異なる。過去の経緯によって判断が変わる場合は、状態を入力へ含めるか、状態遷移のモデルと組み合わせる。