決定表

ゴルフのプレイデータセット
独立変数依存変数
見通し温度湿度風が強い遊ぶ
晴れ8585間違い遊ばないで
晴れ8090真実遊ばないで
曇り8378間違い遊ぶ
7096間違い遊ぶ
6880間違い遊ぶ
6570真実遊ばないで
曇り6465真実遊ぶ
晴れ7295間違い遊ばないで
晴れ6970間違い遊ぶ
7580間違い遊ぶ
晴れ7570真実遊ぶ
曇り7290真実遊ぶ
曇り8175間違い遊ぶ
7180真実遊ばないで

決定表は、与えられた条件に応じて実行するアクションを指定するための簡潔な視覚的表現です。決定表は、ビジネスプロセスモデリングの分野では制御表または状態遷移表を指す用語です。通常、ソフトウェアエンジニアリングにおけるフォーマットの転置としてフォーマットされます

概要

各決定は、条件選択肢に列挙された可能な値を持つ変数、関係、または述語に対応します。各アクションは実行する手順または操作であり、エントリは、対応する条件選択肢の集合に対してアクションを実行するかどうか(または実行する順序)を指定します。

多くの意思決定表では、より簡潔にするために、条件の選択肢に「don't care」記号が含まれています。これはハイフン[1] [2] [3]または空白[4]のいずれかですが、空白の使用は推奨されません。これは、意思決定表が未完成であることを示すだけになる可能性があるためです。[要出典]意思決定表の用途の一つは、特定の入力要素が実行されるアクションに無関係となる条件を明らかにすることです。これにより、これらの入力テストを省略し、意思決定手順を合理化できます。[5]

「気にしない」シンボルのデモンストレーション
ルール
条件元気ですか?はいいいえはいいいえ
雨が降っていますか?はいはいいいえいいえ
アクション屋内に留まる多分多分
ランニングに行く多分
庭の手入れをする多分多分
ルール
条件元気ですか?はいいいえ
雨が降っていますか?はいいいえいいえ
アクション屋内に留まる多分
ランニングに行く多分
庭の手入れをする多分多分
2 つの表は同じ情報を伝えますが、2 番目の表では簡潔にするために、ハイフンを don't care 記号として使用しています。

基本的な4象限構造以外にも、意思決定表では条件の選択肢とアクションエントリの表現方法が多種多様です。[6] [7]一部の意思決定表では、条件の選択肢を表すために単純な真偽値を使用します(if-then-elseと同様)。他の表では番号付きの選択肢を使用します(switch-caseと同様)。また、条件の選択肢にファジーロジックや確率的表現を使用する表もあります。[8]同様に、アクションエントリは、アクションを実行するかどうかを単純に表す場合(実行するアクションをチェックする)、またはより高度な意思決定表では、実行するアクションの順序を表す場合があります(実行するアクションに番号を付ける)。

入力変数のあらゆる組み合わせを含む意思決定表は、バランスの取れた[4]、あるいは完全[3]であるとみなされます。言い換えれば、バランスの取れた意思決定表は、入力変数が与えられたあらゆる状況において、ある行動を規定します。[4]

限定エントリ型の決定表は、記述が最も簡単です。条件の選択肢は単純なブール値で、アクションのエントリはチェックマークで、特定の列にあるアクションのうち、どのアクションを実行するかを表します。

次のバランスのとれた意思決定表は、テクニカル サポート会社が、顧客から電話で説明された症状に基づいてテクニカル サポートの従業員がプリンタの問題を効率的に診断できるように意思決定表を作成した例です。

プリンターのトラブルシューティング
ルール
条件プリンター印刷いいえいいえいいえいいえはいはいはいはい
赤いライトが点滅していますはいはいいいえいいえはいはいいいえいいえ
プリンターがコンピューターに認識されるいいえはいいいえはいいいえはいいいえはい
アクション電源ケーブルを確認してください多分
プリンタとコンピュータ間のケーブルを確認してください多分多分
プリンタソフトウェアがインストールされていることを確認する多分多分多分多分
インクの点検/交換多分多分多分
紙詰まりがないか確認してください多分多分

これは単なる単純な例であり、プリンターのトラブルシューティングの現実とは必ずしも一致しません。それでも、意思決定表が様々な状況や可能性にどのように対応できるかを示しています。

ソフトウェアエンジニアリングの利点

意思決定テーブルは、特にドメイン固有言語と組み合わせて使用​​すると、開発者とポリシー専門家が同じ情報、つまり意思決定テーブル自体に基づいて作業できるようになります。

従来のプログラミング言語のネストされたif文を決定表に変換するツールもデバッグツールとして使用できます。[9] [10]

意思決定表はコードよりも理解しやすくレビューしやすいことが証明されており、複雑なシステムの仕様を作成するために広く使用され、成功を収めてきました。[11]

歴史

1960 年代から 1970 年代にかけて、 Filetabなどのさまざまな「決定表ベース」の言語がビジネス プログラミングで人気がありました。

プログラムに組み込まれた意思決定表

決定表はコンピュータプログラムに埋め込まれ、プログラムのロジックを「駆動」するために利用されることが多く、実際によく使用されています。簡単な例としては、入力値の範囲と、その入力を処理するコードセクションへの関数ポインタを含む参照テーブルが挙げられます。

