JP6205512B2 - ルール管理支援装置、およびルール管理支援方法 - Google Patents

ルール管理支援装置、およびルール管理支援方法 Download PDF

Info

Publication number
JP6205512B2
JP6205512B2 JP2016574570A JP2016574570A JP6205512B2 JP 6205512 B2 JP6205512 B2 JP 6205512B2 JP 2016574570 A JP2016574570 A JP 2016574570A JP 2016574570 A JP2016574570 A JP 2016574570A JP 6205512 B2 JP6205512 B2 JP 6205512B2
Authority
JP
Japan
Prior art keywords
rule
change
input
result
unit
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.)
Expired - Fee Related
Application number
JP2016574570A
Other languages
English (en)
Other versions
JPWO2016129073A1 (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
Publication of JPWO2016129073A1 publication Critical patent/JPWO2016129073A1/ja
Application granted granted Critical
Publication of JP6205512B2 publication Critical patent/JP6205512B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、ルール管理支援装置、およびルール管理支援方法に関する。
ソフトウェアは、処理対象となる製品、サービス等の業務に関する法的な規制、種々の業務上の規則、基準等に従って仕様が決定され設計される。ソフトウェアの仕様を、IF−THEN形式で整理する場合がある。IF−THEN形式の仕様(以下、IF節を「条件部」、THEN節を「結果部」という。)は、ビジネスルール、システムルール、チェックルールなど利用するフェーズに応じて様々な呼び名がある(以下、これらをすべて「ルール」という。また、複数のルールの集まりを「ルールセット」という。)。ルールは、「もし〜ならば〜である」というように自然文で記述したり、「IF A=1 AND B=2 THEN R=1」というように機械解釈可能な一定の規則に従って記述したり、条件と結果の対応関係を表形式で定義した決定表で記述したり、などさまざまな形態で表現される。例えば、命題形式の記述と決定表とを連携させてルールを定義する方法が、特許文献1で開示されている。
ソフトウェアに組み込まれるルールは、ルールの入力となる入力項目とルールの出力となる出力項目をもつ。ルールの条件部は、入力項目を活用した論理式として表現され、ルールの結果部は、出力項目を活用した論理式として表現できる。
複数のルールが混在した場合、ルール間に不整合や、入力のパターン考慮漏れなどが発生する場合がある。特許文献1では、命題形式のルール間の不整合や考慮もれを検出する方法が開示されている。
また、法改正や業務規則の変更に伴い、ソフトウェアに組み込まれているルールセットも変更する必要がある。この場合、一部の入力と出力の関係が変わり、残りは変更前と同様な場合がほとんどである。また、ルールセットの理解容易性の向上などを目的に、入力と出力の関係を保持したまま、ルールセットを変更する場合がある。変更を行った場合、入力と出力の関係が変更前と変更後で維持されるべき部分が維持されていること(以下、「等価性」という。)を確認する必要がある。等価性を確認する方法としては、変更前のテストケースを保存しておき、変更後のルールセットに対して、同じテストケースを適用することで確認する方法が、特許文献2で開示されている。
特開2012−190203号公報 US2009/0112654
特許文献1を活用することで、ルール間の不整合や考慮漏れを検出できるが、変更前と変更後のルールセット間の等価性を検証する方法を開示していない。
また、特許文献2で開示されている技術により、変更後のルールセットに対して、変更前のテストケースを適用して、テストを実行することで、不要な変更が加えられていないかテストした範囲において確認できる。しかし、ソフトウェア仕様の変更により、テストが失敗する場合と、誤ってルールを変更したことにより、テストが失敗する場合が混在してしまうため、失敗したテストケースを1つ1つ人が確認する必要がある。また、特許文献2で開示されている技術は、サンプリングテストに基づくものであるため、変更が加えられてはいけない部分が影響を受けていないことを保証できない。
上記の課題に鑑み、本発明では、変更前と変更後のルールセットの等価性の確認を容易に実行できるようにするルール管理支援装置、およびルール管理支援方法を提供することを目的とする。
ソフトウェア仕様の開発におけるルールの管理を支援するための装置であって、前記ルールが成立するための条件を格納する条件部と前記条件が成立した場合の結果を格納する結果部とを含む1以上の入力ルールを含む入力ルールセットを受け付けるための入力ルール編集部と、前記入力ルールセットと変更前のルールセットである変更前ルールセットとを比較検証するルール等価性検証部とを備え、前記入力ルール編集部は、入力と出力の関係を変更後においても維持する変更前の入力ルールである等価性維持ルールを指定する等価性維持ルールオプション指定部を備え、前記ルール等価性検証部は、前記等価性維持ルールオプション指定部を参照して、前記等価性維持ルールの条件部を満たす入力に対して、前記入力ルールセットが前記等価性維持ルールと同一の出力を返すか否かを判定した結果を出力することを特徴とするルール管理支援装置。
本発明の実施形態によれば、変更前と変更後のルールセットにおいて、入力と出力の関係が維持されるべき部分が維持されていることの確認を容易に実行できるようにするルール管理支援装置、およびルール管理支援方法を提供することができる。
本発明に係るルール管理支援装置100の構成図の例である。 入力ルール保持部121のデータ構造の例である。 比較結果保持部122のデータ構造の例である。 テストケース保持部123のデータ構造の例である。 ルール編集画面500の例である。 対応関係判定部103の処理例を示すフローチャートである。 ルール等価性検証部104の処理例を示すフローチャートである。 ルール補正部105の処理例を示すフローチャートである。 ルール補正部105の変更ルール優先補正処理例を示すフローチャートである。 ルール補正部105の等価性維持ルール優先補正処理例を示すフローチャートである。 テストケース編集画面1100の例である。 ルールテスト実行部112の処理例を示すフローチャートである。 テストケース補正部113の処理例を示すフローチャートである。
以下、本発明について、その実施形態に則して、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている諸要素およびその組み合わせの全てが発明の解決手段に必須であるとは限らない。
本実施形態では、ユーザが定義したルールの変更を支援する装置の例を説明する。
図1は、本実施形態に係るルール管理支援装置100の構成図の例である。ルール管理支援装置100は、少なくともCPU(Central Processing Unit)等のプロセッサ131、RAM(Random Access Memory)、ROM(Read Only Memory)等のメモリ132、補助記憶装置133、およびキーボード、表示モニタ等の入出力装置134を備えたコンピュータである。ルール管理支援装置100は、入力ルール編集部101、ルール整合性検証部102、対応関係判定部103、ルール等価性検証部104、ルール補正部105、検証結果出力部106、テストケース編集部111、ルールテスト実行部112、テストケース補正部113、およびテスト実行結果出力部114などの機能ロジックを備える。これらの機能ロジックはコンピュータプログラムとして実現されており、メモリ132上でプロセッサ131により実行される。また、ルール管理支援装置100は、入力ルール保持部121、比較結果保持部122、およびテストケース保持部123などのデータを、補助記憶装置133に保管している。これらのデータは、プロセッサ131が前記機能ロジックを実行する際に補助記憶装置133から読みだして使用する。
入力ルール編集部101は、ユーザが追加、変更、または削除したルール、ユーザが選択したルール編集モード、および前記ルール編集モードを適用する変更前のルールに関する情報を受け付け、入力ルール保持部121に登録する。ルール編集モードとは、ユーザが選択する変更前のルールに関する種類であり、本実施形態では、「変更対象指定」「等価性維持対象指定」「変更内容優先」のいずれかの値である。
次に、ルール整合性検証部102は、入力ルール保持部121に登録されているルール間に不整合があるか否かを検証する。ルール間の不整合とは、ある入力が複数のルールの条件部を満たす場合、結果部を満たす出力値が存在しない場合である。例えば、「IF A=1 THEN R=1」と「IF B=1 THEN R=2」という2つのルールがあったとする。2つのルールの条件部は、「A=1、B=1」という入力を満たすが、結果部が一方は「R=1」で、もう一方は「R=2」であり、これら2つを満たすRの値が存在しないため、これら2つのルールは不整合となる。ルール間の不整合の判定方法については、例えば、特許文献1において充足可能性判定を用いた方法が開示されている。
次に、対応関係判定部103は、変更前のルール(以下、「変更前ルール」という。)と変更後のルール(以下、「変更後ルール」という。)の対応関係を判定し、判定結果を比較結果保持部122に登録する。
次に、ルール等価性検証部104は、変更前のルールセット(以下、「変更前ルールセット」という。)の入力と出力の関係が、変更後のルールセット(以下、「変更後ルールセット」という。)において維持されているか否かを、変更前ルール毎に検証し、その結果を比較結果保持部122に登録する。また、変更前ルールのうち、変更後ルールセットにおいて入力と出力の関係が維持されるべきルール(以下、「等価性維持ルール」という。)を、入力ルール編集部101が受け付けた情報に基づき判定した結果を比較結果保持部122に登録する。
次に、ルール補正部105は、ルール等価性検証部104の検証の結果、等価性維持ルールと入力と出力の関係が維持されていない変更後ルールについて、等価性維持ルールと入力と出力の関係が維持されるように変更後ルールの補正案を生成する。また、ルール編集モードが「変更内容優先」の場合、ルール整合性検証部102の検証の結果、変更後ルール間に不整合がある変更後ルールについて、その不整合を解消する補正案を生成する。
次に、検証結果出力部106は、ルール整合性検証部102およびルール等価性検証部104による検証結果を画面やファイルなどに出力する。
次に、テストケース編集部111は、ユーザが追加、変更、または削除したテストケースを受け付け、テストケース保持部123に登録する。
次に、ルールテスト実行部112は、テストケース保持部123に登録されているテストケース情報に基づき、テストを実行する。
次に、テストケース補正部113は、ルールテスト実行部112によるテストの実行の結果、失敗したテストケースについて、その補正案を画面やファイルなどに出力する。
次に、テスト実行結果出力部114は、テストケース保持部123に登録されているテスト結果を画面やファイルなどに出力する。
続いて、図2を参照して、本実施形態に係る入力ルール保持部121のデータ構造の例について説明する。図2に示すように、入力ルール保持部121は、ルールセット情報201、ルール情報202、編集モード適用ルール情報203、および不整合ルール情報204といったエンティティを有する。図2の各エンティティは、2つの四角形から構成されており、上の四角形内に示す名前はエンティティ名を表し、下の四角形内に示す名前は当該エンティティの属性名を表している。また、エンティティ間の関連は、ひし形と実線を結んで表し、ひし形側のエンティティと実線側のエンティティは、1対多の関係にあることを表す。以下、他のデータ構造の図についても同様に記載している。
図2において、ルールセット情報201は、ルールセットに関する情報として、ルールセットID、変更前ルールセットID、ルール編集モード、および整合性判定結果といった属性を有するエンティティである。ルールセットIDは、入力ルール保持部121においてユニークな識別子である。例えば、ルールセットIDとして、数値を利用し、ルールセットを編集する度に、1を加えた値を変更後のルールセットのルールセットIDとする。これにより、ルールセットIDを比較することで、どちらが新しいルールセットかを特定できる。変更前ルールセットIDは、当該ルールセットの変更前のルールセット情報201のルールセットIDである。変更前のルールセット情報201が存在しない場合は、「NULL」を指定する。ルール編集モードは、入力ルール編集部101が受け付けたルール編集モードであり、本実施形態では、「変更対象指定」「等価性維持対象指定」「変更内容優先」のいずれかの値である。整合性判定結果は、変更後ルールセットの整合性の判定結果であり、本実施形態では、「整合」「不整合」「未判定」のいずれかの値である。なお、どちらのルールセットが新しいかどうかの判定は、ルールセットIDを用いる以外に、作成日など他の情報をルールセット情報201に含めて判定してもよい。ルールセット情報201は、ルールセットの変更履歴の管理に利用でき、1つのルールセット情報201が1つの履歴に対応する。
次に、ルール情報202は、ルールセットに含まれるルールに関する情報として、ルールID、条件部論理式、結果部論理式、および編集ラベルといった属性を有するエンティティである。ルールIDは、当該ルールセットの中でユニークな識別子である。条件部論理式は、ルールの条件部を表す論理式であり、入力項目、入力項目が取り得る値、比較演算子(等式演算子を含む)、四則演算子、論理演算子などの組合せで表現される。結果部論理式は、ルールの結果部を表す論理式であり、入力項目、出力項目、出力項目が取り得る値、等式演算子、四則演算子、論理積演算子などの組合せで表現される。なお、本実施形態では、条件部論理式および結果部論理式を構成する最小単位である「左辺式 比較演算子 右辺式」を「項」と呼称する。ここで、左辺式および右辺式は、入力項目、入力項目が取り得る値、出力項目、出力項目が取り得る値、および四則演算子などを利用して構成される式である。例えば、「A」「A+1」「1」などが左辺式または右辺式であり、「A=1」「A=B+1」などが項である。なお、結果部論理式に含まれる項の左辺式は必ず出力項目である。編集ラベルは、ルールが変更前ルールから変更されたか否かなどを示す情報であり、本実施形態では、「追加」「変更」「変更なし」のいずれかの値であり、入力ルール編集部101により設定される。「変更」または「変更なし」は、条件部論理式と結果部論理式を文字列として表現した場合に、変更前ルールと完全一致している場合が「変更なし」であり、それ以外は、「変更」である。
次に、編集モード適用ルール情報203は、入力ルール編集部101が受け付けた、ユーザが選択したルールに関する情報として、変更前ルールIDといった属性を有するエンティティである。変更前ルールIDは、変更前ルールうち、ユーザが選択した変更前ルールのルールIDである。
次に、不整合ルール情報204は、ルール情報202の変更後ルールが他の変更後ルールと不整合となる場合に存在するエンティティであり、前記他のルールに関する情報として、ルールIDといった属性を有する。ルールIDは、前記他のルールに対応するルール情報202のルールIDである。本実施形態では、2つのルールの条件部論理式の論理積が充足可能であり、かつ、結果部論理式の論理積が充足不能な場合、前記2つのルールは不整合であるとみなす。2つのルールが不整合であるか否かの判定は、ルール整合性検証部102が行い、不整合となるルール情報を、入力ルール保持部121の不整合ルール情報204に記憶する。
続いて、図3を参照して、本実施形態に係る比較結果保持部122のデータ構造の例について説明する。図3に示すように、比較結果保持部122は、ルールセット比較結果情報301、ルール比較結果情報302、および関連変更後ルール情報303といったエンティティを有する。
図3において、ルールセット比較結果情報301は、変更前ルールセットと変更後ルールセットの比較結果に関する情報として、ルールセットID、および等価性判定結果といった属性を有するエンティティである。ルールセットIDは、変更後ルールセットの識別子であり、変更後ルールセットに対応するルールセット情報201のルールセットIDである。等価性判定結果は、変更前ルールセットと変更後ルールセットの比較結果であり、本実施形態では、「等価」「非等価」「未判定」のいずれかの値である。変更前ルールセットは、変更後ルールセットに対応するルールセット情報201の変更前ルールセットIDを参照することで特定できる。
次に、ルール比較結果情報302は、変更前ルールと変更後ルールの比較結果に関する情報として、変更前ルールID、等価性維持フラグ、等価性判定結果、および完全性判定結果といった属性を有するエンティティである。変更前ルールIDは、変更前ルールの識別子である。等価性維持フラグは、変更前ルールが等価性維持ルールであるか否かを示す情報であり、本実施形態では、「TRUE」「FALSE」「UNKNWON」のいずれかの値である。等価性判定結果は、変更前ルールと変更後ルールの等価性の判定結果であり、本実施形態では、「完全等価」「等価」「部分等価」「非等価」「未判定」のいずれかの値である。完全性判定結果は、変更前ルールの条件部を満たす全ての入力値の組合せに対して、関連変更後ルール情報303に関連するいずれかの変更後ルールの条件部を満たすか否かに関する情報であり、本実施形態では、「漏れあり」「漏れなし」「未判定」のいずれかの値である。「漏れあり」の場合、変更前ルールの条件を満たすが、いずれの変更後ルールの条件部も満たさない入力値の組合せが存在することを表す。「漏れなし」の場合、変更前ルールの条件部を満たす全ての入力値の組合せに対して、いずれかの変更後ルールの条件部を満たす。
次に、関連変更後ルール情報303は、ルール比較結果情報302の変更前ルールIDに対応する変更前ルールと対応関係がある変更後ルールに関する情報として、変更後ルールID、および整合性判定結果といった属性を有するエンティティである。変更後ルールIDは、ルール比較結果情報302の変更前ルールIDに対応する変更前ルールと対応関係がある変更後ルールの識別子である。整合性判定結果は、ルール比較結果情報302の変更前ルールIDに対応する変更前ルールと、変更後ルールIDに対応する変更後ルールとの整合性の判定結果であり、「整合」「不整合」「未判定」のいずれかの値である。
続いて、図4を参照して、本実施形態に係るテストケース保持部123のデータ構造の例について説明する。図4に示すように、テストケース保持部123は、テストケースバージョン情報401、テストケース情報402、テスト結果情報403、および実行ルール情報404といったエンティティを有する。
図4において、テストケースバージョン情報401は、テストケースのバージョンを管理する情報として、テストケースバージョンIDといった属性を有するエンティティである。例えば、テストケースバージョンIDとして、数値を利用し、テストケースのバージョンを上げる度に、1を加えた値を新しいバージョンのテストケースバージョンIDとする。これにより、テストケースバージョンIDを比較することで、どちらが新しいテストケースかを特定できる。なお、どちらのテストケースが新しいかどうかの判定は、テストケースバージョンIDを用いる以外に、作成日など他の情報をテストケースバージョン情報401に含めて判定してもよい。
次に、テストケース情報402は、個々のテストケースを管理する情報として、テストケースID、テストケースラベル、入力値条件、および期待値条件といった属性を有するエンティティである。テストケースIDは、テストケース保持部123においてユニークな識別子である。テストケースラベルは、テストケースの種類を示す情報であり、本実施形態では、「必須」「推奨」「一般」のいずれかの値である。テストケースラベルは、テストケース編集部111により設定される。入力値条件は、テストケースの入力値の条件を表す論理式である。入力値条件としては、例えば、「Age=30 AND Rank=Gold」「Age>=35」など任意の論理式を指定できる。期待値条件は、テストケースの期待値の条件を表す論理式である。期待値条件としては、例えば、「Discount=5」「Discount<20」などの任意の論理式を指定できる。
次に、テスト結果情報403は、テストを実行した結果に関する情報として、対象ルールセットID、テスト結果、およびテスト日時といった属性を有するエンティティである。対象ルールセットIDは、テスト対象のルールセットの識別子である。テスト結果は、テストを実行した結果であり、本実施形態では、「OK」「NG」「WARN」のいずれかの値である。テスト日時は、テストを実行した日付と時間に関する情報である。
次に、実行ルール情報404は、当該テストケースをテストする際に実行したルールに関する情報として、ルールIDといった属性を有するエンティティである。ルールIDは、当該テストケースをテストする際に実行したルールの識別子である。
続いて、図5を参照して、本実施形態に係るルールの編集画面の例について説明する。ルール編集画面500は、入力ルール編集部101におけるユーザからの入力を受け付けると共に、検証結果出力部106において検証結果を表示する。
図5に示すように、ルール編集画面500は、ルール編集エリア510、変更前ルール表示エリア550などの領域、および検証ボタン570を含む。
ルール編集エリア510は、ルールの追加、変更、および削除などのルールを編集する領域であり、ID512、条件部513、結果部514、等価性515、および整合性516といった項目を持つ変更後ルール一覧511と、追加ボタン521、削除ボタン522、および補正案表示ボタン523といったボタンを有する。
ID512は、変更後ルールの識別子である。条件部513は、変更後ルールの条件部を表す論理式である。結果部514は、変更後ルールの結果部を表す論理式である。
等価性515は、変更後ルールと等価性維持ルールとの等価性の検証結果であり、ユーザが検証ボタン570を押下することで、検証結果出力部106が値を設定する。検証結果出力部106は、関連変更後ルール情報303の変更後ルールIDがID512と一致する関連変更後ルール情報303と、前記関連変更後ルール情報303を持つルール比較結果情報302のペアについて、すべてのペアの前記関連変更後ルール情報303の整合性判定結果が「整合」であり、かつ、前記ルール比較結果情報302の等価性維持フラグが「TURE」の場合、等価性515に「等価」を設定し、前記関連変更後ルール情報303の整合性判定結果が「不整合」であり、かつ、前記ルール比較結果情報302の等価性維持フラグが「TURE」であるペアを含む場合、等価性515に「非等価」を設定し、その他の場合には等価性判定の対象外を示す「−」を設定する。
整合性516は、変更後ルール間での整合性の検証結果であり、ユーザが検証ボタン570を押下することで、検証結果出力部106が不整合となるルールのIDを設定する。検証結果出力部106は、ルール情報202のルールIDがID512と一致するルール情報202について、不整合ルール情報204がない場合、不整合となるルールがないことを示す「−」を設定し、不整合ルール情報204が1以上ある場合は、不整合ルール情報204のルールIDを整合性516に設定する。不整合ルール情報204が複数ある場合は、カンマ(,)で区切るなどして、全ての不整合ルール情報204のルールIDを設定する。
追加ボタン521は、新規にルールを追加するためボタンであり、ユーザが追加ボタン521を押下することで、入力ルール編集部106が変更後ルール一覧511に空のルールを追加する。ユーザは、追加された空のルールもしくは既存のルールを選択することで、ルールの条件部および結果部を編集できる。削除ボタン522は、変更後ルール一覧511のルールを削除するためのボタンであり、ユーザが変更後ルール一覧511のルールを選択し、削除ボタン522を押下することで、入力ルール編集部106が、ユーザが選択したルールを削除する。補正案表示ボタン523は、等価性や整合性の検証で不備が見つかった場合に、その不備を解消するための補正案を表示するためのボタンであり、ユーザが補正案表示ボタン523を押下することで、ルール補正部105が補正案を表示する。
変更前ルール表示エリア550は、変更前ルールを表示する領域であり、ルール編集モード551を選択する領域と、ID562、対象563、条件部564、結果部565、等価性566、および完全性567といった項目を持つ変更前ルール一覧561を有する。ルール編集モード551は、変更前ルール一覧561から、ユーザが選択するルールの種類であり、本実施形態では、「変更対象指定」「等価性維持対象指定」「変更内容優先」のいずれかを選択できる。ID562は、変更前ルールの識別子である。対象563は、ユーザが選択したルールであるか否かを示すフラグである。条件部564は、変更前ルールの条件部を表す論理式である。結果部565は、変更前ルールの結果部を表す論理式である。
等価性566は、変更前ルールと変更後ルールの等価性の検証結果であり、ユーザが検証ボタン570を押下することで、検証結果出力部106が値を設定する。検証結果出力部106は、ルール比較結果情報302の変更前ルールIDがID562と一致するルール比較結果情報302について、ルール比較結果情報302の等価性維持フラグが「TRUE」である場合、ルール比較結果情報302の等価性判定結果の値を等価性566に設定する。ルール比較結果情報302の等価性維持フラグが「FALSE」または「UNKNOWN」である場合、等価性判定の対象外であることを示す「−」を設定する。
完全性567は、変更前ルールの条件部を満たす全ての入力値の組合せに対して、いずれかの変更後ルールの条件部を満たすか否かを検証した結果であり、ユーザが検証ボタン570を押下することで、検証結果出力部106が値を設定する。検証結果出力部106は、ルール比較結果情報302の変更前ルールIDがID562と一致するルール比較結果情報302の完全性判定結果が「漏れあり」の場合、完全性567に「NG」を設定し、「漏れなし」の場合、完全性567に「OK」を設定する。
検証ボタン570は、ユーザが押下することで、ルール整合性検証部102、対応関係判定部103、およびルール等価性検証部104が順次実行され、検証結果出力部106が、入力ルール保持部121および比較結果保持部122を参照し、等価性515、整合性516、等価性566、および完全性567に検証結果を出力する。なお、検証の結果、非等価、不整合、および漏れありといった不具合を検出した場合、検証結果出力106は、不具合が発生する入力値の組合せを出力するようにしてもよい。例えば、SMT(Satisfiability Modulo Theories)ソルバを活用することで、前記入力値の組合せを取得できる。
次に、ルール編集モード551の各選択子が選択された場合の検証結果出力部106の振る舞いを説明する。
「変更対象指定」が選択された場合、検証結果出力部106は、ユーザが選択していない変更前ルールを等価性維持ルールとみなし、等価性維持ルールと等価か否かの情報を変更後ルール一覧511の等価性515に設定する。等価性維持ルールと対応関係がない変更後ルールの等価性515は等価性検証の対象外を示す「−」を設定する。また、検証結果出力部106は、変更前ルール一覧561の等価性566にも変更後ルールが等価性維持ルールと等価であるか否かの情報を設定する。等価性維持ルールでない等価性566には、等価性検証の対象外を示す「−」を設定する。また、検証結果出力部106は、変更後ルール一覧511の整合性516、および変更前ルール一覧561の完全性567に各検証結果を設定する。
「等価性維持対象指定」が選択された場合、検証結果出力部106は、ユーザが選択した変更前ルールを等価性維持ルールとみなし、「変更対象指定」が設定された場合と同様の処理を行う。
「変更内容優先」が選択された場合、検証結果出力部106は、等価性の検証結果は出力せず、変更後ルール一覧511の整合性516、および変更前ルール一覧561の完全性567に各検証結果を設定する。
続いて、図6を参照して、本発明の実施形態に係る対応関係判定部103の処理について説明する。図6は、本実施形態に係る対応関係判定部103の処理例を示すフローチャートである。なお、図中の符号Sはステップを表す(以下本明細書中で同様)。
まず、対応関係判定部103は、ユーザによる入出力装置134の操作、バッチ処理などにより処理の実行を開始する(S600)。対応関係判定部103は、変更前ルールセットと変更後ルールセットを読み込む(S601)。対応関係判定部103は、ルールセット情報201を参照し、最新のルールセット情報201を特定し、前記ルールセット情報201、前記ルールセット情報201に関連するルール情報202、および編集モード適用ルール情報203を読み込む。また、対応関係判定部103は、前記ルールセット情報201の変更前ルールセットIDを参照し、変更前ルールセットを特定し、対応するルールセット情報201およびルール情報202を読み込む。
次に、対応関係判定部103は、変更前ルールセットから変更前ルールを1つ取得する(S602)。
次に、対応関係判定部103は、変更後ルールのうち、変更後ルールの条件部と前記変更前ルールの条件部との論理積が、充足可能な全ての変更後ルールを特定する(S603)。図5に示す変更前ルールと変更後ルールの例では、ID562がB1の変更前ルールをS602で選択したとすると、{B1,A1}{B1,A2}{B1,A3}{B1,A4}の各変更前ルールと変更後ルールのペアについて、それぞれの条件部の論理積の充足可能性を判定する。充足可能性の判定には、例えば、SMT(Satisfiability Modulo Theories)ソルバを利用できる。
次に、対応関係判定部103は、S603において、充足可能と判定された前記変更後ルールについて、前記変更前ルールの結果部の出力項目を含む前記変更後ルールを特定し、変更前ルールと変更後ルールの対応関係を比較結果保持部122に記憶する(S604)。対応関係判定部103は、ルール比較結果情報302を作成し、ルール比較結果情報302の変更前ルールIDに前記変更前ルールの識別子を設定し、ルール比較結果情報302の等価性維持フラグに、前記変更前フラグが等価性維持ルールであるか否かの情報を設定する。前記変更前ルールが等価性維持ルールであるか否かは、入力ルール保持部121のルールセット情報201のルール編集モード、および編集モード適用ルール情報203の変更前ルールIDを参照することで判定できる。具体的には、前記ルール編集モードが「変更対象指定」の場合、ルール比較結果情報302の変更前ルールIDが、編集モード適用ルール情報203の変更前ルールIDのいずれとも一致しない場合、対応関係判定部103は、等価性維持フラグに「TRUE」を設定し、そうでない場合、「FALSE」を設定する。前記ルール編集モードが「等価性維持対象指定」の場合、ルール比較結果情報302の変更前ルールIDが、編集モード適用ルール情報203の変更前ルールIDのいずれかと一致する場合、対応関係判定部103は、等価性維持フラグに「TRUE」を設定し、そうでない場合、「FALSE」を設定する。前記ルール編集モードが「変更内容優先」の場合、対応関係判定部103は、等価性維持フラグに「UNKNOWN」を設定する。また、対応関係判定部103は、ルール比較結果情報302の等価性判定結果および完全性判定結果に「未判定」を設定する。また、対応関係判定部103は、前記変更前ルールの結果部の出力項目を含む前記変更後ルールの識別子を、関連変更後ルール情報303の変更後ルールIDに設定し、関連変更後ルール情報303の整合性判定結果に「未判定」を設定する。
次に、対応関係判定部103は、変更前ルールセットに、未処理の変更前ルールがあるかを判定する(S605)。未処理の変更前ルールがある場合、対応関係判定部103は、S602に進み、そうでない場合、処理を終了する(S606)。
続いて、図7を参照して、本発明の実施形態に係るルール等価性検証部104の処理について説明する。図7は、本実施形態に係るルール等価性検証部104の処理例を示すフローチャートである。
まず、ルール等価性検証部104は、ユーザによる入出力装置134の操作、バッチ処理などにより処理の実行を開始する(S700)。ルール等価性検証部104は、ルール比較結果情報301の等価性判定結果が「未判定」である変更前ルールに関する情報を取得する(S701)。ルール等価性検証部104は、ルールセット比較結果情報301のルールセットIDとルール比較結果情報302の変更前ルールIDをキーとして、前記変更前ルールに関する情報を、入力ルール保持部121から取得する。
次に、ルール等価性検証部104は、関連変更後ルール情報303の変更後ルールIDに対応する変更後ルールに関する情報(以下、「関連変更後ルールセット」という。)を取得する(S702)。取得する変更後ルールは、S701で取得した変更前ルールに関するもの全ての変更後ルールであり、関連変更後ルールセットには、1以上の変更後ルールが含まれ、上記関連変更後ルールが複数存在する場合には、そのすべてが含まれる。
次に、ルール等価性検証部104は、前記関連変更後ルールセットの各々の変更後ルールについて、前記変更前ルールの結果部と前記変更後ルールの結果部との論理積の充足可能性を判定する(S703)。
次に、ルール等価性検証部104は、S703の充足可能性判定結果に基づき、前記変更前ルールと前記変更後ルールの整合性の判定結果を関連変更後ルール情報303に記憶する(S704)。比較結果保持部122は、S703の充足可能性判定の結果、充足可能な場合、関連変更後ルール情報303の整合性判定結果に「整合」を設定し、充足不能な場合、「不整合」を設定する。
次に、ルール等価性検証部104は、前記変更前ルールの条件部と、前記関連変更後ルールセットの各々の変更後ルールの条件部の論理和(以下、「変更後ルールセット条件部」という。)との包含関係を判定する(S705)。例えば、変更前ルールの条件部をC1、変更後ルールセットの各々の変更後ルールの条件部をD1、D2、D3とすると、「¬(C1→(D1∨D2∨D3))」(式705a)と「¬((D1∨D2∨D3)→C1)」(式705b)のそれぞれの充足可能性を判定することで、包含関係を判定する。式705aが充足不能な場合、変更前ルールの条件部は、変更後ルールセット条件部の部分集合である。また、式705bが充足不能な場合、変更後ルールセット条件部は変更前ルールの条件部の部分集合である。
次に、ルール等価性検証部104は、S703およびS705の判定結果に基づき、前記変更前ルールと前記関連変更後ルールセットの等価性と完全性を判定し、その結果をルール比較結果情報302に記憶する(S706)。変更前ルールの条件部が変更後ルールセット条件部の部分集合である場合、ルール等価性検証部104は、ルール比較結果情報302の完全性判定結果に「漏れなし」を設定し、それ以外の場合、「漏れあり」を設定する。S703において、変更前ルールの結果部と変更後ルールの結果部の論理積の全てが充足可能であり、かつ、変更前ルールの条件部が変更後ルールセット条件部の部分集合であり、かつ、変更後ルールセット条件部が変更前ルールの条件部の部分集合である場合、ルール等価性検証部104は、ルール比較結果情報302の等価性判定結果に「完全等価」を設定する。S703において、変更前ルールの結果部と変更後ルールの結果部の論理積の全てが充足可能であり、かつ、変更前ルールの条件部が変更後ルールセット条件部の部分集合である場合、ルール等価性検証部104は、ルール比較結果情報302の等価性判定結果に「等価」を設定する。S703において、変更前ルールの結果部と変更後ルールの結果部の論理積の全てが充足可能であり、かつ、変更後ルールセット条件部が変更前ルールの条件部の部分集合である場合、ルール等価性検証部104は、ルール比較結果情報302の等価性判定結果に「部分等価」を設定する。S703において、変更前ルールの結果部と変更後ルールの結果部の論理積の一部(全ての場合を除く)が充足可能である場合、ルール等価性検証部104は、ルール比較結果情報302の等価性判定結果に「部分等価」を設定する。S703において、変更前ルールの結果部と変更後ルールの結果部の論理積の全てが充足不能である場合、ルール等価性検証部104は、ルール比較結果情報302の等価性判定結果に「非等価」を設定する。
次に、ルール等価性検証部104は、ルール比較結果情報302の等価性判定結果が「未判定」である未処理の変更前ルールがあるか否かを判定する(S707)。未処理の変更前ルールがある場合、ルール等価性検証部104は、S702に進み、ない場合、S704に進む。
次に、ルール等価性検証部104は、全てのルール比較結果情報302の等価性判定結果に基づき、変更後ルールセットと変更前ルールセットの等価性を判定し、その結果をルールセット比較結果情報301に記憶する(S708)。ルール比較結果情報302の等価性判定結果の全てが「完全等価」または「等価」のいずれかの場合、ルール等価性検証部104は、ルールセット比較結果情報301の等価性判定結果に「等価」を設定し、それ以外の場合、「非等価」を設定する。以上の処理の後、ルール等価性検証部104は、処理を終了する(S709)。
続いて、図8を参照して、本発明の実施形態に係るルール補正部105の処理について説明する。図8は、本実施形態に係るルール補正部105の処理例を示すフローチャートである。
まず、ルール補正部105は、本実施形態では、ユーザがルール編集画面500の変更後ルール一覧511のルールを選択後、補正案表示ボタン523を押下することにより処理の実行を開始する(S800)。その他、補正対象のルールを指定するなどして、バッチ処理などにより処理を開始してもよい。
次に、ルール補正部105は、変更後ルールセットが検証済みであるか否かを判定する(S801)。検証済みの場合、S802に進み、そうでない場合、S810に進む。検証済みであるか否かは、ルールセット情報201の整合性判定結果、ルールセット比較結果情報301の等価性判定結果を参照することで判定できる。
次に、ルール補正部105は、ルール編集モードが「変更内容優先」であるか否かを判定する(S802)。変更内容優先である場合、S803に進み、そうでない場合、S806に進む。
次に、S802において、ルール編集モードが「変更内容優先」である場合の処理について説明する。ルール補正部105は、ユーザがルール編集画面500の変更後ルール一覧511から選択したルール(以下、「ユーザ選択ルール」という。)が、変更前ルールから変更が加えられているか否かを判定する(S803)。変更が加えられていない場合、S804に進み、そうでない場合、S810に進む。ユーザ選択ルールに変更が加えられているか否かは、ルール情報202の編集ラベルを参照することで判定する。
次に、ルール補正部105は、前記ユーザ選択ルールが、追加または変更されたルールと不整合であるか否かを判定する(S804)。不整合である場合、S805に進み、そうでない場合、S810に進む。ルール補正部105は、不整合ルール情報204のルールIDに対応するルール情報202の編集ラベルが「追加」または「変更」であるか否かを参照することで、前記ユーザ選択ルールが、追加または変更されたルールと不整合であるか否かを判定する。
次に、ルール補正部105は、変更ルール優先補正処理を実行する(S805)。変更ルール優先補正処理については、図9を参照して、その詳細を後述する。
次に、S802において、ルール編集モードが「変更内容優先」でない場合の処理について説明する。ルール補正部105は、前記ユーザ選択ルールが変更前ルールと不整合であるか否かを判定する(S806)。不整合である場合、S807に進み、そうでない場合、S810に進む。ルール補正部105は、関連変更後ルール情報303について、変更後ルールIDがユーザ選択ルールのルールIDと一致し、かつ、整合性判定結果が「不整合」である関連変更後ルール情報303が存在する場合、前記ユーザ選択ルールが変更前ルールと不整合であると判定する。
次に、ルール補正部105は、前記ユーザ選択ルールと対応する変更前ルールが等価性維持ルールであるか否かを判定する(S807)。等価性維持ルールである場合、S808に進み、そうでない場合、S810に進む。ルール補正部105は、関連変更後ルール情報303について、変更後ルールIDがユーザ選択ルールのルールIDと一致し、かつ、整合性判定結果が「不整合」である関連変更後ルール情報303を持つルール比較結果情報302の等価性維持フラグが「TRUE」である場合、前記ユーザ選択ルールと対応する変更前ルールが等価性維持ルールであると判定する。
次に、ルール補正部105は、等価性維持ルール優先補正処理を実行する(S808)。等価性維持ルール優先補正処理については、図10を参照して、その詳細を後述する。
次に、ルール補正部105は、補正したルール(以下、「補正ルール」という。)を出力し(S809)、処理を終了する(S810)。ルール補正部は、画面やファイルに補正ルールを出力する。出力する情報には、補正対象である変更後ルールのルールID、補正前の条件部論理式および結果部論理式、補正後の条件部論理式および結果部論理式などを含む。
なお、本実施形態では、ユーザが選択した1つのルールの補正ルールを出力するようにしているが、S803およびS804、または、S806およびS807を満たす全てのルールについて、一括して補正ルールを出力するようにしてもよい。
続いて、図9を参照して、本発明の実施形態に係るルール補正部105の変更ルール優先補正処理について説明する。図9は、本発明の実施形態に係るルール補正部105の変更ルール優先補正処理例を示すフローチャートである。
まず、ルール補正部105は、S805において変更ルール優先補正処理をサブルーチンとして呼び出すなどして、処理を開始する(S900)。ルール補正部105は、ユーザ選択ルールと不整合となる変更後ルールのうち、編集ラベルが「追加」または「変更」である変更後ルール(以下、「変更ルール」という。)を取得する(S901)。
次に、ルール補正部105は、前記ユーザ選択ルールの条件部と、前記変更ルールの条件部の否定と、を論理積で結合した論理式(以下、「補正ルール条件部」という。)を生成する(S902)。例えば、ユーザ選択ルールの条件部をC1、変更ルールの条件部をC2とC3とする(変更ルールが2つある場合である)。この場合、補正ルール条件部は、「C1∧¬C2∧¬C3」となる。
次に、ルール補正部105は、前記補正ルール条件部の充足可能性を判定する(S903)。
次に、ルール補正部105は、補正ルールを生成し(S904)、処理を終了する(S905)。ルール補正部105は、前記補正ルール条件部が充足可能である場合、ユーザ選択ルールの条件部を補正ルール条件部に置き換えたものを補正ルールとする。この場合、補正ルール条件部については、命題論理におけるド・モルガンの法則、分配律などを適用し、論理式を展開し、簡略化してもよい。また、ルール補正部105は、前記補正ルール条件部が充足不能である場合、ユーザ選択ルールは不要と判断し、補正ルールを生成しない。
なお、補正ルールを生成するのではなく、不整合が発生する入力値の組合せを生成するようにしてもよい。例えば、SMTソルバを活用して、ユーザ選択ルールの条件部と変更ルールの論理積の充足可能性を判定し、充足可能となるモデルを取得する。前記モデルが、不整合が発生する入力値の組合せとなる。
続いて、図10を参照して、本発明の実施形態に係るルール補正部105の等価性維持ルール優先補正処理について説明する。図10は、本発明の実施形態に係るルール補正部105の等価性維持ルール優先補正処理例を示すフローチャートである。
まず、ルール補正部105は、S808において等価性維持ルール優先補正処理をサブルーチンとして呼び出すなどして、処理を開始する(S1000)。ルール補正部105は、ユーザ選択ルールと不整合となる等価性維持ルール(以下、「不整合等価性維持ルール」という。)を取得する(S1001)。
次に、ルール補正部105は、不整合等価性維持ルールの結果部論理式の項のうち、左辺式にユーザ選択ルールの結果部論理式の左辺式の出力項目(以下、「ユーザ選択ルール出力項目」という。)を含む項(以下、「不整合候補結果項」という。)を取得する(S1002)。
次に、ルール補正部105は、同一の不整合候補結果項を持つ不整合等価性維持ルールの条件部を、論理和で結合した論理式(以下、「同一項条件部論理式」という。)を生成する(S1003)。ルール補正部105は、生成した同一項条件部論理式と不整合候補結果項とのペアをメモリ132上で管理する。不整合候補結果項の数と同じ数の同一項条件部論理式が生成される。
次に、ルール補正部105は、不整合候補結果項の組合せ(以下、「補正ルール結果項組合せ」という。)を1つ生成する(S1004)。ルール補正部105は、同じユーザ選択ルール出力項目を持つ不整合候補結果項が含まれないように、補正ルール結果項組合せを生成する。例えば、ユーザ選択ルール出力項目がOUT1とOUT2、不整合候補結果項が「OUT1=1」「OUT1=2」「OUT2=1」である場合、ルール補正部105は、補正ルール結果項組合せとして、{(空の組合せ)}{OUT1=1}{OUT1=2}{OUT2=1}{OUT1=1、OUT2=1}{OUT1=2、OUT2=1}のいずれかを生成する。{OUT1=1、OUT1=2}は、同じユーザ選択ルール出力項目を持つので、生成されない。
次に、ルール補正部105は、補正ルール結果項組合せに基づき、補正ルールの条件部となる論理式(以下、「補正ルール条件部」という。)を生成する(S1005)。補正ルール条件部は、補正ルール結果項組合せに含まれる不整合候補結果項とペアになる同一項条件部論理式と、補正ルール結果項組合せに含まれない不整合候補結果項とペアになる同一項条件部論理式の否定と、ユーザ選択ルールの条件部とを論理積で結合した論理式である。例えば、不整合候補結果項が{R1、R2、R3、R4}であり、それぞれに対応する同一項条件部論理式が{C1、C2、C3、C4}であり、補正ルール結果項組合せが{R1、R2}であり、ユーザ選択ルールの条件部がCUである場合を考える。この場合、補正ルール条件部は、「C1∧C2∧¬C3∧¬C4∧CU」となる。
次に、ルール補正部105は、前記補正ルール条件部の充足可能性を判定する(S1006)。充足可能な場合、S1007に進み、そうでない場合、S1008に進む。
次に、ルール補正部105は、補正ルールを生成する(S1007)。補正ルールの条件部は、前記補正ルール条件部である。この場合、補正ルール条件部については、命題論理におけるド・モルガンの法則、分配律などを適用し、論理式を展開し、簡略化してもよい。また、補正ルールの結果部は、前記補正ルール結果項組合せに含まれる項を、ユーザ選択ルールの結果部論理式と同じ出力項目を持つ項と置き換えた論理式である。なお、ユーザ選択ルールの結果部論理式の項のうち、前記補正ルール結果項組合せに含まれない出力項目を持つ項については、置き換えない。
次に、ルール補正部105は、未処理の補正ルール結果項組合せがあるか否かを判定する(S1008)。未処理の補正ルール結果項組合せがある場合、S1004に進み、ない場合、S1009に進み、処理を終了する(S1009)。
なお、補正ルールを生成するのではなく、不整合が発生する入力値の組合せを生成するようにしてもよい。例えば、SMTソルバを活用して、ユーザ選択ルールの条件部と不整合等価性維持ルールの論理積の充足可能性を判定し、充足可能となるモデルを取得する。前記モデルが、不整合が発生する入力値の組合せとなる。
例えば、ルール編集画面500におけるID512がA4の変更後ルールの補正案としては、「Age=60 AND Rank=Gold THEN Discount=20」「Age<60 AND Rank=Gold THEN Discount=10」の2つの補正ルールが出力される。
続いて、図11を参照して、本実施形態に係るテストケース編集画面の例について説明する。テストケース編集画面1100は、ID1111、入力値条件1112、期待値条件1113、ラベル1114、およびテスト結果1115といった項目を持つテストケース一覧1110と、追加ボタン1121、削除ボタン1122、およびテスト実行ボタン1123といったボタンを有する。ID1111は、テストケースの識別子である。入力値条件1112は、テストケースの入力値の条件であり、入力項目の値(例、Age=35)、入力項目の値の条件(例、Age<35)などを指定する。期待値条件1113は、テストケースの期待値の条件であり、出力項目の値(Discount=10)、出力項目の値の条件(例、Discount<20)などを指定する。ラベル1114は、テストケースの種類を示す情報であり、本実施形態では、「必須」「推奨」「一般」のいずれかの値である。テスト結果1115は、テストの実行結果であり、ユーザがテスト実行ボタン1123を押下することで、テスト実行結果出力部114が値を設定する。追加ボタン1121は、新規にテストケースを追加するためボタンであり、ユーザが追加ボタン1121を押下することで、テストケース編集部111がテストケース一覧1110に空のテストケースを追加する。ユーザは、追加された空のテストケースもしくは既存のテストケースを選択することで、テストケースの入力値条件1112、期待値条件1113、およびラベル1114を編集できる。削除ボタン1122は、テストケース一覧1110のテストケースを削除するためのボタンであり、ユーザがテストケース一覧1110のテストケースを選択し、削除ボタン1122を押下することで、テストケース編集部111が、ユーザが選択したテストケースを削除する。テスト実行ボタン1123は、テストケース一覧のテストケースのテストを実行するためのボタンであり、ユーザがテスト実行ボタン1123を押下することで、ルールテスト実行部112がテストケース一覧のすべてのテストケースのテストを実行する。なお、ユーザが選択したテストケースのみを実行するようにしてもよい。
次に、ラベル1114の各選択子が選択された場合のルールテスト実行部112の振る舞いを説明する。テストに成功した場合は、ラベル1114に設定された値に係らず、ルールテスト実行部112は、テスト結果情報403のテスト結果に「OK」を設定する。次に、テストに失敗した場合のルールテスト実行部112の振る舞いについて説明する。
ラベル1114として「必須」が選択された場合、ルールテスト実行部112は、テストに失敗した場合、テスト結果情報403のテスト結果に「NG」を設定する。
ラベル1114として「推奨」が選択された場合、ルールテスト実行部112は、テストに失敗した場合、テスト結果情報403のテスト結果に「WARN」を設定する。
ラベル1114として「一般」が選択された場合、ルールテスト実行部112は、テストに失敗した場合、実行ルール情報404のルールIDに対応するルールの変更前ルールが等価性維持ルールである場合、「NG」を設定し、そうでない場合、「WARN」を設定する。前記変更前ルールが等価性維持ルールでない場合は、テストケースが無効である可能性があるため「WARN」を設定する。
ユーザは、ルールの変更に伴い、見直す必要があるテストケースがどれであるかを、テスト結果が「WANR」であるテストケースに着目して検討でき、テストケースの見直し作業を効率化できる。
続いて、図12を参照して、本発明の実施形態に係るルールテスト実行部112の処理について説明する。図12は、本発明の実施形態に係るルールテスト実行部112の処理例を示すフローチャートである。
まず、ルールテスト実行部112は、ユーザによる入出力装置134の操作、バッチ処理などにより処理の実行を開始する(S1200)。ルールテスト実行部112は、最新のルールセットを取得する(S1201)。ルールテスト実行部112は、入力ルール保持部121のルールセット情報201を参照することで、最新のルールセットを取得できる。
次に、ルールテスト実行部112は、等価性維持ルールを特定する(S1202)。ルールテスト実行部112は、入力ルール保持部121のルールセット情報201のルール編集モード、および、編集モード適用ルール情報203を参照することで、等価性維持ルールを特定する。ルールテスト実行部112は、等価性維持ルールのルールIDをメモリ132上で保持する。
次に、ルールテスト実行部112は、テストケースを1つ取得する(S1203)。ルールテスト実行部112は、テストケース保持部123のテストケース情報402を参照し、テストケースを取得する。
次に、ルールテスト実行部112は、テストケースの入力値条件を満たすルール(以下、「テスト対象ルール」という。)を取得する(S1204)。ルールテスト実行部112は、テストケースの入力値条件と各ルールの条件部論理式の論理積の充足可能性を判定し、充足可能なものをテスト対象ルールとして取得する。
次に、ルールテスト実行部112は、テスト対象ルールの数が0より大きいか否かを判定する(S1205)。0より大きい場合、S1206に進み、そうでない場合、テスト結果情報403のテスト結果に「NG」を設定し(S1211)、S1214に進む。
次に、ルールテスト実行部112は、テスト対象ルールの結果部とテストケースの期待値条件の論理積が充足可能であるか否かを判定する(S1206)。充足不能である場合、S1207に進み、充足可能な場合、テスト結果情報403のテスト結果に「OK」を設定し(S1213)、S1214に進む。なお、テスト対象ルールが複数ある場合は、すべてのテスト対象ルールの結果部の論理積と、テストケースの期待値条件の論理積の充足可能性を判定する。
次に、ルールテスト実行部112は、テストケースラベルが「推奨」であるか否かを判定する(S1207)。「推奨」である場合、テスト結果情報403のテスト結果に「WARN」を設定し(S1212)、S1214に進み、そうでない場合、S1208に進む。
次に、ルールテスト実行部112は、テストケースラベルが「一般」であるか否かを判定する(S1208)。「一般」である場合、S1209に進み、そうえない場合、テスト結果情報403のテスト結果に「NG」を設定し(S1210)、S1214に進む。
次に、ルールテスト実行部112は、等価性維持ルールに対するテスト結果があるか否かを判定する(S1209)。等価性維持ルールに対するテスト結果がある場合、S1210に進み、ない場合、テスト結果情報403のテスト結果に「NG」を設定し(S1211)、S1214に進む。ルールテスト実行部112は、前記テストケースに係るテスト結果情報403の対象ルールセットIDと、前記ルールセットに係るルールセット情報201の変更前ルールセットIDが一致するか否かを判定し、一致する場合、実行ルール情報404のルールIDのうち、等価性維持ルールのルールIDと一致するものがあるか否かを判定する。一致する実行ルール情報404がある場合、等価性維持ルールに対するテスト結果があると判定する。
次に、ルールテスト実行部112は、等価性維持ルールに対するテスト結果が「OK」であるか否かを判定する(S1210)。「OK」である場合、テスト結果情報403のテスト結果に「NG」を設定し(S1211)、そうでない場合、テスト結果に「WARN」を設定し(S1212)、S1214に進む。
次に、ルールテスト実行部112は、未処理のテストケースがあるか否かを判定し、ある場合は、S1203に進み、ない場合は、処理を終了する(S1215)。
なお、本実施形態では、テスト対象ルールが2以上ある場合でも、テスト結果を1つのみを出力するようにしているが、テスト対象ルール毎にテストを実行し、テスト結果を出力してもよい。この場合、S1206からS1213までの処理が、テスト対象ルールの数だけ繰り返し処理を実行すればよい。また、この場合、テストケース保持部123の実行ルール情報404にテスト結果の属性を追加することで、テスト対象ルール毎のテスト結果を管理できる。
続いて、図13を参照して、本発明の実施形態に係るテストケース補正部113の処理について説明する。図13は、本発明の実施形態に係るテストケース補正部113の処理例を示すフローチャートである。
まず、テストケース補正部113は、ユーザによる入出力装置134の操作、バッチ処理などにより処理の実行を開始する(S1300)。テストケース補正部113は、テスト実行済みであるか否かを判定する(S1301)。実行済みである場合、S1302に進み、そうでない場合、エラー情報を出力し、処理を終了する(S1308)。
次に、テストケース補正部113は、テスト結果が「WARN」であるか否かを判定する(S1302)。「WARN」である場合、S1303に進み、そうでない場合、エラー情報を出力し、処理を終了する(S1308)。
次に、テストケース補正部113は、テストケースラベルが「一般」であるか否かを判定する(S1303)。「一般」である場合、S1304に進み、そうでない場合、エラー情報を出力し、処理を終了する(S1308)。
次に、テストケース補正部113は、テスト時に実行したルール(以下、「実行ルール」という。)を取得する(S1304)。テストケース補正部113は、実行ルール情報404のルールIDを参照することで、実行ルールを特定する。
次に、テストケース補正部113は、実行ルールの結果部を論理積で結合した論理式(以下、「補正期待値条件」という。)を生成する(S1305)。テストケース補正部113は、実行ルールの結果部を論理積で結合する際に、同一の項がある場合、1つのみを残し、他の同一である項を削除する。
次に、テストケース補正部113は、補正期待値条件が充足可能であるか否かを判定する(S1306)。充足可能である場合、S1307に進み、そうでない場合、エラー情報を出力し、処理を終了する(S1308)。
次に、テストケース補正部113は、テストケースの補正案である補正テストケースを生成し(S1307)、処理を終了する(S1308)。補正テストケースは、入力値条件には変更を加えずに、期待値条件を補正期待値条件に置き換えたものである。
以上説明した本発明の実施形態によれば、変更前と変更後のルールセットにおいて、入力と出力の関係が維持されるべき部分が維持されていることの確認を容易に実行できるようにするルール管理支援装置等を提供することができる。
100 ルール管理支援装置
101 入力ルール編集部
102 ルール整合性検証部
103 対応関係判定部
104 ルール等価性検証部
105 ルール補正部
106 検証結果出力部
111 テストケース編集部
112 ルールテスト実行部
113 テストケース補正部
114 テスト実行結果出力部
121 入力ルール保持部
122 比較結果保持部
123 テストケース保持部
131 プロセッサ
132 メモリ
133 補助記憶装置
134 入出力装置
500 ルール編集画面
1100 テストケース編集画面

Claims (7)

  1. ソフトウェア仕様の開発におけるルールの管理を支援するための装置であって、
    前記ルールが成立するための条件を格納する条件部と前記条件が成立した場合の結果を格納する結果部とを含む1以上の入力ルールを含む入力ルールセットを受け付けるための入力ルール編集部と、前記入力ルールセットと変更前のルールセットである変更前ルールセットとを比較検証するルール等価性検証部と
    を備え、
    前記入力ルール編集部は、入力と出力の関係を変更後においても維持する変更前の入力ルールである等価性維持ルールを指定する等価性維持ルールオプション指定部を備え、
    前記ルール等価性検証部は、前記等価性維持ルールオプション指定部を参照して、前記等価性維持ルールの条件部を満たす入力に対して、前記入力ルールセットが前記等価性維持ルールと同一の出力を返すか否かを判定した結果を出力する、
    ことを特徴とするルール管理支援装置。
  2. 請求項1に記載のルール管理支援装置であって、
    前記ルール等価性検証部は、前記入力ルールの条件部と前記変更前ルールセットに含まれる変更前ルールの条件部との論理積の充足可能性を判定し、充足可能と判定された前記入力ルールについて、前記変更前ルールの結果部の出力項目を含む前記入力ルールを特定し、特定した前記入力ルールの結果部と前記変更前ルールの結果部との論理積の充足可能性を判定し、前記変更前ルールが等価性維持ルールであるか否かを判定する、
    ことを特徴とするルール管理支援装置。
  3. 請求項1に記載のルール管理支援装置であって、
    前記ルール等価性検証部により前記等価性維持ルールの条件部を満たす入力に対して、前記入力ルールセットが前記等価性維持ルールと同一の出力を返すか否かを判定した結果が非等価となる前記入力ルールの補正案を出力するルール補正部、
    を備えることを特徴とするルール管理支援装置。
  4. 請求項1に記載のルール管理支援装置であって、
    前記入力ルールセットをテストするためのテストケースを受け付けるテストケース編集部と、前記テストケースに基づき前記入力ルールセットのテストを実行するルールテスト実行部と、前記テストケースの変更履歴とテストの実行結果を記憶するテストケース保持部と
    を備え、
    前記テストケースは、前記入力ルールセットへの入力の条件である入力値条件と、前記入力値条件を満たす場合の出力が満たすべき条件である期待値条件とを含み、
    前記テストの実行結果は、テスト対象の前記ルールセットを識別する実行ルールセットIDとテスト実行時に実行した前記入力ルールを識別する実行ルールIDとを含み、
    前記ルールテスト実行部は、前記入力値条件を満たす前記入力ルールを特定し、前記入力ルールが前記期待値条件を満たさない場合であって、前記テストケースの過去の前記テストの実行結果を参照し、前記実行ルールIDが前記等価性維持ルールに関するものであり、かつ、前記過去のテストの実行結果が成功していない場合、または前記実行ルールIDが前記等価性維持ルールに関するものでない場合、警告を出力する、
    ことを特徴とするルール管理支援装置。
  5. 請求項4に記載のルール管理支援装置であって、
    前記テストケースは、常に満たす必要があることを示す必須オプション、満たすことが推奨されることを示す推奨オプション、およびルールの変更によりテストが失敗してもよいことを示す一般オプションのうち1以上のオプションについて、適用する前記オプションを指定するためのテストケースオプション指定部を備え、
    前記ルールテスト実行部は、前記一般オプションが指定されたテストケースに対して、請求項4に記載の処理を実行する、
    ことを特徴とするルール管理支援装置。
  6. 請求項4に記載のルール管理支援装置であって、
    前記ルールテスト実行部により警告が出力されたテストケースの補正案を出力するテストケース補正部を備える、
    ことを特徴とするルール管理支援装置。
  7. ソフトウェア仕様の開発におけるルールの管理を支援するための方法であって、

    前記ルールが成立するための条件を格納する条件部と前記条件が成立した場合の結果を格納する結果部とを含む1以上の入力ルールを含む入力ルールセットを受け付けるための入力ルール編集部が、入力と出力の関係を変更後においても維持する変更前の入力ルールである等価性維持ルールを指定する等価性維持ルールオプション指定部による指定を受け付け、
    前記入力ルールセットと変更前のルールセットである変更前ルールセットとの比較検証を行うルール等価性検証部は、前記等価性維持ルールオプション指定部を参照して、前記等価性維持ルールの条件部を満たす入力に対して、前記入力ルールセットが前記等価性維持ルールと同一の出力を返すか否かを判定した結果を出力する、
    ことを特徴とするルール管理支援方法。
JP2016574570A 2015-02-12 2015-02-12 ルール管理支援装置、およびルール管理支援方法 Expired - Fee Related JP6205512B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/053765 WO2016129073A1 (ja) 2015-02-12 2015-02-12 ルール管理支援装置、およびルール管理支援方法

Publications (2)

Publication Number Publication Date
JPWO2016129073A1 JPWO2016129073A1 (ja) 2017-04-27
JP6205512B2 true JP6205512B2 (ja) 2017-09-27

Family

ID=56614411

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016574570A Expired - Fee Related JP6205512B2 (ja) 2015-02-12 2015-02-12 ルール管理支援装置、およびルール管理支援方法

Country Status (2)

Country Link
JP (1) JP6205512B2 (ja)
WO (1) WO2016129073A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018190799A1 (en) * 2017-04-11 2018-10-18 Siemens Product Lifecycle Management Software Inc. Systems and methods to semantically compare product configuration models
JP6948749B2 (ja) * 2017-06-29 2021-10-13 アマゾン テクノロジーズ インコーポレイテッド セキュリティポリシーアナライザサービス及び充足可能性エンジン
US10757128B2 (en) 2017-06-29 2020-08-25 Amazon Technologies, Inc. Security policy analyzer service and satisfiability engine
US11483317B1 (en) 2018-11-30 2022-10-25 Amazon Technologies, Inc. Techniques for analyzing security in computing environments with privilege escalation
JP7462638B2 (ja) 2018-12-14 2024-04-05 スリーエム イノベイティブ プロパティズ カンパニー 前面側光制御フィルムを有する液晶ディスプレイ

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07152573A (ja) * 1993-11-29 1995-06-16 Atr Tsushin Syst Kenkyusho:Kk 最適ルール作成装置
US8909584B2 (en) * 2011-09-29 2014-12-09 International Business Machines Corporation Minimizing rule sets in a rule management system
JP5970292B2 (ja) * 2012-08-21 2016-08-17 株式会社日立製作所 ソフトウェア仕様開発支援方法及びソフトウェア仕様開発支援装置

Also Published As

Publication number Publication date
JPWO2016129073A1 (ja) 2017-04-27
WO2016129073A1 (ja) 2016-08-18

Similar Documents

Publication Publication Date Title
JP6205512B2 (ja) ルール管理支援装置、およびルール管理支援方法
US8930337B2 (en) Mapping dataset elements
Pegoraro et al. Conformance checking over uncertain event data
EP3671437A1 (en) Data pipeline branching
CN115170048B (zh) 基于模型和规则的工作流实现方法、系统和介质
JP6692281B2 (ja) テストケース生成装置、及びテストケース生成方法
JP4817697B2 (ja) 変換規則評価プログラム及び変換規則評価装置
JP6247976B2 (ja) ルール管理支援装置、およびルール管理支援方法
JP6604892B2 (ja) ルールテスト装置およびルールテスト方法
JP2009245177A (ja) フィーチャーモデル作成支援装置及びプログラム
Ahishakiye et al. Mc/dc test cases generation based on bdds
JP2011232874A (ja) 情報セキュリティ管理支援方法及び装置
WO2022018899A1 (ja) Kpiツリーから部分ツリーを抽出するシステム
JP2007172223A (ja) リポジトリシステム、リポジトリシステムの管理方法、及びそのプログラム
JP6291131B2 (ja) ルール管理支援装置およびルール管理支援方法
JP2016143106A (ja) 業務バリエーションに基づく業務影響箇所抽出方法および業務影響箇所抽出装置
JP6904914B2 (ja) 決定表生成装置、及び決定表生成方法
JP2021179748A (ja) 管理プログラム、管理方法及び管理装置
CN116860227B (zh) 一种基于大数据etl脚本编排的数据开发系统及方法
JP6062735B2 (ja) ソフトウェア開発支援装置、ソフトウェア開発支援方法、ソフトウェア開発支援プログラム
US20220066795A1 (en) Knowledge engine auto-generation of guided flow experience
Yousef et al. Service traceability in SOA-based software systems: a traceability network add-in for BPAOntoSOA framework
Ogata et al. An automation of check focusing on CRUD for requirements analysis model in UML
Chen Untangling Java Code Changes
Jafarlou et al. From two-way to three-way: domain-specific model differencing and conflict detection.

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161214

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: 20170822

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170904

R150 Certificate of patent or registration of utility model

Ref document number: 6205512

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees