(57)【要約】      （修正有）【課題】根拠情報との追跡性確保、ルール数の最小化、および仕様変更に伴う修正箇所の特定を実現する。【解決手段】ルール管理支援装置１８００は、ユーザ定義ルールおよびルール出力条件を受け付け、ユーザ定義ルール（入力ルール）毎または全部をそのまま出力する修正不可オプション、入力ルールの修正を許可する修正可オプションおよび入力ルールの形式を考慮しない未活用オプションを指定可能とし、修正不可オプションが指定された入力ルールをそのまま出力し、修正可オプションが指定された入力ルールと、未活用オプションが指定された入力ルールの一部または全部と等価となるルールとを結合した結果を、修正可オプションが指定された入力ルールの修正可否の判定条件である評価指標に基づき、修正可能となった場合に入力ルールに修正を加えたルールを出力し、未活用オプションが指定された入力ルールの一部または全部と等価となるルールを出力する。【選択図】図１８
2015191418.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェア仕様の開発におけるルールの管理を支援するための装置であって、
前記ルールが成立するための条件を格納する条件部と前記条件が成立した場合の結果を格納する結果部とを含む１以上の入力ルールを受け付けるための入力ルール受付部と、出力するルールが成立するための条件であるルール出力条件を受け付けるルール出力条件受付部と、前記入力ルールと前記ルール出力条件とに基づきルールを出力するためのルール出力部と
を備え、
前記ルール出力条件受付部は、前記入力ルール毎または全部に対して、当該入力ルールをそのまま出力することを指示するための修正不可オプション、当該入力ルールの修正を許可することを指示するための修正可オプション、および当該入力ルールの形式を考慮しない未活用オプションのうち１以上のオプションについて、適用する前記オプションを指定するためのオプション指定部を備え、
前記ルール出力部は、前記オプション指定部を参照して、
前記修正不可オプションが指定されていると判定した場合、前記入力ルールをそのまま出力し、
１の前記修正可オプションが指定されていると判定した場合、当該修正可オプションが指定されている前記入力ルールと、前記未活用オプションが指定されている前記入力ルールの一部または全部と等価となるルールとを結合した結果を、前記修正可オプションが指定された前記入力ルールの修正可否の判定条件である類似度判定条件に基づいて判定し、前記類似度が許容範囲内であって修正可能と判定された場合に前記入力ルールに修正を加えたルールを出力し、
前記未活用オプションが指定されていると判定した場合、当該未活用オプションが指定されている前記入力ルールの一部または全部と等価となるルールを出力する
ことを特徴とするルール管理支援装置。
【請求項２】
請求項１に記載のルール管理支援装置であって、
前記ルール出力部は、
前記入力ルールと前記ルール出力条件とを読み込み、
前記修正不可オプションが指定された前記入力ルールをそのまま出力し、
前記未活用オプションが指定された前記入力ルールの前記結果部が一致する前記条件部の論理和である条件部論理和結合式を生成し、
前記条件部論理和結合式を条件部とし、結果部を前記入力ルールの結果部とした追加ルールを生成し、
前記追加ルールと前記結果部が一致する前記修正可オプションが指定された前記入力ルールのそれぞれの条件部の論理和である修正後論理式を生成し、
前記修正後論理式と前記入力ルールの類似度とを前記類似度判定条件に基づき判定し、前記類似度が許容範囲内であると判定した場合、前記修正後論理式を条件部とし、結果部を前記入力ルールの結果部としたルールを生成することを特徴とするルール管理支援装置。
【請求項３】
請求項２に記載のルール管理支援装置であって、前記条件部論理和結合式をＤｉｓｊｕｎｃｔｉｖｅ Ｎｏｒｍａｌ Ｆｏｒｍ（ＤＮＦ）に変換した条件部ＤＮＦ式を生成し、当該条件部ＤＮＦ式の各節を条件部とし、結果部を前記入力ルールの結果部とした追加ルールを生成することを特徴とするルール管理支援装置。
【請求項４】
請求項１に記載のルール管理支援装置であって、
前記ルール出力部は、前記修正可オプションに従って前記入力ルールに修正を加えたルールを出力する場合、当該ルールが修正されたものである旨の情報、および前記ルールについて修正された部分を示す識別情報を含む出力画面情報を出力することを特徴とするルール管理支援装置。
【請求項５】
請求項１に記載のルール管理支援装置であって、
前記ルール出力条件受付部は、さらに、前記ルール出力部が出力する出力範囲として、前記条件部に含まれる条件項目の取り得る値の全組合せを出力対象とする全範囲、前記結果部により結果が定義済みの前記条件部に含まれる条件項目の取り得る値の組合せの範囲、前記結果部により結果が未定義の前記条件部に含まれる条件項目の取り得る値の組合せの範囲、選択された前記入力ルールの範囲、指定された条件項目の取り得る値の条件を満たす前記条件部に含まれる条件項目の取り得る値の組合せの範囲、および指定された結果項目の取り得る値の条件を満たす前記条件部に含まれる条件項目の取り得る値の組合せの範囲のうち１以上のオプションを指定するための出力範囲オプション指定部を備え、
前記ルール出力部は、前記出力範囲を満たすルールを出力することを特徴とするルール管理支援装置。
【請求項６】
請求項１に記載のルール管理支援装置であって、
前記ルール出力条件受付部は、さらに、出力ルールの出力単位として、出力ルールの結果部に現れる結果項目の数が１である結果項目単位、前記出力ルールの結果部に全ての結果項目が含まれる結果項目組合せ単位、および前記出力ルールの結果部に含まれる結果項目のうち１以上のオプションを指定するための結果項目オプション指定部、または前記出力ルールの結果部に現れる結果項目の数を指定するための結果項目数指定部を含み、前記結果項目オプション指定部または前記結果項目数指定部を備え、
前記ルール出力部は、前記指定された出力単位を満たすルールを出力することを特徴とするルール管理支援装置。
【請求項７】
請求項１に記載のルール管理支援装置であって、
前記ルール出力条件受付部は、さらに、前記出力ルールについての制約条件を示す出力ルール制約条件のオプションとして、前記出力ルールに前記条件部に含まれる要素値の否定を許可するか否かを示すオプション、および前記出力ルール間での重複を許可するか否かを示すオプションのうち１以上のオプションを含み、前記出力制約条件オプションを指定するための出力制約条件オプション指定部を備え、
前記ルール出力部は、前記出力ルール制約条件を満たすルールを出力することを特徴とするルール管理支援装置。
【請求項８】
請求項１に記載のルール管理支援装置であって、
前記入力ルールを当該入力ルール毎にその条件部の要素値と結果部の要素値とを配列してなる決定表に変換する決定表変換部と、
前記決定表を編集する決定表編集部と、
を備え
前記決定表編集部は、決定表編集内容と等価な命題形式の決定表修正ルールを生成し、
前記ルール出力部は、前記決定表修正ルールと前記入力ルールとに基づきルールを出力することを特徴とするルール管理支援装置。
【請求項９】
ソフトウェア仕様の開発におけるルールの管理を支援するための方法であって、プロセッサとメモリとを備えるコンピュータが、
前記ルールが成立するための条件を格納する条件部と前記条件が成立した場合の結果を格納する結果部とを含む１以上の入力ルールを受け付け、出力するルールが成立するための条件であるルール出力条件を受け付け、
前記入力ルール毎または全部に対して、当該入力ルールをそのまま出力することを指示するための修正不可オプション、当該入力ルールの修正を許可することを指示するための修正可オプション、および当該入力ルールの形式を考慮しない未活用オプションのうち１以上のオプションを受け付け、
前記修正不可オプションが指定されていると判定した場合、前記入力ルールをそのまま出力し、
１の前記修正可オプションが指定されていると判定した場合、当該修正可オプションが指定されている前記入力ルールと、前記未活用オプションが指定されている前記入力ルールの一部または全部と等価となるルールとを結合した結果を、前記修正可オプションが指定された前記入力ルールの修正可否の判定条件である類似度判定条件に基づいて判定し、前記類似度が許容範囲内であって修正可能と判定された場合に前記入力ルールに修正を加えたルールを出力し、
前記未活用オプションが指定されていると判定した場合、当該未活用オプションが指定されている前記入力ルールの一部または全部と等価となるルールを出力する
ことを特徴とするルール管理支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ルール管理支援装置、およびルール管理支援方法に関する。
【背景技術】
【０００２】
ソフトウェアは、処理対象となる製品、サービス等の業務に関する法的な規制、種々の業務上の規則、基準等に従って仕様が決定され設計される。ソフトウェアの仕様を、ＩＦ−ＴＨＥＮ形式で整理する場合がある。ＩＦ−ＴＨＥＮ形式の仕様は、ビジネスルール、システムルール、チェックルールなど利用するフェーズに応じて様々な呼び名がある（本願では以下、これらをすべて「ルール」と呼称する。）。ルールは、「もし〜ならば〜である」というように自然文で記述したり、条件と結果の対応関係を表形式で定義した決定表で記述したりなどさまざまな形態で表現される。例えば、命題形式の記述と決定表とを連携させてルールを定義する方法が、特許文献１で開示されている。また、特許文献１では、決定表から命題形式のルールを出力する方法が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−１９０２０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ソフトウェア開発では、順守すべき法令等の改正や業務変更に伴う保守開発が多数発生する。保守開発においては、法改正や業務変更に伴い、既存のソフトウェアのどこを修正しなければならないかを特定し、次に、どう修正すべきかを設計し、それに基づきソフトウェアを改修する必要がある。このような保守開発の効率化においては、法令や業務仕様とシステム仕様の追跡性の確保が非常に重要である。例えば、法令に基づいて開発されるソフトウェアは、法令とソフトウェア仕様との追跡性を確保しておくことで、法改正が発生した場合にソフトウェアのどこを修正すれば良いかを容易に特定できる。また、ソフトウェアの仕様は、法令のみに基づいているわけではなく、様々な要件が加わっている。法令からの要件とその他の要件を明確に区別しておくことが保守性確保において有用である。
【０００５】
また、保守性確保では、ルールの統廃合によりルール数を最小化することも有用である。ルール数が少なくなることで、ソフトウェアの規模を抑えることができ、仕様変更時の影響範囲を極小化できる。この点、特許文献１の決定表からの命題形式のルール出力は、適用法令等に対する追跡性、ルール数の減少といったことに関しては一定の効果を有すると考えられるものの、ソフトウェアの仕様変更に伴い、どのようにルールを修正すれば良いかについては十分に手当てができていると言えない。
【０００６】
上記のおよび他の課題に鑑み、本発明では、根拠情報との追跡性確保、ルール数の最小化を実現しつつ、仕様変更に伴う修正を容易に実行できるようにするルール管理支援装置、およびルール管理支援方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記のおよび他の課題を解決するために、本発明の一実施態様は、ソフトウェア仕様の開発におけるルールの管理を支援するための装置であって、前記ルールが成立するための条件を格納する条件部と前記条件が成立した場合の結果を格納する結果部とを含む１以上の入力ルールを受け付けるための入力ルール受付部と、出力するルールが成立するための条件であるルール出力条件を受け付けるルール出力条件受付部と、前記入力ルールと前記ルール出力条件とに基づきルールを出力するためのルール出力部とを備え、前記ルール出力条件受付部は、前記入力ルール毎または全部に対して、当該入力ルールをそのまま出力することを指示するための修正不可オプション、当該入力ルールの修正を許可することを指示するための修正可オプション、および当該入力ルールの形式を考慮しない未活用オプションのうち１以上のオプションについて、適用する前記オプションを指定するためのオプション指定部を備え、前記ルール出力部は、前記オプション指定部を参照して、前記修正不可オプションが指定されていると判定した場合、前記入力ルールをそのまま出力し、１の前記修正可オプションが指定されていると判定した場合、当該修正可オプションが指定されている前記入力ルールと、前記未活用オプションが指定されている前記入力ルールの一部または全部と等価となるルールとを結合した結果を、前記修正可オプションが指定された前記入力ルールの修正可否の判定条件である類似度判定条件に基づいて判定し、前記類似度が許容範囲内であって修正可能と判定された場合に前記入力ルールに修正を加えたルールを出力し、前記未活用オプションが指定されていると判定した場合、当該未活用オプションが指定されている前記入力ルールの一部または全部と等価となるルールを出力することを特徴とする。
【発明の効果】
【０００８】
本発明の実施形態によれば、根拠情報との追跡性確保、ルール数の最小化を実現しつつ、仕様変更に伴う修正を容易に実行できるようにするルール管理支援装置、およびルール管理支援方法を提供することができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、本発明の第一の実施形態に係るルール管理支援装置１００の構成図の例である。
【図２】図２は、ルール出力条件指定部１０５におけるルール出力条件の設定画面の例である。
【図３】図３は、条件項目、結果項目、条件要素値、結果要素値、および、ユーザ定義ルールの例である。
【図４】図４は、決定表４００の表示例である。
【図５】図５は、修正可オプション設定画面の例である。
【図６】図６は、ユーザ定義ルール個別オプション設定画面の例である。
【図７】図７は、ユーザ定義ルール保持部１５３のデータ構造の例である。
【図８】図８は、ルール出力条件保持部１５４のデータ構造の例である。
【図９】図９は、決定表保持部１５２のデータ構造の例である。
【図１０】図１０は、決定表修正ルール保持部１５１のデータ構造の例である。
【図１１】図１１は、出力ルール保持部１５５のデータ構造の例である。
【図１２】図１２は、ルール出力部１０６の処理を示すフローチャートの例である。
【図１３】図１３は、ルール出力部１０６の結果項目単位のルール生成の処理を示すフローチャートの例である。
【図１４】図１４は、ルール出力部１０６の結果項目組合せ単位のルール生成の処理を示すフローチャートの例である。
【図１５】図１５は、出力ルール保持部１５５の変更ありルールの生成の処理を示すフローチャートの例である。
【図１６】図１６は、出力ルール表示部１０７における出力ルールの表示画面の例である。
【図１７】図１７は、ルール出力部１０６の処理例を説明するためのインプットとなる情報例を示す図である。
【図１８】図１８は、本発明の第二の実施形態に係るルール管理支援装置１００の構成図の例である。
【発明を実施するための形態】
【００１０】
以下、本発明について、その実施形態に則して、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている諸要素およびその組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１１】
第１の実施形態
本実施形態では、ユーザが定義したルールと前記ルールに基づき生成した決定表の管理を支援する装置の例を説明する。
【００１２】
図１は、本実施形態に係るルール管理支援装置１００の構成図の例である。本実施例では、１つのチェックロジックや推論ロジックなどのルール機能ロジックを実現する１以上のルールを管理する構成を説明する。システム機能の点では、ある入力に対して、ルール機能ロジックを実行すると、ある結果が返ってくる。このとき、ルールは、入力や出力に対する条件判断や制約などである。以降の説明では、ルール管理支援装置１００が管理するルール機能ロジックは１つを前提としているが、複数のルール機能ロジックを管理するように構成してもよい。
【００１３】
ルール管理支援装置１００は、少なくともＣＰＵ（Central Processing Unit）等のプロセッサ１６０、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）等のメモリ１７０、およびキーボード、表示モニタ等の入出力装置１８０を備えたコンピュータである。ルール管理支援装置１００は、ユーザ定義ルール入力部１０１（入力ルール受付部）、決定表変換部１０２、決定表表示部１０３、決定表編集部１０４、ルール出力条件指定部１０５（ルール出力条件受付部）、ルール出力部１０６、出力ルール表示部１０７、および出力ルール反映部１０８などの機能ロジックを備える。これらの機能ロジックはコンピュータプログラムとして実現されており、メモリ１７０上でプロセッサ１６０により実行される。また、ルール管理支援装置１００は、決定表修正ルール保持部１５１、決定表保持部１５２、ユーザ定義ルール保持部１５３、ルール出力条件保持部１５４、および出力ルール保持部１５５などのデータを、図示を省略するハードディスクドライブ等の補助記憶装置に保管している。これらのデータはプロセッサ１６０が前記機能ロジックを実行する際に補助記憶装置から読みだして使用する。
【００１４】
ユーザ定義ルール入力部１０１は、条件項目、結果項目、各条件、結果項目に対する要素値（以下、条件項目に対する要素値を「条件要素値」、結果項目に対する要素値を「結果要素値」という。）、およびルール（以下、「ユーザ定義ルール」という。）を受け付け、ユーザ定義ルール保持部１５３に登録する。条件項目は、当該ユーザ定義ルールが組み込まれるルール機能ロジックの入力項目であり、結果項目は、当該ルール機能ロジックの出力項目である。ユーザ定義ルールは、条件項目、結果項目、条件要素値、結果要素値、および論理演算子などの組合せで構成される。図２を参照して、条件項目、結果項目、条件要素値、結果要素値、およびユーザ定義ルールの例を説明する。
【００１５】
図２は、条件項目、結果項目、条件要素値、結果要素値、およびユーザ定義ルールの例である。図２の例では、条件項目データ２１０は、条件項目として、「年齢」「免許証の色」および「使用目的」を含み、それぞれ、条件要素値に示す値を取り得る。例えば、条件項目「年齢」は、「３５歳未満」と「３５歳以上」の２つの条件要素値を持つ。次に、結果項目データ２２０は、結果項目として、「他者運転特約」と「割引率」を含み、それぞれ、結果要素値に示す値を取り得る。例えば、結果項目「他者運転特約」は、「指定可」と「指定不可」の２つの結果要素値を持つ。次に、ユーザ定義ルールデータ２３０は、条件部２３１と結果部２３２から構成される。例えば、ユーザ定義ルール２３３は、「免許証の色がブルーであり、かつ、使用目的が通勤であるならば、他者運転特約は指定不可で、割引率は５％である」という意味を表す。
【００１６】
次に、図１に戻ると、決定表変換部１０２は、ユーザ定義ルール保持部１５３からユーザ定義ルールを取得し、決定表に変換し、変換した決定表の情報を決定表保持部１５２に登録する。
【００１７】
次に、決定表表示部１０３は、決定表保持部１５２と決定表修正ルール保持部１５１から決定表の情報を取得し、入出力装置１８０の表示画面に決定表を表示する。図３に、決定表の表示例を示す。決定表３００は、条件部表示エリア３０１と結果部表示エリア３０２から構成される。条件部表示エリア３０１は、各条件項目の条件要素値の組合せを表示するエリアである。結果部表示エリア３０２は、前記各条件項目の条件要素値の組合せに対する各結果項目の結果要素値を表示するエリアである。結果部表示エリア３０２中の白丸「○」は決定表保持部１５２の情報に基づき表示した内容であり、結果部表示エリア３０２中の黒丸「●」は決定表修正ルール保持部１５１の情報に基づき表示した内容である。これにより、各条件項目の条件要素値の組合せに対する各結果項目の結果要素値が、ユーザ定義ルールに基づくもの（○印）か、ユーザが決定表上で修正を加えたもの（●印）かを、ユーザが区別できる。
【００１８】
次に、決定表編集部１０４は、決定表３００の結果部表示エリア３０２の修正内容を受け付け、その修正内容をルール形式に変換し（以下、変換したルールを「決定表修正ルール」という。）、決定表修正ルールを決定表修正ルール保持部１５１に登録する。これにより、ユーザは、表示された決定表３００を確認しながら、誤りなどがある場合に、決定表を直接修正できる。
【００１９】
次に、ルール出力条件指定部１０５は、ユーザ定義ルール保持部１５３に登録されているユーザ定義ルールと決定表修正ルール保持部１５１に登録されている決定表修正ルールから、ルールを出力するための条件（以下、「ルール出力条件」という。）を受け付け、ルール出力条件をルール出力条件保持部に登録する。これにより、ユーザは、ルール出力の用途に応じて、ルール出力部１０６により出力されるルールの形式などをコントロールできる。
【００２０】
次に、ルール出力部１０６は、ユーザ定義ルール保持部１５３に登録されているユーザ定義ルール、決定表修正ルール保持部１５１に登録されている決定表修正ルール、およびルール出力条件保持部１５４に登録されているルール出力条件を取得し、ユーザ定義ルールと決定表修正ルールからルール出力条件に基づきルールを出力する（以下、出力したルールを「出力ルール」という。）。ルール出力部１０６は、出力ルールを出力ルール保持部１５５に登録する。
【００２１】
次に、出力ルール表示部１０７は、出力ルール保持部１５５に登録されている出力ルールを入出力装置１８０の表示モニタ等の画面に表示する。これにより、ユーザは、どのようにユーザ定義ルールを修正すればよいか、意図した通りにユーザ定義ルールが定義されているかなどを確認できる。
【００２２】
次に、出力ルール反映部１０８は、出力ルール保持部１５５に登録されている出力ルールを、ユーザ定義ルール保持部１５３に追加、もしくは既存のユーザ定義ルールを変更、あるいは削除する。これにより、ユーザは、効率よく出力ルールをユーザ定義ルールに反映できる。
【００２３】
続いて、図４を参照して、ルール出力条件指定部１０５におけるルール出力条件の設定画面について説明する。
【００２４】
図４は、本実施形態に係るルール管理支援装置１００のルール出力条件指定部１０５におけるルール出力条件の設定画面の例である。ルール出力条件設定画面４００は、出力範囲指定領域４１０、ユーザ定義ルール活用モード指定領域４２０、出力単位指定領域４３０、および出力ルール制約指定領域４４０などの領域を含む。
【００２５】
出力範囲指定領域４１０は、出力対象のルールの範囲を指定する領域であり、すべての範囲４１１、結果定義済み範囲すべて４１２、ユーザ選択範囲４１３、結果未定義範囲４１４、条件範囲指定４１５、および結果範囲指定４１６などの選択子を有する。ユーザ選択範囲４１３には、範囲選択ボタン４１７があり、範囲選択ボタン４１７を押下することで、ユーザ定義ルール、または決定表の範囲、またはそれらの組合せで出力範囲を指定できる。条件範囲指定４１５には、条件項目の範囲を受け付けるテキストボックス４１８がある。テキストボックス４１８には、条件項目、条件値候補、および論理演算子などを組合せて条件項目の範囲を指定できる。結果範囲指定４１６は、結果項目の範囲を受け付けるテキストボックス４１９を有する。テキストボックス４１９には、結果項目、結果値候補、および論理演算子などを組合せて条件項目の範囲を指定できる。
【００２６】
次に、出力範囲指定領域４１０の各選択子が選択された場合のルール出力部１０６の振る舞いを説明する。すべての範囲４１１が選択された場合、ルール出力部１０６は、出力ルールのすべての条件部を論理和結合した集合（以下、「出力ルール条件集合」という。）が、条件項目のすべての組合せ集合と一致するルールを出力する。すべての範囲４１１を選択することで、例えば、ユーザは、ルール全体について冗長性の排除、結果定義済みの範囲と未定義範囲の把握などが可能となる。ルール全体についての冗長性を排除した結果は、例えば、プログラム記述の際に役に立つ。
【００２７】
結果定義済み範囲すべて４１２が選択された場合、ルール出力部１０６は、出力ルール条件集合が、結果が定義されている条件集合と一致するルールを出力する。結果定義済み範囲すべて４１２を選択することで、例えば、ユーザは、結果定義済みの範囲に着目したルールの最適化などが可能となる。
【００２８】
ユーザ選択範囲４１３が選択された場合、ルール出力部１０６は、出力ルール条件集合が、範囲選択ボタン４１７の押下によりユーザが指定したユーザ定義ルールと決定表の範囲の条件部の集合と一致するルールを出力する。ユーザ選択範囲４１３を選択することで、例えば、ユーザは、冗長性を排除したいユーザ定義ルールのみの最適化などが可能となる。
【００２９】
結果未定義範囲４１４が選択された場合、ルール出力部１０６は、出力ルール条件集合が、結果が未定義の条件の集合と一致するルールを出力する。結果未定義範囲４１４を選択することで、ユーザは各条件項目の条件要素値の組合せの検討漏れの範囲を把握できる。結果未定義範囲４１４を選択して、ルールが出力されないことを確認することで、検討漏れがないことを確認できる。
【００３０】
条件範囲指定４１５が選択された場合、ルール出力部１０６は、出力ルール条件集合が、テキストボックス４１８で指定された条件集合と一致するルールを出力する。条件範囲指定４１５を選択することで、ユーザは、指定した条件範囲において、取り得る結果項目の結果要素値を把握でき、また意図した通りの結果要素値となっているかをテストしたりするのに利用できる。
【００３１】
結果範囲指定４１６が選択された場合、ルール出力部１０６は、出力ルール条件集合が、テキストボックス４１９で指定された結果となる条件集合と一致するルールを出力する。結果範囲指定４１６を選択することで、ある特定の結果になる条件を把握でき、ユーザが意図した条件と一致しているか、障害が発生した結果に着目し障害の原因となった条件の確認などに利用できる。
【００３２】
次に、ユーザ定義ルール活用モード指定領域４２０は、ユーザ定義ルールの活用モードを指定する領域であり、修正不可４２１、修正可４２２、未活用４２３、および個別設定４２４などの選択子がある。修正不可４２１を選択すると、決定表３００の内容を修正することができなくなる。修正可４２２には、設定ボタン４２５があり、設定ボタン４２５を押下することで、修正対象のユーザ定義ルールの選択方法を指定できる。個別設定４２４には、設定ボタン４２６があり、設定ボタン４２６を押下することで、ユーザ定義ルール毎にユーザ定義ルール活用モードを指定できる。
【００３３】
図５は、設定ボタン４２５を押下した際に表示される修正可オプション設定画面の例である。修正可オプション設定画面５００は、類似度評価方法指定領域５１０などを有する。類似度評価方法指定領域５１０は、ルール出力部１０６が内部で作成した修正後のユーザ定義ルールと修正前のユーザ定義ルールの類似度の指標を指定する領域であり、有効フラグ５１１、評価指標５１２、優先度５１３、ソート５１４、下限５１５、および上限５１６などの項目がある。評価指標５１２は、ルール管理支援装置１００が備える評価指標の名称であり、各評価指標５１２に対して、ユーザが有効フラグ５１１、優先度５１３、ソート５１４、下限５１５、および上限５１６を指定する。有効フラグ５１１は、当該評価指標を活用するか否かを示すフラグであり、チェックされている場合、ルール出力部１０６は、当該評価指標を類似度判定に活用する。優先度５１３は、ルール出力部１０６が類似度を判定する際の優先順位であり、数字が小さい評価指標を優先する。ソート５１４は、当該評価指標により算出した値が大きい、もしくは小さい、のいずれの場合に、類似度が高いとみなすかを指定する。ソート５１４が昇順の場合は、値が小さい方を類似度が高いとみなし、降順の場合は、値が大きい方を類似度が高いとみなす。下限５１５と上限５１６は、当該評価指標５１２により算出した値の下限と上限を表し、当該範囲に含まれない場合は、ルール出力部１０６は、修正前のユーザ定義ルールと修正後のユーザ定義ルールは類似していないと判定する。また、下限５１５と上限５１６が「−（ハイフン）」の場合、ルール出力部１０６は、下限と上限がないものとみなす。
【００３４】
図５の例では、評価指標５１２として、追加された要素数、削除された要素数、一致する要素数、および全体の要素数の４つを挙げている。要素数とは、ルールの条件部に含まれる「Ａ＝ａ１」などの条件要素の数である。例えば、図２のユーザ定義ルール２３３の場合、要素数は、「年齢＝35歳未満」、「免許証の色＝ゴールド」、「使用目的＝レジャー」の３つである。
【００３５】
図６は、設定ボタン４２６を押下した際に表示されるユーザ定義ルール個別オプション設定画面の例である。ユーザ定義ルール個別オプション設定画面６００は、ユーザ定義ルール個別オプション設定領域６１０、および評価指標設定ボタン６２０などを有する。ユーザ定義ルール個別オプション設定領域６１０は、ユーザ定義ルール毎にユーザ定義ルール活用モードを指定する領域であり、各ユーザ定義ルールの識別符号であるＩＤ６１１、ルール名称６１２、およびユーザ定義ルール活用モード６１３などの項目がある。ユーザ定義ルール活用モード６１３は、さらに、修正不可６１４、修正可６１５、および未活用６１６の選択子を備える。評価指標設定ボタン６２０は、修正対象のユーザ定義ルールの選択方法を指定する際に利用し、評価指標設定ボタン６２０を押下することで、ルール出力条件設定画面４００の設定ボタン４２５の押下と同様の図５に示す修正可オプション設定画面５００が表示される。
【００３６】
図６の例では、例えば、ＩＤ６１１が「１」のユーザ定義ルールについては、ルール名称が「ルール１」であり、ユーザ定義ルール活用モード６１３が「修正不可」であることを表す。
【００３７】
なお、決定表修正ルールに対して、ユーザ定義ルール活用モードを設定できるようにしてもよい。この場合、例えば、ユーザ定義ルール個別オプション設定画面６００と同様の画面で、決定表修正ルールを表示すればよい。
【００３８】
次に、ユーザ定義ルール活用モード指定領域４２０の各選択子が選択された場合のルール出力部１０６の振る舞いを説明する。
【００３９】
修正不可４２１が選択された場合、ルール出力部１０６は、ユーザ定義ルールの論理構造を崩すことなく、そのままの形式でルールを出力する。これにより、例えば、法令や業務マニュアルとの等価性を容易に判断できるように記述されたユーザ定義ルールを残し、その他のルール（決定表修正ルール）のみをルール出力の対象とでき、法令や業務マニュアルとの等価性確認の容易さを維持できる。
【００４０】
修正可４２２が選択された場合、ルール出力部１０６は、修正可オプション設定画面５００で指定した条件に基づき、ユーザ定義ルールの条件部に修正を加えたユーザ定義ルールを出力する。これにより、例えば、仕様の変更に伴い、既存のどのユーザ定義ルールを変更すれば良いかを特定できる。
【００４１】
未活用４２３が選択された場合、ルール出力部１０６は、ユーザ定義ルールと決定表修正ルールと等価なルールを出力する。このとき、出力ルールは、ユーザ定義ルールの論理構造を維持している保証はない。これにより、例えば、ルール全体の冗長性の排除が可能である。
【００４２】
個別設定４２４が選択された場合、ルール出力部１０６は、設定ボタン４２６の押下により設定されたユーザ定義ルール毎の、修正不可、修正可、および未活用のユーザ定義ルールの活用モードに従い、ルールを出力する。これにより、例えば、指定したユーザ定義ルールのみの冗長性を排除したり、法令に基づくユーザ定義ルールのみを修正不可４２２とすることで法令との追跡性を維持したルールを出力したりすることができる。
【００４３】
図４のルール出力条件設定画面４００に戻ると、出力単位指定領域４３０は、出力ルールを分割する方法を指定する領域であり、結果項目単位４３１と結果項目組合せ単位４３２などの選択子がある。
【００４４】
出力単位指定領域４３０の各選択子が選択された場合のルール出力部１０６の振る舞いを説明する。
【００４５】
結果項目単位４３１が選択された場合、ルール出力部１０６は、ルールの結果部が、結果項目のいずれか１つのみを含むルールを出力する。これにより、ユーザは、ある結果項目が特定の結果要素値となる場合の条件を確認できる。
【００４６】
結果項目組合せ単位４３２が選択された場合、ルール出力部１０６は、ルールの結果部が、すべての結果項目を含むルールを出力する。これにより、ユーザは、各結果項目の結果要素値の組合せ毎に条件を確認できる。ただし、ユーザ定義ルール活用モードが修正不可または修正可であるユーザ定義ルールについては、いずれの選択子の場合であっても、元のユーザ定義ルールの結果部は変化しない。
【００４７】
なお、出力単位指定領域４３０の選択子として、結果項目の組合せ数があっても良い。この場合、例えば、３つの結果項目があり、結果項目の組合せ数を２とした場合、３つの結果項目から２つの結果項目を抽出し、当該組合せについて、上記結果項目組合せ単位４３２と同様の振る舞いを実行する。当該処理をすべての結果項目の組合せについて実行する。
【００４８】
次に、出力ルール制約指定領域４４０は、出力ルールの制約を指定する領域であり、条件値の否定を許可する４４１、および、ルール間の重複を許可する４４２などの項目がある。
【００４９】
出力ルール制約指定領域４４０の各項目が選択された場合のルール出力部１０６の振る舞いを説明する。
【００５０】
条件値の否定を許可する４４１が選択された場合、ルール出力部１０６は、「Ａ！＝ａ１」のような否定を含むルールを出力する場合がある。一方、条件値の否定を許可する４４１が選択されなかった場合、ルール出力部１０６は、否定を含むルールは出力しない。例えば、条件項目Ａがａ１、ａ２、ａ３の３つの条件要素値を持ち、条件部が「Ａ＝ａ２、または、Ａ＝ａ３」である場合を考える。このとき、条件値の否定を許可する４４１が選択された場合、ルール出力部１０６は、「Ａ＝ａ２、または、Ａ＝ａ３」を「Ａ！＝ａ１」に変換して出力する。条件値の否定を許可する４４１が選択されなかった場合は、そのまま「Ａ＝ａ２、または、Ａ＝ａ３」を出力する。否定を許可することにより、上記のように条件値の記述が簡単化されることがある。
【００５１】
ルール間の重複を許可する４４２が選択された場合、ルール出力部１０６は、出力ルール間の条件部に重複があってもそのまま出力する。一方、ルール間の重複を許可する４４２が選択されなかった場合、ルール出力部１０６は、出力ルール間の条件部の重複はなく排他的になるようにルールを出力する。これにより、例えば、ルール間の重複を許可する４４２を選択することで、出力ルールをシンプルにできる場合がある。また、ルール間の重複を許可する４４２を選択しないことで、ルール間が排他的になり、テストにおける同値クラスを特定できる。
【００５２】
なお、ルール出力条件指定部１０５は、出力ルールの構造に影響を与える他のオプションを指定する領域を備えてもよい。例えば、出力ルールの構造パターンとして、「ＩＦ〜ＴＨＥＮ形式」、「ＩＦ〜ＴＨＥＮ ＩＦ ― ＴＨＥＮ形式」を選択できるようにする。前者は、通常の条件部と結果部から構成されるルールが出力されるのに対して、後者は、ＩＦ文のネスト構造のルールを出力する。
【００５３】
続いて、図７を参照して、本実施形態に係るユーザ定義ルール保持部１５３のデータ構造の例について説明する。図７に示すように、ユーザ定義ルール保持部１５３は、ユーザ定義ルール７０１、条件項目７０２、結果項目７０３、および要素値７０４といったエンティティを有する。図７の各エンティティは、２つの四角形から構成されており、上の四角形内に示す名前はエンティティ名を表し、下の四角形内に示す名前は当該エンティティの属性名を表している。また、エンティティ間の関連は、ひし形と実線を結んで表し、ひし形側のエンティティと実線側のエンティティは、１対多の関係にあることを表す。以下、他のデータ構造の図についても同様に記載している。
【００５４】
図７において、ユーザ定義ルール７０１は、個々のユーザ定義ルールに関する情報として、ルールＩＤ、ルール名称、条件部論理式、および結果部論理式といった属性を有するエンティティである。ルールＩＤは、ユーザ定義ルール保持部１５３においてユニークな識別子である。ルール名称は、ユーザ定義ルールの名称である。条件部論理式は、ユーザ定義ルールの条件部に関するデータであり、条件項目７０２または結果項目７０３（いずれか一方のみ）に対応する要素値ＩＤ、ルールＩＤ、論理演算子（論理積、論理和、否定など）、および、括弧などを組合せて表現する。結果部論理式は、ユーザ定義ルールの結果部に関するデータであり、条件部論理式と同様の形式である。ただし、条件部論理式が条件項目７０２から定義される場合で、かつ、結果部論理式が結果項目７０３から定義される場合、結果部論理式は結果項目７０３と論理積のみで定義することが望ましい。このような場合で、結果部論理式に論理和や否定が含まれる場合、結果が非決定的となるためである。また、ユーザ定義ルールデータ７０２は、子要素として、さらにユーザ定義ルールデータ７０２を有することができる。このような構造により、ユーザ定義ルール保持部１５３は、ＩＦ文のネスト構造など多様なルールを保持できる。また、結果部論理式を空欄にし、条件部論理式を記載することで、複数のユーザ定義ルールで共通する条件部を部品として扱うことができる。共通部品である条件部を利用する場合は、条件部論理式にルールＩＤを含めればよい。また、ユーザ定義ルール７０１に示す属性の他、法令や業務規則などルールの種別、ルールの根拠情報、下位設計書ＩＤを記載する属性を含めても良い。例えば、ルールの種別があることで、変更が可能なものかの判断の材料とできる。また、根拠情報は、ルールと根拠情報との追跡性確保に利用できる。同様に、下位設計書ＩＤを含めることで、下位の設計書との追跡性を確保できる。
【００５５】
次に、条件項目７０２は、決定表３００における条件項目として、条件項目ＩＤ、および、条件項目名称といった属性を有するエンティティである。条件項目ＩＤは、結果項目ＩＤを含めてユーザ定義ルール保持部１５３においてユニークな識別子である。条件項目名称は、条件項目の名称である。
【００５６】
次に、結果項目７０３は、決定表３００における結果項目として、結果項目ＩＤ、および、結果項目名称といった属性を有するエンティティである。結果項目ＩＤは、条件項目ＩＤを含めてユーザ定義ルール保持部１５３においてユニークな識別子である。結果項目名称は、結果項目の名称である。
【００５７】
次に、要素値７０４は、決定表３００における条件要素値または結果要素値であり、条件／結果項目ＩＤ、要素値ＩＤ、および、要素値名といった属性を有するエンティティである。条件／結果項目ＩＤは、当該要素値を持つ条件項目７０２または結果項目７０３の条件項目ＩＤまたは結果項目ＩＤである。要素値ＩＤは、ユーザ定義ルール保持部１５３においてユニークな識別子である。要素値名は、要素値の名称であり、条件項目７０２または結果項目７０３においてユニークな名称である。
【００５８】
なお、条件項目７０２と結果項目７０３をエンティティとして区別しているが、当該ユーザ定義ルールに係るルール機能ロジックにおける入力項目と出力項目を区別できればよい。
【００５９】
続いて、図８を参照して、本実施形態に係るルール出力条件保持部１５４のデータ構造の例について説明する。図８に示すように、ルール出力条件保持部１５４は、ルール出力条件８０１、ユーザ選択ルール８０２、修正可オプション８０３、個別設定オプション８０４、および出力ルール制約８０５といったエンティティを有する。
【００６０】
図８において、ルール出力条件８０１は、ユーザがルール出力条件設定画面４００において設定した情報であり、出力範囲オプション、条件／結果範囲、ユーザ定義ルール活用モード、出力単位、および出力ルール制約といった属性を有するエンティティである。出力範囲オプションは、ルール出力条件設定画面４００の出力範囲指定領域４１０において、ユーザが選択した情報であり、本実施形態では、すべての範囲４１１、結果定義済み範囲すべて４１２、ユーザ選択範囲４１３、結果未定義範囲４１４、条件範囲指定４１５、または、結果範囲指定４１６を識別する情報である。条件／結果範囲は、出力範囲オプションが条件範囲指定４１５または結果範囲指定４１６の場合にのみ指定される情報であり、テキストボックス４１８またはテキストボックス４１９のいずれかの値である。ユーザ定義ルール活用モードは、ルール出力条件設定画面４００のユーザ定義ルール活用モード指定領域４２０において、ユーザが選択した情報であり、本実施形態では、修正不可４２１、修正可４２２、未活用４２３、または、個別設定４２４を識別する情報である。出力単位は、ルール出力条件設定画面４００の出力単位指定領域４３０において、ユーザが選択した情報であり、本実施形態では、結果項目単位４３１または結果項目組合せ単位４３２を識別する情報である。
【００６１】
次に、ユーザ選択ルール８０２は、ルール出力条件設定画面４００の範囲選択ボタン４１７の押下により表示される画面においてユーザが選択したユーザ定義ルールに関する情報であり、ルールＩＤといった属性を有するエンティティである。ルールＩＤは、ユーザが指定したユーザ定義ルールを識別する情報であり、ユーザ定義ルール保持部１５３に記憶されているユーザ定義ルール７０１のルールＩＤのいずれかと一致する。
【００６２】
次に、修正可オプション８０３は、ユーザが修正可オプション設定画面５００において設定した情報であり、有効フラグ、評価指標名、評価モジュール名、優先度、ソート、下限、および上限といった属性を有するエンティティである。有効フラグは、ユーザが選択しているか否かを示す情報である。評価指標名は、ユーザが修正可オプション設定画面５００の評価指標５１２の欄に表示される情報である。評価モジュール名は、当該評価指標５１２に基づき評価処理を実行するモジュールの名称である。このようにすることで新しい評価指標５１２の導入が容易となる。優先度は、修正可オプション設定画面５００の優先度５１３の欄でユーザが指定する情報である。ソートは、修正可オプション設定画面５００のソート５１４の欄でユーザが指定する情報であり、昇順または降順を識別する情報である。下限は、修正可オプション設定画面５００の下限５１５の欄でユーザが指定する情報である。上限は、修正可オプション設定画面５００の上限５１６の欄でユーザが指定する情報である。
【００６３】
次に、個別設定オプション８０４は、ユーザ定義ルール個別オプション指定画面６００において設定した情報であり、ルールＩＤ、およびモードといった属性を有するエンティティである。ルールＩＤは、ユーザ定義ルール個別オプション指定画面６００のＩＤ６１１に表示される情報であり、ユーザ定義ルール保持部１５３に記憶されているユーザ定義ルールデータ７０２のルールＩＤのいずれかと一致する。モードは、ユーザ定義ルール個別オプション指定画面６００のユーザ定義ルール活用モード６１３でユーザが選択した情報であり、本実施例では、修正不可６１４、修正可６１５、または未活用６１６を識別する情報である。
【００６４】
次に、出力ルール制約８０５は、ユーザがルール出力条件設定画面４００の出力ルール制約指定領域４４０において設定した情報であり、有効フラグ、オプション名、および制約モジュール名といった属性を有するエンティティである。有効フラグは、出力ルール制約指定領域４４０において、ユーザが当該出力ルール制約を選択済みであるか否かを示す情報である。オプション名は、出力ルール制約指定領域４４０に表示される文字列であり、本実施形態では、条件値の否定を許可する４４１、またはルール間の重複を許可する４４２である。制約モジュール名は、当該出力ルール制約を実行するモジュールの名称である。このようにすることで、新しい出力ルール制約の導入が容易となる。
【００６５】
続いて、図９を参照して、本実施形態に係る決定表保持部１５２のデータ構造の例について説明する。図９に示すように、決定表保持部１５２は、列ルール９０１、条件項目設定値９０２、結果項目設定値９０３、および関連ルール９０４といったエンティティを有する。
【００６６】
図９において、列ルール９０１は、決定表３００上の１つの列に関する情報であり、列ルールＩＤ、および制約フラグといった属性を有するエンティティである。列ルールＩＤは、決定表３００における列を一意に識別する情報であり、決定表保持部１５２においてユニークである。制約フラグは、ユーザ定義ルールにより組合せとしてあり得ない列ルールであるか否かを示すフラグである。ユーザ定義ルールとして、条件部と結果部の両方を、条件項目を用いて記述することで、あり得る組合せ、あり得ない組合せを表現できる。
【００６７】
次に、条件項目設定値９０２は、決定表３００上の１つの列の条件部の情報であり、列ルールＩＤ、および要素値ＩＤといった属性を有するエンティティである。列ルールＩＤは、当該条件項目設定値９０２を持つ列ルール９０１の列ルールＩＤである。要素値ＩＤは、ユーザ定義ルール保持部１５３の条件項目７０２に関連する要素値７０４の属性である要素値ＩＤのいずれかである。条件項目設定値９０２のエンティティの数は、１つの列ルール９０１に対して、ユーザ定義ルール保持部１５３の条件項目７０２の数と等しい。また、１つの列ルール９０１に含まれる条件項目設定値９０２の要素値ＩＤには、ユーザ定義ルール保持部１５３のすべての条件項目７０２について、各条件項目７０２に対応するいずれか１つの要素値ＩＤを含む。
【００６８】
次に、結果項目設定値９０３は、決定表３００上の１つの列の結果部の情報であり、列ルールＩＤ、および要素値ＩＤといった属性を有するエンティティである。列ルールＩＤは、当該結果項目設定値９０３を持つ列ルール９０１の列ルールＩＤである。要素値ＩＤは、ユーザ定義ルール保持部１５３の結果項目７０３に関連する要素値７０４の属性である要素値ＩＤのいずれかである。結果項目設定値９０３のエンティティの数は、１つの列ルール９０１に対して、ユーザ定義ルール保持部１５３の結果項目７０３の数と等しい。また、１つの列ルール９０１に含まれる結果項目設定値９０３の要素値ＩＤには、ユーザ定義ルール保持部１５３のすべての結果項目７０３について、各結果項目７０３に対応するいずれか１つの要素値ＩＤを含む。
【００６９】
次に、関連ルール９０４は、列ルール９０１と関連する情報であり、列ルールＩＤ、および、ルールＩＤといった属性を有するエンティティである。列ルールＩＤは、当該関連ルール９０５を持つ列ルール９０１の列ルールＩＤである。ルールＩＤは、列ルールＩＤで特定される列ルール９０１の結果項目設定値９０３の要素値ＩＤの決定に係るユーザ定義ルール７０１のルールＩＤである。
【００７０】
続いて、図１０を参照して、本実施形態に係る決定表修正ルール保持部１５１のデータ構造の例について説明する。図１０に示すように、決定表修正ルール保持部１５１は、決定表修正ルール１００１、および条件項目設定値１００２といったエンティティを有する。
【００７１】
図１０において、決定表修正ルール１００１は、ユーザが決定表３００上で修正した内容に関する情報であり、列ルールＩＤ、結果項目ＩＤ、および要素値ＩＤといった属性を有するエンティティである。列ルールＩＤは、ユーザが決定表３００上で修正を行った列を識別する情報であり、決定表保持部１５２の列ルール９０１の列ルールＩＤのいずれかである。結果項目ＩＤは、ユーザが決定表３００上で修正を行った結果項目を識別する情報である。要素値ＩＤは、ユーザが決定表３００上で修正を行った結果項目について修正後の要素値を識別する情報である。決定表修正ルール１００１は、決定表３００の１つの列における結果項目毎にある。例えば、同一の列であっても、２つの結果項目があり、それぞれの要素値をユーザが修正した場合、決定表修正ルール保持部１５１は２つの決定表修正ルールを保持する。
【００７２】
次に、条件項目設定値１００２は、ユーザが決定表３００上で修正した１つの列の条件部の情報であり、列ルールＩＤ、および要素値ＩＤといった属性を有するエンティティである。列ルールＩＤは、当該条件項目設定値１００２を持つ決定表修正ルール１００１の列ルールＩＤである。要素値ＩＤは、ユーザ定義ルール保持部１５３の条件項目７０２に関連する要素値７０４の属性である要素値ＩＤのいずれかである。条件項目設定値１００２のエンティティの数は、１つの列ルール９０１に対して、ユーザ定義ルール保持部１５３の条件項目７０２の数と等しい。また、１つの決定表修正ルール１００１に含まれる条件項目設定値１００２の要素値ＩＤには、ユーザ定義ルール保持部１５３のすべての条件項目７０２について、各条件項目７０２に対応するいずれか１つの要素値ＩＤを含む。
【００７３】
続いて、図１１を参照して、本実施形態に係る出力ルール保持部１５５のデータ構造の例について説明する。図１１に示すように、出力ルール保持部１５５は、変更なしルール１１０１、変更ありルール１１０２、および追加ルール１１０３といったエンティティを有する。
【００７４】
図１１において、変更なしルール１１０１は、ルール出力部１０６が変更や削除を加えなかったユーザ定義ルール７０１に関する情報であり、ルールＩＤといった属性を有するエンティティである。ルールＩＤは、ルール出力部１０６が変更や削除を加えなかったユーザ定義ルール７０１のルールＩＤである。
【００７５】
次に、変更ありルール１１０２は、ルール出力部１０６が変更を加えたユーザ定義ルール７０１に関する情報であり、ルールＩＤ、条件部論理式、および結果部論理式といった属性を有するエンティティである。ルールＩＤは、ルール出力部１０６が変更を加えたユーザ定義ルール７０１のルールＩＤである。条件部論理式および結果部論理式は、ルール出力部１０６による変更後のユーザ定義ルール７０１の条件部論理式および結果部論理式である。
【００７６】
次に、追加ルール１１０３は、ルール出力部１０６が新規に作成したルールに関する情報であり、追加ルールＩＤ、条件部論理式、および結果部論理式といった属性を有するエンティティである。追加ルールＩＤは、追加ルールを識別する情報であり、出力ルール保持部１５５においてユニークである。条件部論理式および結果部論理式は、ルール出力部１０６が作成したルールの条件部および結果部の論理式である。
【００７７】
続いて、図１２を参照して、本発明の実施形態に係るルール出力部１０６の処理について説明する。図１２は、本実施形態に係るルール出力部１０６の処理例を示すフローチャートである。なお、図中の符号Ｓはステップを表す（以下本明細書中で同様）。
【００７８】
まず、ルール出力部１０６は、ユーザによる入出力装置１８０の操作、バッチ処理などにより処理の実行を開始する（Ｓ１２００）。ルール出力部１０６は、ユーザ定義ルール保持部１５３が記憶しているすべてのユーザ定義ルール７０１を読み込む（Ｓ１２０１）。ルール出力部１０６は、読み込んだユーザ定義ルール７０１のうち、条件部論理式が条件項目７０２に対応する要素値から構成され（結果項目７０３に対応する要素値を含まない）、かつ、結果部論理式が結果項目７０３に対応する要素値と論理積から構成される（条件項目７０３に対応する要素値を含まない）ユーザ定義ルール７０１（以下、「条件−結果ＡＮＤルール」という。）をオリジナルルール集合として記憶する。また、ルール出力部１０６は、条件部論理式が結果項目７０３に対応する要素値から構成され（条件項目７０２に対応する要素値を含まない）、かつ、結果部論理式が結果項目７０３に対応する要素値と論理積から構成される（条件項目７０３に対応する要素値を含まない）ユーザ定義ルール（以下、「結果−結果ＡＮＤルール」という。）について、当該ユーザ定義ルールの条件部論理式と充足可能なオリジナルルール集合内の結果部論理式を持つルールを検索し、該当するすべてのルールについて、各ルールの条件部論理式と結果−結果ＡＮＤルールの結果部論理式から構成されるルールを生成し、修正ルール集合として記憶する。また、ルール出力部１０６は、読み込んだユーザ定義ルール７０１のうち、条件部論理式と結果部論理式が共に条件項目７０２に対応する要素値から構成される（結果項目７０３に対応する要素値を含まない）ユーザ定義ルール７０１（以下、「条件−条件ルール」という。）を制約ルール集合として記憶する。ユーザ定義ルールを読み込んだ後、Ｓ１２０２に進む。
【００７９】
次に、ルール出力部１０６は、読み込んだユーザ定義ルール７０１間の整合性を確認する（Ｓ１２０２）。ユーザ定義ルール７０１間の整合性の確認方法は、例えば、特許文献１で開示されている。ユーザ定義ルール７０１間に不整合があると判定した場合、ルール出力部１０６は、処理を中断する。不整合がないと判定した場合は、Ｓ１２０３に進む。
【００８０】
次に、ルール出力部１０６は、決定表修正ルール保持部１５１が記憶しているすべての決定表修正ルール１００１を読み込む（Ｓ１２０３）。ルール出力部１０６は、読み込んだ決定表修正ルール１００１を修正ルール集合に追加する。決定表修正ルール１００１を読み込んだ後、Ｓ１２０４に進む。
【００８１】
次に、ルール出力部１０６は、ユーザ定義ルール７０１と決定表修正ルール１００１の整合性を確認する（Ｓ１２０４）。ユーザ定義ルール７０１と決定表修正ルール１００１の整合性の確認方法は、例えば、決定表修正ルール１００１の列ルールＩＤに対応するユーザ定義ルールが、決定表保持部１５２の関連ルール９０４のルールＩＤに存在するかを確認し、存在すると判定した場合、当該決定表修正ルール１００１とユーザ定義ルール７０１を比較することで整合性を確認する。また、Ｓ１２０２のユーザ定義ルール間の整合性の確認と同様に、特許文献１に開示されている方法により整合性を確認することもできる。ユーザ定義ルール７０１と決定表修正ルール１００１に不整合があると判定した場合、ユーザ定義ルール７０１と決定表修正ルール１００１のどちらを優先するかの確認メッセージを表示する。ユーザ定義ルール７０１を優先する場合、当該ユーザ定義ルール７０１と不整合な関係にある決定表修正ルール１００１を修正ルール集合から削除する。決定表修正ルール１００１を優先する場合、当該決定表修正ルール１００１と不整合な関係にあるユーザ定義ルール７０１の条件部論理式を、当該ユーザ定義ルール７０１の条件部論理式と当該決定表修正ルール１００１の条件部論理式の否定の論理積に置き換える（置き換え後の当該ユーザ定義ルール７０１の条件部論理式＝（置き換え前の当該ユーザ定義ルール７０１の条件部論理式）∧¬（当該決定表修正ルールの条件部論理式））。ユーザ定義ルール７０１と決定表修正ルール１００１の整合性の確認の後、Ｓ１２０５に進む。
【００８２】
次に、ルール出力部１０６は、ルール出力条件保持部１５４が記憶しているルール出力条件８０１を読み込む（Ｓ１２０５）。また、ルール出力部１０６は、ルール出力条件８０１に関連するすべてのユーザ選択ルール８０２、修正可オプション８０３、個別設定オプション８０４、および出力ルール制約８０５を読み込む。
【００８３】
次に、ルール出力部１０６は、ルール出力条件８０１の出力範囲の条件を満たすルール集合を生成する（Ｓ１２０６）。出力範囲の条件は、ルール出力条件８０１の出力範囲オプションおよび条件／結果範囲、ユーザ選択ルール８０２である。どの出力範囲オプションが選択されているかで処理が異なる。以下、各出力範囲オプションのルール出力部１０６の処理内容を説明する。
【００８４】
出力範囲オプションがすべての範囲４１１の場合、ルール出力部１０６は、結果が未定義のルールを生成し、修正ルール集合に追加する。結果が未定義のルールの生成方法は、例えば、条件部論理式に結果項目の要素値を含まず、かつ、結果部論理式が結果項目の要素値と論理積演算子のみからなるルールの条件部論理式をオリジナルルール集合と修正ルール集合から抽出し、抽出したルールの条件部論理式の否定を論理積結合した論理式を、条件部論理式とした結果部論理式のないルールとして表現できる。また、決定表保持部１５２の結果項目設定値が設定されていない列ルールを結果が未定義のルールとして抽出することができる。
【００８５】
出力範囲オプションが結果定義済み範囲すべて４１２の場合、ルール出力部１０６は、追加の処理を行わない。
【００８６】
出力範囲オプションがユーザ選択範囲４１３の場合、ルール出力部１０６は、ユーザが選択したユーザ定義ルールおよび決定表３００の範囲のルールのみを残し、その他は、オリジナルルール集合と修正ルール集合から削除する。オリジナルルール集合のルールの一部が、ユーザが選択した決定表３００の範囲に含まれる（当該ルールの条件部論理式が表す列ルール集合と決定表３００の範囲を表す列ルール集合が部分的に一致する）場合、ルール出力部１０６は、当該ルールをオリジナルルール集合から削除し、決定表３００の範囲を表す列ルールから条件部論理式を生成し、当該ルールの条件部論理式を、当該条件部論理式の否定と当該ルールの条件部論理式を論理積で結合した条件部論理式に置き換えたルールを修正ルール集合に追加する。
【００８７】
出力範囲オプションが結果未定義範囲４１４の場合、ルール出力部１０６は、上述の結果が未定義のルールの生成方法により、結果未定義範囲のルールを生成し、修正ルール集合に追加する。また、ルール出力部１０６は、オリジナルルール集合に含まれる全ルールと修正ルール集合に含まれる結果未定義範囲のルールとして追加したルールを除き、全ルールを削除する。
【００８８】
出力範囲オプションが条件範囲指定４１５の場合、ルール出力部１０６は、条件範囲指定４１５で指定された条件範囲に含まれるオリジナルルール集合と修正ルール集合のルールのみを残し、その他は削除する。オリジナルルール集合のルールの一部が、条件範囲に含まれる（当該ルールの条件部論理式が表す列ルール集合と条件範囲を表す列ルール集合が部分的に一致する）場合、ルール出力部１０６は、当該ルールをオリジナルルール集合から削除し、条件範囲から条件部論理式を生成し、当該ルールの条件部論理式を、当該条件部論理式の否定と当該ルールの条件部論理式を論理積で結合した条件部論理式に置き換えたルールを修正ルール集合に追加する。
【００８９】
出力範囲オプションが結果範囲指定４１６の場合、ルール出力部１０６は、結果範囲指定４１６で指定された結果範囲に含まれるオリジナルルール集合と修正ルール集合のルールのみを残し、その他は削除する。
【００９０】
次に、ルール出力部１０６は、ルール出力条件８０１のユーザ定義ルール活用モードに基づきルールを仕分ける（Ｓ１２０７）。ユーザ定義ルール活用モードが修正不可４２１の場合、ルール出力部１０６は、Ｓ１２０４において修正が加えられたオリジナルルール集合のルールを、オリジナルルール集合から削除し、修正ルール集合に追加する。また、ルール出力部１０６は、オリジナルルール集合に残っているすべてのルールを削除し、出力ルール保持部１５５の変更なしルール１１０１に登録する。ユーザ定義ルール活用モードが修正可４２２の場合、ルール出力部１０６は、オリジナルルール集合の全ルールを削除し、修正を許可されたルールを格納する集合である修正可ルール集合に追加する。ユーザ定義ルール活用モードが未活用４２３の場合、ルール出力部１０６は、オリジナルルール集合に含まれるすべてのルールを修正ルール集合に追加する。ユーザ定義ルール活用モードが個別設定４２４の場合、ルール出力部１０６は、オリジナルルール集合の各ルールに対応する個別設定の情報を確認し、ユーザ定義ルール活用モードが修正不可６１４であるルールのうちＳ１２０４において修正が加えられたルールをオリジナルルール集合から削除し、修正可ルール集合に追加する。また、ユーザ定義ルール活用モードが修正可６１５であるルールをオリジナルルール集合から削除し、修正可ルール集合に追加する。ユーザ定義ルール活用モードが未活用６１６であるルールをオリジナルルール集合から削除し、修正ルール集合に追加する。このようにルールを仕分けた後、ルール出力部１０６は、Ｓ１２０８に進む。
【００９１】
次に、ルール出力部１０６は、ルール出力条件８０１の出力単位を読み込み、結果項目単位４３１の場合、Ｓ１２０９に進み、結果項目組合せ単位４３２の場合、Ｓ１２１０に進む（Ｓ１２０８）。
【００９２】
Ｓ１２０９では、ルール出力部１０６は、結果項目単位のルールを生成する（Ｓ１２０９）。図１３を参照して、ルール出力部１０６の結果項目単位のルール生成の処理を説明する。
【００９３】
図１３は、ルール出力部１０６の結果項目単位のルール生成（Ｓ１２０９）の処理を示すフローチャートである。
【００９４】
ルール出力部１０６は、処理開始後、結果項目について未処理の要素値ｒ＿ｉｊを選択する（Ｓ１３００，Ｓ１３０１）。ここで、ｒ＿ｉｊは、結果項目Ｒｉのｊ番目の要素値を表す。未処理の要素値ｒ＿ｉｊを選択後、Ｓ１３０２に進む。
【００９５】
次に、ルール出力部１０６は、修正ルール集合から結果部論理式にｒ＿ｉｊを含むルールの条件部論理式を論理和で結合した論理式（以下、「条件部論理和結合式」という。）を生成する（Ｓ１３０２）。条件部論理和結合式は、結果がｒ＿ｉｊとなる条件を表す。条件部論理和結合式を生成後、Ｓ１３０３に進む。
【００９６】
次に、ルール出力部１０６は、条件部論理和結合式をＤＮＦ（Disjunctive Normal Form）と呼ばれる標準形に変換した論理式（以下、「条件部ＤＮＦ式」という。）を生成する（Ｓ１３０３）。条件部ＤＮＦ式は、条件項目の要素値と論理積からなる部品（以下、「条件部ＤＮＦ節」という。）を論理和で結合した式である。条件部論理和結合式から条件部ＤＮＦ式への変換は、例えば、命題論理におけるド・モルガンの法則、分配律などを適用することで実行することができる。また、ルール出力部１０６は、条件部ＤＮＦ式の長さが最小となるように変換する。これは、回路設計の分野で利用されている多段論理の最小化のアルゴリズムを活用することで実現できる。条件部ＤＮＦ式を生成後、Ｓ１３０４に進む。
【００９７】
次に、ルール出力部１０６は、各条件部ＤＮＦ節を条件部論理式に、ｒ＿ｉｊを結果部論理式としたルールを生成し、出力ルール保持部１５５の追加ルール１１０３に登録する（Ｓ１３０４）。登録後に、Ｓ１３０５に進む。
【００９８】
次に、ルール出力部１０６は、結果項目Ｒｉの未処理の要素値があるか否かを確認する（Ｓ１３０５）。未処理の要素値がある場合（Ｓ１３０５，Ｙｅｓ）、Ｓ１３０１に進み、未処理の要素値がない場合（Ｓ１３０５，Ｎｏ）、結果項目単位のルール生成処理は終了する（Ｓ１３０６）。
【００９９】
図１２のＳ１２１０では、ルール出力部１０６は、結果項目組合せ単位のルールを生成する（Ｓ１２１０）。図１４を参照して、ルール出力部１０６の結果項目組合せ単位のルール生成の処理を説明する。
【０１００】
図１４は、ルール出力部１０６の結果項目組合せ単位のルール生成の処理を示すフローチャートである。
【０１０１】
ルール出力部１０６は、処理を開始後、結果項目に関する未処理の要素値ｒ＿ｉｊを選択する（Ｓ１４００，Ｓ１４０１）。選択後、Ｓ１４０２に進む。
【０１０２】
次に、ルール出力部１０６は、修正ルール集合から結果部論理式にｒ＿ｉｊを含むルールの条件部論理式を論理和で結合した論理式（条件部論理和結合式）を生成する（Ｓ１４０２）。条件部論理和結合式を生成後、Ｓ１４０３に進む。
【０１０３】
次に、ルール出力部１０６は、結果項目に関する未処理の要素値があるか否かを確認する（Ｓ１４０３）。未処理の要素値がある場合（Ｓ１４０３，Ｙｅｓ）、ステップＳ１４０１に進み、未処理の要素値がない場合（Ｓ１４０３，Ｎｏ）、Ｓ１４０４に進む。
【０１０４】
次に、ルール出力部１０６は、結果項目の要素値の未処理の組合せ（∧ｒ＿ｉｘ）を選択する（Ｓ１４０４）。∧ｒ＿ｉｘは、各結果項目の要素値を論理積で結合した論理式を表す。この組合せには、要素値が未定義の結果項目を含む。例えば、結果項目Ｒ１とＲ２があり、それぞれ要素値として｛ｒ１１，ｒ１２｝｛ｒ２１，ｒ２２｝を取り得る場合、結果項目の要素値の組合せとしては、概念的には「未定義」という要素値を含むと考えられるため、それぞれ要素値を３個ずつ持つことになり、組合せは３×３＝９通り生じる。結果項目の要素値の未処理の組合せを選択後、Ｓ１４０５に進む。
【０１０５】
次に、ルール出力部１０６は、当該組合せの各要素値に対応する条件部論理和結合式を論理積で結合した論理式（以下、「組合せ条件部論理式」という。）を生成する（Ｓ１４０５）。組合せ条件部論理式を生成後、Ｓ１４０６に進む。
【０１０６】
次に、ルール出力部１０６は、組合せ条件部論理式の充足可能性を判定する（Ｓ１４０６）。充足可能と判定した場合（Ｓ１４０６，Ｙｅｓ）、Ｓ１４０７に進み、充足不能と判定した場合（Ｓ１４０６，Ｎｏ）、Ｓ１４０４に進む。
【０１０７】
次に、ルール出力部１０６は、組合せ条件部論理式をＤＮＦに変換した論理式（条件部ＤＮＦ式）を生成する（Ｓ１４０７）。条件部ＤＮＦ式の生成方法は、図１３のＳ１３０３と同様である。条件部ＤＮＦ式の生成後に、Ｓ１４０８に進む。
【０１０８】
次に、ルール出力部１０６は、各条件部ＤＮＦ節を条件部論理式に、∧ｒ＿ｉｘを結果部論理式としたルールを生成し、出力ルール保持部１５５の追加ルールに登録する（Ｓ１４０８）。登録後に、Ｓ１４０９に進む。
【０１０９】
次に、ルール出力部１０６は、結果項目の要素値の未処理の組合せがあるか否かを確認する（Ｓ１４０９）。未処理の組合せがあると判定した場合（Ｓ１４０９，Ｙｅｓ）、Ｓ１４０４に進み、未処理の組合せがないと判定した場合（Ｓ１４０９，Ｎｏ）、結果項目組合せ単位のルール生成処理は終了する（Ｓ１４１０）。
【０１１０】
続いて、図１２の処理フローに戻ると、ルール出力部１０６は、出力ルール保持部１５５の変更ありルール１１０２を生成する（Ｓ１２１１）。図１５を参照して、変更ありルール１１０２の生成処理を説明する。
【０１１１】
図１５は、本発明の実施形態における出力ルール保持部１５５の変更ありルール１１０２の生成の処理を示すフローチャートである。
【０１１２】
ルール出力部１０６は、処理開始後、修正可ルール集合から修正が加えられている未処理のルール（以下、この修正可ルール集合の中で修正が加えられているルールを「修正済ルール」という。）を選択する（Ｓ１５００，Ｓ１５０１）。修正済ルールを選択後、Ｓ１５０２に進む。修正済ルールは、「図１２のＳ１２０４においてユーザ定義ルールと決定表修正ルールとの間に不整合があり、かつ、ユーザが決定表修正ルールを優先することを選択した場合に、修正可とされているユーザ定義ルールに修正が加えられたルール」と定義される。
【０１１３】
次に、ルール出力部１０６は、修正済ルールの条件部論理式を論理式展開する（Ｓ１５０２）。論理式展開後に、Ｓ１５０３に進む。
【０１１４】
次に、ルール出力部１０６は、修正可オプション８０３の条件を満たすか否かを判定する。修正可オプション８０３の条件を満たすと判定した場合、ルール出力部１０６は、当該修正済ルールを修正可ルール集合から削除し、当該修正済ルールの条件部論理式を、論理式展開後の論理式に置き換えたルールを出力ルール保持部１５５の変更ありルール１１０２に登録する（Ｓ１５０３）。修正可オプション８０３の条件を満たさないと判定した場合、ルール出力部１０６は、当該修正済ルールを修正可ルール集合から削除し、当該修正済ルールの条件部論理式を、論理式展開後の論理式に置き換えたルールを出力ルール保持部１５５の追加ルール１１０３に登録する。修正済ルールを変更ありルール１１０２または追加ルール１１０３に登録後、Ｓ１５０４に進む。
【０１１５】
次に、ルール出力部１０６は、未処理の修正済ルールがあるか否かを確認する（Ｓ１５０４）。未処理の修正済ルールがあると判定した場合（Ｓ１５０４，Ｙｅｓ）、ルール出力部１０６はＳ１５０１に進み、未処理の修正済ルールがないと判定した場合（Ｓ１５０４，Ｎｏ）、Ｓ１５０５に進む。Ｓ１５０１〜Ｓ１５０４の修正済ルールに関する処理では、修正済ルールを論理式展開し、図５の評価指標に基づいて評価を実施し、修正の度合いが評価指標の許容範囲内であると判定されればそのルールを出力ルール保持部１５５に登録する。ユーザ定義ルールと決定表修正ルールとの間に不整合がある場合、そのまま修正可ルールを残して登録することはできない。しかし、両者間の不整合の部分を適切に排除することにより、前記集成果ルールを微修正して残すことができることがある。このような微修正で済むかどうかを、図５の評価指標に照らして判定している。
【０１１６】
次に、ルール出力部１０６は、出力ルール保持部１５５から未処理の追加ルール１１０３を選択し（Ｓ１５０５）、Ｓ１５０６に進む。
【０１１７】
次に、ルール出力部１０６は、当該追加ルール１１０３と、結果部論理式が一致する修正可ルール集合の各ルールについて、当該追加ルール１１０３の条件部論理式と修正可ルール集合の当該ルールの条件部論理式の論理和を計算する（計算結果の論理式を「修正後論理式」という。）（Ｓ１５０６）。当該追加ルール１１０３と、結果部論理式が一致する修正可ルール集合の各ルールについて、修正後論理式を生成した後、Ｓ１５０７に進む。
【０１１８】
次に、ルール出力部１０６は、修正可オプション８０３の条件を満たす修正後論理式がある場合、当該追加ルール１１０３を削除し、修正可オプション８０３の条件を満たす修正後論理式の中から、修正可オプション８０３の優先度に従い、最も優先度の高い修正後論理式を条件部論理式としたルールを出力ルール保持部１５の変更ありルール１１０２に追加する（Ｓ１５０７）。また、ルール出力部１０６は、追加したルールに対応する修正可ルール集合のルールを修正可ルール集合から削除する。変更ありルール１１０２に追加後、Ｓ１５０８に進む。また、修正可オプション８０３の条件を満たす修正後論理式がない場合もＳ１５０８に進む。
【０１１９】
次に、ルール出力部１０６は、未処理の追加ルール１１０３があるか否かを確認する（Ｓ１５０８）。未処理の追加ルール１１０３があると判定した場合（Ｓ１５０８，Ｙｅｓ）、Ｓ１５０５に進み、未処理の追加ルール１１０３がないと判定した場合（Ｓ１５０８，Ｎｏ）、Ｓ１５０９に進む。
【０１２０】
次に、ルール出力部１０６は、修正可ルール集合に残っているルールを出力ルール保持部１５５の変更なしルール１１０２に登録し（Ｓ１５０８）、変更ありのルール生成処理を終了する（Ｓ１５０９）。
【０１２１】
この後、ルール出力部１０６は、図１２において、ルール出力条件の出力ルール制約８０５に基づき、出力ルール保持部１５５の追加ルール１１０３を更新する（Ｓ１２１２）。例えば、出力ルール制約８０５として、条件値の否定を許可する４４１が有効な場合について説明する。この場合、出力ルール保持部１５５は、追加ルール１１０３の条件部論理式について、条件項目の取り得る要素値の１つ（ｒ＿ｉ１とする）を除いた要素値が論理和で結合されている（ｒ＿ｉ２∨ｒ＿ｉ３とする）要素を検索し、見つかった場合には当該論理和を¬ｒ＿ｉ１に置き換える。ルール出力部１０６は、出力ルールを更新後、処理を終了する（Ｓ１２１３）。
【０１２２】
続いて、図１６を参照して、本実施形態に係る出力ルール表示部１０７における出力ルール表示画面について説明する。
【０１２３】
図１６は、出力ルール表示部１０７における出力ルールの表示画面の例である。出力ルール表示画面１６００は、ＩＤ１６０１、種類１６０２、条件部１６０３、結果部１６０４などの表示項目を備える。ＩＤ１６０１は、当該出力ルールを識別する情報であり、ユーザ定義ルールと一致もしくはユーザ定義ルールに修正が加わったルールは、当該ユーザ定義ルールのルールＩＤと一致する。種類１６０２は、当該出力ルールの種類を表し、オリジナルのユーザ定義ルールから修正が加えられているか否か、新規に追加されたものかなどを識別する情報である。条件部１６０３は、当該出力ルールの条件部であり、オリジナルのユーザ定義ルールと差分がある場合は、その差分を識別する情報を含む。差分を識別する情報は、例えば、差分の箇所に下線を引いたり、他と異なる色にするなど、視覚的に識別できるようにする。また、ユーザの操作により、視覚的に他と異なるようにするか否かを選択可能としてもよい。結果部１６０４は、当該出力ルールの結果部を表す。差分の特定は、ルールＩＤが一致するユーザ定義ルール保持部１５３のユーザ定義ルール７０１と出力ルール保持部１５の変更ありルール１１０２を比較することで特定できる。このような情報を画面に出力することで、ユーザはどのユーザ定義ルールが修正されたのか、新たに追加されたルールは何か、修正が加わったルールはどの部分に変更が加わったのか、といったことを容易に理解できる。
【０１２４】
続いて、図１７を参照して、本発明の実施形態に係るルール出力部１０６の処理の実行例を説明する。
【０１２５】
図１７は、本実施例におけるルール出力部１０６の処理のインプットとなる情報であり、ユーザ定義ルール１７１０、決定表修正ルール１７２０、および決定表１７３０を含む。ユーザ定義ルール１７１０は、図２のユーザ定義ルールデータ２３０を説明の簡略化のため内部表現の記号で表現している。決定表修正ルール１７２０は、決定表１７３０の黒丸「●」部分のルールを内部表現の記号で表現している。決定表１７３０は、決定表３００の条件項目、結果項目、条件要素値、結果要素値を内部表現の記号で表現している。
【０１２６】
図１７に示す例では、ルール出力条件８０１は、出力範囲オプションが結果定義済み範囲すべて４１２、ユーザ定義ルール活用モードが修正可４２２、出力単位が結果項目組合せ単位４３２、出力ルール制約はなし、と設定されている。また、修正可オプション８０３の設定は、図５に示す通りである。
【０１２７】
上記前提の場合、図１２のＳ１２０７の終了時点で、ルール出力部１０６は、ユーザ定義ルール１７１０のすべてを修正可ルール集合に追加し、決定表修正ルール１７２０のすべてを修正ルール集合に追加している。
【０１２８】
次に、ルール出力部１０６は、ルール出力条件８０１の出力単位の確認の結果、Ｓ１２１０の処理を実行する。Ｓ１２１０の処理は、図１４で示す通りである。ルール出力部１０６は、Ｓ１４０１からＳ１４０３の実行により、結果要素値Ｒ１１とＲ２２に係る以下の２つの条件部論理和結合式を生成する。
【０１２９】
結果要素値Ｒ１１に係る条件部論理和結合式：
（Ｃ１１∧Ｃ２３∧Ｃ３２）∨（Ｃ１２∧Ｃ２１∧Ｃ３１）
結果要素値Ｒ２２に係る条件部論理和結合式：
Ｃ１１∧Ｃ２３∧Ｃ３２
【０１３０】
次に、ルール出力部１０６は、Ｓ１４０４からＳ１４０６の実行により、以下の組合せ条件部論理式を生成する。
（（Ｃ１１∧Ｃ２３∧Ｃ３２）∨（Ｃ１２∧Ｃ２１∧Ｃ３１））∧（Ｃ１１∧Ｃ２３∧Ｃ３２）
【０１３１】
次に、ルール出力部１０６は、Ｓ１４０７の実行により、前記組合せ条件部論理式から以下の条件部ＤＮＦ式を生成する。
Ｃ１１∧Ｃ２３∧Ｃ３２
【０１３２】
次に、ルール出力部１０６は、Ｓ１４０８の実行により、以下の条件部論理式と結果部論理式を持つルールを追加ルールに登録する。
条件部論理式：Ｃ１１∧Ｃ２３∧Ｃ３２
結果部論理式：Ｒ１１∧Ｒ２２
【０１３３】
次に、ルール出力部１０６は、Ｓ１４０９を実行した後、Ｓ１２１１を実行する。Ｓ１２１１の処理は、図１５に示す通りである。図１７に示す例では、修正済ルールが存在しないため、ルール出力部１０６は、Ｓ１５０１からＳ１５０４の処理をスキップする。
【０１３４】
次に、ルール出力部１０６は、Ｓ１５０５からＳ１５０６の実行により、修正可ルール集合の中から上記追加ルールと結果部論理式が一致するルールを取得する。図１７に示す例では、ユーザ定義ルール１７１１が該当する。さらに、ルール出力部１０６は、上記追加ルールの条件部論理式とユーザ定義ルール１７１１の条件部論理式の論理和を計算し、以下の修正後論理式を生成する。
Ｃ１１∧（Ｃ２１∨Ｃ２３∨Ｃ３１）
【０１３５】
次に、ルール出力部１０６は、Ｓ１５０７において、修正可オプション８０３に基づき修正後論理式を評価する。図１７に示す例では、修正後論理式は１つであるため、当該修正後論理式が修正可オプション８０３の条件を満たすかを判定する。各評価指標の評価値を計算すると、追加された要素数は、「Ｃ２３」が追加されているのみなので「１」であり、下限と上限の条件を満たす。また、削除された要素数は「０」であり、下限と上限の条件を満たす。全体の要素数については下限と上限がないため条件を満たす。よって、修正可オプション８０３の各評価指標の条件を満たすため、ルール出力部１０６は、上記修正後論理式を条件部論理式、結果部論理式をＲ１１∧Ｒ２２とするルールを変更ありルール１１０２に追加する。
【０１３６】
次に、ルール出力部１０６は、残りの処理を実行し、処理を終了する。ルール出力部１０６の処理終了後に出力ルール表示部１０７を実行した結果は、図１６に示す通りである。ＩＤが１のルールに修正が加えられ、ＩＤがＡ１のルールが追加されていることがひと目でわかる。
【０１３７】
第２の実施形態
次に、本発明の第２の実施形態について説明する。本実施形態では、ユーザが定義したルールの管理を支援する装置の例を説明する。
【０１３８】
図１８は、本発明の第２実施形態に係るルール管理支援装置１８００の構成図の例である。本実施形態では、ルール管理支援装置１００のうち、決定表３００を使用する処理部が省略されており、ユーザ定義ルール入力部１０１、ルール出力条件指定部１０５、ルール出力部１０６、出力ルール表示部１０７、および出力ルール反映部１０８などの機能ロジックと、ユーザ定義ルール保持部１５３、ルール出力条件保持部１５４、および出力ルール保持部１５５のデータをメモリ１７０に保管している。
【０１３９】
各機能ロジックとデータは、第１実施形態と同様であるため、各機能ロジックとデータの説明は省略する。本実施形態の特徴は、ユーザ定義ルールのみを扱う点である。このような構成により、ＩＦ−ＴＨＥＮ形式のユーザ定義ルール主体で、ルールを管理できる。実施例１における決定表の修正操作は、ユーザ定義ルールの追加で代替できる。また、ユーザ定義ルール活用モードをユーザ定義ルール毎に個別設定することで、例えば、レビュー後に追加したユーザ定義ルールのみを対象として出力ルールを生成することが可能である。
【０１４０】
以上説明した本発明の実施形態によれば、根拠情報との追跡性確保、ルール数の最小化を実現しつつ、仕様変更に伴う修正を容易に実行できるようにするルール管理支援装置等を提供することができる。
【０１４１】
なお、本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば，上記した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、実施形態の構成の一部を他の構成に置き換えることが可能であり、また、ある実施形態の構成に他の構成を加えることも可能である。
【符号の説明】
【０１４２】
１００，１８００  ルール管理支援装置
１０１  ユーザ定義ルール入力部
１０２  決定表変換部
１０３  決定表表示部
１０４  決定表編集部
１０５  ルール出力条件指定部
１０６  ルール出力部
１０７  出力ルール表示部
１０８  出力ルール反映部
１５１  決定表修正ルール保持部
１５２  決定表保持部
１５３  ユーザ定義ルール保持部
１５４  ルール出力条件保持部
１５５  出力ルール保持部
１６０  プロセッサ
１７０  メモリ
１８０  入出力装置
２００  ルール出力条件設定画面
５００  修正可オプション設定画面
６００  ユーザ定義ルール個別オプション設定画面
１６００  出力ルール表示画面
【図１】
2015191418.tif 000003
【図３】
2015191418.tif 000004
【図４】
2015191418.tif 000005
【図５】
2015191418.tif 000006
【図６】
2015191418.tif 000007
【図７】
2015191418.tif 000008
【図８】
2015191418.tif 000009
【図９】
2015191418.tif 000010
【図１０】
2015191418.tif 000011
【図１１】
2015191418.tif 000012
【図１２】
2015191418.tif 000013
【図１３】
2015191418.tif 000014
【図１４】
2015191418.tif 000015
【図１５】
2015191418.tif 000016
【図１８】
2015191418.tif 000017
【図２】
2015191418.tif 000018
【図１６】
2015191418.tif 000019
【図１７】
2015191418.tif 000020