静的決定表
入力関数ポインタ
「1」関数1(初期化)
「2」機能2(プロセス2)
「9」機能9(終了)

制御テーブル

同様の方法で複数の条件をコーディングすることで、プログラムロジック全体を「実行可能な」決定表または制御表の形式でカプセル化できます。実際には、このようなテーブルが複数存在し、異なるレベルで動作し、多くの場合、ポインタまたはインデックス値によって相互にリンクされています。

実装

  • Filetab 、 NCC
  • DETAB/65、1965年、ACM
  • FORTABは1962年にランド社から発売され、FORTRANに組み込むように設計された[12]
  • 特定の入力値に基づいて正しいアクションを見つけるためにMapReduceを使用するRuby実装が存在します。 [13]

参照

参考文献

  1. ^ LI Jing (2015年4月1日). 「SEEM 3430 チュートリアル: デシジョンテーブル」(PDF) . p. 23. 2018年12月22日時点のオリジナル(PDF)からのアーカイブ。 2017年11月11日閲覧
  2. ^ 「ビジネス・ルールでのデシジョン・テーブルの作成」Oracleヘルプ・センター、2017年8月6日。 2017年11月11日閲覧
  3. ^ ab Ross, Ronald G. (2005). 「Decision Tables, Part 2 ~ The Route to Completeness」. Business Rules Journal . 6 (8) . 2017年11月11日閲覧
  4. ^ abc Snow, Paul (2012年7月19日). 「Decision Tables」. DTRules: JavaベースのDecision Table Rules Engine . 2017年11月11日閲覧
  5. ^ 李静、2015、p. 24-25。
  6. ^ Rogers, William T. 「Decision Table Examples: Medical Insurance」. Saint Xavier University Systems Analysis and Design . 2007年3月29日時点のオリジナルよりアーカイブ。
  7. ^ “Decision tables”. 2012年9月8日時点のオリジナルよりアーカイブ2010年7月7日閲覧。
  8. ^ Wets, Geert; Witlox, Frank; Timmermans, Harry; Vanthienen, Jan (1996). 「ファジー決定表を用いた立地選択モデリング」. ファジー論理とコンピューティングの新境地:1996年北米ファジー情報処理学会(NAFIPS)隔年会議. カリフォルニア州バークレー:IEEE. pp.  80– 84. doi :10.1109/NAFIPS.1996.534708. ISBN 0-7803-3225-3. S2CID  62056954。
  9. ^ 「実際のCCIDEの例」
  10. ^ 「Cope Decision Table Processorの使用経験」。2017年5月4日時点のオリジナルよりアーカイブ2010年7月7日閲覧。
  11. ^ Udo W. Pooch、「Translation of Decision Tables」、ACM Computing Surveys、第6巻、第2号(1974年6月)、ページ:125–151 ISSN  0360-0300
  12. ^ 「FORTAB: 科学計算アプリケーションのための決定表言語」、1962年、ランド
  13. ^ Alexander Williams (2015). 「Ruby 決定表パーサー」

さらに読む

  • Dwyer, B. および Hutchings, K. (1977)「Cope におけるフローチャート最適化、複数選択決定表」Aust. Comp. J. Vol. 9 No. 3 p. 92 (1977 年 9 月)。
  • Fisher, DL (1966)「データ、ドキュメンテーション、および意思決定テーブル」Comm ACM Vol. 9 No. 1 (1966年1月) p. 26–31。
  • General Electric Company (1962) GE-225 TABSOL リファレンス マニュアルおよび GF-224 TABSOL アプリケーション マニュアル CPB-l47B (1962 年 6 月)。
  • Grindley, CBB (1968)「体系学における意思決定表の利用」Comp. J. Vol. 11 No. 2 p. 128 (1968年8月)。
  • ジャクソン、MA(1975)プログラム設計の原則アカデミックプレス
  • Myers, HJ (1972)「デシジョンテーブルからの最適化コードのコンパイル」IBM J. Res. & Development (1972 年 9 月) p. 489–503。
  • ポラック、SL (1962)「DETAB-X: 改良されたビジネス指向のコンピュータ言語」ランド社メモ RM-3273-PR (1962年8月)
  • Schumacher, H. および Sevcik, KC (1976)「決定表変換への合成的アプローチ」Comm. ACM Vol. 19 No. 6 (1976年6月) p. 343–351
  • CSA、(1970):決定表のZ243.1–1970、カナダ規格協会
  • Jorgensen, Paul C. (2009) 『ソフトウェア動作のモデリング:職人のアプローチ』 Auerbach Publications, CRC Press. 第5章.
  • RapidGen Software Windows、Unix、Linux、OpenVMS 版の決定表ベースのプログラミングツールとコンパイラ
  • LogicGem Software Windows用意思決定テーブルプロセッサ(ロジックとビジネスルールの最適化)
  • LF-ETソフトウェア Windows、Unix、Linux用の決定表エディタ、プログラムジェネレータ、テストケースジェネレータ
  • [1] 意思決定テーブルの例
「https://en.wikipedia.org/w/index.php?title=Decision_table&oldid=1310663050」より取得