JP5508933B2 - ソフトウェア仕様の証明支援装置、及び証明支援方法 - Google Patents

ソフトウェア仕様の証明支援装置、及び証明支援方法 Download PDF

Info

Publication number
JP5508933B2
JP5508933B2 JP2010113811A JP2010113811A JP5508933B2 JP 5508933 B2 JP5508933 B2 JP 5508933B2 JP 2010113811 A JP2010113811 A JP 2010113811A JP 2010113811 A JP2010113811 A JP 2010113811A JP 5508933 B2 JP5508933 B2 JP 5508933B2
Authority
JP
Japan
Prior art keywords
software
invariant condition
formal language
software specification
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
JP2010113811A
Other languages
English (en)
Other versions
JP2011242955A (ja
JP2011242955A5 (ja
Inventor
直人 佐藤
啓伸 來間
良太 三部
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2010113811A priority Critical patent/JP5508933B2/ja
Priority to PCT/JP2011/052115 priority patent/WO2011145363A1/ja
Publication of JP2011242955A publication Critical patent/JP2011242955A/ja
Publication of JP2011242955A5 publication Critical patent/JP2011242955A5/ja
Application granted granted Critical
Publication of JP5508933B2 publication Critical patent/JP5508933B2/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

Description

本発明は、ソフトウェア開発を支援する技術に関し、特に、ソフトウェア仕様を証明または修正する技術に関する。
従来、ソフトウェア仕様の正しさに関する形式的な証明は、自然言語又は図などによって記述されたソフトウェア仕様(以下、「自然言語仕様」)を形式言語によって記述された形式言語仕様に変換し、変換された形式言語仕様を証明する手順で行われている。
この形式言語仕様の証明を支援するツールとして、例えば、B言語の証明ツールAtelier Bや、Event B言語の証明ツールRodinなどがある(非特許文献1、非特許文献2参照)。
これらのツールを活用して形式言語仕様の証明を行い、形式言語仕様に誤りがないと分かった場合は証明を終了できる。しかし、形式言語仕様に誤りがあった場合は、形式言語仕様を修正してから再度証明を行う必要がある。形式言語仕様の誤りとは、例えば「ある処理の前後で成立すると定義した条件が、その処理の前後で成立しない」などの仕様矛盾である。
このように、証明によって形式言語仕様に誤りがあると判明した場合に、当該誤り箇所を特定する方法が知られている(例えば、特許文献参照)。
さらに、形式言語仕様に誤りが検出された場合に、形式言語仕様の記述及び形式言語仕様の検証履歴に基づいて修正候補を抽出し、抽出した修正候補を画面表示する修正支援方法が知られている(例えば、特許文献参照)。この方法によると、ユーザは画面表示された修正候補を選択するだけで形式言語仕様を修正できる。
特開平6−149560号公報 特開2009−116648号公報
Event-B.org、"Event-B and the Rodin Platform"、[online]、平成21年1月20日検索、インターネット<URL:http://www.event-b.org/> ClearSy、"Atelier B"、[online]、平成21年1月20日検索、インターネット<URL:http://www.atelierb.eu/index-en.php >
特許文献の従来技術では、まず抽出した全ての修正候補を画面表示する。ユーザは修正候補の中から修正方法として適切なものを選別する。そして、選別した修正候補に基づて実際に形式言語仕様の修正を行う。
ユーザによる修正候補の選別が必要な理由は、抽出した修正候補の中に適切でない修正方法も含まれているためである。適切でない修正方法とは、ユーザの意図に反する修正方法であり、適切でない修正方法を採用した場合、ユーザの意図に反する仕様が得られてしまう。そのため、ユーザは修正候補の中から適切な修正方法を選択する必要がある。
この修正候補選別の作業においては、ユーザはその多数の修正候補を1つ1つ確認し、適切な修正方法を選択する。そのため、多数の修正候補が表示された場合は、この確認及び選択の作業に多大な労力、時間がかかるという問題がある。
そのため、形式言語仕様の証明に失敗した場合に、ユーザが修正候補の確認及び選択作業をせずとも、形式言語仕様を修正できるようにすることが課題となる。
本発明の目的は、上記課題に対処し、ユーザによる修正候補の確認及び選択作業を必要としない、形式言語仕様の修正のための支援技術を提供することである。
そのため、本発明は、形式言語で記述されるソフトウェア仕様を証明するソフトウェア証明支援装置であって、プロセッサ、及び記憶部を備え、記憶部前記プロセッサを動作させるためのプログラムであって、前記ソフトウェア仕様から前記ソフトウェア仕様を証明するための証明と、前記ソフトウェア仕様から前記ソフトウェア仕様の性質を推論するための、不変条件推論部を備えるプログラムを格納し、前記プロセッサは、前記不変条件推論部によって、前記ソフトウェア仕様の性質が前記ソフトウェア仕様において不変的に成立する性質であるかを推論し、前記推論によって、前記ソフトウェア仕様において不変的に成立する性質であると判明したソフトウェア仕様の性質を、前記ソフトウェア仕様に追加し、前記証明によって、前記ソフトウェア仕様を証明することを特徴とするソフトウェア証明支援装置を提供する。
本発明の一形態によれば、形式言語仕様に誤りが検出された場合に、現在の仕様から導かれるユーザの意図に沿った仕様を追加して前記形式言語仕様を修正するため、修正候補の確認及び選択をすることなく、形式言語仕様を修正できる。
ソフトウェア証明支援装置の構成例を示すブロック図である。 ソフトウェア証明支援装置のハードウェア構成例を示す図である。 形式言語仕様保持部が保持する形式言語仕様のデータの例を示す図(1)である。 形式言語仕様保持部が保持する形式言語仕様のデータの例を示す図(2)である 不変条件推論部、形式言語仕様実行部、不変条件候補抽出部、修正候補抽出部、及び証明部によって、形式言語仕様を証明する手順例を示すフローチャートである。 実行結果保持部が保持する形式言語仕様実行結果のデータの例を示す図である。 不変条件テンプレート保持部が保持する不変条件テンプレートのデータの例を示す図である。 不変条件候補保持部が保持する不変条件候補のデータの例を示す図である。 形式言語仕様実行部、及び不変条件候補抽出部によって、不変条件候補を不変条件候補保持部に登録する手順例を示すフローチャートである。 修正候補保持部が保持する修正候補のデータの例を示す図である。 不変条件推論部によって不変条件を推論する手順例を示すフローチャートである。 不変条件推論部が推論した不変条件を追加した形式言語仕様のデータの例を示す図である。
以下、本発明の実施の一形態を、図面を参照しながら詳細に説明する。
本実施形態は、ソフトウェア証明支援装置に適用される。本実施形態では、入力された形式言語仕様からその不変条件候補一覧を抽出し、前記不変条件候補一覧から抽出した不変条件候補を前記形式言語仕様から推論し、推論した不変条件候補を前記形式言語仕様に追加する。
よって本実施形態によれば、形式言語仕様に誤りが検出された場合に、現在の仕様から導かれるユーザの意図に沿った不変条件を追加して前記形式言語仕様を修正するため、修正候補の確認及び選択をすることなく、形式言語仕様を修正できる。
また、本実施形態では、入力された形式言語仕様からその不変条件候補一覧を抽出する場合に、前記形式言語仕様を実行し、その実行において成立する条件を不変条件候補として採用する。
よって本実施形態によれば、形式言語仕様の少なくともその実行においては成立する条件を不変条件候補として抽出するため、明らかに形式言語仕様から推論できない条件を不変条件候補として抽出することがなくなる。よって、前記不変条件候補は前記形式言語から推論できる可能性が高くなるため、(明らかに推論できない条件を推論することで生じる)推論の失敗にかかる時間を削減でき、結果的に形式言語仕様の修正にかかる時間を削減できる。
また、本実施形態では、不変条件候補一覧から推論する不変条件候補を抽出する場合に、前記形式言語仕様から特許文献などの従来技術を用いて修正候補一覧を取得し、前記不変条件候補一覧、及び前記修正候補一覧の両方に含まれる不変条件候補を、推論する不変条件候補として優先的に採用する。修正候補とはこの場合、追加することでその形式言語仕様が証明可能になるような、形式言語仕様の不変条件を意味する。
よって本実施形態によれば、抽出した不変条件候補一覧から、その追加によって形式言語仕様が証明可能になる不変条件候補を優先的に抽出して推論するため、形式言語仕様をより短時間で修正できる。
図1は、本実施形態におけるソフトウェア証明支援装置201の構成例を示すブロック図である。
ソフトウェア証明支援装置201は、入力部101、形式仕様保持部102、証明部103、証明結果保持部104、実行結果保持部105、形式言語仕様実行部106、不変条件推論部107、修正候補抽出部108、不変条件テンプレート保持部109、不変条件候補抽出部110、不変条件候補保持部111、修正候補保持部112、及び出力部113を含む。
入力部101は、証明対象の形式言語仕様を受け付け、前記形式言語仕様を形式言語仕様保持部102に登録する。
証明部103は、形式言語仕様保持部102から形式言語仕様を取得し、取得した形式言語仕様の証明を行う。証明には自動定理証明器などを用いてもよい。そして、前記形式言語仕様の証明結果を、証明結果保持部104に登録する。
不変条件推論部107は、形式言語仕様を識別する形式言語仕様識別情報のうち、証明に失敗した形式言語仕様の形式言語仕様識別情報を証明結果保持部104から取得する。そして取得した形式言語仕様識別情報の示す形式言語仕様を、形式言語仕様保持部102から取得する。
また不変条件推論部107は、形式言語仕様実行部106及び不変条件候補抽出部110の実行後、不変条件候補保持部111から不変条件候補一覧を取得する。同様に修正候補抽出部108の実行後、修正候補保持部112から修正候補一覧を取得する。そして取得した不変条件候補一覧、及び修正候補一覧に基づいて形式言語仕様の不変条件を推論する。さらに推論した不変条件を形式言語仕様に追加してから、前記形式言語仕様を形式言語仕様保持部102に再登録する。
形式言語仕様実行部106は、不変条件推論部107から形式言語仕様を受け取り、前記形式言語仕様を実行する。そしてその実行結果を実行結果保持部105に登録する。
不変条件候補抽出部110は、それぞれ実行結果保持部105から形式言語仕様の実行結果を、不変条件テンプレート保持部109から不変条件テンプレートを取得する。そして不変条件テンプレートを使って実行結果を解析し、不変条件候補を抽出する。抽出した不変条件候補は不変条件候補保持部111に登録する。
修正候補抽出部108は、不変条件推論部107から形式言語仕様を受け取り、前記形式言語仕様から修正候補を抽出する。修正候補とはこの場合、追加することでその形式言語仕様が証明可能になるような、形式言語仕様の不変条件を意味する。修正候補の抽出には特許文献などの従来技術を用いてもよい。抽出した修正候補は修正候補保持部112に登録する。
出力部113は、証明結果保持部104から証明結果を取得し画面表示する。
図2は、本実施形態におけるソフトウェア証明支援装置201のハードウェア構成例を示す図である。
ソフトウェア証明支援装置201は、CPU202、メモリ203、外部記憶装置204、表示装置205、入力装置206、及び外部媒体入出力装置207を備える。
CPU202は、メモリ203に記憶されたプログラムを実行することによって、各種処理を実行する。メモリ203は、CPU202のワークエリアとして機能し、プログラム及びプログラムの実行に必要なデータを記憶する。具体的には、証明部103、不変条件推論部107、形式言語仕様実行部106、不変条件候補抽出部110、及び修正候補抽出部108を構成するプログラムが記憶され、同時に形式言語仕様保持部102、実行結果保持部105、不変条件テンプレート保持部109、不変条件候補保持部111、修正候補保持部112、及び証明結果保持部104の保持するデータが記憶される。
外部記憶装置204は、各種データを格納する。外部記憶装置204は、例えば、ハードディスク装置などである。具体的には、形式言語仕様保持部102、不変条件テンプレート保持部109、及び証明結果保持部104が格納される。
あるいは、証明部103、不変条件推論部107、形式言語仕様実行部106、不変条件候補抽出部110、及び修正候補抽出部108を構成するプログラムの少なくとも一部についても、外部記憶装置204に格納され、各種処理実行の際にCPU202がメモリ203へ読み出してプログラムを実行することとしてもよい。また各プログラムは、あらかじめ、メモリ203または外部記憶装置204に格納されていても良いし、必要に応じ、利用可能な媒体を介して、他の装置からメモリ203または外部記憶装置204に導入されてもよい。媒体とは、例えば、外部媒体入出力装置207に着脱可能な記憶媒体、または、ネットワークや、ネットワークを伝搬する搬送波やデジタル信号などの通信媒体を指す。
表示装置205は、プログラムの処理結果などを表示する。表示装置205は、例えば、ディスプレイなどである。入力装置206は、処理の実行指示及び処理に必要な情報の入力などを利用者から受け付ける。入力装置206は、例えば、キーボード及びマウスなどである。
外部媒体入出力装置207は、外部媒体と、外部記憶装置204に格納されているデータなどの入出力を行う。外部媒体は、外部媒体入出力装置207に着脱可能で可搬性のある記憶媒体であり、外部媒体出力装置207は、外部媒体に読み書き可能なドライブ装置などである。
図3及び図4は、形式言語仕様保持部102が保持する形式言語仕様のデータの例を示す図である。
本例はEvent-B言語にて記述した形式言語仕様の例で、モデル301とコンテクスト401から構成される。
図5は、不変条件推論部107、形式言語仕様実行部106、不変条件候補抽出部110、修正候補抽出108部、及び証明部103によって、形式言語仕様を証明する手順例を示すフローチャートである。以下に示す処理は、ソフトウェア証明支援装置201の備えるCPU202が、メモリ203で実行するプログラムによって実現される。そしてこのプログラムは、以下に説明される各種の動作を行うためのコードから構成されている。
CPU202は、入力部101を実行することによって、形式言語仕様の入力を受け付け、前記形式言語仕様を形式言語仕様保持部102に登録する。(ステップ501)。
CPU202は、証明部103を実行することによって、形式言語仕様保持部102から形式言語仕様を取得し、取得した形式言語仕様の証明を行う。証明には自動定理証明器などを用いてもよい。そして前記形式言語仕様の証明結果を、証明結果保持部104に登録する(ステップ502)。
前記形式言語仕様の証明に失敗した場合は、ステップ503を実行する。前記形式言語仕様の証明に成功した場合は実行を終了する(ステップ503)。
CPU202は、不変条件推論部107を実行することによって、形式言語仕様を識別する形式言語仕様識別情報のうち、証明に失敗した形式言語仕様の形式言語仕様識別情報を証明結果保持部104から取得する(ステップ504)。
不変条件推論部107は、ステップ504で取得した形式言語仕様識別情報の示す形式言語仕様を、形式言語仕様保持部102から取得する(ステップ505)。
CPU202は、形式言語仕様実行部106及び不変条件候補抽出部110を実行することによって、ステップ505で取得した形式言語仕様からその不変条件候補を抽出する。この不変条件候補抽出の手順は、図9を用いて詳細に説明する。そして、抽出した不変条件候補を不変条件候補保持部111に登録する(ステップ506)。
CPU202は、修正候補抽出部108を実行することによって、ステップ505で取得した形式言語仕様からその修正候補を抽出する。修正候補の抽出には特許文献などの従来技術を用いてもよい。そして、抽出した修正候補を修正候補保持部112に登録する(ステップ507)。
CPU202は、不変条件推論部107を再び実行することによって、それぞれ不変条件候補保持部111から不変条件候補一覧を、修正候補保持部112から修正候補一覧を取得する。そして取得した不変条件候補一覧、及び修正候補一覧に基づいて形式言語仕様の不変条件を推論する(ステップ508)。この不変条件推論の手順は、図11を用いて詳細に説明する。
不変条件を推論できた場合は、ステップ510を実行する。不変条件を推論できなかった場合は、実行を終了する(ステップ509)。
不変条件推論部107は、推論した不変条件を形式言語仕様に追加してから、前記形式言語仕様を形式言語仕様保持部102に再登録する(ステップ510)。
図6は、実行結果保持部105が保持する形式言語仕様実行結果のデータの例を示す図である。
形式言語仕様実行結果601は、実行イベント番号602、実行イベント603、及び変数値状態604を含む。
実行イベント番号602は、実行したイベントの通し番号を表す。
実行イベント603は、実行した形式言語仕様のイベント名称を表す。
変数値状態604は、実行対象の形式言語仕様が含む変数の値で、実行イベント603の示すイベント実行後の変数値を表す。
図7は、不変条件テンプレート保持部109が保持する不変条件テンプレートのデータの例を示す図である。
不変条件テンプレートの一覧701は、テンプレート番号702、パラメータ703、パラメータ条件704、及び不変条件テンプレート705を含む。
テンプレート番号702は、不変条件テンプレートの通し番号を表す。
パラメータ703は、不変条件テンプレート705内で使用するパラメータのリストである。
パラメータ条件704は、パラメータ703の条件を表す。例えば、SETというパラメータを集合のパラメータとして使用したい場合は、パラメータ条件704に「"SET"は集合」と記述する。
不変条件テンプレート705は、不変条件のテンプレートを表す。テンプレートはパラメータ703を使った式で表わされ、パラメータ部分に実際の形式言語仕様の変数を代入することで、その形式言語仕様の不変条件候補を作成する。例えば、テンプレート「x=y」のパラメータxに形式言語仕様の変数var1を代入し、パラメータyに形式言語仕様の変数var2を代入すると、前記形式言語仕様の不変条件候補「var1=var2」を得られる。「var1=var2」は変数var1と変数var2が等しいことを意味する。
その他、不変条件テンプレート705にある「x < y」や「X = x ⇒ Y = y」などの形式の不変条件が、不変条件候補として得られる。
図8は、不変条件候補保持部111が保持する不変条件候補のデータの例を示す図である。
不変条件候補の一覧801は、候補番号802、及び不変条件候補803を含む。
候補番号802は、不変条件候補の通し番号を表す。
不変条件候補803は、対象となる形式言語仕様の不変条件の候補を表す。
図9は、形式言語仕様実行部106、及び不変条件候補抽出部110によって、不変条件候補を不変条件候補保持部に登録する手順例を示すフローチャートである。以下に示す処理は、ソフトウェア証明支援装置201の備えるCPU202が、メモリ203で実行するプログラムによって実現される。そしてこのプログラムは、以下に説明される各種の動作を行うためのコードから構成されている。
CPU202は、形式言語仕様実行部106を実行することによって、不変条件推論部107から形式言語仕様を取得する(ステップ901)。
形式言語仕様実行部106は、取得した形式言語仕様を実行し、実行結果を実行結果保持部105に登録する(ステップ902)。形式言語仕様の実行は複数回行ってもよく、その場合は全ての回数分の実行結果を実行結果保持部105に登録する。
CPU202は、不変条件候補抽出部110を実行することによって、実行結果保持部105から対象の形式言語仕様の実行結果を取得する(ステップ903)。
不変条件候補抽出部110は、不変条件テンプレート保持部109から不変条件テンプレートを取得する(ステップ904)。
不変条件候補抽出部110は、取得した不変条件テンプレートのパラメータに対象の形式言語仕様の変数を代入することで、不変条件候補を作成する。そして、作成した不変条件候補の表す条件が、ステップ903で取得した実行結果において成立するかを確認する。具体的には、変数値状態604の示す全状態において、前記不変条件候補が成立するかを確認する。確認の結果、前記不変条件候補が前記実行結果において成立しない場合は、その不変条件候補を(不変条件候補の一覧から)削除する。つまり、前記実行結果において成立する不変条件のみを、不変条件候補として抽出する(ステップ905)。
不変条件候補を1つ以上抽出できた場合はステップ907を実行する。不変条件を1つも抽出できなかった場合は、実行を終了する(ステップ906)。
不変条件候補抽出部110は、抽出した不変条件候補を不変条件候補保持部111に登録する(ステップ907)。
図10は、修正候補保持部112が保持する修正候補のデータの例を示す図である。
修正候補の一覧1001は、候補番号1002、及び修正候補1003を含む。
候補番号1002は、修正候補の通し番号を表す。
修正候補1003は、対象となる形式言語仕様を証明できるようにするための修正候補を表す。この修正候補は形式言語仕様の不変条件であり、修正候補を形式言語仕様に追加することで修正を行う。修正候補の抽出には特許文献などの従来技術を用いてもよい。

図11は、不変条件推論部107によって不変条件を推論する手順例を示すフローチャートである。
以下に示す処理は、ソフトウェア証明支援装置201の備えるCPU202が、メモリ203で実行するプログラムによって実現される。そしてこのプログラムは、以下に説明される各種の動作を行うためのコードから構成されている。
CPU202は、不変条件推論部107を実行することによって、不変条件候補保持部111から対象の形式言語仕様に対応する不変条件候補の一覧を取得する(ステップ1101)。
不変条件推論部107は、修正候補保持部112から、対象の形式言語仕様に対応する修正候補の一覧を取得する(ステップ1102)。
不変条件推論部107は、ステップ1101で取得した不変条件候補一覧とステップ1102で取得した修正候補一覧の、両方に含まれる不変条件候補を抽出する(ステップ1103)。
前記不変条件候補一覧と前記修正候補一覧の両方に含まれる不変条件候補がある場合は、ステップ1105を実行する。前記不変条件候補一覧と前記修正候補一覧の両方に含まれる不変条件候補がない場合は、ステップ1108を実行する(ステップ1104)。
ステップ1104で抽出した(前記不変条件候補一覧と前記修正候補一覧の両方に含まれる)不変条件候補が既に対象の形式言語仕様の不変条件に含まれる場合は、ステップ1103に戻って他の不変条件候補を抽出する。前記不変条件候補が対象の形式言語仕様の不変条件に含まれない場合は、ステップ1106を実行する(ステップ1105)。
不変条件推論部107は、ステップ1104で抽出した不変条件候補を対象の形式言語仕様から推論する(ステップ1106)。推論には、推論規則を用いる。以下では、図3及び図4に示した形式言語仕様を例に推論規則の具体例を説明する。
図3及び図4の形式言語仕様では、var1とvar2に値を代入するときは同じ値を同時に代入している。実際に、初期化イベントINITIALISATIONでは、cstという同じ値を代入している。また、イベントoprではvar1とvar2に同じ値を同時に代入している。さらに、イベントsync_var3ではvar1、var2の値は変更しない。以上より、var1とvar2は常に等しいと言える。つまり、「“ある2つの変数x、yについて、x、yは同じ値で初期化され、かつ全てのイベントにおいてx、yの値を変更しないか、変更する場合はx、yに同じ値を同時に代入する”ならば、“不変条件x=yが成立する”」という推論規則が成り立つ。この推論規則を使って、図3及び図4の形式言語仕様からvar1=var2という不変条件を推論できる。
ステップ1104で抽出した不変条件候補を対象の形式言語仕様から推論できた場合は、前記不変条件候補を前記形式言語仕様の不変条件として実行を終了する。ステップ1104で抽出した不変条件候補を対象の形式言語仕様から推論できなかった場合は、ステップ1108を実行する(ステップ1107)。
不変条件推論部107は、不変条件候補保持部から任意の不変条件候補を取得し、取得した不変条件候補を対象の形式言語仕様から推論する。推論できた場合は、前記不変条件候補を前記形式言語仕様の不変条件とする(ステップ1108)。
図12は、不変条件推論部107が推論した不変条件を追加した形式言語仕様のデータの例を示す図である。
モデル1201は、モデル301に不変条件1202を追加したモデルである。モデル1201とコンテクスト401によって修正済みの形式言語仕様を構成する。
以上のようにして、ソフトウェア仕様を表す形式言語仕様に対して、形式言語仕様を実行して実行結果を取得する実行手段と、前記実行結果から形式言語仕様の不変条件候補一覧を抽出する不変条件抽出手段と、形式言語仕様を証明できるようにするための修正方法の候補である修正候補一覧を抽出する修正候補抽出手段と、前記不変条件候補一覧及び前記修正候補一覧から抽出した不変条件候補を、前記形式言語仕様から推論する推論手段と、推論した不変条件候補を前記形式言語仕様に追加する追加手段を提供する、ソフトウェア仕様証明支援装置を提供する。
これらの手段を使ってソフトウェア仕様を修正することで、ソフトウェア仕様の修正候補の確認及び選択作業をせずに、形式言語仕様を修正できるようになる。
101 入力部
102 形式言語仕様保持部
103 証明部
104 証明結果保持部
105 実行結果保持部
106 形式言語仕様実行部
107 不変条件推論部
108 修正候補抽出部
109 不変条件テンプレート保持部
110 不変条件候補抽出部
111 不変条件候補保持部
112 修正候補保持部
113 出力部

Claims (6)

  1. 形式言語で記述されるソフトウェア仕様を証明するソフトウェア証明支援装置であって、
    プロセッサ、及び記憶部を備え、
    前記記憶部は、前記プロセッサを動作させるためのプログラムであって、前記ソフトウェア仕様を証明するための証明部と、前記ソフトウェア仕様から前記ソフトウェア仕様の性質を推論するための、不変条件推論部を備えるプログラムを格納し、
    前記プロセッサは、
    前記不変条件推論部によって、前記ソフトウェア仕様の性質が前記ソフトウェア仕様において不変的に成立する性質であるかを推論し、
    前記推論によって、前記ソフトウェア仕様において不変的に成立する性質であると判明したソフトウェア仕様の性質を、前記ソフトウェア仕様に追加し、
    前記証明によって、前記ソフトウェア仕様を証明することを特徴とするソフトウェア証明支援装置。
  2. 前記プロセッサは、
    前記ソフトウェア仕様を実行して実行結果を取得し、
    前記実行結果に矛盾しない性質を、前記ソフトウェア仕様の性質として抽出して、
    前記ソフトウェア仕様から前記ソフトウェア仕様の性質を推論することを特徴とする請求項1に記載のソフトウェア証明支援装置。
  3. 前記記憶部は、前記プログラムとして、前記ソフトウェア仕様の証明を成功させるための前記ソフトウェア仕様の修正方法を抽出する修正候補抽出手続き部を有するプログラムを格納し、
    前記プロセッサは、
    前記ソフトウェア仕様から前記ソフトウェア仕様の性質を含む不変条件候補を抽出し、
    前記修正候補抽出手続き部によって、前記ソフトウェア仕様から、前記ソフトウェア仕様の証明を成功させるための前記ソフトウェア仕様の修正方法候補であって、ソフトウェア仕様の性質を含む修正方法候補を抽出し、
    前記不変条件候補と前記修正方法候補を比較し、
    前記比較の結果、それぞれに含まれる性質が一致した場合、前記性質を追加することで、前記ソフトウェア仕様から前記ソフトウェア仕様の性質を推論することを特徴とする請求項1あるいは請求項2に記載のソフトウェア証明支援装置。
  4. 形式言語で記述されるソフトウェア仕様を証明するソフトウェア証明支援装置におけるソフトウェア証明支援方法であって、
    前記ソフトウェア証明支援装置は、プロセッサ、及び記憶部を備え、
    前記記憶部は、前記プロセッサを動作させるためのプログラムであって、前記ソフトウェア仕様を証明するための証明部と、前記ソフトウェア仕様から前記ソフトウェア仕様の性質を推論するための、不変条件推論部を有するプログラムを格納し、
    前記プロセッサは、
    前記不変条件推論部によって、前記ソフトウェア仕様の性質が前記ソフトウェア仕様において不変的に成立する性質であるかを推論し、
    推論によって、前記ソフトウェア仕様において不変的に成立する性質であると判明したソフトウェア仕様の性質を、前記ソフトウェア仕様に追加し、
    前記証明によって、前記ソフトウェア仕様を証明することを特徴とするソフトウェア証明支援方法。
  5. 請求項1乃至3のいずれかに記載のソフトウェア証明支援装置において、
    前記ソフトウェア仕様の証明は、前記不変条件推論部として、ある2つの変数x、yについて、x、yは同じ値で初期化され、かつ各イベントにおいてx、yの値を変更しないか、変更する場合はx、yに同じ値を代入するならば、不変条件x=yが成立するとの推論規則を用いて実行することを特徴とするソフトウェア証明支援装置。
  6. 請求項4に記載のソフトウェア証明支援方法において、
    前記ソフトウェア仕様の証明は、前記不変条件推論部として、ある2つの変数x、yについて、x、yは同じ値で初期化され、かつ各イベントにおいてx、yの値を変更しないか、変更する場合はx、yに同じ値を代入するならば、不変条件x=yが成立するとの推論規則を用いて実行することを特徴とするソフトウェア証明支援方法。
JP2010113811A 2010-05-18 2010-05-18 ソフトウェア仕様の証明支援装置、及び証明支援方法 Expired - Fee Related JP5508933B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010113811A JP5508933B2 (ja) 2010-05-18 2010-05-18 ソフトウェア仕様の証明支援装置、及び証明支援方法
PCT/JP2011/052115 WO2011145363A1 (ja) 2010-05-18 2011-02-02 ソフトウェア仕様の証明支援装置、及び証明支援方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010113811A JP5508933B2 (ja) 2010-05-18 2010-05-18 ソフトウェア仕様の証明支援装置、及び証明支援方法

Publications (3)

Publication Number Publication Date
JP2011242955A JP2011242955A (ja) 2011-12-01
JP2011242955A5 JP2011242955A5 (ja) 2012-05-10
JP5508933B2 true JP5508933B2 (ja) 2014-06-04

Family

ID=44991481

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010113811A Expired - Fee Related JP5508933B2 (ja) 2010-05-18 2010-05-18 ソフトウェア仕様の証明支援装置、及び証明支援方法

Country Status (2)

Country Link
JP (1) JP5508933B2 (ja)
WO (1) WO2011145363A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017135212A1 (ja) * 2016-02-01 2017-08-10 国立大学法人京都大学 不変条件生成装置、コンピュータプログラム、不変条件生成方法、プログラムコード製造方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05119987A (ja) * 1991-10-30 1993-05-18 Hitachi Ltd 動的仕様の検証ルールの図形式定義方法
JPH0675761A (ja) * 1992-08-28 1994-03-18 Toshiba Corp 仕様検証装置
JPH06149560A (ja) * 1992-11-06 1994-05-27 Toshiba Corp 形式的仕様記述ソフトウェアのエラー特定装置
JP3305049B2 (ja) * 1993-07-22 2002-07-22 株式会社東芝 ソフトウェア品質管理システム
JPH0765046A (ja) * 1993-08-24 1995-03-10 Hitachi Ltd 論理装置の検証方法
JP5005510B2 (ja) * 2007-11-07 2012-08-22 株式会社日立製作所 ソフトウェアの設計支援方法、設計支援装置及び設計支援プログラム
US8527976B2 (en) * 2007-11-14 2013-09-03 Nec Laboratories America, Inc. System and method for generating error traces for concurrency bugs
JP2009157456A (ja) * 2007-12-25 2009-07-16 Toshiba Corp プログラム検証装置、プログラム検証方法、検証プログラム

Also Published As

Publication number Publication date
JP2011242955A (ja) 2011-12-01
WO2011145363A1 (ja) 2011-11-24

Similar Documents

Publication Publication Date Title
JP5607741B2 (ja) ランタイム挙動に基づくアプリケーションの自動修正
WO2012014284A1 (ja) テストシナリオ生成方法、テストシナリオ生成システム、及び、テストシナリオ生成プログラム
JP5209016B2 (ja) WebAPI作成支援装置及びWebAPI作成支援方法
JP5622647B2 (ja) シナリオ生成装置およびシナリオ生成プログラム
JP6268029B2 (ja) テストケース生成装置及びテストケース生成方法
JP2007122135A (ja) 開発支援装置、開発支援方法、および、開発支援プログラム
JP2009048252A (ja) プログラム変換装置及びコンパイラプログラム
US11409631B2 (en) Verification automation apparatus, verification automation method, and computer-readable recording medium
JP5508933B2 (ja) ソフトウェア仕様の証明支援装置、及び証明支援方法
US11349908B2 (en) Generating templates for deployment of system services
JP6451417B2 (ja) デバッグ支援装置、デバッグ支援システム、デバッグ支援方法、および、デバッグ支援プログラム
JP2010256978A (ja) コンフィグレーションデータ検証装置、検証方法及びプログラム
US20190286453A1 (en) System construction assisting apparatus, method, and program
US20140359258A1 (en) Declarative Configuration Elements
WO2021205589A1 (ja) テストスクリプト生成装置、テストスクリプト生成方法及びプログラム
WO2020230241A1 (ja) テスト装置、テスト方法及びプログラム
JP2007157128A (ja) 機器設定装置、機器設定方法、情報取得装置、情報取得方法、記録媒体及びプログラム
JP6552162B2 (ja) 情報処理装置、情報処理方法、およびプログラム
JPWO2012049816A1 (ja) モデル検査装置、方法及びプログラム
JP5668492B2 (ja) データ処理装置、コンピュータプログラム及びデータ処理方法
JP2021103354A (ja) プログラムの試験方法
JP2015022356A (ja) テストシナリオバリエーション生成装置及び方法及びプログラム
JP6084706B2 (ja) ソースコード生成装置、ソースコード証明装置、ソースコード生成方法、およびソースコード生成プログラム
JP5600826B1 (ja) 非構造化データ処理システム、非構造化データ処理方法およびプログラム
WO2022249422A1 (ja) コードマッピング装置、コードマッピング方法、及びプログラム

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120315

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120315

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130730

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130918

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140324

LAPS Cancellation because of no payment of annual fees