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