ビジネスNEW
【連載】第3回:ソフトウェアテストそもそも話~そも、デシジョンテーブルはテスト技法なのか~

「HQW!」の読者の皆さん、こんにちは。辰巳敬三です。
この連載コラムでは、ソフトウェアのテスト技術や品質技術の歴史を紹介しています。
前回は、テスト技法が本格的に登場する1970年代以前、すなわち1950年代から1960年代のテストの状況について、「ソフトウェアテストの黎明から揺籃の時代」と題して解説しました。
今回からは、テストや品質技術に関する個別の話題に入ります。最初のテーマは、デシジョンテーブルテストの歴史です。
デシジョンテーブルテストは、数あるテスト技法の中でもトップ5に入るほど代表的な技法です。このため、「デシジョンテーブル」と聞くと「テスト技法だね」と思われる方は多いかもしれません。
冒頭から今回のコラムのタイトルの答えを明かしてしまうことになりますが、「そもそも」デシジョンテーブルは、1958年にシステム分析や設計のために考案されたものであり、1960年代には、現在のUMLのような設計記法として期待を集めていました。
それでは、デシジョンテーブルとデシジョンテーブルテストの歴史を、詳しく見ていきましょう。
なお、デシジョンテーブルテスト技法そのものの解説は「HQW!」の次の記事をご覧ください。
デシジョンテーブルの誕生
1950年代後半、ゼネラル・エレクトリック(以下、GE)社で、工場内の情報フロー全体を自動化することを目的とした「統合システム・プロジェクト(Integrated Systems Project)」が始動しました[1]。このプロジェクトでは、製品設計、運用計画、原価決定、品質保証計画など、多くの関係者による意思決定のロジックを記録・分析する必要がありました。1957年秋から1959年にかけてプロジェクトリーダーを務めたBurton Gradは、これらのロジックを表形式で表現することに重点を置いて作業を進め、1958年には、原因と結果の関係を文書化する手法として「デシジョンテーブル」の概念を開発しました。彼が表形式にこだわった理由は、多くのアナリストがプログラムやフローチャートを直接読み書きすることが困難であったためであり、フローチャートに代わる、アナリストとプログラマー間の効果的なコミュニケーション手段を提供することを意図していました。
デシジョンテーブルの条件記述部の書き方には、YやNといった2値表現を用いる「制限指定表(limited entry table)」、語句・数値・コードなどを記入する「拡張指定表(extended entry table)」、そして両者を組み合わせた「混合指定表(mixed entry table)」の三つの形式があります。Gradのプロジェクトでは、このうち拡張指定表が使用されていました。
Gradによれば、1958年後半から、コンサルティング会社のサザーランド社では経営意思決定ルールを表形式で表現していたそうです。詳細な資料は公開されていないものの、入手可能な情報からは、制限指定表が使われていたことが示唆されています。さらに、1959年にはハント・フーズ社でも表形式を用いた実験が始まり、同年後半に公開された資料では、システム分析における制限指定デシジョンテーブルの活用方法が説明されていたそうです。

デシジョンテーブルの発展
利用企業の拡大
1960年初頭、IBM社はシステム分析とプログラミングの両面から表形式の価値を探求するため、複数の顧客と共同プロジェクトを立ち上げました。この取り組みでは、さまざまな表形式の有効性を評価すると共に、既存言語への組み込み可能性も模索していました。同じ頃、GE社の姿勢に不満を抱いていたGradがGE社を退職し、IBM社に移籍しました[2]。また、ハント・フーズ社でデシジョンテーブルの活用を推進していたOrren Evans[3]もIBM社に加わっており、IBM社がデシジョンテーブルを活用したビジネスに注力していたことがうかがえます。
一方、1959年に設立されたCODASYL(Conference on Data Systems Languages、データシステムズ言語協議会)でも、COBOLの言語仕様を開発すると共に、デシジョンテーブルの利用方法に関する調査が始まりました。CODASYLは、システムアナリストが基本的な意思決定ロジックをプログラマーや自動プログラムコンパイラーに伝達できるようにする、システム指向言語の開発を目指していました。
そして1962年9月、CODASYLのシステムグループと、ACM(Association for Computing Machinery、米国計算機協会)の特別委員会であるジョイントユーザーグループ(JUG)の共催により、デシジョンテーブルに関する初のシンポジウム「Symposium on Decision Tables」が開催されました[4]。このシンポジウムでは、450名を超えるデータシステムデザイナーとプログラマーの参加があり、IBM社、GE社、RAND社、RCA社といったコンピューターメーカーに加え、USスチール社や北米保険会社などのユーザー企業から合計11件の発表と質疑応答が行われました。当時のデシジョンテーブルへの関心の高さと、その利用の広がりがよく伝わってきます。
ちなみに、日本でも1964年9月発刊の情報処理学会誌で「近年アメリカで話題となっている decision table」の概要が紹介されています[5]。
自動化(ソースコード生成)
デシジョンテーブルは考案されて間もなく、コンピューターによる処理の検討も始まりました。
GE社のThomas Kavanaghは、デシジョンテーブルからGE社のコンパイラ言語GECOMのソースコードを生成するTABSOL(TABular Systems Oriented Language)を開発し、1960年に発表しました[6]。TABSOLを用いることで、アナリストはプログラマーを介することなく、作成したデシジョンテーブルを直接コンパイラに入力して処理することが可能となりました。ノーコード開発の先駆けと言えるかもしれません。
同時期、CODASYLのシステムグループでも、デシジョンテーブルをCOBOLの手続き部に変換して組み込むプリプロセッサーDETAB-X(Decision Tables, Experimental)を開発し、前述の1962年9月のシンポジウムで紹介しました[7]。「Experimental」という名称は、DETAB-Xをデータ処理の専門家に実験的に使用してもらい、フィードバックを得るという意味合いを持っていました。1965年には改良版のDETAB-65が開発され、最終的には1970年のDETAB-70まで継続的に改良が行われています。
その他にも、IBM社とRAND社が共同で1962年に開発したFORTRAN向けのFORTAB、北米保険会社が同年に開発したデシジョンテーブル言語LoBoc、アメリカ国勢調査局(Bureau of the Census)が1963年に開発したCENTABなど、1960年代から1970年代にかけて多くのデシジョンテーブルプロセッサーが開発されました。1970年に出版されたHerman McDanielの『Decision Table Software: A Handbook』[8]では、TABSOLやDETAB-Xをはじめとする32本のソフトウェアが紹介されています。
デシジョンテーブルの定着
1970年代に入っても、デシジョンテーブルへの関心は持続しており、1971年9月には、ACMのSIGPLAN(Special Interest Group on Programming Languages)が発行する論文誌において、デシジョンテーブル特集号が組まれました[9]。この特集に掲載された参考文献一覧によれば、1960年から1971年の間に発表された関連文献は113件に上ります。
一方で、実務におけるデシジョンテーブル(以下、DT)の活用はあまり広がっていなかったようです。このような状況を受け、CODASYLは「DTのような有用な手法がなぜ広く活用されていないのか、また、その有用性を高めるために何ができるのか」という問題意識の下、1973年11月にDTタスクグループ(DTTG)を結成しました。
DTTGは1975年初頭までに、世界中のDT利用者、開発者、理論家を対象に実態調査を行い、以下のような課題が存在すると結論付けました。そして、この情報を基にデシジョンテーブルの方法論の整理に着手しました。
- 初期のDTソフトウェアは大量の主記憶装置を必要とする
- 商用コンパイラに強力なDT機能がなく、一般のプログラマーには使いにくい
- DTは、効果的な使用方法を習得した場合にのみ、その利便性を発揮する
- 効果的なDTの使用方法に関する教育プログラムが不十分である
1978年7月までに報告書の予備草案が作成され、最終的に1982年に『A Modern Appraisal of Decision Tables』と題した報告書が発行されました[10]。
報告書の概要は下表のとおりです。
章 | 概 要 |
---|---|
第1章 はじめに (INTRODUCTION) | 本報告書の目的と概要 |
第2章 概要 (OVERVIEW) | デシジョンテーブルに関するさまざまなトピックの紹介と、活用のメリットの提示 |
第3章 理論 (THEORY) | 変換アルゴリズムの議論の基盤として、集合論と代数学に基づくデシジョンテーブルの理論的基礎の提示 |
第4章 変換アルゴリズム (CONVERSION ALGORITHMS) | デシジョンテーブルの最適化手法に関する概説、2種類のツリー生成法と解析手法の解説 |
第5章 開発方法論 (DEVELOPMENT METHODOLOGY) | ソフトウェア開発プロセスの各フェーズにおいて推奨されるデシジョンテーブルの使用方法の説明 |
第6章 教育 (EDUCATION) | さまざまなカテゴリーの利用者にデシジョンテーブル技術を指導するための計画の提示 |
第7章 用語集 (GLOSSARY) | 報告書で使用されている用語の簡単な定義 |
第8章 参考文献 (ANNOTATED BIBLIOGRAPHY) | ベルギーのルーヴェン・カトリック大学が出版したデシジョンテーブルに関する文献目録(世界各国から計581件の文献) |
1970年代以降、デシジョンテーブルの利用が再び広がるという動きは見られなかったように思われます。これは、プログラミング言語やソフトウェア開発手法の進化により、より柔軟で表現力の高い手法が登場したことが要因ではないでしょうか。ただし、デシジョンテーブルという手法そのものは、標準化や大学教育への導入を通じて、ソフトウェア技術者にとって基本的な知識として定着しました。
ISOにおける標準化作業は1975年に始まり、1984年12月には『ISO 5806:1984 Specification of single-hit decision tables』として制定されました。日本でもこれが翻訳され、1986年に『JIS X 0125:1986 決定表』として制定されています。
また、ソフトウェア工学の教科書として世界的に最も広く使われているRoger Pressmanの『Software Engineering - A Practitioner's Approach』では、1982年に刊行された第1版から2010年の第7版まで、デシジョンテーブルに関する記述がありました(ただし、2015年出版の第8版以降では記述が削除されています)。
テストへのデシジョンテーブルの利用
これまで、デシジョンテーブルの誕生から定着に至る過程について解説してきました。では、テストの分野でデシジョンテーブルが使われ始めたのは、いつ頃からなのでしょうか。
私が調べた限りでは、テストにデシジョンテーブルを用いた最初の論文は、1965年にRCA社のBenson H. Scheffが発表した『An Application of Decision Tables as the Source Language for Automatic Testing』です[11]。この論文では、他の装置やデバイスを試験する自動試験装置(Automatic Test Equipment)システムにおいて、テストシーケンスをプログラミングする手段としてデシジョンテーブル形式を採用することで、エンジニアが容易にテストを記述できる方法が提案されています。具体的には、デシジョンテーブルの条件部をテストカテゴリやパラメータ、アクション部を期待結果やテスト後の動作に対応させ、縦の列(ルール)をテストケースとして扱う構成になっています。
テスト設計におけるデシジョンテーブルの初期の応用例としては、1970年にIBM社のWilliam R. Elmendorfが発表した「原因結果グラフ技法(Cause-Effect Graphing)」が挙げられます[12]。この手法では、プログラムの入力(原因)と出力(結果)の論理関係を原因結果グラフとして図式化し、それをデシジョンテーブル形式に変換することでテストケースを作成します。
また、1975年にJohn B. GoodenoughとSusan L. Gerhartが発表した『Toward a Theory of Test Data Selection』[13]は、テストの基本定理を初めて理論化した論文として知られています。この中で、信頼性の高いテストを開発するためのテストデータ選択手法として、デシジョンテーブルを応用した「条件表法(condition table method)」が提案されています。
デシジョンテーブルを利用したテストに関する最初の書籍は、1976年出版のGlenford J. Myersによる『Software Reliability Principles and Practices』[14]と、1979年の『The Art of Software Testing』[15]です。ただし、これらはいずれも前述の原因結果グラフ技法に関する説明にとどまっています。デシジョンテーブルそのものの解説や、これを用いたテスト項目設計までを体系的に取り上げた初の書籍は、1983年に出版されたBoris Beizerの『Software Testing Techniques』第1版です[16]。
現在では、デシジョンテーブルテストは多くのテスト関連書籍で紹介されており、ISTQB(International Software Testing Qualifications Board)テスト技術者資格制度のシラバス(学習事項)にも含まれるなど、テスト技術者にとって必修の技法となっています。

