ミニ仕様書を書いていく中で、複数の条件が組み合わさって決定される処理などを、文字だけで表すのが難しい場面があるでしょう。
このような場合には、デシジョン・テーブルを用いることで、複雑な条件を明確にしたり、条件に漏れや重複、それに矛盾が無いことを確認することができます。
デシジョン・テーブル
デシジョン・テーブルは、いわゆるマトリックス表と考えても良いでしょう。縦に条件を、横に選択肢を入れて作成します。
以下の例はオンラインショップで買い物をした時の送料計算の例
<<条件>> | <<選択肢>> | |||
メンバーシップ | 会員 | 非会員 | ||
購入金額 | 1万円未満 | 1万円以上 | 1万5千円未満 | 1万5千円以上 |
<<結果>> | 送料一律500円 | 送料無料 | 送料一律800円 | 送料無料 |
デシジョン・テーブルの作成
たとえば、美術館の入場料を決める場合の条件をユーザーからヒアリングしたところ、「通常の大人料金は1000円で、中学生以下は400円で、高校・大学生は500円、幼児は無料、65歳以上は600円です」という事でした。
これをそのままに単純な表にすると、以下のような表になると思います。
<<条件>> | <<選択肢>> | ||||
条件 | 幼児 | 中学生以下 | 高校・大学生 | 大人 | 65歳以上 |
<<結果>> | 無料 | 400円 | 500円 | 1000円 | 600円 |
しかし、これでは条件が年齢と就学状況がごちゃ混ぜになってしまっていますね。これではデシジョンテーブルには成っていません。
以下に、この条件を例として、デシジョン・テーブルの作成手順を説明します。
(1)条件の抽出
いきなり表を作るのではなく、まずは、条件を分解して抽出します。この例の場合では、年齢と就学状況に分けられると考えて、以下のよう分解してみました。
年齢: 幼児 65歳未満 65歳以上
就学状況: 中学生以下 高校・大学生
(2)マトリックスの作成
上記で抽出した条件を整理してマトリックス化すると、以下のような表になるでしょう。表中の – は条件に当てはまらないケースです。
<<条件>> | <<選択肢>> | |||||
年齢 | 幼児 | 65歳未満 | 65歳以上 | |||
就学状況 | – | – | 中学生以下 | 高校・大学生 | – | 高校・大学生 |
<<結果>> | 無料 | 1000円 | 400円 | 500円 | 600円 | 500円 |
お気づきだと思いますが、例えば17歳でも就学していなければ大人料金ですし、65歳以上で大学に通っている人は高校・大学生料金となります。
最初の表ではっきりとしていなかった条件が明確になりました。そして、このように条件を明確にした上で、改めてユーザーと仕様の確認をすることが重要です。
デシジョン・テーブルは、ユーザーと対話するにも強力なツールだと思います。条件の整理、仕様の明確化、そのためにデシジョン・テーブルはどんどん使うべきだと思います。
書籍の紹介
しっかりと学習したい方は、この書籍をお読みになる事をお勧めします。
この記事で紹介しているデシジョンテーブルやDFDについては、考案者のトム・デマルコが書いた、「構造化分析とシステム仕様」という書籍の中で詳細な解説がされています。