(57)【要約】【課題】仕様の矛盾や抜け漏れの視認性向上のための決定表形式による表示を維持しつつ、決定表の作成及び表示に必要な記憶容量を削減する。【解決手段】仕様検査部は、命題規則保持部から取得した任意の検査対象の命題形式の仕様とその任意の比較対象の命題形式の仕様に対して、２つの命題形式の仕様が矛盾あるいは重複するかを判定し、矛盾あるいは重複するならば、前記検査対象の命題形式の仕様を、比較対象の命題形式の仕様と矛盾あるいは重複する命題形式の仕様と、比較対象の命題形式の仕様と矛盾あるいは重複しない命題形式の仕様とに分解して、検査結果保持部に登録し、決定表作成部は、検査結果保持部から前記命題形式の仕様の何れか、あるいは両方を取得し、前記命題形式の仕様の各々について、当該命題形式の仕様の条件部と結果部を取り出して決定表の行を作成し、表示範囲を、当該命題形式の仕様に対応する列の当該行の欄に示す。【選択図】図１
2014041394.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェア仕様の開発を支援するソフトウェア仕様開発支援装置であって、
複数の条件を有する条件部および複数の結果を有する結果部からなる複数の命題形式の仕様を入力部を介して受け付ける命題仕様受付部と、複数の命題形式の仕様を保持する第１の保持部と、前記第１の保持部の命題仕様に基づき前記複数の命題形式の仕様の各々が互いに矛盾あるいは重複しないかどうかを判定し、その結果を第２の保持部に保持する仕様検査部と、各行が前記複数の条件の１つまたは前記複数の結果の１つを示し、各列が前記複数の命題形式の仕様の各々を示す表形式で表した決定表を、前記検査の結果に基づいて作成する決定表作成部と、
を備え、
前記仕様検査部は、前記第１の保持部から取得した任意の検査対象の命題形式の仕様とその任意の比較対象の命題形式の仕様に対して、前記２つの命題形式の仕様が矛盾するかあるいは重複するかを判定し、矛盾あるいは重複するならば、前記検査対象の命題形式の仕様を、比較対象の命題形式の仕様と矛盾あるいは重複する命題形式の仕様と、比較対象の命題形式の仕様と矛盾あるいは重複しない命題形式の仕様とに分解して、前記第２の保持部に登録し、
前記決定表作成部は、前記第２の保持部から前記命題形式の仕様の何れか、あるいは両方を取得し、前記命題形式の仕様の各々について、当該命題形式の仕様の条件部と結果部を取り出して前記決定表の行を作成し、表示範囲を、当該命題形式の仕様に対応する列の当該行の欄に示す、
ことを特徴とするソフトウェア仕様開発支援装置。
【請求項２】
前記仕様検査部は、検査対象の命題形式の仕様とその比較対象となる命題形式の仕様が矛盾あるいは重複する場合に、前記検査対象の命題形式の仕様の前記条件部に、前記比較対象の命題形式の仕様の前記条件部に現れる条件、あるいはその条件の否定を追加（論理積結合）することで、前記検査対象の命題形式の仕様を分解する、
ことを特徴とする請求項１に記載のソフトウェア仕様開発支援装置。
【請求項３】
受け付けた前記複数の命題形式の仕様について、結果が未定義の条件を検査する未定義仕様検査部をさらに備え、
前記未定義仕様検査部は、前記複数の命題形式の仕様の条件部の否定を論理積結合した仕様を、積和標準形に変換することで、結果が未定義の条件を表す命題形式の仕様を作成し、
前記決定表作成部は、前記命題形式の仕様の一部、あるいは全てを取得し、前記命題形式の仕様の各々について、当該命題形式の仕様の条件部と結果部を取り出して前記決定表の行を作成し、表示範囲を、当該命題形式の仕様に対応する列の当該行の欄に示す、
ことを特徴とする請求項１に記載のソフトウェア仕様開発支援装置。
【請求項４】
１つまたは複数の条件を有する前件と１つまたは複数の条件を有する後件からなる、複数の条件間の制約関係を示す制約を受け付ける制約受付部と、
前記複数の命題形式の仕様が前記制約を充足しない場合があるかどうかをチェックする制約検査部と、をさらに備え、
前記制約検査部は、前記制約受付部から前記制約を取得すると、任意の検査対象の命題形式の仕様が前記制約を充足しない場合があるかどうかを判定し、充足しない場合があるならば、前記検査対象の命題形式の仕様を、制約を充足しない命題形式の仕様と、制約を充足する命題形式の仕様に分解する、
ことを特徴とする請求項１に記載のソフトウェア仕様開発支援装置。
【請求項５】
前記制約検査部は、検査対象の命題形式の仕様が制約を充足しないことがある場合に、前記検査対象の命題形式の仕様の前記条件部に、前記制約の前件あるいは後件に現れる条件、あるいはその条件の否定を追加（論理積結合）することで、前記検査対象の命題形式の仕様を分解する、
ことを特徴とする請求項４に記載のソフトウェア仕様開発支援装置。
【請求項６】
前記決定表作成部は、作成する決定表において、前記検査対象の命題形式の仕様に追加した条件を他の条件と区別して表示する、
ことを特徴とする請求項２又は請求項５に記載のソフトウェア仕様開発支援装置。
【請求項７】
前記命題形式の仕様のうち、決定表作成対象となる命題形式の仕様の条件や、その決定表による表示方法を表すポリシを保持するポリシ保持部をさらに備え、
前記決定表作成部は、前記ポリシに従って、表示対象の命題形式の仕様とその表示方法を決定し、該決定した仕様と表示方法に応じて、前記決定表の表示を行う、
ことを特徴とする請求項１に記載のソフトウェア仕様開発支援装置。
【請求項８】
前記決定表作成部は、前記決定表の表示範囲の修正入力を受け付けて、修正済みの決定表を作成し、
前記修正済みの決定表から修正済みの命題形式の仕様を取り出し、修正前の決定表のもとになった修正前の命題形式の仕様と前記修正済みの命題形式の仕様とを置換する、仕様置換部をさらに備える、
ことを特徴とする請求項１に記載のソフトウェア仕様開発支援装置。
【請求項９】
前記仕様検査部は、ＳＡＴソルバを用いて命題形式の仕様の矛盾あるいは重複を判定する、
ことを特徴とする請求項１に記載のソフトウェア仕様開発支援装置。
【請求項１０】
前記制約検査部は、ＳＡＴソルバを用いて命題形式が制約を充足するかを判定する、
ことを特徴とする請求項４に記載のソフトウェア仕様開発支援装置。
【請求項１１】
ソフトウェア仕様の開発を支援する装置におけるソフトウェア仕様開発支援方法であって、
前記ソフトウェア仕様開発支援装置は、複数の命題形式の仕様を保持する第１の保持部を備え、
複数の条件を有する条件部および複数の結果を有する結果部からなる複数の命題形式の仕様を入力部を介して受け付ける第１のステップと、、前記第１の保持部の命題仕様に基づき前記複数の命題形式の仕様の各々が互いに矛盾あるいは重複しないかどうかを判定し、その結果を第２の保持部に保持する第２のステップと、各行が前記複数の条件の１つまたは前記複数の結果の１つを示し、各列が前記複数の命題形式の仕様の各々を示す表形式で表した決定表を、前記検査の結果に基づいて作成する第３のステップと、
を含み、
前記第２のステップにより、前記第１の保持部から取得した任意の検査対象の命題形式の仕様とその任意の比較対象の命題形式の仕様に対して、前記２つの命題形式の仕様が矛盾するかあるいは重複するかを判定し、矛盾あるいは重複するならば、前記検査対象の命題形式の仕様を、比較対象の命題形式の仕様と矛盾あるいは重複する命題形式の仕様と、比較対象の命題形式の仕様と矛盾あるいは重複しない命題形式の仕様とに分解して、前記第２の保持部に登録し、
前記第３のステップにより、前記第２の保持部から前記命題形式の仕様の何れか、あるいは両方を取得し、前記命題形式の仕様の各々について、当該命題形式の仕様の条件部と結果部を取り出して前記決定表の行を作成し、表示範囲を、当該命題形式の仕様に対応する列の当該行の欄に示す、
ことを特徴とするソフトウェア仕様開発支援方法。
【請求項１２】
受け付けた前記複数の命題形式の仕様について、結果が未定義の条件を検査する第４のステップを含み、
前記第４のステップにより、前記複数の命題形式の仕様の条件部の否定を論理積結合した仕様を、積和標準形に変換することで、結果が未定義の条件を表す命題形式の仕様を作成し、
前記第３のステップにより、前記命題形式の仕様の一部、あるいは全てを取得し、前記命題形式の仕様の各々について、当該命題形式の仕様の条件部と結果部を取り出して前記決定表の行を作成し、表示範囲を、当該命題形式の仕様に対応する列の当該行の欄に示す、
ことを特徴とする請求項１１に記載のソフトウェア仕様開発支援方法。
【請求項１３】
１つまたは複数の条件を有する前件と１つまたは複数の条件を有する後件からなる、複数の条件間の制約関係を示す制約を受け付ける第５のステップと、
前記複数の命題形式の仕様が前記制約を充足しない場合があるかどうかをチェックする第６のステップと、をさらに含み、
前記第６のステップにより、前記第５のステップにより前記制約を取得すると、任意の検査対象の命題形式の仕様が前記制約を充足しない場合があるかどうかを判定し、充足しない場合があるならば、前記検査対象の命題形式の仕様を、制約を充足しない命題形式の仕様と、制約を充足する命題形式の仕様に分解する、
ことを特徴とする請求項１１に記載のソフトウェア仕様開発支援方法。
【請求項１４】
前記ソフトウェア仕様開発支援装置は、前記命題形式の仕様のうち、決定表作成対象となる命題形式の仕様の条件や、その決定表による表示方法を表すポリシを保持するポリシ保持部をさらに備え、
前記第３のステップにより、前記ポリシに従って、表示対象の命題形式の仕様とその表示方法を決定し、該決定した仕様と表示方法に応じて、前記決定表の表示を行う、
ことを特徴とする請求項１１に記載のソフトウェア仕様開発支援方法。
【請求項１５】
前記第３のステップにより、前記決定表の表示範囲の修正入力を受け付けて、修正済みの決定表を作成し、
前記修正済みの決定表から修正済みの命題形式の仕様を取り出し、修正前の決定表のもとになった修正前の命題形式の仕様と前記修正済みの命題形式の仕様とを置換する、第７のステップをさらに備える、
ことを特徴とする請求項１１に記載のソフトウェア仕様開発支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア開発を支援する技術に関する。
【背景技術】
【０００２】
ソフトウェアの仕様を、ソフトウェア実行前の条件とその実行後の結果の対応関係で定義する場合がある。この条件と結果の対応関係は決定表（デシジョンテーブル）と呼ばれる表形式で表現できることが知られており、ソフトウェア開発工程において頻繁に使用される。決定表にはいくつかの異なる記述形式があるが、記述形式が異なる決定表でも条件と結果の対応関係を表すというセマンティクスは一様である。さらに、決定表は、条件マトリクスやチェックリストなどの別の名称で呼ばれる場合もある。
【０００３】
この決定表を使って仕様を表すことにより、条件と結果の対応関係を誤解なく明確に記述できるとともに、条件のパタン漏れを発見し易くなるという効果がある。一方で、決定表による仕様記述には次のような欠点もある。すなわち、条件の要素が増えるにつれてパタンが増え決定表が肥大化するため、可読性が低下するという問題がある。
【０００４】
この問題を解決する従来技術として、特許文献１では、決定表を分割して表記することで可読性の低下を防ぐ方法が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−４４３０３号公報
【特許文献２】特願２０１１−０５２３４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１で開示されている従来技術を用いると、決定表を可読性の高い形式で表示できる。しかし決定表の記述量は変わらないため、決定表の入力量が増え作成工数が増加するという問題や、決定表を保存するために必要な記憶容量が増大するという問題がある。この問題を解決する従来技術として、特許文献２では、命題形式の記述から決定表を作成することで、決定表の作成工数を削減する方法を開示している。また、決定表から命題形式の記述を抽出して保存・表示することで、決定表を保存・表示するために必要な記憶容量を削減する方法を開示している。
【０００７】
しかし仕様に矛盾や抜け漏れがあった場合、命題形式の記述による仕様表示には、決定表形式の仕様表示に比べて矛盾や抜け漏れを視覚的に確認し難いという短所がある。つまり、決定表形式の表示によって矛盾や抜け漏れを視覚的に確認したい場合は、特許文献２に示す方法は有効ではない。したがって、仕様の矛盾や抜け漏れの視認性向上のために決定表形式で仕様表示する場合、特許文献２に示す従来技術を適用できないため、決定表の肥大化につれて決定表の表示に必要な記憶容量が増大するという問題を解決できない。また、特許文献２に示す従来技術では、命題形式の記述による仕様表示の前に、内部的に決定表を作成する。よって従来技術では、決定表の肥大化につれて、決定表の作成に必要な記憶容量や処理時間が増大するという問題もある。
【０００８】
本発明は、上記事情に鑑みてなされたものであり、仕様の矛盾や抜け漏れの視認性向上のための決定表形式による表示を維持しつつ、決定表の作成及び表示に必要な記憶容量を削減する技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の代表的な一例は、以下の通りである。すなわち、本発明に係るソフトウェア仕様開発支援装置は、複数の条件を有する条件部および複数の結果を有する結果部からなる複数の命題形式の仕様を入力部を介して受け付ける命題仕様受付部と、複数の命題形式の仕様を保持する第１の保持部と、前記第１の保持部の命題仕様に基づき前記複数の命題形式の仕様の各々が互いに矛盾あるいは重複しないかどうかを判定し、その結果を第２の保持部に保持する仕様検査部と、各行が前記複数の条件の１つまたは前記複数の結果の１つを示し、各列が前記複数の命題形式の仕様の各々を示す表形式で表した決定表を、前記検査の結果に基づいて作成する決定表作成部とを備える。前記仕様検査部は、前記第１の保持部から取得した任意の検査対象の命題形式の仕様とその任意の比較対象の命題形式の仕様に対して、前記２つの命題形式の仕様が矛盾するかあるいは重複するかを判定し、矛盾あるいは重複するならば、前記検査対象の命題形式の仕様を、比較対象の命題形式の仕様と矛盾あるいは重複する命題形式の仕様と、比較対象の命題形式の仕様と矛盾あるいは重複しない命題形式の仕様とに分解して、前記第２の保持部に登録し、前記決定表作成部は、前記第２の保持部から前記命題形式の仕様の何れか、あるいは両方を取得し、前記命題形式の仕様の各々について、当該命題形式の仕様の条件部と結果部を取り出して前記決定表の行を作成し、表示範囲を、当該命題形式の仕様に対応する列の当該行の欄に示すことを特徴とする。
【発明の効果】
【００１０】
本発明によれば、仕様の矛盾、重複を決定表上で視覚的に確認でき、その決定表の作成及び表示に必要な記憶容量を削減することができる。
【図面の簡単な説明】
【００１１】
【図１】ソフトウェア仕様開発支援装置２０１の構成例を示すブロック図である。
【図２】ソフトウェア仕様開発支援装置２０１のハードウェア構成例を示すブロック図である。
【図３】命題規則保持部１０２が保持する命題規則の例である。
【図４】命題規則を構成する条件項目と結果項目の例である。
【図５】制約保持部１０４が保持する制約の例である。
【図６】矛盾検査部１０５が検査結果保持部１０９に登録する矛盾検査結果の例である。
【図７】矛盾検査の手順例を示すフローチャートである。
【図８】重複検査部１０６が検査結果保持部１０９に登録する重複検査結果の例である。
【図９】重複検査の手順例を示すフローチャートである。
【図１０】重複検査の結果に基づいて作成するベン図の例である。
【図１１】未定義検査部１０７が検査結果保持部１０９に登録する未定義検査結果の例である。
【図１２】未定義検査の手順例を示すフローチャートである。
【図１３】制約検査部１０８が検査結果保持部１０９に登録する検査結果の例である。
【図１４】制約検査の手順例を示すフローチャートである。
【図１５】ポリシ保持部１１１が保持する表示ポリシの例である。
【図１６】表示対象規則保持部１１５が保持する表示対象規則の例である。
【図１７】表示対象規則決定の手順例を示すフローチャートである。
【図１８】決定表部分表示・修正部１１６が、表示対象規則保持部１１５が保持する表示対象規則に基づいて表示する部分決定表の例である。
【図１９】決定表部分表示・修正部１１６が修正入力を受け付けることにより、修正された部分決定表の例である。
【図２０】修正済み規則保持部１１８が保持する修正済み規則の例である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施の一形態を、図面を参照しながら詳細に説明する。
【００１３】
本実施形態は、ソフトウェア使用の開発を支援する装置に適用される。
【００１４】
本実施形態では、命題形式の記述による仕様（命題規則と呼ぶ）の入力を受け付けて、命題規則間の矛盾、抜け漏れ、重複、及び差分を検査する。また命題規則に対する制約を受け付けて、命題規則の制約違反を検査する。そして検査結果に基づいて、検査結果に関係する仕様を表す命題形式の記述（表示対象規則と呼ぶ）を生成する。さらに、生成した表示対象規則に基づいて決定表を作成し、表示する。
【００１５】
よって本実施形態によれば、仕様の矛盾、抜け漏れ、重複、差分、及び制約違反の検査結果を決定表上で確認でき、その決定表の作成及び表示に必要な記憶容量を削減できる。
【００１６】
また本実施形態では、表示対象規則から作成した決定表上において、仕様の修正を受け付ける。さらに、修正済みの決定表から修正を反映した表示対象規則（修正済み規則と呼ぶ）を生成し、もとの表示対象規則と置き換える。
【００１７】
よって本実施形態によれば、命題記述ではなく、仕様視認性の高い決定表に対して仕様の修正を行えるため、修正誤りを削減できる。
【００１８】
また本実施形態では、上記検査結果から、決定表表示の対象となる表示対象規則を生成するための表示ポリシを保持する。そして決定表表示の前に、上記表示ポリシの有効／無効の設定を受け付け、選択された表示ポリシに基づいて決定表表示の対象となる表示対象規則を生成する。
【００１９】
よって本実施形態によれば、仕様の規模や上記検査結果を考慮して、決定表表示対象の仕様量を調整できるため、作成及び表示する決定表の肥大化を防止できる。
【００２０】
本実施例における上記命題規則、制約、表示対象規則、及び修正済み規則などの命題形式の記述は、自然言語形式、及び論理式形式の両方を想定している。命題規則、表示対象規則、及び修正済み規則は、条件部と結果部から構成される。条件部は、条件項目の値の論理積にて構成される。同様に結果部は、結果項目の値の論理積にて構成される。制約は前件と後件から構成される。制約の前件は、命題規則の条件部と同様に、条件項目の値の論理積にて構成される。後件も同様に、条件項目の値の論理積にて構成される。
【００２１】
例えば、条件項目A、Bと、結果項目Cが存在し、それぞれa1とa2、b1とb2、c1とc2の値を取り得るとする。この場合、「Aはa1である、かつBはb1でない場合、Cはc1である」という命題規則を記述できる。この命題規則は、論理式形式により「A＝a1∧B≠b1  ⇒  C＝c1」とも記述でき，条件部は「A=a1∧B≠b1」であり、結果部は「C=c1」である。本実施例では、自然言語形式、及び論理式形式の両方の形式を用いて例を示す。
【００２２】
図１は本実施形態におけるソフトウェア仕様開発支援装置２０１の構成例を示すブロック図である。
【００２３】
ソフトウェア仕様開発支援装置２０１は、命題規則編集部１０１、命題規則保持部１０２、制約編集部１０３、制約保持部１０４、矛盾検査部１０５、重複検査部１０６、未定義検査部１０７、制約検査部１０８、検査結果保持部１０９、選択可能ポリシ設定部１１０、ポリシ保持部１１１、ポリシ選択部１１２、ポリシ編集部１１３、表示対象規則決定部１１４、表示対象規則保持部１１５、決定表部分表示・修正部１１６、修正済み規則生成部１１７、修正済み規則保持部１１８、及び修正済み規則置換部１１９を含む。
【００２４】
命題規則編集部１０１は、命題規則の入力及び編集を受け付け、受け付けた命題規則を命題規則保持部１０２に登録する。
【００２５】
制約編集部１０３は、命題規則に対する制約の入力及び編集を受け付け、受け付けた制約を制約保持部１０４に登録する。
【００２６】
矛盾検査部１０５は、命題規則保持部１０２から命題規則を取得する。取得した命題規則から、検査対象規則とその比較対象規則を決定し、検査対象規則と比較対象規則の矛盾を検査する。検査結果は検査結果保持部１０９に登録する。検査対象規則と比較対象規則は、外部からのユーザの入力に基づいて決定しても良い。
【００２７】
重複検査部１０５は、命題規則保持部１０２から命題規則を取得する。取得した命題規則から、検査対象規則とその比較対象規則を決定し、検査対象規則と比較対象規則による仕様の重複定義を検査する。命題規則に優先度を設定している場合は、検査対象規則と比較対象規則による仕様の上書きを検査する。また、検査対象規則と比較対象規則が、同一規則の変更前と変更後に対応する場合、その差分仕様を検査する。これらの検査結果は、検査結果保持部１０９に登録する。検査対象規則と比較対象規則は、外部からの入力に基づいて決定しても良い。
【００２８】
また，矛盾検査部１０５や重複検査部１０５は、検査結果に基づいて、検査対象規則と比較対象規則の関係を示すベン図を表示しても良い。
【００２９】
未定義検査部１０７は、命題規則保持部１０２から命題規則を取得し、命題規則にて定義されていない未定義の仕様を検査する。検査結果は検査結果保持部１０９に登録する。ある結果項目Cに対して「Cはc1でない」のように、「〜でない」という仕様のみが定義されている場合も、結果項目Cは未定義であるとしても良い。
【００３０】
制約検査部１０８は、命題規則保持部１０２から命題規則を取得し、同時に制約保持部１０４から制約を取得する。取得した命題規則が、同じく取得した制約を充足するかを検査する。検査結果は、検査結果保持部１０９に登録する。
【００３１】
検査結果保持部１０９は、検査結果を保持する。検査結果は少なくとも、各々の検査によって得られた命題形式の仕様を含む。
【００３２】
選択可能ポリシ設定部１１０は、検査結果保持部１０９から検査結果を取得する。そして取得した検査結果に基づいて、ポリシ保持部１１１が保持する表示ポリシの中から、適用条件を満たす適用可能なポリシを選別する。
【００３３】
ポリシ選択部１１２は、表示ポリシの有効あるいは無効の入力を受け付けて、ポリシ保持部１１１が保持するポリシを有効あるいは／無効に切り替える。
【００３４】
ポリシ編集部１１３は、表示ポリシ編集の入力を受け付けて、ポリシ保持部１１１が保持するポリシを変更する。
【００３５】
表示対象規則決定部１１４は、ポリシ保持部１１１から、適用可能な表示ポリシを取得する。さらに検査結果保持部１０９から、命題形式の仕様を含む検査結果を取得する。取得した表示ポリシと検査結果に基づいて、表示対象規則を決定する。得られた表示対象規則は、表示対象規則保持部１１５に登録する。
【００３６】
決定表部分表示・修正部１１６は、表示対象規則保持部１１５から表示対象規則を取得し、上記表示対象規則の表す仕様を決定表形式で表示する。また、表示した決定表の修正入力を受け付けて、決定表形式で表示された仕様を変更する。
【００３７】
修正済み規則生成部１１７は、決定表部分表示・修正部１１６が表示・修正した決定表を取得し、決定表の表す仕様を命題形式の仕様に変換する。変換によって得た命題形式の仕様は、修正済み規則として修正済み規則保持部１１８に登録する。
【００３８】
修正済み規則置換部１１９は、修正済み規則保持部１１８から修正済み規則を取得し、同時に検査結果保持部１０９から、修正前の表示対象規則を含む検査対象規則を取得する。次に、修正前の表示対象規則を、修正済み規則と置換することで、修正済みの検査対象規則を表す命題形式の仕様を得る。最後に、得られた命題形式の仕様を、命題規則保持部１０２が保持する検査対象規則と置換する。
【００３９】
図２は、ソフトウェア仕様開発支援装置２０１のハードウェア構成例を示すブロック図である。
【００４０】
ソフトウェア仕様開発支援装置２０１は、ＣＰＵ２０２、メモリ２０３、外部記憶装置２０４、表示装置２０５、入力装置２０６、及び外部媒体入出力装置２０７を備える。
【００４１】
ＣＰＵ２０２は、メモリ２０３に記憶されたプログラムを実行することによって、各種処理を実行する。メモリ２０３は、ＣＰＵ２０２のワークエリアとして機能し、プログラム及びプログラムの実行に必要なデータを記憶する。具体的には、命題規則編集部１０１、制約編集部１０３、矛盾検査部１０５、重複検査部１０６、未定義検査部１０７、制約検査部１０８、選択可能ポリシ設定部１１０、ポリシ選択部１１２、ポリシ編集部１１３、表示対象規則決定部１１４、決定表部分表示・修正部１１６、修正済み規則生成部１１７、及び修正済み規則置換部１１９を構成するプログラムが記憶され、同時に命題規則保持部１０２、制約保持部１０４、検査結果保持部１０９、ポリシ保持部１１１、表示対象規則保持部１１５、及び修正済み規則保持部１１８の保持するデータが記憶される。
【００４２】
外部記憶装置２０４は、各種データを格納する。外部記憶装置２０４は、例えば、ハードディスク装置などである。具体的には、命題規則保持部１０２、制約保持部１０４、検査結果保持部１０９、ポリシ保持部１１１、表示対象規則保持部１１５、及び修正済み規則保持部１１８が格納される。
【００４３】
あるいは、命題規則編集部１０１、制約編集部１０３、矛盾検査部１０５、重複検査部１０６、未定義検査部１０７、制約検査部１０８、選択可能ポリシ設定部１１０、ポリシ選択部１１２、ポリシ編集部１１３、表示対象規則決定部１１４、決定表部分表示・修正部１１６、修正済み規則生成部１１７、及び修正済み規則置換部１１９を構成するプログラムの少なくとも一部についても、外部記憶装置２０４に格納され、各種処理実行の際にＣＰＵ２０２がメモリ２０３へ読み出してプログラムを実行することとしても良い。また各プログラムは、あらかじめメモリ２０３または外部記憶装置２０４に格納されていても良いし、必要に応じて、利用可能な媒体を介して、他の装置からメモリ２０３または外部記憶装置２０４に導入されても良い。媒体とは、例えば、外部媒体入出力装置２０７に着脱可能な記憶媒体、または、ネットワークや、ネットワークを伝搬する搬送波やデジタル信号などの通信媒体を指す。
【００４４】
表示装置２０５は、プログラムの処理結果などを表示する。表示装置２０５は、例えば、ディスプレイなどである。入力装置２０６は、処理の実行指示及び処理に必要な情報の入力などを利用者から受け付ける。入力装置２０６は、例えば、キーボード及びマウスなどである。
【００４５】
外部媒体入出力装置２０７は、外部媒体と、外部記憶装置２０４に格納されているデータなどの入出力を行う。外部媒体は、外部媒体入出力装置２０７に着脱可能で可搬性のある記憶媒体であり、外部媒体入出力装置２０７は、外部媒体に読み書き可能なドライブ装置などである。
【００４６】
図３は、命題規則保持部１０２が保持する命題規則の例である。また、図４は命題規則を構成する条件項目と結果項目の例である。
【００４７】
条件項目４０１は、条件項目名称４０２とその項目の値である条件値４０３から構成される。同様に結果項目４０４は、結果項目名称４０５とその項目の値である結果値から構成される。例えば、命題規則３０１は、「保険加入有無という名称の条件項目の値が加入済みである場合に、補助金と言う名称の結果項目の値は交付ありである」という仕様を表す。命題規則３０１の条件部は「「保険加入有無」が「加入済み」である」となり、結果部は「「補助金」は「交付あり」である」となる。
【００４８】
図５は、制約保持部１０４が保持する制約の例である。
【００４９】
例えば、制約５０１は、「保険加入有無という名称の条件項目の値が未加入である場合に、保険納入額と言う名称の条件項目の値は０円である」という制約を表す。制約５０１の前件は「「保険加入有無」が「未加入」である」となり、後件は「「保険納入額」は「0円」である」となる。
【００５０】
図６は、矛盾検査部１０５が検査結果保持部１０９に登録する矛盾検査結果の例である。
【００５１】
矛盾検査の検査結果６０１は、検査対象規則６０２、比較対象規則６０３、検査結果６０４、矛盾する仕様６０５、及び矛盾しない仕様６０６から構成される。
【００５２】
検査対象規則６０２、及び比較対象規則６０３は、命題規則のうちそれぞれ矛盾検査の対象となる命題規則と、その比較対象となる命題規則を表す。検査結果６０４は、検査対象規則６０２と比較対象規則６０３の矛盾検査結果を表す。矛盾する仕様６０５は、検査対象規則６０２が表す仕様のうち、比較対象規則６０３が表す仕様と矛盾する仕様を表す。逆に、矛盾しない仕様６０６は、検査対象規則６０２が表す仕様のうち、比較対象規則６０３が表す仕様と矛盾しない仕様を表す。
【００５３】
例えば、検査対象規則６０２として命題規則３０１が与えられ、その比較対象規則６０３として命題規則３０２が与えられたとする。この場合、矛盾検査部１０５は、検査結果６０４として「矛盾あり」を登録する。同時に、矛盾する仕様６０５として、「「保険加入有無」が「加入済み」である、かつ「保険納入額」が「2万円以上」である場合、「補助金」は「交付あり」である」という仕様を登録する。さらに、矛盾しない仕様６０６として、「「保険加入有無」が「加入済み」である、かつ「保険納入額」が「2万円以上」でない場合、「補助金」は「交付あり」である」という仕様を登録する。
【００５４】
図７は、矛盾検査の手順例を示すフローチャートである。
【００５５】
以下に示す処理は、ソフトウェア仕様開発支援装置２０１の備えるＣＰＵ２０２が、メモリ２０３で実行するプログラムによって実現される。そしてこのプログラムは、以下に説明される各種の動作を行うためのコードから構成されている。
【００５６】
ＣＰＵ２０２は、矛盾検査部１０５を実行することによって、命題規則保持部１０２から任意の２つの命題規則を取得し、それぞれ検査対象規則、及び比較対象規則とする。取得した検査対象規則と比較対象規則は、それぞれ検査結果保持部１０９の検査対象規則６０２と比較対象規則６０３に登録する（ステップ７０１）。
【００５７】
矛盾検査部１０５は、取得した検査対象規則の条件を表す条件部と、比較対象規則の条件を表す条件部を参照し、双方の条件部が両立するかを判定する。条件部が両立する場合、次に検査対象規則の結果を表す結果部と、比較対象規則の結果を表す結果部を参照し、双方の結果部が両立するかを判定する。条件部が両立し、かつ結果部が両立しない場合は、検査結果保持部１０９の検査結果６０４に「矛盾あり」を登録し、ステップ７０３を実行する。条件部が両立しない、あるいは条件部は両立するが結果部も両立する場合は、検査結果保持部１０９の検査結果６０４に「矛盾なし」を登録し、矛盾しない仕様６０６に検査対象規則を登録して処理を終了する。上記両立性の検査には，ＳＡＴソルバを用いても良い。例えば命題規則３０１と命題規則３０２は、条件部が両立し、かつ結果部が両立しないため、検査結果６０４に「矛盾あり」を登録し、ステップ７０３を実行する（ステップ７０２）。
【００５８】
矛盾検査部１０５は、比較対象規則には現れ、検査対象規則には現れない条件項目があるかを検査する。上記条件に合致する条件項目がある場合はステップ７０４を実行する。上記条件に合致する条件項目がない場合はステップ７０６を実行する。例えば命題規則３０１を検査対象規則とし、命題規則３０２を比較対象規則とした場合は、「保険納入額」という条件項目が上記条件に合致するため、ステップ７０４を実行する（ステップ７０３）。
【００５９】
矛盾検査部１０５は、ステップ７０３で検出した、比較対象規則には現れ検査対象規則には現れない条件項目を、比較対象規則に現れる値と同じ値で検査対象規則の条件部に論理積結合する。例えば上記例の場合、命題規則３０１の条件部に「「保険納入額」が「2万円以上」である」という条件を論理積結合し、「保険加入有無」が「加入済み」である、かつ「保険納入額」が「2万円以上」である場合、「補助金」は「交付あり」である」という記述を得る（ステップ７０４）。
【００６０】
矛盾検査部１０５は、ステップ７０４で作成した記述を、矛盾する仕様６０５として検査結果保持部１０９に登録する（ステップ７０５）。
【００６１】
矛盾検査部１０５は、検査対象規則を、矛盾する仕様６０５として検査結果保持部１０９に登録し、処理を終了する（ステップ７０６）。
【００６２】
矛盾検査部１０５は、ステップ７０３で検出した、比較対象規則には現れ検査対象規則には現れない条件項目を、比較対象規則に現れる値の否定値にて検査対象規則の条件部に論理積結合する。例えば上記例の場合、命題規則３０１の条件部に「「保険納入額」が「2万円以上」でない」という条件を論理積結合し、「保険加入有無」が「加入済み」である、かつ「保険納入額」が「2万円以上」でない場合、「補助金」は「交付あり」である」という記述を得る（ステップ７０７）。
【００６３】
矛盾検査部１０５は、ステップ７０７で作成した記述を、矛盾しない仕様６０６として検査結果保持部１０９に登録する（ステップ７０８）。
【００６４】
図８は、重複検査部１０６が検査結果保持部１０９に登録する重複検査結果の例である。
【００６５】
重複検査の検査結果８０１は、検査対象規則８０２、比較対象規則８０３、検査結果８０４、重複する仕様８０５、及び重複しない仕様８０６から構成される。
【００６６】
検査対象規則８０２、及び比較対象規則８０３は、命題規則のうちそれぞれ重複検査の対象となる命題規則と、その比較対象となる命題規則を表す。検査結果８０４は、検査対象規則８０２と比較対象規則８０３の重複検査結果を表す。重複する仕様８０５は、検査対象規則８０２が表す仕様のうち、比較対象規則８０３が表す仕様と重複する仕様を表す。逆に、重複しない仕様８０６は、検査対象規則８０２が表す仕様のうち、比較対象規則８０３が表す仕様と重複しない仕様を表す。
【００６７】
例えば、検査対象規則８０２として命題規則３０１が与えられ、その比較対象規則８０３として命題規則３０３が与えられたとする。この場合、重複検査部１０６は、検査結果８０４として「重複あり」を登録する。同時に、重複する仕様８０５として、「「保険加入有無」が「加入済み」である、かつ「保険納入額」が「2万円以上」である場合、「補助金」は「交付あり」である」という仕様を登録し、重複しない仕様８０６として、「「保険加入有無」が「加入済み」である、かつ「保険納入額」が「2万円以上」でない場合、「補助金」は「交付あり」である」という仕様を登録する。
【００６８】
また上述の通り重複検査部１０６は、命題規則間の仕様の重複を検査するだけでなく、上書き検査や、差分検査を行っても良い。上書き検査の場合は、検査対象規則８０２が表す仕様のうち、比較対象規則８０３が表す仕様を上書きする仕様、あるいは比較対象規則８０３が表す仕様によって上書きされる仕様を、重複する仕様８０５に登録する。差分検査の場合は、検査対象規則８０２が表す仕様のうち、比較対象規則８０３が表す仕様との差分の仕様を、重複する仕様８０５に登録する。
【００６９】
図９は、重複検査の手順例を示すフローチャートである。
【００７０】
以下に示す処理は、決定表作成支援・検証装置２０１の備えるＣＰＵ２０２が、メモリ２０３で実行するプログラムによって実現される。そしてこのプログラムは、以下に説明される各種の動作を行うためのコードから構成されている。
【００７１】
ＣＰＵ２０２は、重複検査部１０６を実行することによって、命題規則保持部１０２から任意の２つの命題規則を取得し、それぞれ検査対象規則、及び比較対象規則とする。取得した検査対象規則と比較対象規則は、それぞれ検査結果保持部１０９の検査対象規則８０２と比較対象規則８０３に登録する（ステップ９０１）。
【００７２】
重複検査部１０６は、取得した検査対象規則の条件を表す条件部と、比較対象規則の条件を表す条件部を参照し、双方の条件部が両立するかを判定する。条件部が両立する場合は、検査結果保持部１０９の検査結果８０４に「重複あり」を登録し、ステップ９０３を実行する。条件部が両立しない場合は、検査結果保持部１０９の検査結果８０４に「重複なし」を登録し、重複しない仕様８０６に検査対象規則を登録して処理を終了する。上記両立性の検査には，ＳＡＴソルバを用いても良い。例えば命題規則３０１と命題規則３０２は、条件部が両立するため、検査結果８０４に「重複あり」を登録し、ステップ９０３を実行する（ステップ９０２）。
【００７３】
重複検査部１０６は、比較対象規則には現れ、検査対象規則には現れない条件項目があるかを検査する。上記条件に合致する条件項目がある場合はステップ９０４を実行する。上記条件に合致する条件項目がない場合はステップ９０６を実行する。例えば命題規則３０１を検査対象規則とし、命題規則３０２を比較対象規則とした場合は、「保険納入額」という条件項目が上記条件に合致するため、ステップ９０４を実行する（ステップ９０３）。
【００７４】
重複検査部１０６は、ステップ９０３で検出した、比較対象規則には現れ検査対象規則には現れない条件項目を、比較対象規則に現れる値と同じ値で検査対象規則の条件部に論理積結合する。例えば上記例の場合、命題規則３０１の条件部に「「保険納入額」が「2万円以上」である」という条件を論理積結合し、「保険加入有無」が「加入済み」である、かつ「保険納入額」が「2万円以上」である場合、「補助金」は「交付あり」である」という記述を得る（ステップ９０４）。
【００７５】
重複検査部１０６は、ステップ９０４で作成した記述を、重複する仕様８０５として検査結果保持部１０９に登録する（ステップ９０５）。
【００７６】
重複検査部１０６は、検査対象規則を、重複する仕様８０５として検査結果保持部１０９に登録し、処理を終了する（ステップ９０６）。
【００７７】
重複検査部１０６は、ステップ９０３で検出した、比較対象規則には現れ検査対象規則には現れない条件項目を、比較対象規則に現れる値の否定値にて検査対象規則の条件部に論理積結合する。例えば上記例の場合、命題規則３０１の条件部に「「保険納入額」が「2万円以上」でない」という条件を論理積結合し、「保険加入有無」が「加入済み」である、かつ「保険納入額」が「2万円以上」でない場合、「補助金」は「交付あり」である」という記述を得る（ステップ９０７）。
【００７８】
重複検査部１０６は、ステップ９０７で作成した記述を、重複しない仕様８０６として結果保持部１０９に登録する（ステップ９０８）。
【００７９】
図１０は、重複検査の結果に基づいて作成するベン図の例である。
【００８０】
範囲１００１は、検査対象規則である命題規則３０１が表す仕様の範囲を示す。範囲１００２は、比較対象規則である命題規則３０２が表す仕様の範囲を示す。範囲１００３は検査対象規則が表す仕様のうち、比較対象規則が表す仕様と重複しない仕様の範囲を示す。範囲１００４は、検査対象規則が表す仕様のうち、比較対象規則が表す仕様と重複する仕様の範囲を示す。
【００８１】
図１１は、未定義検査部１０７が検査結果保持部１０９に登録する未定義検査結果の例である。
【００８２】
未定義検査の検査結果１１０１は、未定義条件１１０２から構成される。未定義条件１１０２は、命題規則保持部１０２が保持する命題規則によって結果が定義されていない条件を表す。
【００８３】
例えば、命題規則保持部１０９が命題規則３０１、３０２及び３０３を保持する場合、「「保険加入有無」が「加入済み」である場合」、「「保険加入有無」が「加入済み」である場合」及び「「保険納入額」が「2万円以上」である場合」という条件に対しては結果は定義済みである。一方で、「「保険加入有無」が「未加入」である、かつ「保険納入額」が「1円以上2万円未満」である場合」と「「保険加入有無」が「未加入」である、かつ「保険納入額」が「0円」である場合」という条件に対しては結果は未定義である。よって未定義条件１１０２には、これら2つの条件が登録される。
【００８４】
図１２は、未定義検査の手順例を示すフローチャートである。
【００８５】
以下に示す処理は、決定表作成支援・検証装置２０１の備えるＣＰＵ２０２が、メモリ２０３で実行するプログラムによって実現される。そしてこのプログラムは、以下に説明される各種の動作を行うためのコードから構成されている。
【００８６】
ＣＰＵ２０２は、未定義検査部１０７を実行することによって、命題規則保持部１０２から全ての命題規則を取得する（ステップ１２０１）。
【００８７】
未定義検査部１０７は、取得したそれぞれの命題規則に対して、それらの条件部の否定を表す記述を作成する。ただし、条件部の否定を作成する際には、任意の条件項目Xの任意の値x1について、「「X」が「x1」でない」という記述は用いてはならない。上記の場合、条件項目Xのx1以外の値x_i、x_i+1…x_j、を用いて、「「X」が「x_i」である、あるいは「X」が「x_i+1」である、…、あるいは「X」が「x_j」である」という記述を用いる。同様に、論理式形式の記述においては、否定等号「≠」を使用してはならない。
【００８８】
ここで、条件項目A、Bと、結果項目Cが与えられており、それぞれa1とa2、b1とb2、c1とc2の値を取るとする。この場合、「A＝a1∧B≠b1  ⇒  C＝c1」という命題規則に対しては、その条件部の否定として「A＝a2∨B＝b1」という記述を作成する（ステップ１２０２）。
【００８９】
未定義検査部１０７は、ステップ１２０２で作成した条件部の否定を表す記述を、論理積結合する（ステップ１２０３）。
【００９０】
未定義検査部１０７は、ステップ１２０３で作成した記述を、積和標準形に変形する（ステップ１２０４）。
【００９１】
未定義検査部１０７は、ステップ１２０４で作成した積和標準形の記述を、連言節ごとに分離し、それぞれの連言節を未定義条件１１０２として検査結果保持部１０９に登録する（ステップ１２０５）。
【００９２】
図１３は、制約検査部１０８が検査結果保持部１０９に登録する制約検査結果の例である。
【００９３】
制約検査の検査結果１３０１は、検査対象規則１３０２、制約１３０３、検査結果１３０４、制約対象の仕様１３０５、及び制約対象外の仕様１３０６から構成される。
【００９４】
検査対象規則１３０２及び制約１３０３は、制約検査の対象となる命題規則とその制約を表す。検査結果１３０４は、検査対象規則１３０２に対する制約１３０３の制約検査の結果を表す。制約対象の仕様１３０５は、検査対象規則１３０２が表す仕様のうち、制約１３０３による制約対象の仕様を表す。逆に、制約対象外の仕様１３０６は、検査対象規則１３０２が表す仕様のうち、制約１３０３による制約対象外の仕様を表す。
【００９５】
例えば、検査対象規則１３０２として命題規則３０２が与えられ、制約１３０３として制約５０１が与えられたとする。この場合、制約検査部１０８は、検査結果１３０４として「対象あり」を登録する。同時に、制約対象の仕様１３０５として、「「保険加入有無」が「未加入」である、かつ「保険納入額」が「2万円以上」である場合、「補助金」は「交付なし」である」という仕様を登録し、制約対象外の仕様１３０６として、「「保険加入有無」が「未加入」でない、かつ「保険納入額」が「2万円以上」である場合、「補助金」は「交付なし」である」という仕様を登録する。
【００９６】
図１４は、制約検査の手順例を示すフローチャートである。
【００９７】
以下に示す処理は、決定表作成支援・検証装置２０１の備えるＣＰＵ２０２が、メモリ２０３で実行するプログラムによって実現される。そしてこのプログラムは、以下に説明される各種の動作を行うためのコードから構成されている。
【００９８】
ＣＰＵ２０２は、制約検査部１０８を実行することによって、命題規則保持部１０２から任意の１つの命題規則を取得し検査対象規則とする。同時に制約保持部１０４から任意の１つの制約を取得する。取得した検査対象規則と制約は、それぞれ検査保持部１０９の検査対象規則１３０２と、制約１３０３に登録する（ステップ１４０１）。
【００９９】
制約検査部１０８は、取得した検査対象規則と制約を参照し、検査対象規則の条件部と制約の前件が両立するかを判定する。両立する場合は、ステップ１４０３を実行する。両立しない場合は、検査結果保持部１０９の検査結果１３０４に「対象なし」を登録し、制約対象外の仕様１３０６に検査対象規則を登録して処理を終了する。上記両立性の検査には，ＳＡＴソルバを用いても良い（ステップ１４０２）。
【０１００】
制約検査部１０８は、検査対象規則の条件部と制約の後件が両立するかを判定する。両立する場合は、ステップ１４０４を実行する。両立しない場合は、ステップ１４０９を実行する。上記両立性の検査には，ＳＡＴソルバを用いても良い。例えば、命題規則３０２と制約５０１の場合は、条件部と前件は両立するが、条件部と後件は両立しないため、ステップ１４０９を実行する。また例のため、「「保険加入有無」が「未加入」である場合、「補助金」は「交付あり」である」という命題規則３０４について考えると、命題規則３０４と制約５０１の場合は、条件部と前件は両立し、条件部と後件も両立するため、ステップ１４０４を実行する（ステップ１４０３）。
【０１０１】
制約検査部１０８は、制約の後件には現れ、検査対象規則の条件部には現れない条件項目があるかを検査する。上記条件に合致する条件項目がある場合は、検査結果保持部１０９の検査結果１３０４に「対象あり」を登録し、ステップ１４０５を実行する。上記条件に合致する条件項目がない場合は、検査結果１３０４に「対象なし」を登録し、制約対象外の仕様１３０６に検査対象規則を登録して処理を終了する。例えば命題規則３０４と制約５０１の場合は、「保険納入額」の条件項目が上記条件に合致するため、検査結果１３０４に「対象あり」を登録し、ステップ１４０５を実行する（ステップ１４０４）。
【０１０２】
制約検査部１０８は、ステップ１４０４で検出した、制約の後件には現れ検査対象規則の条件部には現れない条件項目を、制約の後件に現れる値の否定値にて検査対象規則の条件部に論理積結合する。例えば命題規則３０４と制約５０１の場合は、命題規則３０４の条件部に「「保険納入額」が「0円」でない」という条件を論理積結合し、「「保険加入有無」が「未加入」である、かつ「保険納入額」が「0円」でない場合、「補助金」は「交付あり」である」という記述を得る（ステップ１４０５）。
【０１０３】
制約検査部１０８は、ステップ１４０５で作成した記述を、制約対象の仕様１３０５として結果保持部１０９に登録する（ステップ１４０６）。
【０１０４】
制約検査部１０８は、ステップ１４０４で検出した、制約の後件には現れ検査対象規則の条件部には現れない条件項目を、制約の後件に現れる値と同じ値で検査対象規則の条件部に論理積結合する。例えば命題規則３０４と制約５０１の場合は、命題規則３０４の条件部に「「保険納入額」が「0円」である」という条件を論理積結合し、「「保険加入有無」が「未加入」である、かつ「保険納入額」が「0円」である場合、「補助金」は「交付あり」である」という記述を得る（ステップ１４０７）。
【０１０５】
制約検査部１０８は、ステップ１４０７で作成した記述を、制約対象外の仕様１３０６として結果保持部１０９に登録する（ステップ１４０８）。
【０１０６】
制約検査部１０８は、制約の前件には現れ、検査対象規則の条件部には現れない条件項目があるかを検査する。上記条件に合致する条件項目がある場合は、検査結果保持部１０９の検査結果１３０４に「対象あり」を登録し、ステップ１４１１を実行する。上記条件に合致する条件項目がない場合は、検査結果１３０４に「対象あり」を登録し、ステップ１４１０を実行する。例えば命題規則３０２と制約５０１の場合は、「保険加入有無」の条件項目が上記条件に合致するため、検査結果１３０４に「対象あり」を登録し、ステップ１４１１を実行する（ステップ１４０９）。
【０１０７】
制約検査部１０８は、検査対象規則を、制約対象の仕様１３０５として検査結果保持部１０９に登録し、処理を終了する（ステップ１４１０）。
【０１０８】
制約検査部１０８は、ステップ１４０９で検出した、制約の前件には現れ検査対象規則の条件部には現れない条件項目を、制約の前件に現れる値と同じ値で検査対象規則の条件部に論理積結合する。例えば命題規則３０２と制約５０１の場合は、命題規則３０２の条件部に「「保険加入有無」が「未加入」である」という条件を論理積結合し、「「保険加入有無」が「未加入」である、かつ「保険納入額」が「2万円以上」である場合、「補助金」は「交付なし」である」という記述を得る（ステップ１４１１）。
【０１０９】
制約検査部１０８は、ステップ１４１１で作成した記述を、制約対象の仕様１３０５として結果保持部１０９に登録する（ステップ１４１２）。
【０１１０】
制約検査部１０８は、ステップ１４０４で検出した、制約の前件には現れ検査対象規則の条件部には現れない条件項目を、制約の前件に現れる値の否定値にて検査対象規則の条件部に論理積結合する。例えば命題規則３０２と制約５０１の場合は、命題規則３０４の条件部に「「保険加入有無」が「未加入」でない」という条件を論理積結合し、「「保険加入有無」が「未加入」でない、かつ「保険納入額」が「2万円以上」である場合、「補助金」は「交付なし」である」という記述を得る（ステップ１４１３）。
【０１１１】
制約検査部１０８は、ステップ１４１３で作成した記述を、制約対象外の仕様１３０６として結果保持部１０９に登録する（ステップ１４１４）。
【０１１２】
図１５は、ポリシ保持部１１１が保持する表示ポリシの例である。
【０１１３】
表示ポリシ一覧１５０１はポリシ記述１５０２、ポリシ適用条件１５０３、表示方法１５０４、及び有効／無効属性１５０５から構成される。
【０１１４】
ポリシ記述１５０２は、検査結果から表示対象規則を抽出する方法に関するポリシの記述である。表示対象規則決定部１１４は、ポリシ記述１５０２を解釈した結果に基づいて、表示対象規則を決定する。ポリシ適用条件１５０３は、ポリシが適用されるための条件を表す。適用条件を満たしていないポリシは、表示対象規則決定部１１４が表示対象規則を決定するためのポリシとして適用されない。表示方法１５０４は、当該ポリシに基づいて決定された表示対象規則の、決定表上での表示方法を示す。有効／無効属性１５０５は、当該ポリシが現在有効か無効かを示す。無効なポリシは、ポリシ適用条件１５０３を満たしていたとしても適用されない。
【０１１５】
例えばＮｏ．1のポリシは、検査結果保持部１０９が矛盾検査の検査結果６０１を保持している場合に、矛盾する仕様６０５の仕様を表示対象規則として決定し、決定表上で強調表示することを意味する。
【０１１６】
Ｎｏ．5のポリシは、検査結果保持部１０９が矛盾検査の検査結果６０１を保持している場合に、矛盾しない仕様６０６の仕様を表示対象規則として決定し、決定表上に（強調なしで）通常表示することを意味する。
【０１１７】
Ｎｏ．6のポリシは、検査結果保持部１０９が矛盾検査の検査結果６０１を保持している場合に、Ｎｏ．1のポリシが示す矛盾する仕様６０５と8割以上の条件値が一致する命題規則を取得し、決定表上に通常表示することを意味する。このようなポリシを適用する場合、表示対象規則決定部１１４は、命題規則保持部１０２を検索し、上記条件に合致する命題規則を取得する必要がある。
【０１１８】
Ｎｏ．7のポリシは、検査結果保持部１０９が矛盾検査の検査結果６０１を保持している場合に、Ｎｏ．1のポリシが示す矛盾する仕様６０５と重複する命題規則を取得し、決定表上に通常表示することを示す。このようなポリシを適用する場合、表示対象規則決定部１１４は、重複検査部１０６を実行し、その検査結果を検査結果保持部１０９から取得する必要がある。また上記重複検査は、Ｎｏ．1のポリシが示す矛盾する仕様６０５を比較対象規則とし、他の全ての命題規則を検査対象規則として実施する必要がある。
【０１１９】
図１６は、表示対象規則保持部１１５が保持する表示対象規則の例である。
【０１２０】
表示対象規則一覧１６０１は、表示対象規則記述１６０２と、表示方法１６０３から構成される。表示対象規則１６０２は、表示対象規則決定部１１４が、ポリシ保持部１１１から取得した表示ポリシ一覧１５０１に基づき、矛盾検査の検査結果６０１から抽出した表示対象規則を表す。
【０１２１】
例えば、Ｎｏ．1の表示対象規則は、命題規則３０１と命題規則３０２の矛盾検査結果６０１における矛盾する仕様６０５を、表示ポリシ一覧１５０１におけるＮｏ．1のポリシに基づき、表示対象規則として登録した結果である。表示方法１６０３は、表示方法１５０４に基づく。
【０１２２】
図１７は、表示対象規則決定の手順例を示すフローチャートである。
【０１２３】
以下に示す処理は、決定表作成支援・検証装置２０１の備えるＣＰＵ２０２が、メモリ２０３で実行するプログラムによって実現される。そしてこのプログラムは、以下に説明される各種の動作を行うためのコードから構成されている。
【０１２４】
ＣＰＵ２０２は、表示対象規則決定部１１４を実行することによって、検査結果保持部１０９から検査結果を取得する（ステップ１７０１）。
【０１２５】
表示対象規則決定部１１４は、取得した検査結果を参照し、ポリシ保持部が保持する表示ポリシ一覧から、選択可能ポリシ設定部１１０がポリシ適用条件１５０３を満たすとして選別し，かつ有効／無効属性１５０５が有効なポリシを取得する（ステップ１７０２）。
【０１２６】
表示対象規則決定部１１４は、ステップ１７０２で取得したポリシを参照し、ポリシに従って表示対象規則を決定するためには、検査済みの検査とは異なる追加検査が必要かを判定する。例えば、表示ポリシ一覧１５０１におけるＮｏ．7のポリシを適用する場合、重複検査を追加で行う必要がある。追加検査が必要と判定した場合は、ステップ１７０４を実行する。追加検査は不要と判定した場合は１ステップ１７０６を実行する（ステップ１７０３）。
【０１２７】
表示対象規則決定部１１４は、必要な追加検査の種類に応じて、矛盾検査部１０５、重複検査部１０６、未定義検査部１０７、及び制約検査部１０８を実行する（ステップ１７０４）。
【０１２８】
表示対象規則決定部１１４は、検査結果保持部１０９から追加検査の結果を取得する（ステップ１７０５）。
【０１２９】
表示対象規則決定部１１４は、ステップ１７０２で取得したポリシに従い、取得した検査結果から表示対象規則を抽出する。ポリシによっては、命題規則保持部１０２を参照し、命題規則保持部１０２が保持する命題規則から表示対象規則を抽出する場合もある（ステップ１７０６）。
【０１３０】
表示対象規則決定部１１４は、ステップ１７０６で抽出した表示対象規則を、表示対象規則保持部１１５に登録する（ステップ１７０７）。
【０１３１】
図１８は、決定表部分表示・修正部１１６が、表示対象規則保持部１１５が保持する表示対象規則に基づいて表示する部分決定表の例である。
【０１３２】
部分決定表１８０１は、決定表部分表示・修正部１１６が、表示対象規則一覧１６０１に基づいて表示する部分決定表である。列１８０２は、表示対象規則一覧１６０１におけるＮｏ．1の表示対象規則に基づいて表示される範囲を示す。列１８０２は、表示方法１６０３に基づき、他の列よりも強調表示される。また条件項目１８０５は、ステップ７０３及びステップ７０７において，検査対象規則である命題規則３０１に対して新しく追加された条件項目であるため、強調表示される。
【０１３３】
また、部分決定表１８０１においては、条件項目「国籍」はドントケア条件であり、集約表示されている。この集約表示を解除した結果を、部分決定表１８０３に示す。列１８０４は、列１８０３と同じ範囲を示す。あるいは、部分決定表１８０１においては、ドントケアな条件項目「国籍」を非表示にしても良い。
【０１３４】
図１９は、決定表部分表示・修正部１１６が修正入力を受け付けることにより、修正された部分決定表の例である。
【０１３５】
修正済みの部分決定表１９０１は、部分決定表１８０１を修正した結果であり、修正された列１９０２を含む。修正された列１９０２は、列１８０２を修正した結果であり、結果項目「補助金」の値が、「交付あり」から「交付なし」へと修正されている。
【０１３６】
図２０は、修正済み規則保持部１１８が保持する修正済み規則の例である。
【０１３７】
修正済み規則一覧２００１は、表示対象規則２００２と、その修正結果である修正済み規則２００３から構成される。修正済み規則生成部１１７は、表示対象規則保持部１１５から、表示対象規則一覧１６０１を取得し、表示対象規則２００２として登録する。また修正済み規則生成部１１７は、表示対象規則２００２に対応する修正済みの部分決定表を取得し、命題形式の仕様に変換して修正済み規則２００３として登録する。決定表形式の仕様を命題形式の仕様に変換する方法は、先願の特許文献２に示している。例えば、修正済み規則一覧２００１におけるＮｏ．1の表示対処規則は、表示対象規則一覧１６０１のＮｏ．1の表示対象規則である。この表示対象規則は、部分決定表１８０１の列１８０２として表示され、修正済みの部分決定表１９０１の列１９０２へと修正される。よって、列１９０２を命題形式の仕様「「保険加入有無」が「加入済み」である，かつ「保険納入額」が「2万円以上」である場合，「補助金」は「交付なし」である」に変換し、修正済み規則２００３として登録する。
【０１３８】
以上のようにして、ソフトウェア仕様を表す決定表に対して、命題形式の仕様の入力手段と、上記命題形式の仕様間の矛盾、重複、差分を検査する手段と、上記命題形式の仕様の未定義仕様を検査する手段と、上記命題形式の仕様が制約を充足するかを検査する手段と、上記検査の結果に基づいて決定表を作成する手段と、決定表の修正を受け付ける手段と、修正済みの決定表を命題形式の仕様に変換する手段と、上記変換によって得た命題形式の仕様を、もとの命題形式の仕様と置換する手段を提供する、ソフトウェア仕様開発支援装置２０１を提供できる。
【符号の説明】
【０１３９】
１０１・・・命題規則編集部、１０２・・・命題規則保持部、１０３・・・制約編集部、１０４・・・制約保持部、１０５・・・矛盾検査部、１０６・・・重複検査部、１０７・・・未定義検査部、１０８・・・制約検査部、１０９・・・検査結果保持部、１１０・・・選択可能ポリシ設定部、１１１・・・ポリシ保持部、１１２・・・ポリシ選択部、１１３・・・ホリシ編集部、１１４・・・表示対象規則決定部、１１５・・・表対象規則保持部、１１６・・・決定表部分表示・修正部、１１７・・・修正済み規則生成部、１１８・・・修正済み規則保持部、１１９・・・修正済み規則置換部。
【図１】
2014041394.tif 000003
【図２】
2014041394.tif 000004
【図３】
2014041394.tif 000005
【図４】
2014041394.tif 000006
【図５】
2014041394.tif 000007
【図６】
2014041394.tif 000008
【図７】
2014041394.tif 000009
【図８】
2014041394.tif 000010
【図９】
2014041394.tif 000011
【図１０】
2014041394.tif 000012
【図１１】
2014041394.tif 000013
【図１２】
2014041394.tif 000014
【図１３】
2014041394.tif 000015
【図１４】
2014041394.tif 000016
【図１５】
2014041394.tif 000017
【図１６】
2014041394.tif 000018
【図１７】
2014041394.tif 000019
【図１８】
2014041394.tif 000020
【図１９】
2014041394.tif 000021
【図２０】
2014041394.tif 000022