JP6904914B2 - 決定表生成装置、及び決定表生成方法 - Google Patents

決定表生成装置、及び決定表生成方法 Download PDF

Info

Publication number
JP6904914B2
JP6904914B2 JP2018016917A JP2018016917A JP6904914B2 JP 6904914 B2 JP6904914 B2 JP 6904914B2 JP 2018016917 A JP2018016917 A JP 2018016917A JP 2018016917 A JP2018016917 A JP 2018016917A JP 6904914 B2 JP6904914 B2 JP 6904914B2
Authority
JP
Japan
Prior art keywords
decision table
rule
information
generation
generation range
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018016917A
Other languages
English (en)
Other versions
JP2019133538A (ja
Inventor
恭平 小山
恭平 小山
伊藤 信治
信治 伊藤
和矢 安田
和矢 安田
久也 平田
久也 平田
宗司 篠原
宗司 篠原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2018016917A priority Critical patent/JP6904914B2/ja
Publication of JP2019133538A publication Critical patent/JP2019133538A/ja
Application granted granted Critical
Publication of JP6904914B2 publication Critical patent/JP6904914B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Description

本発明は、決定表生成装置、及び決定表生成方法に関する。
特許文献1には「表形式のソフトウェア仕様を作成及び検証する技術に関し」、「可読性は確保しつつ決定表の作成・解読工数削減と記憶容量削減を達成する」ため、「ソフトウェア仕様の開発を支援する装置であって、複数の条件を有する条件部および複数の結果を有する結果部からなる複数の命題形式の仕様を受け付ける命題仕様受付手段と、各行が上記複数の条件の1つまたは上記複数の結果の1つを示し、各列が上記複数の命題形式の各々を示す表形式で表した決定表を上記複数の命題形式の仕様から作成する決定表作成手段と、上記複数の命題形式の仕様の各々が互いに矛盾しないかどうかを判定する整合性検証手段とを、備え、上記決定表作成手段は、上記命題仕様受付手段から上記複数の命題形式の仕様を取得すると、上記複数の命題形式の仕様の各々について、当該命題形式の仕様の条件部と結果部を取り出して上記決定表の行を作成し、当該命題形式の仕様に対応する列の当該行の欄に印付けし、上記整合性検証手段は、複数の命題形式の仕様のうち任意の2つの命題形式の仕様を上記決定表から取り出し、上記2つの命題形式の仕様の条件部の論理積が充足可能かどうかを判定し、充足可能であるならば上記複数の命題形式の仕様の各々が互いに矛盾すると出力する装置を提供する。」と記載されている。
特開2012−192203号公報
一般にソースコード中の命令の実行系列(以下、「実行パス」と称する。)は、ソースコードの中の分岐命令(以下、「If文」と称する。)や反復命令(以下、「ループ文」と称する。)の数に依存し、場合によっては指数関数的に増加する。そのため、If文やループ文の数が増えてソースコードの規模が膨大になるとソースコードのパスも指数関数的に増加し、人がソースコードを確認することが困難になる。
そこである変数に着目し、変数への値の割り当て(以下、「結果」と称する。)と、そ
の割り当てが発生する条件(以下、「入力条件」と称する。)の組をルールとみなし、ソースコードから抽出したルールを決定表形式で可視化することによりソースコードの仕様の確認を効率化する方法が存在する。
ソースコードからルールを抽出する方法として記号実行等が知られている。ソースコードからルールを抽出する場合、単純には一つの実行パスが一つのルールに対応する。そのため、抽出されるルールの数はIf文及びループ文の数に対して指数関数的に増加する。
特許文献1には命題形式の仕様(ルールに相当)から決定表を生成する技術に関して記載されている。しかし膨大な数のルールを決定表化すると生成される決定表が巨大化して人による決定表の確認が困難となる。また特許文献1は巨大な決定表の確認を支援する技術に関して何も開示していない。
本発明はこうした背景に鑑みてなされたもので、ルールについて部分的な決定表を生成することを可能とし、ルールの確認にかかる人の負荷を軽減することを目的とする。
上記課題を解決するための本発明のうちの一つは、決定表生成装置であって、ソフトウェアの仕様を入力条件と出力変数の値を示す情報である結果とを含む一つ以上のルールにより記述した情報であるルール仕様、及び、決定表の生成範囲を特定する情報である生成範囲特定情報、を記憶する情報記憶部と、 前記ルール仕様のうち、前記生成範囲特定情報によって特定される範囲について決定表を生成する決定表生成部と、を備え、前記入力条件の構成要素は、比較式、真偽型の変数、及び真偽値の少なくともいずれかである項、もしくは前記項の否定であり、前記決定表生成部は、前記入力条件又は前記ルール仕様に基づき生成された論理式を、論理的に等価な、前記構成要素の論理積である節を論理和で結合した論理式である選言標準形に変換し、前記構成要素ごとに前記入力条件に影響を与えるか否かを判定し、前記入力条件に影響を与えない前記構成要素を前記入力条件から除外して前記決定表を生成する。
その他、本願が開示する課題、及びその解決方法は、発明を実施するための形態の欄、及び図面により明らかにされる。
本発明によれば、ルールについて部分的な決定表の生成を可能とし、ルールの確認にかかる人の負荷を軽減することができる。
決定表生成装置のハードウェア構成を示す図である。 決定表生成装置が備える機能を示す図である。 ルール仕様の例である。 生成結果の例である。 設定画面の例である。 決定表生成処理を説明するフローチャートである。 差分の決定表生成処理を説明するフローチャートである。 全体の決定表生成処理を説明するフローチャートである。 論理式等価変換処理を説明するフローチャートである。
以下、図面を参照しつつ実施形態について説明する。以下の説明において、同一の又は類似する構成について同一の符号を付して重複した説明を省略することがある。
図1に一実施形態として説明する決定表生成装置100のハードウェア構成を、図2に決定表生成装置100が備える機能を、夫々示している。決定表生成装置100は、ソフトウェア(例えば、金融、保険、製造、流通、通信、教育、医療等の業務に関するもの)の開発や保守に際して利用される情報処理装置(コンピュータ)である。決定表生成装置100は、例えば、クラウドシステムにより提供されるクラウドサーバのように仮想的な情報処理資源を用いて実現されるものであってもよい。
一般にソフトウェアは、商品やサービス等に関する法的な規制、業務上の規則や基準、ビジネスルール、システムルール、チェックルール等に従ってその仕様が決定される。以下、上記仕様における、入力条件とその入力条件を満たしたときの結果の組を「ルール」と称する。ルールは、例えば、「もし〜ならば〜である」といった自然文による記述や「If A=1 And B=2 Then R=1」といった情報処理装置により解釈可能な所定の規則に従った
記述、入力条件と結果の対応関係を表形式で定義した決定表(decision table)による記述等、様々な形で表される。
上記の入力条件及び結果は夫々一つ以上の構成要素を含んで構成される。上記構成要素は、例えば、比較式、真偽型の変数、及び真偽値のいずれか(以下、「項」と称する。)、もしくは項の否定である。尚、以下の説明において、項または項の否定のことを「リテラル」と称する。上記入力条件は、例えば、リテラルを論理演算子(論理積(And)や論
理和(Or)等)を用いて組み合わせた論理式で表される。また上記の結果は、例えば、「
変数=値」、「変数=変数」、もしくは「変数=変数を0以上含む計算式」等の形式のリテラルから成る論理式で表される。
以下の説明において、ルールの結果に出現する変数のことを「出力変数」と称し、ルールのそれ以外の変数のことを「入力変数」と称する。また出力変数が共通する一つ以上のルールの集合のことを「ルールセット」と称し、ルールセットの集合のことを「ルール仕様」と称する。ルール仕様は、例えば、記号実行等のソースコード解析技術により、情報処理装置を用いてソースコードから自動的に生成することもできる。
決定表生成装置100は、ルール仕様と、ルール仕様のうち決定表を生成する範囲(以下、「生成範囲」と称する。)を特定する情報(以下、「生成範囲特定情報」と称する。)とに基づき、リテラルを論理積で結合した論理式により入力条件を表したルールの集合を生成し、生成した上記集合に基づき決定表を生成する。
上記の生成範囲特定情報は、例えば、決定表の生成対象であるルール仕様(第1のルール仕様)(以下、「決定表生成対象」と称する。)について、比較の対象となるルール仕様(第2のルール仕様)(以下、「比較対象」と称する。)を特定する情報である。尚、上記の比較対象とするルール仕様は、例えば、決定表生成対象のルール仕様(ソースコード)が変更(修正)された場合における修正前(変更前)のルール仕様(ソースコード)
である。
また上記の生成範囲特定情報は、例えば、決定表の生成対象となるルール仕様のうち、上記ルール仕様について取得されるメトリクス値と、上記メトリクス値を評価して生成範囲を特定するための情報(例えば、閾値や評価式。以下、「メトリクス評価情報」と称する。)とを含んだ情報である。尚、決定表生成装置100は、例えば、ルール仕様を変換して得られるソースコードからメトリクス値を取得する。
また上記の生成範囲特定情報は、例えば、決定表の生成対象となるルール仕様から生成範囲のルール仕様を抽出する論理式(以下、「フィルタ条件」と称する。)を含んだ情報である。上記のフィルタ条件は、例えば「70<x<80 And y=True」といった論理式で記述される。
尚、上記のメトリクス値は、例えば、「レアなリテラルの組合せ出現数」、「ルールの長さ」、「距離」、「内包するElse数」等である。このうち「レアなリテラルの組合せの出現数」は、ルール仕様に含まれるリテラルの組合せのうち、閾値以下の数のルールにしか出現しないリテラルの組合せの数である。尚、リテラルの組合せは2つのリテラルの組合せに限らず3つ以上のリテラルの組合せでもよい。また「ルールの長さ」は、ルールの入力条件に含まれるリテラルの数である。また「距離」は、例えば、ルール仕様に対応するソースコードが存在する場合、ルールの入力条件に含まれるリテラルが上記ソースコードのどの命令に対応するかを特定した場合における、2つのリテラル間の上記命令の行番号の差(記述間隔))である。尚、ルールの入力条件にリテラルが3つ以上含まれる場合、例えば、リテラルの全ての組合せに対して、対応する命令の行番号の差を求め、その平均、最大、最小等を距離にする。行番号の差以外に、例えば、各リテラルに対応する各命令が別関数や別ファイルであるか否かに基づき各命令間の距離を求めてもよい。また「内包するElse数」は、ルール仕様に対応するソースコードがあった場合、ルールに含まれるリテラルが上記ソースコードのどの命令に対応するかを測定し、上記対応する命令に、「If Then Else」形式の命令においてElse命令が何個含まれるかを、重複を許さずにカウントした数である。
また上記のメトリクス評価情報は、例えば、(1)ルール仕様に含まれるルールのうち
出現頻度が低い(出現頻度が予め設定された閾値以下の)リテラルの組合せを含むルールを決定表生成対象とする、(2)入力条件に含まれるリテラルの数が多い(入力条件に所定数以上のリテラルが含まれる)ルールを決定表生成対象とする、(3)距離が長い(予め設定された閾値以上の)ルールを決定表生成対象とする、(4)ルールが内包するElse数が多い(予め設定された閾値以上の)ルールを決定表生成対象とする、等である。ここで(1)のように出現頻度が低いリテラルの組合せを含むルールを決定表生成対象とするのは、例えば、ルール仕様のうち見落とす可能性の高い部分を決定表にして可視化するためである。また(2)のように入力条件が多いルールを決定表生成対象とするのは、例えば、入力条件が多くて複雑な部分は誤りが生じやすいのでこれを決定表にして可視化しユーザに注意を促すためである。また(3)のように距離が長いルールを決定表生成対象とするのは、距離が長いと誤りが生じやすく(例えば、長いソースコードや複数ファイルに分割されたソースコードは一つの画面に収まりきらず、全体の見通しがつきにくく誤りが生じやすい等)、決定表を生成して可視化しユーザに注意を促すためである。また(4)のようにルールが内包するElse数が多いルールを決定表生成対象とするのは、ユーザが「If 条件 Then 処理1 Else 処理2」という形でソースコードを記述した場合、Elseに相当する条件はソースコード上に明示的には表示されず、ユーザはElseに相当する条件を意識しない可能性があるため、ルールが内包するElse数が多いと誤りが生じやすく、決定表を生成して可視化しユーザに注意を促すためである。
図1に示すように、決定表生成装置100は、プロセッサ110、主記憶装置120、補助記憶装置130、入力装置140、出力装置150、及び通信装置160を備える。これらは図示しないバス等の通信手段を介して互いに通信可能に接続されている。
プロセッサ110は、例えばCPU(Central Processing Unit)やMPU(Micro Processing Unit)を用いて構成されている。プロセッサ110が、主記憶装置120に格納されているプログラムを読み出して実行することにより、決定表生成装置100の様々な機能が実現される。
主記憶装置120は、プログラムやデータを記憶する装置であり、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)、不揮発性半導体メモリ(NVRAM(Non Volatile RAM))等である。
補助記憶装置130は、例えば、ハードディスクドライブ、SSD(Solid State Drive)、光学式記憶装置(CD(Compact Disc)、DVD(Digital Versatile Disc)等)
、ストレージシステム、ICカード、SDメモリカードや光学式記録媒体等の記録媒体の読取/書込装置、クラウドサーバの記憶領域等である。補助記憶装置130に格納されているプログラムやデータは主記憶装置120に随時読み込まれる。
入力装置140は、例えば、キーボード、マウス、タッチパネル、カードリーダ、音声入力装置等である。
出力装置150は、ユーザに処理経過や処理結果等の各種情報を提供するユーザインタフェースであり、例えば、画像表示装置(液晶モニタ、LCD(Liquid Crystal Display)、グラフィックカード等)、音声出力装置(スピーカ等)、印字装置等である。尚、例えば、決定表生成装置100が通信装置160を介して他の装置との間で情報の入力や出力を行う構成としてもよい。
通信装置160は、LAN(Local Area Network)やインターネット等の通信手段を介した他の装置との間の通信を実現する有線方式又は無線方式の通信インタフェースであり、例えば、NIC(Network Interface Card)、無線通信モジュール、USB(Universa
l Serial Interface)モジュール、シリアル通信モジュール等である。
図2に示すように、決定表生成装置100は、情報記憶部205、ルール仕様生成部210、決定表生成部220、決定表逆変換部230、及びメトリクス値取得部240の各機能を備える。
情報記憶部205は、ソースコード260、ルール仕様270、生成範囲特定情報280、及び生成結果290を記憶する。ソースコード260は、例えば、ユーザが決定表生成装置100に入力したソースコードである。ルール仕様270は、例えば、ユーザが決定表生成装置100に入力したルール仕様、ルール仕様生成部210がソースコード260に記憶されたソースコードから自動生成(抽出)したルール仕様、決定表逆変換部230が決定表から逆変換して自動生成したルール仕様等である。尚、決定表生成装置100にルール仕様をどのようにして与えるか、即ちルール仕様の入力方法は必ずしも限定されない。ルール仕様の入力方法として、例えば、ルール仕様を直接入力する方法、所定の言語で記述されたソースコードを入力として決定表生成装置100が上記ソースコードからルール仕様を生成する方法、決定表を入力として決定表生成装置100が決定表をルール仕様に逆変換する方法等がある。生成範囲特定情報280は、例えば、後述する設定画面500を介して取得される情報である。生成結果290は、決定表生成部220がルール仕様270と生成範囲特定情報280とに基づき生成した決定表等の情報である。
上記機能のうち、ルール仕様生成部210は、記号実行等のソースコード解析技術によりソースコード260からルール仕様を抽出し、抽出したルール仕様をルール仕様270として記憶する。決定表生成部220は、ルール仕様270と生成範囲特定情報280とに基づき決定表を生成し、生成した決定表を生成結果290として記憶する。決定表逆変換部230は、決定表をルール仕様に逆変換する。決定表の1行は一つのルールに対応する。決定表逆変換部230は、決定表の1行を「If 入力条件 Then 結果」の形式に変換することで決定表をルール仕様に逆変換する。メトリクス値取得部240は、ソースコード260からメトリクス値を取得する。
図3にルール仕様270の一例を示す。同図に示すように、ルール仕様270は、同一の結果変数を有する一つ以上のルールセットを含む。各ルールセットには識別子(以下、「ルールセットID」と称する。)が付与される。各ルールセットは、「If〜Then」形式で記述される一つ以上のルールを含む。各ルールには識別子(以下、「ルールID」と称する。)が付与される。
同図に示すルール仕様270は、ルールセットIDが「RS1」のルールセット310と
ルールセットIDが「RS2」のルールセット320とを含む。ルールセット310及びル
ールセット320は夫々、ルールIDが「1」〜「4」の4つのルールを含む。
各ルールセットにおいて、入力変数の具体的な値を定めると、各ルールの入力条件が充足するか(真となるか)一意に定まる。ルールの入力条件が充足すると、当該ルールの結果が充足するように出力変数の値が定まる。例えば、図3に例示するルールセット310において、入力変数「x」、「y」、「z」の具体的な値が夫々、「100」、「-1」、「-1」であるときにルールIDが「4」のルールの入力条件は充足し、出力変数「out」の具体的な値が「0」に定まる。
図4は、決定表生成部220により生成され情報記憶部205が記憶する生成結果290の一例である。生成結果290は一つ以上の決定表を含む。各決定表には識別子(以下、「決定表ID」と称する。)が付与される。同図に示す生成結果290は、決定表IDが夫々「DT1」〜「DT4」である4つの決定表を含む。決定表は一つ以上の行を含み、各行
には識別子(以下、「行番号」と称する。)が付与される。決定表の各行は、入力条件「If」と結果「Then」とを含み、1行が一つのルールに対応する。例えば、決定表410の2行目は「If x<=50 And y>=0 Then out=1」というルールに対応し、決定表410の3行目は「If 0<x And x<=50 Then out=2」というルールに対応する。各行のセルは変数が同
じ0個以上のリテラルに対応する。例えば、決定表410のセル411は、リテラル「x<=50」に対応し、決定表410のセル412は、リテラル「y>=0」に対応し、決定表41
0のセル413は、リテラル「0<x」と「x<=50」に対応する。尚、決定表410のセル414の「-」は、変数「y」の値が関係ないことを意味している。
決定表410は、図3に示すルールセット310に基づき生成される決定表である。ここでルールセット310のルールIDが「1」及「2」のルールから、「x>50」であれば、「out」は「1」になる。即ちこれらのルールから、「y>0」、「x>0」、「x>100」、「Not(x>100)」を除去したとしても「out」が「1」になる入力条件に影響がない。このように
決定表生成部220は、決定表の生成に際し、除去したとしても入力条件に影響がないリテラル(以下、「ドントケア」と称する。)を除去する。決定表410の1行目の場合、「x>50」以外のリテラルがすべてドントケアとして除去されるため、決定表の行番号「1
」は「If x>50 Then out=1」に対応する内容になっている。
決定表420は、図3に示すルールセット310を決定表生成対象とし、ルールセット320を比較対象として、ルールセット310とルールセット320との間で、異なる結果となる同一の入力条件(以下、「差分入力条件」と称する。)と差分入力条件における各ルールセットの結果との組合せ(以下、差分入力条件と上記の結果の組合せを「差分」と称する。)を決定表とした例である。ルールセット310とルールセット320とを比較すると、ルールセット310に含まれるリテラル「x>100」、「x <=100」(Not(x>100))、「x>50」、「x<=50」(Not(x>50))が夫々、ルールセット320では「x>=100」、「x<100」(Not(x>=100))、「x>=50」、「x<50」(Not(x>=50))となっているが、「50<=x And x<=50」のときのみ、ルールセット310は「out」が「2」となり、一方、ルールセット320は「out」が「1」となり、両者は異なる結果となる。決定表420の1行目はこの両者の差分を決定表にしたものであり、「If 50 <= x And x <= 50 Then out(RS1(ルールセット310))=2 And out(RS2(ルールセット320))=1」というルールに対応する内容になってい
る。
決定表430は、図3に示すルールセット310を決定表生成対象とし、フィルタ条件「out=2 And y<0」を満たす範囲について決定表を生成した例である。決定表生成部22
0は、生成範囲特定情報280にフィルタリング条件が指定されている場合、フィルタリング条件を満たす範囲について決定表を生成する。決定表430は、ルールセット310の全体の決定表である決定表410のうち、フィルタリング条件「out=2 And y<0」を満
たす3行目のみについて決定表を生成した例である。
決定表440は、図3に示すルールセット310を決定表生成対象とし、図2のメトリクス値取得部240が取得するメトリクス値の一つであるルールの長さが閾値「2」以上を満たす範囲のみについて決定表を生成した例である。決定表生成部220は、例えば、生成範囲特定情報280にメトリクス値と閾値とが設定されている場合、ルールセット310のうちメトリクス値が閾値以上(もしくは閾値以下)の範囲について決定表を生成する。決定表430は、ルールセット310の全体の決定表である410のうち、ルールの長さが2以上である2行目、3行目、及び4行目のみについて決定表を生成した例である。
図5は、決定表の生成に際し決定表生成部220が出力装置150に出力する画面(以下、「設定画面500」と称する。)の一例である。同図に示すように、設定画面500
には、決定表の生成対象入力欄510、比較対象入力欄520、ルールメトリクス入力欄530、フィルタ条件入力欄540、及び決定表生成ボタン550が設けられている。
決定表の生成対象入力欄510には、決定表生成対象を指定する情報が設定される。同図に示すように、決定表の生成対象入力欄510は、テキストフォーム511、ラジオボタン512、及びテキストフォーム513を含む。テキストフォーム511には、決定表生成対象のデータ(ソースコード、仕様ルール、及び決定表のいずれか)を含むファイルのファイル名が設定される。ラジオボタン512は、入力ファイルの種類(ソースコード、仕様ルール、及び決定表のいずれか)の指定を受け付ける。テキストフォーム513には、ラジオボタン512により入力ファイルの種類として「ソースコード」が選択されている場合は出力変数名が設定され、それ以外が選択されている場合は決定表生成対象のルール仕様のルールセットIDが設定される。同図の例では、テキストフォーム511に「rule.cbl」が設定され、ラジオボタン512ではソースコードが選択され、テキストフォーム513に出力変数「out」が設定されている。尚、テキストフォーム511及びテキ
ストフォーム513はダイアログボックス等としてもよい。またラジオボタン512はリストボックス等としてもよい。
比較対象入力欄520には、決定表の生成範囲の特定に比較対象を用いる場合に必要な情報が設定される。同図に示すように、比較対象入力欄520は、チェックボックス521、テキストフォーム522、ラジオボタン523、及びテキストフォーム524を含む。チェックボックス521には、決定表の生成範囲を特定するために比較対象を用いるか否かのユーザの意思表示が設定され、比較対象を用いる場合、ユーザはチェックボックス521をチェックする。テキストフォーム522には、比較対象のデータ(ソースコード、仕様ルール、及び決定表のいずれか)を含むファイルのファイル名が設定される。ラジオボタン523は、入力ファイルの種類(ソースコード、仕様ルール、及び決定表のいずれか)の指定を受け付ける。テキストフォーム524には、ラジオボタン523により入力ファイルの種類として「ソースコード」が選択されている場合は出力変数名が設定され、それ以外の場合には比較対象のルール仕様のルールセットIDが設定される。同図の例では、チェックボックス521はチェックされておらず、テキストフォーム522には「old_rule.smt2」が設定され、ラジオボタン523では仕様ルールが選択され、テキスト
フォーム524にルールセットID「RS2」が設定されている。尚、テキストフォーム5
22及びテキストフォーム524はダイアログボックス等としてもよい。またラジオボタン523はリストボックス等としてもよい。
ルールメトリクス入力欄530には、メトリクスにより決定表の生成範囲を特定する場合に必要な情報が設定される。同図に示すように、ルールメトリクス入力欄530は、チェックボックス531、メトリクス入力テーブル532、及び一行追加ボタン533を含む。チェックボックス531には、決定表の生成範囲を特定するためにメトリクスを用いるか否かのユーザの意思表示が設定され、メトリクスを用いる場合、ユーザはチェックボックス531をチェックする。メトリクス入力テーブル532には、メトリクス評価情報としてメトリクス名と閾値とが設定される。一行追加ボタン533は、メトリクス入力テーブル532の行数を追加する場合にユーザが操作する。同図の例では、チェックボックス531はチェックされておらず、メトリクス入力テーブル532には、メトリクス名「ルールの長さ」と閾値「2」が入力されている。尚、メトリクスの長さを指定するリスト
ボックスはテキストフォーム等としてもよく、閾値を入力するテキストフォームは、リストボックス等としてもよい。
フィルタ条件入力欄540には、決定表の生成範囲を特定するための情報としてフィルタ条件を使う場合に必要な情報が設定される。同図に示すように、フィルタ条件入力欄540は、チェックボックス541及びテキストフォーム542を含む。チェックボックス
541には、決定表の生成範囲を特定するためにフィルタ条件を使うか否かのユーザの意思表示が設定され、フィルタ条件を使う場合、ユーザはチェックボックス541をチェックする。テキストフォーム542には、フィルタ条件を入力する。同図の例では、チェックボックス541がチェックされ、テキストフォーム542にフィルタ条件「out=2 And y<0」が設定されている。
設定画面500に必要な情報を設定した後、ユーザが決定表生成ボタン550を操作すると、決定表生成装置100が決定表を生成するための処理を開始する。上記処理では、まず決定表生成部220が、設定画面500の内容(決定表の生成対象、決定表、比較対象、メトリクス名、閾値、フィルタ条件等)を生成範囲特定情報280として情報記憶部205に記憶させる。続いて、決定表生成部220が、生成範囲特定情報280を用いて、決定表生成対象のルールセットについて決定表の生成を開始する。尚、設定画面500において、決定表生成対象もしくは比較対象がソースコードで指定されている場合、決定表生成部220は、決定表生成処理の前に、ルール仕様生成部210を用いてソースコードからルール仕様を抽出し、抽出したルール仕様をルール仕様270として情報記憶部205に記憶させる。また例えば、生成対象もしくは比較対象が決定表で指定された場合、決定表生成部220は、決定表逆変換部230を用いて決定表をルール仕様に逆変換し、逆変換したルール仕様をルール仕様270として情報記憶部205に記憶させる。尚、仕様ルールの抽出及び決定表の逆変換は、設定画面500を生成範囲特定情報280として情報記憶部205が記憶するよりも前に行ってもよい。
図6は、決定表の生成に際して決定表生成部220が行う処理(以下、「決定表生成処理S600」と称する。)を説明するフローチャートである。以下、同図とともに決定表生成処理S600について説明する。尚、決定表生成部220は、例えば、ユーザの指示操作を契機として決定表生成処理S600を開始する。また決定表生成部220は、例えば、スケジュールされたタイミングでバッチ処理等により自動的に決定表生成処理S600を実行する。尚、以下において、符号の前に付している文字「S」は処理ステップを意味する。
まず決定表生成部220は、決定表生成対象のルール仕様270(ルールセット)を読み込むとともに(S601)、生成範囲特定情報280を読み込む(S602)。
続いて、決定表生成部220は、生成範囲特定情報280として比較対象が設定されているか否かを判定する(S603)。比較対象が設定されている場合(S603:YES)、処理はS604に進み、比較対象が設定されていない場合(S603:NO)、処理はS605に進む。
S604では、決定表生成部220は、前述した差分に基づき決定表を生成する処理(以下、「差分の決定表生成処理S604」と称する。)を行う。差分の決定表生成処理S604の詳細については後述する。差分の決定表生成処理S604の終了後、処理はS606に進む。
S605では、決定表生成部220は、決定表生成対象の全体に基づき決定表を生成する処理(以下、「全体の決定表生成処理S605」と称する。)を行う。全体の決定表生成処理S605の詳細については後述する。全体の決定表生成処理S605の終了後、処理はS607に進む。
S606では、決定表生成部220は、差分の決定表生成処理S604の結果(戻り値)が「差分無し」であるか否かを判定する。差分の決定表生成処理S604の結果が「差分無し」であれば、決定表生成部220は、決定表生成処理S600を終了する。差分の
決定表生成処理S604の結果が「差分無し」でなければ、処理はS607に進む。
S607では、決定表生成部220は、フィルタ条件が設定されているか否か(生成範囲特定情報280がフィルタ条件の設定を含むか否か)を判定する。生成範囲特定情報280にフィルタ条件が設定されている場合(S607:YES)、処理はS608に進み、フィルタ条件が設定されていない場合(S607:NO)、処理はS609に進む。
S608では、決定表生成部220は、S604又はS605にて生成された決定表からフィルタ条件を満たさない部分(行)を除外する。より詳細には、決定表生成部220は、決定表の行ごとに「フィルタ条件 And 入力条件And 結果」が真になり得るか(以下
、真になり得ることを「充足可能」と称し、真になり得ないことを「充足不能」と称する。)を判定し、充足不能の場合、その行を決定表から除外する。尚、論理式の充足可能性を判定する技術として、SMTソルバ(Satisfiability Modulo Theories Solver)があ
る。決定表生成部220は、例えば、SMTソルバ等を用いて充足可能性を判定する。
続いて、決定表生成部220は、生成範囲特定情報280としてメトリクスに関する情報が設定されているかを判定する(S609)。メトリクスに関する情報が設定されている場合(S609:YES)、処理はS610に進み、メトリクスに関する情報が設定されていない場合(S609:NO)、処理はS612に進む。
S610では、メトリクス値取得部240が、決定表の行ごとにメトリクス値を取得する。続いて、決定表生成部220は、メトリクス値が予め設定された閾値以下(もしくは上記閾値以上)の行を決定表から除外する(S611)。その後、処理はS612に進む。
S612では、決定表生成部220は、以上の処理によって生成された決定表を生成結果290として記憶する。尚、図6のS603〜S606の処理とS607〜S611の処理とは実行順序を逆にしてもよい。
図7は、図6における「差分の決定表生成処理S604」を説明するフローチャートである。以下、同図とともに差分の決定表生成処理S604について説明する。
まず決定表生成部220は、決定表生成対象の出力変数と比較対象の出力変数とが一致(変数名が一致)しているか否かを判定する(S701)。両者が一致している場合(S701:YES)、処理はS702に進み、両者が一致していない場合(S702:NO)、処理はS703に進む。
S702では、決定表生成部220は、決定表生成対象と比較対象とで出力変数が異なるようにする。例えば、決定表生成部220は、決定表生成対象と比較対象の各ルールの結果中の出力変数を「出力変数(対応するルールセットのルールセットID)」に置き換える。例えば、決定表生成対象が図3のルールセット310で、比較対象が図3のルールセット320である場合、決定表生成部220は、出力変数を夫々、「out(RS1)」、「out(RS2)」に置き換える。尚、出力変数の置き換え方法は上記方法に必ずしも限定されない。
続いて、決定表生成部220は、決定表生成対象と比較対象との差分を論理式で表す(S703)。具体的には、決定表生成部220は、まずルールセットに含まれるルールごとに、入力条件と結果とを論理積で結合し、さらにそれらを論理和で結合することにより、決定表生成対象及び比較対象を論理式に変換する。例えば、図3のルールセット310は「(((y>0 Or x>0) And x>100)And(out=1))Or(((y>0 Or x>0) And Not(x>100) And x>50)And(out=1))Or(((y>0 Or x>0) And Not(x>100) And Not(x>50))And(out=2))Or((Not(y>0
Or x>0))And(out=0))」という論理式に変換される。尚、この論理式は、ルールセット310に含まれるルールIDが「1」〜「4」のルールのうち、一つ以上のルールにおいて入力条件と結果が成り立つことを意味している。
続いて、決定表生成部220は、ルールセットの論理式を用いて差分を表す論理式を生成する。ここで差分は、決定表生成対象と比較対象のルールセットが異なる結果に至る入力条件と当該入力条件における結果との組合せであり、「決定表生成対象の論理式 And
比較対象の論理式 And Not(決定表生成対象の出力変数 =比較対象の出力変数)」という論理式で表すことができる。この論理式は、決定表生成対象と比較対象を満たす入力条件と結果のうち、決定表生成対象の出力変数の値と比較対象の出力変数の値とが異なるケースを表している。
続いて、決定表生成部220は、差分を表す論理式を、リテラルを論理積で結合し(以下、リテラルを論理積で結合した論理式を「節」と称する。)、節を論理和で結合した形の等価な論理式(以下、「選言標準形」と称する。)に変換する(S704)。この変換処理(以下、「論理式等価変換処理S704」と称する。)の詳細については後述する。
続いて、決定表生成部220は、論理式等価変換処理S704の結果(戻り値)が「選言標準形が偽(差分無し)」であるか否かを判断する(S705)。論理式等価変換処理S704の結果が「選言標準形が偽(差分無し)」である場合(S705:YES)、決定表生成部220は、当該処理(差分の決定表生成処理S604)の結果(戻り値)を「差分無し」として当該処理を終了し、その後、処理は図6の決定表生成処理S600のS606に進む。一方、論理式等価変換処理S704の結果が「選言標準形が偽でない(差分あり)」である場合(S705:NO)、処理はS706に進む。
S706では、決定表生成部220は、S704で生成した選言標準形の全ての節についてS707〜S710の処理を繰り返し実行する。選言標準形の全節についてS707〜S710の処理が終了すると、決定表生成部220は、当該処理(差分の決定表生成処理S604)の結果(戻り値)を「差分有り」として当該処理を終了する。その後、処理は図6の決定表生成処理S600のS606に進む。
S707では、決定表生成部220は、差分入力条件と差分入力条件における結果との組合せ(以下、「結果ペア」と称する。)を取得する。決定表生成部220は、節に含まれるリテラルのうち出力変数を含まないリテラルをすべて論理積で結合した論理式を差分入力条件とし、節に含まれるリテラルのうち出力変数を含むすべてのリテラルを結果ペアとする。尚、S704で生成した選言標準形の各節には、決定表生成対象の出力変数を含むリテラルと比較対象の出力変数を含むリテラルとが一つずつ含まれる。
S708では、決定表生成部220は、S707で生成した結果ペアに含まれるリテラルにおいて、出力変数の値の不一致が自明であるか否かを判定する。具体的には、例えば、決定表生成部220は、「Not(差分入力条件 → 結果ペアに含まれる各リテラルの右辺を不等号で結合したリテラル)」の充足可能性を判定する。上記論理式が充足不能の場合
、上記論理式から否定を除外した論理式「(差分入力条件 → 結果ペアに含まれる各リテラルの右辺を不等号で結合したリテラル」は常に真である。即ち、差分入力条件が成り立つならば、必ず決定表生成対象の出力変数と比較対象の出力変数に割り当てられる値が異なるので、決定表生成部220は、出力変数の値の不一致が自明であるとする。上記論理式が充足可能の場合、決定表生成部220は、出力変数の値の不一致が自明でないとする。決定表生成部220が出力変数の値の不一致が自明であると判定した場合(S708:YES)、処理はS710に進む。決定表生成部220が出力変数の値の不一致が自明でないと判定した場合(S708:NO)、処理はS709に進む。
S709では、決定表生成部220は、結果ペアに含まれる各リテラルから右辺を抽出し、上記各右辺を不等号で結合したリテラル(以下、「結果不一致リテラル」と称する。)を生成し、上記結果不一致リテラルを差分入力条件に論理積で結合する。
S710では、決定表生成部220は、差分入力条件と結果ペアを差分として決定表に設定する。
図8は、図6における「全体の決定表生成処理S605」を説明するフローチャートである。以下、同図とともに全体の決定表生成処理S605について説明する。
まず決定表生成部220は、決定表生成対象に含まれているルールに対して、結果が同じルールをグループ化する(S801)。尚、以下、結果が同じルールの集合のことを「ルールグループ」と称する。
続いて、S802では、決定表生成部220は、S801で生成した全てのルールグループについてS803〜S809の処理を繰り返し実行する。
S803では、決定表生成部220は、ルールグループ中の全てのルールの入力条件を論理和で結合した論理式(以下、「統合入力条件」と称する。)を生成する。
続いて、決定表生成部220は、生成した統合入力条件を選言標準形に変換する(S804)。この変換処理(以下、「論理式等価変換処理S804」と称する。)の詳細については後述する。
続いて、決定表生成部220は、論理式等価変換処理S804の結果が「選言標準形が偽」であるか否かを判断する(S805)。論理式等価変換処理S804の結果が「選言標準形が偽」である場合(S805:YES)、決定表生成部220は、S806〜S809の処理をスキップする。論理式等価変換処理S804の結果が「選言標準形が偽」でない場合(S805:NO)、処理はS806に進む。
S806では、決定表生成部220は、選言標準形の節を夫々入力条件として抽出する。このとき入力条件は一つ以上抽出される。
続いて、決定表生成部220は、ルールグループ内のルールから結果を抽出する(S807)。このとき、ルールグループにおいて全てのルールは結果が同じであり、結果は一つのみ抽出される。
続いて、決定表生成部220は、S806で抽出した入力条件を入力条件とし、S806で抽出した結果を結果とするルール(以下、「決定表ルール」と称する。)を生成する(S808)。尚、決定表ルールはS806で抽出した入力条件ごとに一つ生成される。
続いて、決定表生成部220は、生成した決定表ルールを決定表に設定する(S809)。
図9は、前述した論理式等価変換処理(図7の「論理式等価変換処理S704」又は図8の「論理式等価変換処理S804」。以下、「論理式等価変換処理S900」と称する。)を説明するフローチャートである。以下、同図とともに論理式等価変換処理S900について説明する。
まず決定表生成部220は、変換対象の論理式から項を抽出する(S901)。
続いて、決定表生成部220は、S901で抽出した全ての項の否定を生成する。以下、S901で抽出した項、及び、S902で生成した項の否定の集合のことを「リテラル集合」と称する(S902)。尚、決定表生成部220は、S901で抽出した時点で否定が存在する項については否定を生成しない。
続いて、決定表生成部220は、変換対象の論理式の否定が充足可能であるか否かを判定する(S903)。変換対象の論理式の否定が充足不能である場合(S903:NO)、処理はS904に進み、変換対象の論理式の否定が充足可能である場合(S903:YES)、処理はS905に進む。
S904では、決定表生成部220は、「真(True)」を変換後の選言標準形(戻り値)として論理式等価変換処理S900を終了する。
S905では、決定表生成部220は、変換対象の論理式が充足可能か否かを判定する。変換対象の論理式が充足不能な場合(S905:NO)、処理はS906に進み、充足可能な場合(S905:YES)、処理はS907に進む。
S906では、決定表生成部220は、「偽(False)」を変換後の選言標準形(戻り
値)として、論理式等価変換処理S900を終了する。
S907では、決定表生成部220は、変換対象の論理式が充足する変数への値の割り当て(以下、「充足解」と称する。)を取得する。尚、決定表生成部220は、例えば、充足可能な論理式の充足解を取得する機能を有するSMTソルバを用いて充足解を取得する。
続いて、決定表生成部220は、S907で取得した充足解において、充足するリテラルをすべて取得する(S908)。以下、S907で取得した充足解において、充足するリテラルの集合のことを「充足節」と称する。
続いて、決定表生成部220は、充足節からドントケアを除外する(S909)。決定表生成部220は、充足節からリテラルを一つ除外し、除外後の充足節に含まれる全てのリテラルと変換対象の論理式の否定とを論理積で結合した論理式が充足可能であるか否かを判定する。充足不能と判定した場合、決定表生成部220は、除外後の充足節は変換対象の論理式を満たすと判断し、除外されたリテラルをドントケアと判断する。決定表生成部220は、充足節に含まれるリテラルについて順にドントケアであるか否かを判定し、ドントケアである場合は充足節からドントケアを除外する。このとき、リテラル間の包含関係を調べ、上記包含関係に基づき、ドントケアであるか否かを判定する順序を決めてもよい。
続いて、決定表生成部220は、S906でドントケアを除外した充足節を充足節の集合(以下、「充足節集合」と称する。)に追加する(S910)。
続いて、決定表生成部220は、変換対象の論理式に重複禁止式を論理積で結合する(S911)。即ち、決定表生成部220は、類似する充足節が生成されることを防ぐため、充足節に含まれる全てのリテラルを論理積で結合し、全体を否定した論理式を重複禁止式として変換対象の論理式に論理積で結合する。
続いて、決定表生成部220は、変換対象の論理式が充足可能か否かを判定する(S9
12)。変換対象の論理式が充足可能である場合(S912:YES)、処理はS907に戻り、変換対象の論理式が充足不能である場合(S912:NO)、処理はS913に進む。
S913では、決定表生成部220は、充足集合節に含まれる全ての充足節に対して全てのリテラルを論理積で結合した論理式を生成し、上記論理式の全てを論理和で結合した論理式を生成してこれを戻り値とする。その後、処理は呼び出し元の処理に後続する処理に進む。即ち図7の論理式等価変換処理S704の場合はS705に進み、図8の論理式等価変換処理S804の場合はS805に進む。
以上に説明したように、決定表生成装置100は、決定表生成対象であるルール仕様のうち、生成範囲特定情報280によって特定される範囲について決定表を生成するので、例えば、ルール仕様に含まれるルールが膨大である場合にルール仕様の確認にかかる人の負荷を軽減することができる。
また決定表生成装置100は、例えば、決定表の生成対象であるルール仕様のうち、異なる結果となる同一の入力条件と当該入力条件における決定表の生成対象のルール仕様の結果及び比較の対象とするルール仕様の結果との組合せ(差分)について決定表を生成する。そのため、ユーザが確認を行いたい部分(例えば、ルール仕様(ソースコード)の変更(修正)前後に関係する部分)のみについて決定表を生成することができ、ユーザは効率よくルール仕様を確認することができる。
また決定表生成装置100は、例えば、メトリクス値及びメトリクス評価情報に基づき特定した生成範囲について決定表を生成する。そのため、ユーザはメトリクス値及びメトリクス評価情報を適切に設定することで、確認を行いたい部分について決定表を生成することができ、ユーザは効率よくルール仕様を確認することができる。
また決定表生成装置100は、例えば、ルール仕様にフィルタ条件を適用することにより特定される生成範囲について決定表を生成する。そのため、ユーザはフィルタ条件を適切に設定することで、確認を行いたい部分について決定表を生成することができ、ユーザは効率よくルール仕様を確認することができる
以上、本発明について実施の形態に基づき具体的に説明したが、本発明は上記の実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば、上記の実施の形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また上記実施形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
例えば、以上ではルールの結果に含まれるリテラルの数が一つである場合を例として説明したが、「変数=値」、「変数=変数」、「変数=変数を0以上含む計算式」といった形式のリテラルを論理積で結合することで、結果に2つ以上のリテラルを含むルールについても前述と同様の論理式で表すことが可能である。また結果に2つ以上のリテラルを含むルールが存在する場合、結果を論理積で分割し、分割後の各リテラルを結果とし、上記結果に二つ以上のリテラルを含むルールの入力条件を入力条件とするルールを生成することで、上記結果に2つ以上のリテラルを含むルールを、結果に一つのリテラルを含むルールに変換することができる。
また上記の各構成、機能部、処理部、処理手段等は、それらの一部または全部を、例えば、集積回路で設計する等によりハードウェアで実現してもよい。また上記の各構成、機
能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリやハードディスク、SSD(Solid State Drive)等の記録装置、また
はICカード、SDカード、DVD等の記録媒体に置くことができる。
また上記の各図において、制御線や情報線は説明上必要と考えられるものを示しており、必ずしも実装上の全ての制御線や情報線を示しているとは限らない。例えば、実際にはほとんど全ての構成が相互に接続されていると考えてもよい。
また以上に説明した決定表生成装置100の各種機能部、各種処理部、各種データベースの配置形態は一例に過ぎない。各種機能部、各種処理部、各種データベースの配置形態は、決定表生成装置100が備えるハードウェアやソフトウェアの性能、処理効率、通信効率等の観点から最適な配置形態に変更し得る。
また前述した各種データベースの構成(スキーマ(Schema)等)は、リソースの効率的な利用、処理効率向上、アクセス効率向上、検索効率向上等の観点から柔軟に変更し得る。
100 決定表生成装置、205 情報記憶部、210 ルール仕様生成部、220 決定表生成部、230 決定表逆変換部、240 メトリクス値取得部、260 ソースコード、270 ルール仕様、280 生成範囲特定情報、290 生成結果、500 設定画面、S600 決定表生成処理、S604 差分の決定表生成処理、S605 全体の決定表生成処理、S900 論理式等価変換処理

Claims (12)

  1. ソフトウェアの仕様を入力条件と出力変数の値を示す情報である結果とを含む一つ以上のルールにより記述した情報であるルール仕様、及び、
    決定表の生成範囲を特定する情報である生成範囲特定情報、
    を記憶する情報記憶部と、
    前記ルール仕様のうち、前記生成範囲特定情報によって特定される範囲について決定表を生成する決定表生成部と、
    を備え、
    前記入力条件の構成要素は、比較式、真偽型の変数、及び真偽値の少なくともいずれかである項、もしくは前記項の否定であり、
    前記決定表生成部は、
    前記入力条件又は前記ルール仕様に基づき生成された論理式を、論理的に等価な、前記構成要素の論理積である節を論理和で結合した論理式である選言標準形に変換し、
    前記構成要素ごとに前記入力条件に影響を与えるか否かを判定し、前記入力条件に影響を与えない前記構成要素を前記入力条件から除外して前記決定表を生成する、
    決定表生成装置。
  2. 請求項1に記載の決定表生成装置であって、
    前記生成範囲特定情報は、決定表の生成対象である第1の前記ルール仕様について比較の対象とする第2の前記ルール仕様を特定する情報を含み、
    前記決定表生成部は、前記第1のルール仕様と前記第2のルール仕様のうち、異なる結果となる同一の前記入力条件と当該入力条件における前記第1のルール仕様の結果及び前記第2のルール仕様の結果との組合せについて決定表を生成する、
    決定表生成装置。
  3. 請求項1に記載の決定表生成装置であって、
    前記生成範囲特定情報は、決定表の生成対象である前記ルール仕様について取得されるメトリクス値と、前記メトリクス値を評価して前記生成範囲を特定する情報であるメトリクス評価情報とを含み、
    前記決定表生成部は、前記メトリクス値及び前記メトリクス評価情報に基づき前記生成範囲を特定し、特定した前記生成範囲について決定表を生成する、
    決定表生成装置。
  4. 請求項に記載の決定表生成装置であって、
    前記メトリクス評価情報は、前記メトリクス値と比較される閾値を含み、
    前記決定表生成部は、前記メトリクス値と前記閾値とを比較することにより特定される前記生成範囲について決定表を生成する、
    決定表生成装置。
  5. ソフトウェアの仕様を入力条件と出力変数の値を示す情報である結果とを含む一つ以上のルールにより記述した情報であるルール仕様、及び、
    決定表の生成範囲を特定する情報である生成範囲特定情報、
    を記憶する情報記憶部と、
    前記ルール仕様のうち、前記生成範囲特定情報によって特定される範囲について決定表を生成する決定表生成部と、
    を備え、
    前記入力条件の構成要素は、比較式、真偽型の変数、及び真偽値の少なくともいずれかである項、もしくは前記項の否定であり、
    前記生成範囲特定情報は、決定表の生成対象である前記ルール仕様について取得されるメトリクス値と、前記メトリクス値を評価して前記生成範囲を特定する情報であるメトリクス評価情報とを含み、
    前記決定表生成部は、前記メトリクス値及び前記メトリクス評価情報に基づき前記生成範囲を特定し、特定した前記生成範囲について決定表を生成し、
    前記メトリクス値は、前記入力条件の前記構成要素の組合せの数であり、
    前記メトリクス評価情報は、予め設定された閾値以下の数のルールにしか出現しない前記組合せを含む前記ルールを前記生成範囲として特定する情報を含む、
    決定表生成装置。
  6. ソフトウェアの仕様を入力条件と出力変数の値を示す情報である結果とを含む一つ以上のルールにより記述した情報であるルール仕様、及び、
    決定表の生成範囲を特定する情報である生成範囲特定情報、
    を記憶する情報記憶部と、
    前記ルール仕様のうち、前記生成範囲特定情報によって特定される範囲について決定表を生成する決定表生成部と、
    を備え、
    前記入力条件の構成要素は、比較式、真偽型の変数、及び真偽値の少なくともいずれかである項、もしくは前記項の否定であり、
    前記生成範囲特定情報は、決定表の生成対象である前記ルール仕様について取得されるメトリクス値と、前記メトリクス値を評価して前記生成範囲を特定する情報であるメトリクス評価情報とを含み、
    前記決定表生成部は、前記メトリクス値及び前記メトリクス評価情報に基づき前記生成範囲を特定し、特定した前記生成範囲について決定表を生成し、
    前記メトリクス値は、前記入力条件の前記構成要素の数であり、
    前記メトリクス評価情報は、前記構成要素の数が予め設定された閾値以上の前記ルールを前記生成範囲として特定する情報を含む、
    決定表生成装置。
  7. ソフトウェアの仕様を入力条件と出力変数の値を示す情報である結果とを含む一つ以上のルールにより記述した情報であるルール仕様、及び、
    決定表の生成範囲を特定する情報である生成範囲特定情報、
    を記憶する情報記憶部と、
    前記ルール仕様のうち、前記生成範囲特定情報によって特定される範囲について決定表を生成する決定表生成部と、
    を備え、
    前記入力条件の構成要素は、比較式、真偽型の変数、及び真偽値の少なくともいずれかである項、もしくは前記項の否定であり、
    前記生成範囲特定情報は、決定表の生成対象である前記ルール仕様について取得されるメトリクス値と、前記メトリクス値を評価して前記生成範囲を特定する情報であるメトリクス評価情報とを含み、
    前記決定表生成部は、前記メトリクス値及び前記メトリクス評価情報に基づき前記生成範囲を特定し、特定した前記生成範囲について決定表を生成し、
    前記ルール仕様はソースコードに基づき生成されたものであり、
    前記メトリクス値は、前記ルールの前記入力条件の前記構成要素に対応する命令の前記ソースコードにおける距離であり、
    前記メトリクス評価情報は、前記距離が予め設定された閾値以上の前記ルールを前記生成範囲として特定する情報を含む、
    決定表生成装置。
  8. ソフトウェアの仕様を入力条件と出力変数の値を示す情報である結果とを含む一つ以上のルールにより記述した情報であるルール仕様、及び、
    決定表の生成範囲を特定する情報である生成範囲特定情報、
    を記憶する情報記憶部と、
    前記ルール仕様のうち、前記生成範囲特定情報によって特定される範囲について決定表を生成する決定表生成部と、
    を備え、
    前記入力条件の構成要素は、比較式、真偽型の変数、及び真偽値の少なくともいずれかである項、もしくは前記項の否定であり、
    前記生成範囲特定情報は、決定表の生成対象である前記ルール仕様について取得されるメトリクス値と、前記メトリクス値を評価して前記生成範囲を特定する情報であるメトリクス評価情報とを含み、
    前記決定表生成部は、前記メトリクス値及び前記メトリクス評価情報に基づき前記生成範囲を特定し、特定した前記生成範囲について決定表を生成し、
    前記ルール仕様はソースコードに基づき生成されたものであり、
    前記メトリクス値は、前記ルールの前記入力条件の前記構成要素に対応する前記ソースコードの命令が内包する「If〜Then〜Else」形式の命令におけるElse命令の数であり、
    前記メトリクス評価情報は、前記Else命令の数が予め設定された閾値以上の前記ルールを前記生成範囲として特定する情報を含む、
    決定表生成装置。
  9. 請求項1に記載の決定表生成装置であって、
    前記生成範囲特定情報は論理式で記述されたフィルタ条件を含み、
    前記決定表生成部は、前記ルール仕様に前記フィルタ条件を適用することにより特定される前記生成範囲について決定表を生成する、
    決定表生成装置。
  10. 請求項1に記載の決定表生成装置であって、
    前記情報記憶部はソースコードを記憶し、
    前記出力変数を受け付けるユーザインタフェース、及び前記ソースコードと出力変数とに基づき前記ルール仕様を自動生成するルール仕様生成部をさらに備える、
    決定表生成装置。
  11. 請求項1に記載の決定表生成装置であって、
    前記情報記憶部は決定表を記憶し、
    前記決定表に基づき前記ルール仕様を自動生成する決定表逆変換部をさらに備える、
    決定表生成装置。
  12. 情報処理装置が、
    ソフトウェアの仕様を入力条件と出力変数の値を示す情報である結果とを含む一つ以上のルールにより記述した情報であるルール仕様、及び、
    決定表の生成範囲を特定する情報である生成範囲特定情報、
    を記憶するステップ、
    前記ルール仕様のうち、前記生成範囲特定情報によって特定される範囲について決定表
    を生成するステップ、
    を実行し、
    前記入力条件の構成要素は、比較式、真偽型の変数、及び真偽値の少なくともいずれかである項、もしくは前記項の否定であり、
    前記情報処理装置が、
    前記入力条件又は前記ルール仕様に基づき生成された論理式を、論理的に等価な、前記構成要素の論理積である節を論理和で結合した論理式である選言標準形に変換するステップ、
    前記構成要素ごとに前記入力条件に影響を与えるか否かを判定し、前記入力条件に影響を与えない前記構成要素を前記入力条件から除外して前記決定表を生成するステップ、
    を実行する、決定表生成方法。
JP2018016917A 2018-02-02 2018-02-02 決定表生成装置、及び決定表生成方法 Active JP6904914B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2018016917A JP6904914B2 (ja) 2018-02-02 2018-02-02 決定表生成装置、及び決定表生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018016917A JP6904914B2 (ja) 2018-02-02 2018-02-02 決定表生成装置、及び決定表生成方法

Publications (2)

Publication Number Publication Date
JP2019133538A JP2019133538A (ja) 2019-08-08
JP6904914B2 true JP6904914B2 (ja) 2021-07-21

Family

ID=67546212

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018016917A Active JP6904914B2 (ja) 2018-02-02 2018-02-02 決定表生成装置、及び決定表生成方法

Country Status (1)

Country Link
JP (1) JP6904914B2 (ja)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005352861A (ja) * 2004-06-11 2005-12-22 Nippon Telegr & Teleph Corp <Ntt> 電子データ処理方法、電子データ処理装置、および、電子データ処理プログラム
JP2011257965A (ja) * 2010-06-09 2011-12-22 Mitsubishi Electric Corp メトリクス算出装置
JP5460629B2 (ja) * 2011-03-10 2014-04-02 株式会社日立製作所 表形式ソフトウェア仕様作成支援方法、及び装置
JP5970292B2 (ja) * 2012-08-21 2016-08-17 株式会社日立製作所 ソフトウェア仕様開発支援方法及びソフトウェア仕様開発支援装置
JPWO2014061199A1 (ja) * 2012-10-17 2016-09-05 日本電気株式会社 システム設計方法、システム設計装置及びシステム設計プログラム
JP6247976B2 (ja) * 2014-03-28 2017-12-13 株式会社日立製作所 ルール管理支援装置、およびルール管理支援方法
JP6239438B2 (ja) * 2014-04-28 2017-11-29 東芝デジタルソリューションズ株式会社 仕様抽出装置、仕様抽出方法およびプログラム
WO2016110946A1 (ja) * 2015-01-06 2016-07-14 株式会社日立製作所 ルール整合性検証装置およびルール整合性検証方法

Also Published As

Publication number Publication date
JP2019133538A (ja) 2019-08-08

Similar Documents

Publication Publication Date Title
Saura et al. Using data mining techniques to explore security issues in smart living environments in Twitter
CN107644011B (zh) 用于细粒度医疗实体提取的***和方法
Itzik et al. Variability analysis of requirements: Considering behavioral differences and reflecting stakeholders’ perspectives
Huang et al. Synthesizing qualitative research in software engineering: A critical review
Van Benthem et al. Symbolic model checking for dynamic epistemic logic—S5 and beyond
CN108885631B (zh) 用于数据市场中的合同管理的方法和***
CN111562965B (zh) 基于决策树的页面数据校验方法和装置
JP5970292B2 (ja) ソフトウェア仕様開発支援方法及びソフトウェア仕様開発支援装置
EP4285270A1 (en) Auditing citations in a textual document
CN114840531B (zh) 基于血缘关系的数据模型重构方法、装置、设备及介质
CN113032580A (zh) 关联档案推荐方法、***及电子设备
JP6205512B2 (ja) ルール管理支援装置、およびルール管理支援方法
JP6692281B2 (ja) テストケース生成装置、及びテストケース生成方法
Sun et al. Decoding the silent majority: Inducing belief augmented social graph with large language model for response forecasting
JP6904914B2 (ja) 決定表生成装置、及び決定表生成方法
CN112835810B (zh) 一种基于日志分析的接口测试方法及装置
CN109299475B (zh) 一种医学文档的处理方法、装置、介质及电子设备
JP2012194833A (ja) テストデータ生成プログラム、装置、及び方法
Tschirschwitz et al. A dataset for analysing complex document layouts in the digital humanities and its evaluation with Krippendorff’s alpha
JP6802109B2 (ja) ソフトウェア仕様分析装置、及びソフトウェア仕様分析方法
Pagnan Syllogisms in rudimentary linear logic, diagrammatically
KR102492688B1 (ko) 임상 의사 결정 지원 시스템에서 융합 지식 베이스를 제공하는 방법 및 장치
Moody Summarizing Crowd Sourced Reviews With Natural Language Processing: A Case Study
US20220230073A1 (en) Computer-readable recording medium storing display program, information processing apparatus, and display method
Kuang et al. Suggesting method names based on graph neural network with salient information modelling

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200317

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210226

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210406

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210525

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210608

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210624

R150 Certificate of patent or registration of utility model

Ref document number: 6904914

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150