デシジョンテーブルの現在
2000年11月、ルーヴェン・カトリック大学のMoreno Garciaらは、過去40年間に発表されたデシジョンテーブルに関する文献を集計・分析し、『An Overview of Decision Table Literature 1982-2000』[17]と題するレポートを発表しました(1959年から1999年までに発表された文献の総数は970件)。
このレポートによれば、デシジョンテーブルの適用分野は、1960年代には主にプログラミング分野に集中していたものの、1970年代にはアルゴリズム分野への関心が高まり、1980年代以降は知識表現や応用分野へと焦点が移っていきました。さらに、1984年から1999年にかけての年間平均出版件数は約20件と増加傾向にあり、応用分野もエキスパートシステム、生産システム、医療、法務など多岐に渡っています。とりわけ、「エキスパートシステム、意思決定支援システム、知識表現、人工知能」の分野で最も多く議論されていると報告されています。
2000年代に入ってからも、ビジネスアプリケーション市場で注目され始めたビジネスルール管理システム(BRMS: Business Rule Management System)におけるビジネスルールの実装手段として、デシジョンテーブルは活用されています。さらに2015年には、OMG(Object Management Group)が策定した規格『Decision Model and Notation(DMN)』[18]において、意思決定ロジック(Decision Logic)の表現手段としてデシジョンテーブルが正式に規定されました。
おわりに
考案から約70年が経過した現在においても、デシジョンテーブルが先進的な分野で活用され続けていることは注目に値します。テスト技術者の皆さんも、他分野におけるデシジョンテーブルの活用事例を知ることで、デシジョンテーブルテスト技法を新たな高みに引き上げるヒントが得られるかもしれません。
<参考文献>
[1] B. Grad, "Tabular Form in Decision Logic," Datamation, vol.7, no.7, pp. 22-26, 1961
[2] B. Grad, E. LaHay, "Oral history of Burton Grad (IBM) Interviewed by Ed LaHay," Computer History Museum, 2007
https://www.computerhistory.org/collections/catalog/102701925
[3] O. EVANS, "Advanced Analysis Method for Integrated Electronic Data Processing," Datamation, vol.6, no.3, p. 21, 1960
[4] Proceedings of the Decision Tables Symposium, CODASYL Systems Group and Joint Users Group of the ACM, 1962
[5] 吉村鉄太郎, Decision Table, 情報処理 5(5), pp. 268-276, 情報処理学会, 1964
https://ipsj.ixsq.nii.ac.jp/records/8914
[6] T. F. Kavanagh, "TABSOL - A Fundamental Concept for Systems Oriented Languages," Proceedings of the Eastern Joint Computer Conference, pp. 117-136, 1960
[7] S. L. Pollack, "What is DETAB-X?," Proceedings of the Decision Tables Symposium, pp. 29-39, 1962
[8] H. McDaniel, "Decision Table Software: A Handbook," Brandon/Systems Press, Inc., 1970
[9] ACM SIGPLAN Notices: Special issue on decision tables, Volume 6, Issue 8, September 1971
[10] CODASYL, "A Modern Appraisal of Decision Tables," Report of the Decision Table Task Group, ACM, 1982
[11] B. H. Scheff, "An Application of Decision Tables as the Source Language for Automatic Testing," IEEE Trans. on Aerospace, vol.3, no.1, pp. 47-51, 1965
[12] W. R. Elmendorf, "Automated Design of Program Test Libraries," IBM Technical Report TR 00.2089, 1970
http://www.benderrbt.com/Automated%20Design%20of%20Program%20Test%20Libraries%20-%201970.pdf
[13] J. B. Goodenough, S. L. Gerhart, "Toward a Theory of Test Data Selection," IEEE Transactions on Software Engineering, Vol. 10, No. 6, pp. 493-510, June 1975
[14] G. J. Myers, Software Reliability Principles and Practices, Wiley, 1976(有澤誠(訳),ソフトウェアの信頼性 ソフトウェア・エンジニアリング概説, 近代科学社, 1977)
[15] G. J. Myers, The Art of Software Testing, John Wiley & Sons, 1979(松尾正信(訳),長尾真(監訳), ソフトウェア・テストの技法, 近代科学社, 1980)
[16] B. Beizer, Software Testing Techniques, Van Nostrand Reinhold, New York, 1983
[17] A. M. Moreno Garcia, M. Verhelle, J. Vanthienen, "An Overview of decision table literature 1982-2000," In: The Fifth International Conference on Artificial Intelligence and Emerging Technologies in Accounting, Finance and Tax, Huelva, Spain, November 2-3, 2000
https://feb.kuleuven.be/prologa/download/overview82-2000.pdf
[18] The Object Management Group (OMG), Decision Model and Notation (DMN)
https://www.omg.org/dmn/
この記事は面白かったですか?
今後の改善の参考にさせていただきます!