(57)【特許請求の範囲】
【請求項１】
ソフトウェアの設計支援装置を用いて、前記ソフトウェアの設計を支援する方法であって、
前記ソフトウェアの仕様は、意味規則及び構文規則が定義された形式言語によって記述された形式仕様であって、
前記設計支援装置は、プロセッサ、前記プロセッサに接続されるメモリ、及び記憶装置を備え、
前記設計支援方法は、
前記形式仕様が要求された検証項目を満たすか否かを、前記意味規則に基づいた所定の検証方法によって検証し、
前記形式仕様が前記検証項目を満たさない場合には、前記形式仕様に含まれる誤りとして、並列に実行されるプロセス交互動作単位の誤りを特定するための処理、又は、前記形式仕様に含まれる不変条件の不足を特定するための処理を実行し、
前記形式仕様に含まれる並列に実行されるプロセス交互動作単位の誤りを特定する処理を実行した場合は、前記所定の検証方法による形式仕様の検証履歴に基づいて、前記特定された誤りを修正するための修正候補を抽出し、前記形式仕様に含まれる不変条件の不足を特定するための処理を実行した場合は、前記形式仕様における不変条件の記述とシステムの操作に基づいて、前記特定された誤りを修正するための修正候補を抽出し、
前記抽出された修正候補を出力することを特徴とする設計支援方法。
【請求項２】
前記設計支援方法は、さらに、
自然言語によって記述された自然言語仕様の入力を受け付け、
前記入力された自然言語仕様を、あらかじめ保持された自然言語仕様変換規則に基づいて、前記形式仕様に変換し、
前記自然言語仕様と前記形式仕様との対応を記憶し、
前記抽出された修正候補を出力する処理は、前記自然言語仕様と前記形式仕様との対応に基づいて、前記抽出された修正候補を自然言語で出力することを特徴とする請求項１に記載の設計支援方法。
【請求項３】
前記抽出された修正候補を出力する処理は、複数の前記修正候補が抽出され、前記抽出された複数の修正候補に依存関係を有する修正候補が含まれる場合には、前記修正候補の依存関係に基づいて、前記抽出された修正候補の一覧を階層ごとに出力し、
前記設計支援方法は、さらに、前記出力された修正候補の選択を受け付けた場合に、前記選択された修正候補の下層にあるすべての修正候補が選択されることを特徴とする請求項１に記載の設計支援方法。
【請求項４】
前記形式仕様には、一連の処理を含む複数のプロセスが記述され、
前記プロセスは、並列に実行され、
前記所定の検証方法は、前記プロセスに属する処理のすべての実行パターンについて検証し、
前記所定の検証方法による形式仕様の検証履歴は、前記プロセスに属する処理ごとに記録され、
前記修正候補を抽出する処理は、
前記所定の検証方法によって誤りが発見された実行パターンについて、連続して実行される処理であって、同じプロセスに属する処理の集合をブロックとし、
前記ブロックの実行順序を入れ替えて、新たな実行パターンを生成し、
前記生成された実行パターンが実行不可能な場合には、前記生成された実行パターンが実行されるように前記形式仕様を修正する方法を修正候補として抽出することを特徴とする請求項１に記載の設計支援方法。
【請求項５】
前記修正候補を抽出する処理は、
前記形式仕様の前記検証項目に対応する論理式に基づいて、前記論理式の項を節とする木構造データを所定の方法で作成し、
前記木構造データの根から葉までの各節点に対応する論理式が矛盾しない枝を抽出し、
前記木構造データの根から葉までの各節点に対応する論理式のいずれかに矛盾する論理式を作成し、
前記作成された論理式を、前記形式仕様の前記検証項目に対応する論理式に連言結合することを修正候補とすることを特徴とする請求項１に記載の設計支援方法。
【請求項６】
ソフトウェアの設計支援装置において、
前記ソフトウェアの仕様は、意味規則及び構文規則が定義された形式言語によって記述された形式仕様であって、
前記設計支援装置は、プロセッサ、前記プロセッサに接続されるメモリ、及び記憶装置を備え、
前記プロセッサは、
前記形式仕様が要求された検証項目を満たすか否かを、前記意味規則に基づいた所定の検証方法によって検証し、
前記形式仕様が前記検証項目を満たさない場合には、前記形式仕様に含まれる誤りとして、並列に実行されるプロセス交互動作単位の誤りを特定するための処理、又は、前記形式仕様に含まれる不変条件の不足を特定するための処理を実行し、
前記形式仕様に含まれる並列に実行されるプロセス交互動作単位の誤りを特定する処理を実行した場合は、前記所定の検証方法による形式仕様の検証履歴に基づいて、前記特定された誤りを修正するための修正候補を抽出し、前記形式仕様に含まれる不変条件の不足を特定するための処理を実行した場合は、前記形式仕様における不変条件の記述とシステムの操作に基づいて、前記特定された誤りを修正するための修正候補を抽出し、
前記抽出された修正候補を出力することを特徴とする設計支援装置。
【請求項７】
前記プロセッサは、
自然言語によって記述された自然言語仕様の入力を受け付け、
前記入力された自然言語仕様を、あらかじめ保持された自然言語仕様変換規則に基づいて、前記形式仕様に変換し、
前記自然言語仕様と前記形式仕様との対応を記憶し、
前記抽出された修正候補が形式言語で記述されている場合には、前記自然言語仕様と前記形式仕様との対応に基づいて、前記抽出された修正候補を自然言語で出力することを特徴とする請求項６に記載の設計支援装置。
【請求項８】
前記プロセッサは、
複数の前記修正候補が抽出され、前記抽出された複数の修正候補に依存関係を有する修正候補が含まれる場合には、前記修正候補の依存関係に基づいて、前記抽出された修正候補の一覧を階層ごとに出力し、
前記出力された修正候補の選択を受け付けた場合に、前記選択された修正候補の下層にあるすべての修正候補を選択することを特徴とする請求項６に記載の設計支援装置。
【請求項９】
前記形式仕様には、一連の処理を含む複数のプロセスが記述され、
前記プロセスは、並列に実行され、
前記所定の検証方法は、前記プロセスに属する処理のすべての実行パターンについて検証し、
前記所定の検証方法による形式仕様の検証履歴は、前記プロセスに属する処理ごとに記録され、
前記プロセッサは、
前記所定の検証方法によって誤りが発見された実行パターンについて、連続して実行される処理であって、同じプロセスに属する処理の集合をブロックとし、
前記ブロックの実行順序を入れ替えて、新たな実行パターンを生成し、
前記生成された実行パターンが実行不可能な場合には、前記生成された実行パターンが実行されるように前記形式仕様を修正する方法を修正候補として抽出することを特徴とする請求項６に記載の設計支援装置。
【請求項１０】
前記プロセッサは、
前記形式仕様の前記検証項目に対応する論理式に基づいて、前記論理式の項を節とする木構造データを所定の方法で作成し、
前記木構造データの根から葉までの各節点に対応する論理式が矛盾しない枝を抽出し、
前記木構造データの根から葉までの各節点に対応する論理式のいずれかに矛盾する論理式を作成し、
前記作成された論理式を、前記形式仕様の前記検証項目に対応する論理式に連言結合することを修正候補とすることを特徴とする請求項６に記載の設計支援装置。
【請求項１１】
ソフトウェアの設計支援装置で実行される設計支援プログラムであって、
前記ソフトウェアの仕様は、意味規則及び構文規則が定義された形式言語によって記述された形式仕様であって、
前記設計支援プログラムは、
前記形式仕様が要求された検証項目を満たすか否かを、前記意味規則に基づいた所定の検証方法によって検証する手順と、
前記形式仕様が前記検証項目を満たさない場合には、前記形式仕様に含まれる誤りとして、並列に実行されるプロセス交互動作単位の誤りを特定するための処理、又は、前記形式仕様に含まれる不変条件の不足を特定するための処理を実行する手順と、
前記形式仕様に含まれる並列に実行されるプロセス交互動作単位の誤りを特定する処理を実行した場合は、前記所定の検証方法による形式仕様の検証履歴に基づいて、前記特定された誤りを修正するための修正候補を抽出し、前記形式仕様に含まれる不変条件の不足を特定するための処理を実行した場合は、前記形式仕様における不変条件の記述とシステムの操作に基づいて、前記特定された誤りを修正するための修正候補を抽出する手順と、
前記抽出された修正候補を出力する手順と、を前記設計支援装置に実行させることを特徴とする設計支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア開発を支援する技術に関し、特に、ソフトウェア仕様を検証又は修正する技術に関する。
【背景技術】
【０００２】
従来、ソフトウェア仕様の形式検証は、自然言語又は図などによって記述されたソフトウェア仕様（以下、「自然言語仕様」）を形式言語によって記述された形式仕様に変換し、変換された形式仕様を検証する手順で行われている。
【０００３】
そこで、形式言語に精通していない設計者でも形式仕様を得ることができるようにするため、自然言語仕様から、形式仕様への特有の変換規則を予め定めておき、当該変換規則に基づいて自然言語仕様を形式仕様に変換する方法が開示されている（例えば、特許文献１及び特許文献２参照）。
【０００４】
また、形式仕様の検証作業を支援するツールが知られている（例えば、非特許文献１及び、非特許文献２参照）。さらに、検証によって形式仕様に誤りがあることが判明した場合には、当該誤り箇所を特定する方法が知られている（例えば、特許文献３参照）。
【特許文献１】特開２０００−１４８４６２号公報
【特許文献２】特開平５−１１９９８７号公報
【特許文献３】特開平６−１４９５６０号公報
【非特許文献１】Gerald J. Holzmann著、「The SPIN Model Checker」、Addison-Wesley、2003年9月、p.7-8、p.390-392
【非特許文献２】AtelierB.Societe.com、"Atelier B"、[online]、平成19年6月25日検索、インターネット<URL：http://www.atelierb.societe.com/index_uk.html>
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、前述した従来技術では、自然言語仕様から形式仕様への変換、形式仕様の検証、及び形式仕様の誤り箇所の特定までを支援対象としている。そのため、特定された誤りの除去を目的とした形式仕様の修正は、設計者の推測により人手で形式仕様を変更することによって行われる。しかし、設計者の推測による変更では、必ずしも誤りを除去できるとは限らない。
【０００６】
したがって、従来技術では、形式言語に精通し、形式仕様の適切な修正方法を推測できる設計者でなければ、形式仕様を正しく修正できないという問題があった。より具体的には、Promelaで記述した形式仕様では交互動作の最小単位に関する誤りが非常に多いので、本願発明は交互動作の最小単位に関する誤りを修正する修正候補を抽出する。また、モデル規範型仕様記述言語Ｂについても、自然言語仕様のテンプレートを利用することによって、自然言語仕様から形式言語仕様に変換することが可能であるが、本願発明は形式仕様言語への変換にともなって欠落する情報を補充する。
【０００７】
また、従来技術では、人手による形式仕様の変更後、再検証を行うことによって誤りを除去できたか否かを確認する必要がある。したがって、人手による形式仕様の変更が不適切であった場合には、形式仕様の変更と検証を何度も繰り返すことになる。一般的に、一度の検証に数時間から数十時間かかる場合もあるため、形式仕様を正しく修正するまでに多くの時間を必要とする問題点がある。
【０００８】
本発明の目的は、形式仕様の適切な修正方法を推測できない設計者、又は、形式言語に精通していない設計者であっても、簡単かつ効率的に形式仕様を修正できるようにするとともに、修正可能な形式仕様を修正不可能と判断する可能性を低減する技術を提供することにある。
【課題を解決するための手段】
【０００９】
本発明の代表的な一形態では、ソフトウェアの設計支援装置を用いて、前記ソフトウェアの設計を支援する方法であって、前記ソフトウェアの仕様は、意味規則及び構文規則が定義された形式言語によって記述された形式仕様であって、前記設計支援装置は、プロセッサ、前記プロセッサに接続されるメモリ、及び記憶装置を備え、前記設計支援方法は、前記形式仕様が要求された検証項目を満たすか否かを、前記意味規則に基づいた所定の検証方法によって検証し、前記形式仕様が前記検証項目を満たさない場合には、前記形式仕様に含まれる誤りとして、並列に実行されるプロセス交互動作単位の誤りを特定するための処理、又は、前記形式仕様に含まれる不変条件の不足を特定するための処理を実行し、前記形式仕様に含まれる並列に実行されるプロセス交互動作単位の誤りを特定する処理を実行した場合は、前記所定の検証方法による形式仕様の検証履歴に基づいて、前記特定された誤りを修正するための修正候補を抽出し、前記形式仕様に含まれる不変条件の不足を特定するための処理を実行した場合は、前記形式仕様における不変条件の記述とシステムの操作に基づいて、前記特定された誤りを修正するための修正候補を抽出し、前記抽出された修正候補を出力する。
【発明の効果】
【００１０】
本発明の一形態によれば、形式仕様に誤りが検出された場合に、形式仕様の記述及び形式仕様の検証履歴に基づいて修正候補を抽出するため、修正された誤りについて、再度検証する必要がなく、効率的に形式仕様を修正することができる。特に、Promelaで記述した形式仕様において交互動作の最小単位に関する誤りを修正する修正候補を抽出することができる。また、モデル規範型仕様記述言語Ｂにおいて、形式仕様言語への変換にともなって欠落する情報を補充することができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施の形態を、図面を参照しながら詳細に説明する。
【００１２】
（第１の実施の形態）
本発明の第１の実施の形態では、プロセス記述言語Promela（Process Meta-Language、非特許文献１参照）を形式言語の例とする。また、本発明の第１の実施の形態で扱われる形式仕様は、形式仕様が満たすべき性質である、検証項目を含み、「形式仕様の検証」とは検証項目を除いた形式仕様が、前記検証項目を満たすかを検証することを指す。
【００１３】
図１は、本発明の第１の実施の形態の設計支援装置２０１の構成を示すブロック図である。
【００１４】
設計支援装置２０１は、仕様作成部１０１、仕様検証部１１２、仕様修正部１０２、自然言語仕様テンプレートデータベース（自然言語仕様テンプレートＤＢ）１０８、自然言語仕様データベース（自然言語仕様ＤＢ）１０９、形式仕様データベース（形式仕様ＤＢ）１１０、形式言語変換規則データベース（形式言語変換規則ＤＢ）１１１、入出力制御部１０５、入力部１０３、及び表示部１０４を備える。
【００１５】
仕様作成部１０１、仕様検証部１１２及び仕様修正部１０２は、ＣＰＵによって実行されるプログラムである。仕様作成部１０１は、自然言語仕様を作成するためのテンプレートを提示し、利用者からの入力を受け付けて自然言語仕様を作成する。さらに、作成された自然言語仕様を形式仕様に変換する。仕様検証部１１２は、作成された形式仕様を検証する。仕様修正部１０２は、形式仕様の検証結果に基づいて、作成された仕様を修正する。
【００１６】
自然言語仕様テンプレートＤＢ１０８は、自然言語仕様のテンプレート及び形式仕様への変換規則を保持する。自然言語仕様ＤＢ１０９は、自然言語仕様を保持する。形式仕様ＤＢ１１０は、変換された形式仕様を保持する。形式言語変換規則ＤＢ１１１は、形式言語記述を自然言語記述に変換するために必要な情報を保持する。
【００１７】
仕様作成部１０１は、自然言語仕様作成部１０６及び自然言語仕様変換部１０７を含む。
【００１８】
自然言語仕様作成部１０６は、設計者が自然言語仕様を作成及び編集する機能であって、自然言語仕様テンプレートＤＢ１０８に予め保持されている自然言語仕様テンプレートを用いて、自然言語仕様を作成する。また、自然言語仕様作成部１０６は、作成された自然言語仕様を、自然言語仕様識別番号とともに自然言語仕様ＤＢ１０９に登録する。さらに、作成された自然言語仕様を自然言語仕様変換部１０７に入力する。
【００１９】
自然言語仕様変換部１０７は、自然言語仕様テンプレートに対応付けられたテンプレート変換規則に基づいて、作成された自然言語仕様を形式仕様に変換する。また、自然言語仕様変換部１０７は、得られた形式仕様を、形式仕様識別番号とともに形式仕様ＤＢ１１０に登録する。さらに、自然言語仕様変換部１０７は、形式言語記述を自然言語記述に変換するために必要な形式言語変換規則を、形式言語変換規則ＤＢ１１１に登録する。形式言語変換規則は、自然言語仕様を形式仕様に変換する際に、自然言語仕様と形式仕様との対応関係によって生成される。
【００２０】
仕様検証部１１２は、形式仕様検証部１１９及び検証履歴変換部１１５を備える。形式仕様検証部１１９は、設計者からの命令を受け付けて形式仕様を検証し、検証された形式仕様及び当該検証の履歴を、仕様修正部１０２に入力する。また、形式仕様検証部１１９は、検証の履歴を検証履歴変換部１１５に入力する。検証履歴変換部１１５は、形式言語変換規則ＤＢを参照し、検証履歴の形式言語記述を自然言語記述に変換し、自然言語記述に変換された検証履歴を表示部１０４によって表示する。
【００２１】
仕様修正部１０２は、修正候補抽出部１１３、修正候補変換部１１４、修正候補表示・選択部１１６、形式仕様修正部１１７、及び自然言語仕様修正部１１８を含む。
【００２２】
修正候補抽出部１１３は、検証された形式仕様及び検証履歴を受け付け、形式仕様の修正候補を抽出する。抽出された修正候補は、検証によって発見した誤りを除去可能な修正候補となる。修正候補変換部１１４は、形式言語変換規則ＤＢ１１１を参照し、形式言語で記述された修正候補を自然言語に変換する。このとき、元の形式言語記述も破棄せずに保持するため、修正候補には形式言語記述と自然言語記述の両方が含まれる。修正候補表示・選択部１１６は、自然言語で記述された修正候補の一覧を階層的に表示し、設計者による修正候補の選択を受け付ける。形式仕様修正部１１７は、設計者によって選択された修正候補の形式言語記述に基づいて、形式仕様ＤＢ１１０に保持される形式仕様を修正する。同時に、自然言語仕様修正部１１８も、設計者によって選択された修正候補の自然言語記述に基づいて、自然言語仕様ＤＢ１０９に保持される自然言語仕様を修正する。このとき、形式仕様修正部１１７は、形式仕様ＤＢ１１０に保持される形式仕様を直接修正せずに、修正された仕様を新たな仕様として追加登録してもよい。自然言語仕様修正部１１８についても同様に、修正された仕様を新たな仕様として追加登録してもよい。
【００２３】
図２は、本発明の第１の実施の形態の設計支援装置２０１のハードウェア構成を示す図である。
【００２４】
設計支援装置２０１は、ＣＰＵ２０２、メモリ２０３、外部記憶装置２０４、表示装置２０５及び入力装置２０６を備える。
【００２５】
ＣＰＵ２０２は、メモリ２０３に記憶されたプログラムを実行することによって、各種業務処理を実行する。メモリ２０３は、ＣＰＵ２０２のワークエリアとして機能し、プログラム及びプログラムの実行に必要なデータを記憶する。具体的には、仕様作成部１０１、仕様検証部１１２及び仕様修正部１０２などを構成するプログラムが記憶される。
【００２６】
外部記憶装置２０４は、各種データベースなどを格納する。外部記憶装置２０４は、例えば、ハードディスク装置などである。具体的には、自然言語仕様テンプレートＤＢ１０８、自然言語仕様ＤＢ１０９、形式仕様ＤＢ１１０及び形式言語変換規則ＤＢ１１１が格納される。
【００２７】
表示装置２０５は、プログラムの実行結果などを表示する。表示装置２０５は、例えば、ディスプレイなどである。入力装置２０６は、処理の実行指示及び処理に必要な情報の入力などを利用者から受け付ける。入力装置２０６は、例えば、キーボード及びマウスなどである。
【００２８】
図３は、本発明の第１の実施の形態の自然言語仕様テンプレートＤＢ１０８のデータテーブルを示す図である。
【００２９】
自然言語仕様テンプレートＤＢ１０８のデータテーブル３０１は、テンプレート番号３０２、自然言語仕様テンプレート３０３及び形式仕様変換規則３０４を含む。
【００３０】
テンプレート番号３０２は、テンプレートを一意に識別する番号である。自然言語仕様テンプレート３０３は、変換元となる自然言語（仕様）である。形式仕様変換規則３０４は、自然言語仕様テンプレート３０３に格納された変換元の自然言語仕様を、対応する形式仕様に変換する規則である。
【００３１】
設計者は、自然言語仕様テンプレート３０３のパラメータ（例えば、「Ｘ１」）を具体化することによって、自然言語仕様を作成する。さらに、作成された自然言語仕様は、自然言語仕様変換部１０７が実行されることによって、形式仕様変換規則３０４に基づいて形式仕様に変換される。
【００３２】
図４は、本発明の第１の実施の形態の自然言語仕様テンプレートに基づいて作成された自然言語仕様の具体例を示す図である。
【００３３】
自然言語仕様記述４０２は、図３のテンプレート３０５のパラメータＸ１に「監視システム」を、パラメータＸ２に「同期ロック」を代入することによって作成される。同様に、自然言語仕様記述４０３は、図３のテンプレート３０７のパラメータＸ１に「監視システム」を、パラメータＸ２に「信号Ａ」を代入することによって作成される。他の自然言語仕様記述（４０４〜４１４）も同様に作成される。
【００３４】
図５は、本発明の第１の実施の形態の自然言語仕様４０１が形式仕様変換規則３０４に基づいて変換された形式仕様を示す図である。
【００３５】
形式仕様５０１は、図４に示した自然言語仕様記述（４０２〜４１４）を、図３の形式仕様変換規則３０４に基づいて変換することによって得られる。例えば、自然言語仕様記述４０２を変換すると、形式仕様記述５０２を得ることができる。同様に、自然言語仕様記述４０３を変換すると、形式仕様記述５０３を得ることができる。他の自然言語仕様記述（４０４〜４１４）も同様に、形式仕様記述（５０４〜５１３）に変換することができる。
【００３６】
また、自然言語仕様記述４０３を形式仕様記述５０２に変換する際に、テンプレートのパラメータに代入された単語を未使用の任意変数に変換する。このとき、同一の単語は同一の変数に変換されなければならない。例えば、自然言語仕様記述４０２から形式仕様記述５０２への変換では、「同期ロック」は、変数「val」に変換している。そのため、自然言語仕様記述４０７から形式仕様記述５０６への変換においても、「同期ロック」を変数「val」に変換しなければならず、他の変数（例えばdevAなど）に変換してはならない。
【００３７】
図６は、本発明の第１の実施の形態の形式言語変換規則ＤＢ１１１のデータテーブルを示す図である。
【００３８】
形式言語変換規則ＤＢ１１１は、形式言語記述を自然言語記述に変換するために必要な情報を保持する。本発明の第１の実施の形態では、形式仕様の検証履歴又は形式仕様の修正候補に含まれる形式言語記述を、自然言語記述に変換するために、形式言語変換規則ＤＢ１１１を利用する。
【００３９】
形式言語変換規則ＤＢデータテーブル６０１は、形式仕様識別番号６０３、形式言語記述６０４、形式言語タイプ６０２、自然言語仕様識別番号６０５、及び自然言語記述６０６を含む。
【００４０】
形式仕様識別番号６０３は、形式仕様を識別するための識別番号である。形式言語記述６０４は、形式仕様の部分的な記述である。形式言語タイプ６０２は、形式言語記述の種類を示す。自然言語仕様識別番号６０５は、自然言語仕様を識別する識別番号である。自然言語記述６０６は、形式言語記述６０４に対応する自然言語仕様の部分的な記述である。
【００４１】
本発明の第１の実施の形態では、形式言語記述６０４を、対応する自然言語記述６０６に置き換えることによって、形式言語記述を自然言語記述に変換することができる。例えば、形式仕様５０１に「“val == 0”と“val = 1;”」を同時に実行する記述が含まれ、当該記述が修正候補として抽出された場合には、形式言語変換規則６０７及び６０８に基づいて、「“同期ロックは１であることを確認する”と“同期ロックを１に更新する”」を同時に実行する、という自然言語記述に変換することができる。
【００４２】
図６に示した形式言語変換規則は、自然言語仕様変換部１０７を実行することによって、自然言語仕様４０１を形式仕様５０１に変換するタイミングで作成される。例えば、自然言語仕様記述４０２を、テンプレート３０５に基づいて形式仕様記述５０２に変換する場合には、自然言語の単語と形式言語の変数名の対応である形式言語変換規則６０９が作成される。同様に、自然言語仕様記述４１０を、テンプレート３０６に基づいて形式仕様記述５０７に変換する場合には、自然言語の文と、形式言語の文の対応である形式言語変換規則６０８が作成される。
【００４３】
なお、本発明の第１の実施の形態では、形式言語の変数名と自然言語の単語、形式言語のプロセス名と自然言語の単語、形式言語の文と自然言語の文の組み合わせを、形式言語変換規則として保持しているが、形式言語の種類に応じてこれらの組み合わせを拡張することが可能である。
【００４４】
ところで、形式言語記述を自然言語記述に変換する場合には、形式言語変換規則ＤＢ１１１が不可欠である。例えば、自然言語仕様テンプレートＤＢ１０８を利用しても、形式言語記述に基づいて元の自然言語記述を特定することはできない場合がある。例えば、図３のテンプレート３０６とテンプレート３０７のように、異なる自然言語記述から同一の形式言語記述に変換される規則を有するテンプレートが存在するため、どのテンプレートを使ったかを一意に特定できない場合があるからである。また、仮に形式言語記述への変換に使用されたテンプレートを特定できた場合であっても、図４の自然言語仕様記述４０３と自然言語仕様記述４０４のように、同じテンプレートを使った自然言語仕様記述が複数個含まれる場合は、元の自然言語記述を一意に特定することはできない。
【００４５】
このようなことは、自然言語仕様によって表現される内容と、形式仕様によって表現される内容との相違に起因する。形式仕様は、自然言語仕様とは異なり数学的な意味を有する一方、自然言語によって表されるような現実のシステムに即した情報を表現することができない。つまり、形式仕様によって表される（変数又は式などの）記述は単なる数学的な記述に過ぎず、現実のシステムそのものを表現するものではない。よって、形式言語記述を、元の自然言語記述に変換するためには、自然言語仕様から形式仕様へ変換する際に欠落してしまった、現実のシステムに即した情報を、形式言語記述に再度付与する必要がある。そのためには、自然言語仕様から形式仕様への変換の際に、形式言語記述と現実のシステムに即した情報とを別途対応付けて保持しておく必要がある。形式言語変換規則ＤＢ１１１は、形式言語記述と、現実のシステムの意味を表す自然言語記述とを対応付けて保持しており、前述した理由によって、形式言語記述を自然言語記述へ変換するために不可欠な情報である。
【００４６】
図７は、本発明の第１の実施の形態の仕様の修正候補表示・選択画面７０１の一例を示す図である。
【００４７】
修正候補表示・選択画面７０１の上部には、仕様の修正候補（７０２〜７０４）を自然言語によって表示する。修正候補（７０２〜７０４）は、依存関係に基づいて階層的に表示される。例えば、修正候補７０３及び修正候補７０４は、修正候補７０２の下層に表示されている。修正候補７０２の左に配置された階層展開ボタン７０５を操作することによって、修正候補７０２の下層にある修正候補７０３及び修正候補７０４を展開又は収納することができる。
【００４８】
また、修正候補選別用チェックボックス（７０６〜７０８）がチェックされると、下層に配置された修正候補のチェックボックスがすべてチェックされる。例えば、チェックボックス７０６がチェックされると、チェックボックス７０７及びチェックボックス７０８も同時にチェックされる。
【００４９】
修正候補（７０２〜７０４）自体がクリックされると、クリックされた修正候補が修正候補表示・選択画面７０１下部の修正候補表示領域７０９に表示される。同時に、修正前自然言語仕様表示領域７１０、修正後自然言語仕様表示領域７１１、修正前形式仕様表示領域７１２、及び修正前形式仕様表示領域７１３には、それぞれ、修正前の自然言語仕様、選択された修正候補で修正した場合の自然言語仕様、修正前の形式仕様、及び選択された修正候補で修正した場合の形式仕様が表示される。
【００５０】
ここで、修正実施ボタン７１４が操作されることによって修正候補が選択されると、形式仕様修正部１１７が実行されることによって形式仕様ＤＢ１１０に保持される形式仕様が修正される。さらに、自然言語仕様修正部１１８が実行されることによって自然言語仕様ＤＢ１０９に保持される自然言語仕様が修正される。また、適切な修正候補が示されない場合には、該当なしボタン７１５を操作することによって、修正候補表示・選択画面７０１を閉じる。
【００５１】
修正候補表示・選択画面７０１では、修正候補を依存関係に基づいて階層的に表示することによって、修正候補の選別効率を高めている。例えば、修正候補７０２及び修正候補７０３に着目すると、修正候補７０３は、修正候補７０２の修正内容を含むため、「修正候補７０２が仕様として適切でないならば、修正候補７０３も仕様として適切でない」という関係が成立する。
【００５２】
このような依存関係に基づいて、修正候補７０３を修正候補７０２の下層に表示する。設計者は、修正候補が仕様として適切であるか否かという点について、修正候補の上層から順に判定する。そして、修正候補７０２を仕様として適切でないと判定し、修正候補選別用チェックボックス７０６にチェックすると、同時に、修正候補７０３が仕様として適切でないことを示すために、下層に配置された修正候補選別用チェックボックス７０７もチェックされる。したがって、設計者は、修正候補７０３を直接参照せずに、修正候補７０３についても仕様として適切であるか否かを判定できたことになる。このように、特定の修正候補については、修正候補を直接参照せずに判定することができるため、効率的な修正候補の判定が可能になる。
【００５３】
図８は、本発明の第１の実施の形態の自然言語仕様の作成から形式仕様の登録までの手順を示すフローチャートである。
【００５４】
ＣＰＵ２０２は、自然言語仕様作成部１０６を実行することによって、設計者からの入力を受け付け、自然言語仕様を作成する（ステップ８０２）。自然言語仕様は、設計者が自然言語仕様テンプレートＤＢ１０８に格納された自然言語仕様テンプレート３０３を選択し、選択された自然言語仕様テンプレート３０３に含まれるパラメータを設定する処理を、必要に応じて繰り返すことによって作成される。
【００５５】
ＣＰＵ２０２は、作成された自然言語仕様を自然言語仕様識別番号とともに、自然言語仕様ＤＢ１０９に登録する（ステップ８０３）。
【００５６】
ＣＰＵ２０２は、次に、自然言語仕様変換部１０７を実行することによって、自然言語仕様テンプレート変換規則に基づいて、作成された自然言語仕様を形式仕様に変換する（ステップ８０４）。形式仕様は、選択された自然言語仕様テンプレート３０３に対応する形式仕様変換規則３０４に基づいて自然言語仕様を変換することによって取得される。
【００５７】
ＣＰＵ２０２は、得られた形式仕様を、形式仕様識別番号とともに、形式仕様ＤＢ１１０に登録する（ステップ８０５）。
【００５８】
ＣＰＵ２０２は、自然言語仕様と形式仕様との対応を、自然言語仕様を形式仕様に変換する際に欠落した情報とともに、形式言語変換規則として、形式言語変換規則ＤＢ１１１に登録する（ステップ８０６）。
【００５９】
図９は、本発明の第１の実施の形態のソフトウェア仕様を修正する手順を示すフローチャートである。
【００６０】
ＣＰＵ２０２は、修正候補抽出部１１３を実行することによって、形式仕様及び当該形式仕様の検証履歴から、検証によって発見した誤りを除去するための形式仕様の修正候補を抽出する（ステップ９０２）。具体的な手順については、形式言語Promelaによって記述された形式仕様において、修正候補を抽出する手順を図１２にて後述する。
【００６１】
ＣＰＵ２０２は、ステップ９０２の処理によって、修正候補が抽出されたか否かを判定する（ステップ９０３）。修正候補が抽出されなかった場合には（ステップ９０３の結果が「Ｎｏ」、本処理を終了する。
【００６２】
ＣＰＵ２０２は、修正候補が抽出された場合には（ステップ９０３の結果が「Ｙｅｓ」）、修正候補変換部１１４を実行することによって、形式言語変換規則ＤＢ１１１を参照し、修正候補の形式言語記述を自然言語記述に変換する（ステップ９０４）。
【００６３】
ＣＰＵ２０２は、修正候補表示・選択部１１６を実行することによって、自然言語で記述された修正候補を、図７に示した修正候補表示・選択画面７０１のように一覧表示し、設計者からの修正候補選択指示を受け付ける（ステップ９０５）。
【００６４】
ＣＰＵ２０２は、設計者によって修正候補が選択されたか否かを判定する（ステップ９０６）。修正候補表示・選択画面７０１において、修正候補該当なしが選択された場合など、設計者によって修正候補が選択されなかった場合には（ステップ９０６の結果が「Ｎｏ」）、本処理を終了する。
【００６５】
ＣＰＵ２０２は、設計者によって修正候補が選択された場合には（ステップ９０６の結果が「Ｙｅｓ」）、形式仕様修正部１１７を実行し、選択された修正候補に基づいて、形式仕様ＤＢ１１０に保持されている形式仕様を修正する（ステップ９０７）。
【００６６】
ＣＰＵ２０２は、さらに、自然言語仕様修正部１１８を実行し、選択された修正候補に基づいて、自然言語仕様ＤＢ１０９に保持されている自然言語仕様を修正する（ステップ９０８）。
【００６７】
修正候補抽出部１１３によって抽出される修正候補は、検証によって発見した誤りを除去できるという点において、従来の推測による修正よりも、適切な修正方法であるといえるが、未発見の誤りまで修正できる方法ではない。同様に、修正によって新たな誤りが混入する可能性も否定できない。よって、仕様修正手順終了後は再度仕様を検証にかけ、他の誤りの有無を確認する必要がある。
【００６８】
以下、図１０、図１１、図１２、図１３及び図１４を参照しながら、修正候補抽出方法を具体的に説明する。修正候補の抽出は、ＣＰＵ２０２が修正候補抽出部１１３を処理することによって実行される。
【００６９】
図１０は、本発明の第１の実施の形態の形式言語Promelaによって記述された形式仕様の一例を示す図である。
【００７０】
形式仕様１００１は、仕様部１００２及び要件部１００３を含む。仕様部１００２は、システムの仕様を表している。また、要件部１００３は、仕様が満たすべき性質を表している。
【００７１】
形式言語Promelaは、並列性を有するシステムの検証に適しており、並列に動作する主体をプロセスとして記述する。検証は、プロセスのあらゆる交互動作パターンを検査することによって実行され、文１００４又は文１００５のような１つの文が交互動作の最小単位となる。ただし、最小単位は変更可能で、例えば、atomic節で複数の文を囲うことによって、atomic節１００６全体が交互動作の最小単位となる（非特許文献１）。
【００７２】
このように、交互動作の最小単位を変更すると、システムの交互動作パターンが変わるため、本来、システムの仕様には、交互動作の最小単位まで厳密に記述しなければならない。しかし、一般に仕様を記述する際には、動作内容又は動作順序を優先して検討し、交互動作の最小単位までは厳密に検討しない場合が多い。そのため、Promelaで記述した形式仕様の誤りには、交互動作の最小単位に関する誤りが非常に多い。そこで、本修正候補抽出方法では、交互動作の最小単位に関する誤りを修正する修正候補を抽出する。
【００７３】
ここで、図１０に示した形式仕様１００１を検証すると、仕様部１００２は、要件部１００３を満たさない。文１００４が実行された後、pB()のatomic節１００６及び文１００７が実行され、文１００５及び文１００８が実行されると、devA及びdevBの値がともに１となり、要件部１００３に違反することになる。
【００７４】
図１１は、本発明の第１の実施の形態の形式仕様１００１の検証履歴の例を示す図である。
【００７５】
検証履歴１１０１は、ステップ数１１０２、プロセス識別番号１１０３、実行文１１０５及び位置行数１１０４を含む。位置行数１１０４は、形式仕様１００１における実行文１１０５の位置を示す。
【００７６】
検証履歴１１０１は、図１０に示した形式仕様１００１の実行系列である。図１１に示す検証履歴１１０１は、一般に「反例」と呼ばれ、自動検証ツール（例えば、「ＳＰＩＮ」、非特許文献１参照）によって出力される検証履歴の一般的な形態である。
【００７７】
検証履歴１１０１は、行１８を参照すると、前述したように要件部１００３に違反することがわかる。
【００７８】
図１２は、本発明の第１の実施の形態の形式仕様の修正候補を抽出する手順を示すフローチャートである。
【００７９】
ＣＰＵ２０２は、まず、修正候補抽出部１１３を実行することによって、実行文に変数が含まれない行を反例から削除する（ステップ１２０２）。
【００８０】
ＣＰＵ２０２は、次に、残った行をプロセスごとにブロック分けする（ステップ１２０３）。さらに、同じプロセス識別番号を有するブロックであって、他のプロセス識別番号を持つブロックを除いて隣接する２つのブロックを選択する（ステップ１２０４）。以下、選択された２つのブロックのうち、前にあるブロックを前ブロック、後にあるブロックを後ブロックとする。
【００８１】
ＣＰＵ２０２は、後ブロックを前ブロックの直後へ移動する（ステップ１２０５）。
【００８２】
ＣＰＵ２０２は、ステップ１２０５の処理によって、後ブロックが移動した系列の実行文を、先頭から順に実行する（ステップ１２０６）。系列の実行結果は、変数の状態として保持される。また、式は、変数の状態と矛盾しない場合のみ実行可能とする。
【００８３】
ＣＰＵ２０２は、ステップ１２０６の処理の結果、実行不可能な行が存在するか否かを判定する（ステップ１２０７）。ステップ１２０６の処理において、実行不可能な行が存在しなかった場合には（ステップ１２０７の結果が「Ｎｏ」）、ステップ１２０４の処理を実行し、他の２つのブロックを選択する。
【００８４】
ＣＰＵ２０２は、ステップ１２０６の処理において、実行不可能な行が存在する場合には（ステップ１２０７の結果が「Ｙｅｓ」）、前ブロック内の最後行の実行文と、後ブロックの最前行の実行文を、交互動作の最小単位として宣言することを修正候補とする（ステップ１２０８）。具体的には、前ブロック内の最後行の実行文と、後ブロックの最前行の実行文とを、形式仕様において、atomic節で囲うことを修正候補とする。そして、他の修正候補をさらに抽出する場合には（ステップ１２０９）、ステップ１２０４の処理を実行する。
【００８５】
ここで、ステップ１２０７の処理で実行不可能な行が存在する場合には、ブロック移動後の系列は実行不可能ということになる。つまり、ブロック移動後の系列であれば、検証で発見された要件違反は生じないことになる。したがって、システムの実行系列が、常にブロック移動後の系列になるように仕様を修正すればよい。そのためには、前ブロックの最後行の実行文と、後ブロックの最前行の実行文との間で、交互動作を許さなければよく、ステップ１２０８のように前ブロックの最後行の実行文と、後ブロックの最前行の実行文をatomicで囲うことが修正候補となる。
【００８６】
具体的に図１１を参照しながら、検証履歴１１０１から、形式仕様１００１の修正候補を抽出する手順を説明する。
【００８７】
まず、ステップ１２０２の処理では、実行文が変数を含まない行１１０７、１１１０、１１１２、１１１４、１１１６、１１１８、１１２１、１１２３及び１１２７を取り除く。次に、ステップ１２０３の処理では、プロセス識別番号１１０３が等しく、連続して実行される行を１ブロックとする。本発明の第１の実施の形態では、実行文が変数を含まない行を削除する前の状態であるが、ブロック１１２８〜１１３３のようにブロック分けされる。
【００８８】
ステップ１２０４の処理では、例えば、ブロック１１２８とブロック１１３０を選択し、ステップ１２０５の処理でブロック１１２８をブロック１１３０の直後に移動する。以上の処理によって、図１３に示す実行系列を得ることができる。
【００８９】
図１３は、本発明の第１の実施の形態の形式仕様の修正候補を抽出する手順において、行の順序を変更した結果を示す図である。
【００９０】
ステップ１２０６の処理において、実行系列１３０１を先頭から順に実行していくと、行１３０２の実行文が実行不可能となる。したがって、ステップ１２０８の処理では、「前ブロック内の最後行１３０３の実行文と、後ブロックの最前行１３０４の実行文とを、形式仕様１００１において、atomic節で囲う」ことが修正候補となる。行１３０３の実行文は図１０の文１００４に対応し、行１３０４の実行文は図１０の文１００５に対応するため、「形式仕様１００１において文１００４と文１００５をatomic節で囲う」ことが修正候補となる。図１４に、形式仕様１００１に対して以上の修正を実行した結果を示す。
【００９１】
図１４は、本発明の第１の実施の形態の形式仕様の仕様修正候補を抽出する手順によって修正された結果を示す図である。
【００９２】
図１４では、図１０の文１００４及び文１００５をatomic節１４０１として、交互動作の最小単位としている。このように修正することによって、誤りを含む形式仕様を修正することができる。
【００９３】
本発明の第１の実施の形態によれば、形式仕様に誤りがあった場合に、形式仕様、当該形式仕様の検証項目、及び、形式仕様の検証履歴に含まれる誤りに関する情報に基づいて、誤りを除去可能な修正候補を抽出する。修正候補は、誤りを除去可能なものであるため、形式検証手段を用いて誤りを除去できたか否かを確認する必要がない。よって、従来技術と比較して、効率的に形式仕様を修正することができる。
【００９４】
また、本発明の第１の実施の形態によれば、設計者は、画面上に表示される修正候補を選択することによって形式仕様を修正することができるため、形式仕様の適切な修正方法を推測できない設計者であっても、簡単かつ効率的に形式仕様を修正することができる。さらに、修正可能な形式仕様を修正不可能と判断してしまう可能性を低減することができる。
【００９５】
さらに、本発明の第１の実施の形態によれば、テンプレートを利用して作成された自然言語仕様から、テンプレートの変換規則に基づいて得られた形式仕様について、形式仕様の修正候補を自然言語によって表示することができる。したがって、設計者は、修正候補を選択することによって、形式仕様及び自然言語仕様を修正することができるため、形式言語に精通していない設計者でも、簡単に形式仕様及び自然言語仕様を修正することができる。また、修正候補の選択時における、修正候補の選別を、効率的に実施することができる。
【００９６】
（第２の実施の形態）
本発明の第１の実施の形態では、プロセス記述言語Promelaを形式言語の例として説明したが、本発明の第２の実施の形態では、モデル規範型仕様記述言語Ｂ（非特許文献２）について本発明を適用する例について説明する。なお、本発明の第１の実施の形態と共通する構成及び処理については、説明を省略し、相違する点のみを説明する。
【００９７】
モデル規範型仕様記述言語Ｂについても、本発明の第１の実施の形態と同様に、自然言語仕様のテンプレートを利用することによって、自然言語仕様から形式言語仕様に変換することが可能である。また、形式仕様言語への変換にともなって欠落する情報を補充する方法についても、本発明の第１の実施の形態と同様である。ここでは、モデル規範型仕様記述言語Ｂに本発明を適用する場合に、形式仕様の修正候補を抽出する方法について説明する。
【００９８】
以下、図１５、図１６、図１７及び図１８を参照しながら、モデル規範型仕様記述言語Ｂによって記述された形式仕様に対する修正候補抽出方法を具体的に説明する。
【００９９】
図１５は、本発明の第２の実施の形態のモデル規範型仕様記述言語Ｂによって記述された形式仕様の例を示す図である。
【０１００】
モデル規範型仕様記述言語Ｂによって記述された形式仕様１５０１は、システムの変数１５０２、システムの不変条件１５０３、初期化処理１５０４、及びシステムの操作１５０５を含む。
【０１０１】
形式仕様１５０１の不変条件１５０３は、個別の不変条件１５０６〜１５０９を含み、システムは不変条件１５０６〜１５０９をそれぞれ満たす必要がある。システムが不変条件１５０９を満たすとは、システム操作１５０５の実行前に不変条件１５０６〜１５０９が成立するならば、システム操作１５０５の実行後にも不変条件１５０９が成立することを意味する。このような性質は、不変条件の無矛盾性と呼ばれ、以下の論理式（１）によって表される。なお、論理式（１）の“NATURAL”は自然数の集合を意味する。
【０１０２】
a ∈ NATURAL ∧
s ∈ NATURAL ∧
t ∈ NATURAL ∧
(t=1 ⇒ a=0)
⇒
(t=1 ⇒ a+1=0)  ・・・（１）
【０１０３】
システムが不変条件１５０９を満たすことを示すためには、論理式（１）を証明する必要があるが、実際に証明をしようとすると、論理式（１）を証明することができない。証明とは、推論体系を用いた証明を意味しており、特に本発明の第２の実施の形態では、空な公理集合を持つ自然演繹体系による証明を指している。
【０１０４】
論理式（１）の前提部に適切な論理式を連言（∧）結合すると、証明可能な論理式を得られる場合がある。論理式（１）の前提部に適切な論理式を連言（∧）結合することは、システムに不変条件を追加することに相当する。つまり、システムに適切な不変条件を追加することによって、証明できなかった不変条件の無矛盾性が証明可能になる場合がある。
【０１０５】
本発明の第２の実施の形態では、論理式（１）の前提部に論理式(¬(s=1) ∨ ¬(t=1))を連言結合し、以下に示した論理式（２）を作成する。このとき、論理式（２）は、証明可能となる。論理式（１）が証明可能となるように、前提部に連言結合する論理式を導出する方法については後述する。
【０１０６】
a ∈ NATURAL ∧
s ∈ NATURAL ∧
t ∈ NATURAL ∧
(t=1 ⇒ a=0) ∧
(¬(s=1) ∨ ¬(t=1))
⇒
(t=1 ⇒ a+1=0)  ・・・（２）
【０１０７】
図１６は、本発明の第２の実施の形態のモデル規範型仕様記述言語Ｂによって記述された形式仕様の不変条件に論理式を加えた例を示す図である。
【０１０８】
論理式（２）は、図１６の形式仕様１６０１に含まれる不変条件１６０２の無矛盾性を表す論理式に相当する。形式仕様１６０１は、形式仕様１５０１に不変条件１６０３を追加した仕様であるため、形式仕様１５０１の不変条件１５０９の無矛盾性を証明するためには、新たな不変条件１６０３を追加すればよいことが分かる。
【０１０９】
ここで、不変条件の無矛盾性を証明するために、形式仕様に追加すべき新たな不変条件を導出する方法について説明する。本発明の第２の実施の形態では、タブローの方法を用いる。タブローの方法については、非特許文献３（丹治信治著、「タブローの方法による論理学入門」、朝倉書店、1999年11月、p.27-42）を参照されたい。
【０１１０】
図１７は、本発明の第２の実施の形態のタブローの方法を利用して形式仕様の仕様修正候補を抽出する手順を示すフローチャートである。
【０１１１】
ＣＰＵ２０２は、不変条件の無矛盾性を表す論理式のタブローを作成する（ステップ１７０２）。
【０１１２】
ＣＰＵ２０２は、作成されたタブローの枝で、閉じていないすべての枝から、枝に含まれる任意の節を１つずつ選択する（ステップ１７０３）。
【０１１３】
ＣＰＵ２０２は、選択した節の論理式の否定を、連言（∧）で結合する。連言結合した論理式を不変条件として仕様に追加することを修正候補とする（ステップ１７０４）。
【０１１４】
ＣＰＵ２０２は、さらに修正候補を抽出するかを判定する（ステップ１７０５）。さらに修正候補を抽出する場合には（ステップ１７０５の結果が「Ｙｅｓ」）、ステップ１７０３の処理を実行する。修正候補の抽出を終了する場合には（ステップ１７０５の結果が「Ｎｏ」）、ステップ１７０６の処理を実行する。
【０１１５】
ＣＰＵ２０２は、ステップ１７０４の処理における連言結合によって作成された任意の異なる論理式同士を選言（∨）で結合する。このように選言結合された論理式を不変条件として仕様に追加することを修正候補とする（ステップ１７０６）。
【０１１６】
タブローの方法では、不変条件の無矛盾性を表す論理式が証明可能であるならば、その論理式を展開してできたタブローの、すべての枝が「閉じた枝」でなければならない。「閉じた枝」とは、ある論理式と当該論理式の否定の論理式とを共に含む枝を指す。仮に、ある論理式Ｘを不変条件として追加したとすると、タブローのすべての枝の末端に論理式Ｘが追加される。よって、論理式Ｘは、閉じていないすべての枝を閉じることができる論理式であればよく、図１７に示した方法によって求めることができる。
【０１１７】
具体的に、形式仕様１５０１の修正候補を抽出する手順を説明する。
【０１１８】
図１８は、本発明の第２の実施の形態の不変条件の無矛盾性を表す論理式のタブローを示す図である。なお、図１８では、“NATURAL”を“N”と省略して表記している。
【０１１９】
まず、ステップ１７０２の処理で、不変条件の無矛盾性を表す論理式のタブローが作成される。なお、図１８に示された論理式は、図１５の不変条件１５０３及びシステムの操作１５０５に基づいて作成される。
【０１２０】
図１８を参照すると、タブローの枝１８０３は、節１８０２と節１８０５により閉じているが、枝１８０４は閉じていない。そこで、ステップ１７０３の処理において、まず、節１８０１を選択する。ステップ１７０３の処理で選択された節は節１８０１のみであるため、ステップ１７０４の処理で作成され、不変条件１５０３に連言結合される論理式は、「¬(s=1)」となる。
【０１２１】
次に、ステップ１７０５の処理からステップ１７０３の処理が実行されると、節１８０２が選択される。同様に、ステップ１７０４の処理によって、論理式「¬(t=1)」が取得される。そして、ステップ１７０６の処理によって、論理式「¬(s=1)」と論理式「¬(t=1)」を選言結合し、論理式「¬(s=1) ∨ ¬(t=1)」を得ることができる。
【０１２２】
以上より、論理式「¬(s=1)」、「¬(t=1)」、「¬(s=1) ∨ ¬(t=1)」のいずれかを、不変条件に追加することが修正候補となる。図１６に示した形式仕様１６０１は、「¬(s=1) ∨ ¬(t=1)」を不変条件として追加するように修正した結果である。
【０１２３】
本発明の第２の実施の形態によれば、Promelaのようなプロセス記述言語以外の、モデル規範型仕様記述言語Ｂのような形式言語であっても、形式仕様の修正候補を抽出することを可能とし、本発明の第１の実施の形態と同様の効果を得ることができる。
【図面の簡単な説明】
【０１２４】
【図１】本発明の第１の実施の形態の設計支援装置の構成を示すブロック図である。
【図２】本発明の第１の実施の形態の設計支援装置のハードウェア構成を示す図である。
【図３】本発明の第１の実施の形態の自然言語仕様テンプレートＤＢのデータテーブルを示す図である。
【図４】本発明の第１の実施の形態の自然言語仕様テンプレートに基づいて作成された自然言語仕様の具体例を示す図である。
【図５】本発明の第１の実施の形態の自然言語仕様が形式仕様変換規則に基づいて変換された形式仕様を示す図である。
【図６】本発明の第１の実施の形態の形式言語変換規則ＤＢのデータテーブルを示す図である。
【図７】本発明の第１の実施の形態の仕様の修正候補表示・選択画面の一例を示す図である。
【図８】本発明の第１の実施の形態の自然言語仕様の作成から形式仕様の登録までの手順を示すフローチャートである。
【図９】本発明の第１の実施の形態のソフトウェア仕様を修正する手順を示すフローチャートである。
【図１０】本発明の第１の実施の形態の形式言語Promelaによって記述された形式仕様の一例を示す図である。
【図１１】本発明の第１の実施の形態の形式仕様の検証履歴の例を示す図である。
【図１２】本発明の第１の実施の形態の形式仕様の修正候補を抽出する手順を示すフローチャートである。
【図１３】本発明の第１の実施の形態の形式仕様の修正候補を抽出する手順において、行の順序を変更した結果を示す図である。
【図１４】本発明の第１の実施の形態の形式仕様の仕様修正候補を抽出する手順によって修正された結果を示す図である。
【図１５】本発明の第２の実施の形態のモデル規範型仕様記述言語Ｂによって記述された形式仕様の例を示す図である。
【図１６】本発明の第２の実施の形態のモデル規範型仕様記述言語Ｂによって記述された形式仕様の不変条件に論理式を加えた例を示す図である。
【図１７】本発明の第２の実施の形態のタブローの方法を利用して形式仕様の仕様修正候補を抽出する手順を示すフローチャートである。
【図１８】本発明の第２の実施の形態の不変条件の無矛盾性を表す論理式のタブローを示す図である。
【符号の説明】
【０１２５】
１０１    仕様作成部
１０２    仕様修正部
１０３    入力部
１０４    表示部
１０５    入出力制御部
１０６    自然言語仕様作成部
１０７    自然言語仕様変換部
１０８    自然言語仕様テンプレートデータベース
１０９    自然言語仕様データベース
１１０    形式仕様データベース
１１１    形式言語変換規則データベース
１１２    仕様検証部
１１３    修正候補抽出部
１１４    修正候補変換部
１１５    検証履歴変換部
１１６    修正候補表示・選択部
１１７    形式仕様修正部
１１８    自然言語仕様修正部
１１９    形式仕様検証部
２０１    設計支援装置
２０２    ＣＰＵ
２０３    メモリ
２０４    外部記憶装置
２０５    表示装置
２０６    入力装置
３０１    自然言語仕様ＤＢデータテーブル
４０１    自然言語仕様
５０１    形式仕様
６０１    形式言語変換規則ＤＢデータテーブル
７０１    修正候補表示・選択画面
【図１】
0005005510.tif 000002
【図２】
0005005510.tif 000003
【図３】
0005005510.tif 000004
【図４】
0005005510.tif 000005
【図５】
0005005510.tif 000006
【図６】
0005005510.tif 000007
【図７】
0005005510.tif 000008
【図８】
0005005510.tif 000009
【図９】
0005005510.tif 000010
【図１０】
0005005510.tif 000011
【図１１】
0005005510.tif 000012
【図１２】
0005005510.tif 000013
【図１３】
0005005510.tif 000014
【図１４】
0005005510.tif 000015
【図１５】
0005005510.tif 000016
【図１６】
0005005510.tif 000017
【図１７】
0005005510.tif 000018
【図１８】
0005005510.tif 000019