JP2009211622A - 契約定義関数検証装置、その方法及びそのプログラム - Google Patents

契約定義関数検証装置、その方法及びそのプログラム Download PDF

Info

Publication number
JP2009211622A
JP2009211622A JP2008056291A JP2008056291A JP2009211622A JP 2009211622 A JP2009211622 A JP 2009211622A JP 2008056291 A JP2008056291 A JP 2008056291A JP 2008056291 A JP2008056291 A JP 2008056291A JP 2009211622 A JP2009211622 A JP 2009211622A
Authority
JP
Japan
Prior art keywords
function
contract
verification
file
assertion
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.)
Granted
Application number
JP2008056291A
Other languages
English (en)
Other versions
JP4888790B2 (ja
Inventor
Takayuki Imoto
崇之 井元
Kimiko Shioda
公子 塩田
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.)
NEC Corp
NEC Solution Innovators Ltd
Original Assignee
NEC Corp
NEC System Technologies 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 NEC Corp, NEC System Technologies Ltd filed Critical NEC Corp
Priority to JP2008056291A priority Critical patent/JP4888790B2/ja
Publication of JP2009211622A publication Critical patent/JP2009211622A/ja
Application granted granted Critical
Publication of JP4888790B2 publication Critical patent/JP4888790B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】一度の検証で契約定義条件に反した呼び出し処理を特定する。
【解決手段】オブジェクトファイル中にアノテーションとして記述された契約定義関数の契約条件の充足性を検証用ソースコードに基づいて検証する契約定義関数検証装置であって、前記オブジェクトファイルから前記契約定義関数の定義を抽出し、契約定義関数情報を作成する契約定義関数抽出手段21と、検証用ソースコードとして、契約条件を検証可能な形式に変換した表明を契約定義箇所の処理を定義したスタブ関数に挿入した表明埋め込みスタブ関数を有する表明埋め込みスタブファイル41と、契約定義関数の呼び出し処理を、表明埋め込みスタブ関数の呼び出しに置き換えた、関数呼び出し置換ファイル42と、を作成する検証用ソースコード生成手段22と、を備える。
【選択図】図1

Description

本発明は、プログラム中にアノテーションとして記述された「関数の契約条件」の充足性をチェッカが検証するソースコード検証方法において、契約条件が定義された関数の呼び出し毎に対応するスタブ関数を自動生成することにより、一度の検証実行で複数箇所からの呼び出しすべての検証を可能にすることを特徴とする契約定義関数検証装置、その方法及びそのプログラムに関するものである。
プログラムにおいて、「契約条件」とは、一般的には、プログラムが満たすべき仕様を事前・事後及び不変条件として定義したものを意味し、本発明においては、特に断りがない場合は、関数インタフェース仕様に対する事前・事後・不変条件を意味する。また、契約条件をアノテーションとして付加した関数を「契約定義関数」と呼ぶ。
また、「アノテーション」とは、一般的には、プログラムに関連するメタ情報を注釈として記述したものであり、本発明においては、関数の契約条件をソースコード中のコメント部分に規定の文法に従って記述したものを指す。
更に、定義された契約条件を、ソースコード検証装置で検証可能な形式に変換したうえで、検証箇所の処理定義中に埋め込んだものを、表明(アサーション)と呼ぶ。
このソースコードを検証する従来の方法は、反例が見付かった時点で検証を終了するため、1度の検証で示すことができる反例の実行パスは一通りだけであり(参考文献:情報処理 35(8)「論理関数処理に基づく形式的検証方法」 平石裕実、浜口清治著)、検証対象の契約定義関数が検証対象のソースコード中の複数個所から呼び出されている場合、一度の検証で、そのすべての呼び出し箇所からの呼び出しを検証できるとは限らないという課題があった。
一方で、このソースコード検証において、ソースコードを検査可能な記号モデルに変換して検証を行う技術がある。
特表2007−528059号公報 特開2003−296139号公報 特開平02−103644号公報 特開平06−250884号公報 コンピュータソフトウェア 24「Cプログラムの検証ツール Caduceus」南出靖彦著
しかしながら、特許文献1及び非特許文献1のソースコード検証技術は、ユーザが指定した検証条件に対し1つの表明を挿入する。このため、一度の検証で全ての違反箇所を特定することができないという問題があった。
特許文献2、特許文献3及び特許文献4では、ソースコード中のコメント部分に記述された契約条件が定義された関数の呼び出し毎に対応するスタブを自動生成することができないという問題があった。
本発明は上記に鑑みてなされたものであって、一度の検証で契約定義条件に反した呼び出し処理を特定する契約定義関数検証装置、その方法及びそのプログラムを得ることを目的とする。
上述の課題を解決するため、本発明に係る契約定義関数検証装置は、オブジェクトファイル中にアノテーションとして記述された契約定義関数の契約条件の充足性を検証用ソースコードに基づいて検証し、該検証の結果を検証結果ファイルとして出力する契約定義関数検証装置であって、前記オブジェクトファイルから前記契約定義関数の定義を抽出し、かつ、前記契約定義関数の定義と、前記契約条件と、前記契約定義関数のファイルの名称及び前記契約定義関数のファイルにおいて前記契約条件が記載されている行番号を記した契約定義箇所と、を含む契約定義関数情報を作成する契約定義関数抽出手段と、前記検証用ソースコードとして、前記契約条件を検証可能な形式に変換した表明を前記契約定義箇所の処理を定義したスタブ関数に挿入した表明埋め込みスタブ関数を有する表明埋め込みスタブファイルと、前記契約定義関数の呼び出し処理を、前記表明埋め込みスタブ関数の呼び出しに置き換えた、関数呼び出し置換ファイルと、を作成する検証用ソースコード生成手段と、を備えること、を特徴とする。
上述の課題を解決するため、本発明に係る契約定義関数検証方法は、オブジェクトファイル中にアノテーションとして記述された契約定義関数の契約条件の充足性を検証用ソースコードに基づいて検証し、該検証の結果を検証結果ファイルとして出力する契約定義関数検証方法であって、前記オブジェクトファイルから前記契約定義関数の定義を抽出する手順と、前記契約定義関数の定義と、前記契約条件と、前記契約定義関数のファイルの名称及び前記契約定義関数のファイルにおいて前記契約条件が記載されている行番号を記した契約定義箇所と、を含む契約定義関数情報を作成する手順と、前記検証用ソースコードを作成する手順と、を備え、前記検証用ソースコードを作成する手順は、前記契約定義箇所の処理を定義したスタブ関数を定義する手順と、前記契約条件を検証可能な形式に変換した表明を前記スタブ関数に挿入して表明埋め込みスタブ関数を定義する手順と、該表明埋め込みスタブ関数を有する表明埋め込みスタブファイルを、第1の前記検証用ソースコードとして作成する手順と、前記契約定義関数の呼び出し処理を、前記表明埋め込みスタブ関数の呼び出しに置き換えた、関数呼び出し置換ファイルを第2の前記検証用ソースコードとして作成する手順と、を含むこと、を特徴とする。
上述の課題を解決するため、本発明に係る契約定義関数検証用プログラムは、オブジェクトファイル中にアノテーションとして記述された契約定義関数の契約条件の充足性を検証用ソースコードに基づいて検証し、該検証の結果を検証結果ファイルとして出力する契約定義関数検証用プログラムであって、前記オブジェクトファイルから前記契約定義関数の定義を抽出する処理と、前記契約定義関数の定義と、前記契約条件と、前記契約定義関数のファイルの名称及び前記契約定義関数のファイルにおいて前記契約条件が記載されている行番号を記した契約定義箇所と、を含む契約定義関数情報を作成する処理と、前記検証用ソースコードを作成する処理と、をコンピュータに実行させ、前記検証用ソースコードを作成する処理は、前記契約定義箇所の処理を定義したスタブ関数を定義する処理と、前記契約条件を検証可能な形式に変換した表明を前記スタブ関数に挿入して表明埋め込みスタブ関数を定義する処理と、該表明埋め込みスタブ関数を有する表明埋め込みスタブファイルを、第1の前記検証用ソースコードとして作成する処理と、前記契約定義関数の呼び出し処理を、前記表明埋め込みスタブ関数の呼び出しに置き換えた、関数呼び出し置換ファイルを第2の前記検証用ソースコードとして作成する処理と、を含むこと、を特徴とする。
本発明によれば、検証用ソースコード生成手段が、契約条件を検証可能な形式に変換した表明を契約定義箇所の処理を定義したスタブ関数に挿入した表明埋め込みスタブ関数を作成し、契約定義関数の呼び出し処理を表明埋め込みスタブ関数の呼び出しに置き換えることにより、契約定義関数の呼び出し処理のすべてに表明を埋め込むことができ、一度の検証で契約定義条件に反した呼び出し処理を特定する契約定義関数検証装置、その方法及びそのプログラムを得ることができる。
次に、本発明の実施の形態の構成について図面を参照して詳細に説明する。図1は、本発明の実施の形態に係る契約定義関数検証装置の構成図である。
この図1において、本発明の実施の形態に係る契約定義関数検証装置は、プログラム制御により動作するデータ処理装置である表明検証装置2と、検証結果表示装置6と、情報を記憶する記憶装置30と、を備える。
表明検証装置2は入力ソースコード1から契約定義関数を抽出し、抽出した契約定義関数の関数定義情報を契約定義関数情報記憶部31に記憶する契約定義関数抽出手段21と、入力ソースコードを読み込みながら検証用ソースコード40を生成する検証用ソースコード生成手段22と、検証用ソースコード中に埋め込まれた表明に基づいて検証を行う表明検証手段26と、を備える。なお、表明検証手段26及び検証結果表示装置6は、既存のソースコード検証技術に係るものである。
検証用ソースコード生成手段22は、表明埋め込みスタブ作成手段23と、関数呼び出し置換ソース作成手段24と、表明生成情報出力手段25と、を備える。
表明埋め込みスタブ作成手段23は、契約定義関数の呼び出し処理ごとに、契約条件に対応する表明を挿入した表明埋め込みスタブファイル41を作成し、関数呼び出し置換ソース作成手段24は、ソースコード中の契約定義関数の呼び出し処理を表明が埋め込まれたスタブ関数の呼び出しに置き換えた関数呼び出し置換ファイル42を作成し、表明生成情報出力手段25は、契約定義箇所と表明挿入箇所の関係を表明生成情報32として作成する。
表明検証手段26は、検証用ソース作成手段22で作成した表明埋め込みスタブファイル41及び関数呼び出し置換ファイル42が入力され、表明埋め込みスタブファイル41に埋め込まれた表明の充足性について検証を行い、その検証結果を検証結果ファイル5として出力する。
検証結果表示装置6は、検証結果ファイル5及び表明生成情報25に基づいて利用者に表明検証装置26による検証結果を対話的に表示し、プログラムのデバッグを支援する装置であり、利用者の指示に応じて、表明の違反箇所の検索と表示、及び対応する契約条件の定義箇所を表示する。
検証結果表示装置6に表示された内容は、必要に応じてプリンタ50等に出力される。
次に、本発明の実施の形態の動作について図面を参照しながら詳細に説明する。
ここで、図2は、契約定義関数抽出手段21の処理を示すフローチャートである。
この図2において、契約定義関数抽出手段21は、ユーザが検証対象として指定した入力ソースコード1を順に読み込み(ステップS101)、読み込んだソースコード1を解析し、関数定義の記述を検索する(ステップS102)。
ステップS103において取得した関数定義に契約条件の定義が存在した場合(YES)、関数定義情報から関数名、引数、契約条件とその記述箇所(ファイル名、行番号)をそれぞれ取得し、契約定義関数情報として契約定義関数情報記憶部31に記憶する(ステップS104)。
一方で、ステップS103において取得した関数定義に契約条件の定義が存在しない場合(NO)、手順はステップS102に戻り、再度、関数定義の記述が検索される。
ステップS105では、入力ソースコード1に係るファイル中の全ての関数定義を取得したか否かがチェックされ、取得している場合(YES)、次のステップS106において入力ソースコード1に係る全てのファイルが読み込まれたか否かがチェックされる。
ステップS106において、入力ソースコード1に係る全てのファイルが読み込まれた場合(YES)、契約定義関数抽出手段21での処理は終了する。
一方で、ステップS105において、入力ソースコード1に係るファイル中の全ての関数定義を取得していない場合(NO)、手順はステップS102に戻り、再度、関数定義の記述が検索される。
又、ステップS106において、全てのソースコード1のファイルが読み込まれていない場合(NO)、手順はステップS101に戻り、再度、入力ソースコード1が読み込まれる。
ここで、図3は、検証対象となるC言語で書かれた入力ソースコード1の例である。
図4は、図3のソースコード1から契約定義関数抽出手段21が出力した、契約定義関数情報の例である。
次に、検証用ソースコードの作成処理について、図5のフローチャートを用いて説明する。図5は、検証用ソースコード生成手段22による検証用ソースコードの作成処理を示すフローチャートである。
まず、検証用ソースコード生成手段22はユーザが検証対象として指定した入力ソースコード1を順に読み込み(ステップS201)、読み込んだ入力ソースコードに対し、関数呼び出し処理を取得する(ステップS202)。
続いて、契約定義関数抽出手段21で作成した契約定義関数情報を参照しながら、呼び出し先の関数名が契約定義関数として定義されたものであるかを判定する(ステップS203)。契約定義関数の呼び出しであった場合(YES)、表明埋め込みスタブ作成手段23により、関数呼び出しに対応する表明埋め込みスタブファイル41を作成し、検証用ソースコードに追加する(ステップS204)。
一方で、ステップS203において、契約定義関数の呼び出しではなかった場合(NO)、手順はステップS202に戻される。
次に、図5のステップS204における処理については、図6のフローチャートを用いて詳しく説明する。図6は、表明埋め込みスタブ作成手段23及び表明生成情報出力手段25による処理を示すフローチャートである。
まず、表明埋め込みスタブ作成手段23は検証用ソースコード生成手段22から、契約定義関数の呼び出し記述に対する処理を引き継ぎ(ステップS301)、契約定義関数情報記憶部31から呼び出し処理に対応した契約定義関数情報を取得し、この契約定義関数情報を参照しながら(ステップS302)、契約定義関数の呼び出しに対応したスタブ関数を作成する(ステップS303)。
このとき、それぞれの関数呼び出しすべてに対して、関数名を検証用ソースコード中で重複のない(一意となる)ように命名する。
更に、契約定義関数情報から契約条件に関する情報を参照しながら、対応する表明記述をスタブ関数に挿入することによって追加する(ステップS304)。
次に、表明生成情報出力手段25は、契約条件の記述箇所(ファイル名、行番号)と、表明を挿入した箇所(ファイル名、行番号)の関係を表明生成情報32として作成し、出力する(ステップS305)。
ここで、図7は、契約定義関数fooの呼び出し処理に対する表明埋め込みスタブの作成例であり、図3のmain.cの関数fooの呼び出し(10行目)に対して、図4の契約定義関数情報から取得した契約条件”@pre x > 0”、”@pre y!= 0”を基に、”assert(x > 0)”、”assert(y != 0)”という表明が埋め込まれている。
更に、stub_foo_1という関数名を生成し、stub_foo_1.cというファイル名で検証用ソースコードとして出力される。
図8は表明生成情報の例であり、表明埋め込み箇所のファイル名、行番号(stub_foo_1.c 2,3行目)、対応する契約条件定義箇所のファイル名、行番号(foo.c 7,8行目)の関係を出力する。
次に、図5のフローチャートのステップS205以降の処理について説明する。まず、関数呼び出し置換ソース生成手段21によって、ソースコード中の関数呼び出し処理をステップS204で作成したスタブ関数の呼び出しに置き換える(ステップS205)。
ステップS206では、入力ソースコード1に係るファイル中の全ての関数呼び出し処理を取得したか否かがチェックされ、取得している場合(YES)、次のステップS207において入力ソースコード1に係るファイル中に契約定義関数の呼び出し処理が存在するか否かがチェックされる。
ステップS206において、入力ソースコード1に係るファイル中の全ての関数呼び出し処理を取得していない場合(NO)、手順はステップS202に戻される。
ステップS207では、入力ソースコード1に係るファイル中に契約定義関数の呼び出し処理が存在する場合(YES)、呼び出し処理を置き換えたソースコードを検証用ソースコードに追加する(ステップS208)。
一方で、ソースコード中に契約定義関数の呼び出し処理が存在しない場合(NO)、読み込んだソースコードをそのまま検証用ソースコードとしてコピーする(ステップS209)。
ステップS210において、入力ソースコード1に係る全てのファイルが読み込まれた場合(YES)、検証用ソースコード生成手段22による検証用ソースコードの作成処理は終了する。
一方で、ステップS210において、全てのソースコード1のファイルが読み込まれていない場合(NO)、手順はステップS201に戻り、再度、入力ソースコード1が読み込まれる。
ここで、図9は、図3の入力ソースコードに対する関数呼び出し置換ファイルの例である。契約定義関数fooの呼び出し処理(図3のmain.c 10,20,30行目)を、表明挿入スタブ作成手段23で作成したスタブ関数stub_foo_1, stub_foo_2, stub_foo_3に置き換える。
次に、表明検証手段26は、これまで説明した検証用ソースコード生成手段22で出力された検証用ソースコード40を入力し、表明に対する検証を行い、検証結果を検証結果ファイルとして生成し出力する。
この場合、図9の例では、main.cの10行目と30行目の1箇所の関数呼び出しで契約条件に反する呼び出し(y != 0 の条件に反する)が行われているが、本発明によれば2箇所の違反箇所を、一度の検証により検出することができる。
最後に、検証結果表示装置6は、利用者からの対話的な処理により検証結果を検索及び表示する装置であり、検証結果ファイル5、表明生成情報31を入力とし検証結果の表示を行う。
検証結果表示装置6では、表明生成情報32を参照することで、利用者が指定した表明箇所に対する契約定義条件の記述箇所を特定することができる。
又、本実施の形態では、検証する対象をソースコードとしたが、検証する対象をバイナリファイルとしてもよい。
なお、本発明は、ハードウェア、ソフトウェア又はこれらの組合せにより実現することができる。
本発明は、ソースコード検証装置を使った関数の契約条件の検証技術といった用途に利用することができる。
本発明の実施の形態に係る契約定義関数検証装置の構成図である。 契約定義関数抽出手段の処理を示すフローチャートである。 検証対象となるC言語で書かれた入力ソースコード1の例である。 ソースコードから契約定義関数抽出手段が出力した、契約定義関数情報の例である。 検証用ソースコード生成手段による検証用ソースコードの作成処理を示すフローチャートである。 表明埋め込みスタブ作成手段23の処理を示すフローチャートである。 契約定義関数fooの呼び出し処理に対する表明埋め込みスタブの作成例である。 表明生成情報の例である。 図3の入力ソースコードに対する関数呼び出し置換ファイルの例である。
符号の説明
1 入力ソースコード
2 表明検証装置
5 検証結果ファイル
6 検証結果表示装置
21 契約定義関数抽出手段
22 検証用ソースコード生成手段
23 表明埋め込みスタブ作成手段
24 関数呼び出し置換ソース作成手段
25 表明生成情報出力手段
26 表明検証手段
30 記憶装置
31 契約定義関数情報記憶部
32 表明生成情報
40 検証用ソースコード
41 表明埋め込みスタブファイル
42 関数呼び出し置換ファイル
50 プリンタ

Claims (16)

  1. オブジェクトファイル中にアノテーションとして記述された契約定義関数の契約条件の充足性を検証用ソースコードに基づいて検証し、該検証の結果を検証結果ファイルとして出力する契約定義関数検証装置であって、
    前記オブジェクトファイルから前記契約定義関数の定義を抽出し、かつ、
    前記契約定義関数の定義と、前記契約条件と、前記契約定義関数のファイルの名称及び前記契約定義関数のファイルにおいて前記契約条件が記載されている行番号を記した契約定義箇所と、を含む契約定義関数情報を作成する契約定義関数抽出手段と、
    前記検証用ソースコードとして、前記契約条件を検証可能な形式に変換した表明を前記契約定義箇所の処理を定義したスタブ関数に挿入した表明埋め込みスタブ関数を有する表明埋め込みスタブファイルと、前記契約定義関数の呼び出し処理を、前記表明埋め込みスタブ関数の呼び出しに置き換えた、関数呼び出し置換ファイルと、を作成する検証用ソースコード生成手段と、
    を備えること、を特徴とする契約定義関数検証装置。
  2. 前記検証用ソースコード生成手段は、前記契約定義箇所と、前記表明埋め込みスタブファイルの名称と、前記表明埋め込みスタブファイルにおいて前記契約条件が記載されている行番号と、の関係を示す表明生成情報を更に作成し、
    前記検証結果ファイル及び前記表明生成情報に基づいた検証結果を表示する検証結果表示部を、更に備えたこと、を特徴とする請求項1に記載の契約定義関数検証装置。
  3. 前記検証用ソースコード生成手段は、
    前記表明埋め込みスタブファイルを作成する表明埋め込みスタブ作成手段と、
    前記関数呼び出し置換ファイルを作成する関数呼び出し置換ソース作成手段と、
    前記表明生成情報を作成する表明生成情報出力手段と、
    を備えること、を特徴とする請求項1又は2に記載の契約定義関数検証装置。
  4. 前記表明埋め込みスタブ作成手段は、前記契約定義関数情報を参照して、前記契約定義関数の呼び出しに対応した前記スタブ関数を作成すること、を特徴とする請求項3に記載の契約定義関数検証装置。
  5. 前記オブジェクトファイルはソースコードであること、を特徴とする請求項1乃至4のいずれか1項に記載の契約定義関数検証装置。
  6. 前記オブジェクトファイルはバイナリファイルであること、を特徴とする請求項1乃至4のいずれか1項に記載の契約定義関数検証装置。
  7. オブジェクトファイル中にアノテーションとして記述された契約定義関数の契約条件の充足性を検証用ソースコードに基づいて検証し、該検証の結果を検証結果ファイルとして出力する契約定義関数検証方法であって、
    前記オブジェクトファイルから前記契約定義関数の定義を抽出する手順と、
    前記契約定義関数の定義と、前記契約条件と、前記契約定義関数のファイルの名称及び前記契約定義関数のファイルにおいて前記契約条件が記載されている行番号を記した契約定義箇所と、を含む契約定義関数情報を作成する手順と、
    前記検証用ソースコードを作成する手順と、
    を備え、
    前記検証用ソースコードを作成する手順は、
    前記契約定義箇所の処理を定義したスタブ関数を定義する手順と、
    前記契約条件を検証可能な形式に変換した表明を前記スタブ関数に挿入して表明埋め込みスタブ関数を定義する手順と、
    該表明埋め込みスタブ関数を有する表明埋め込みスタブファイルを、第1の前記検証用ソースコードとして作成する手順と、
    前記契約定義関数の呼び出し処理を、前記表明埋め込みスタブ関数の呼び出しに置き換えた、関数呼び出し置換ファイルを第2の前記検証用ソースコードとして作成する手順と、
    を含むこと、を特徴とする契約定義関数検証方法。
  8. 前記検証用ソースコードを生成する手順は、前記契約定義箇所と、前記表明埋め込みスタブファイルの名称と、前記表明埋め込みスタブファイルにおいて前記契約条件が記載されている行番号と、の関係を示す表明生成情報を更に作成し、
    前記検証結果ファイル及び前記表明生成情報に基づいた検証結果を表示する検証結果表示手順を、更に備えること、を特徴とする請求項7に記載の契約定義関数検証方法。
  9. 前記スタブ関数を定義する手順は、前記契約定義関数情報を参照して、前記契約定義関数の呼び出しに対応した前記スタブ関数を作成すること、を特徴とする請求項7又は8に記載の契約定義関数検証方法。
  10. 前記オブジェクトファイルはソースコードであること、を特徴とする請求項7乃至9のいずれか1項に記載の契約定義関数検証方法。
  11. 前記オブジェクトファイルはバイナリファイルであること、を特徴とする請求項7乃至9のいずれか1項に記載の契約定義関数検証方法。
  12. オブジェクトファイル中にアノテーションとして記述された契約定義関数の契約条件の充足性を検証用ソースコードに基づいて検証し、該検証の結果を検証結果ファイルとして出力する契約定義関数検証用プログラムであって、
    前記オブジェクトファイルから前記契約定義関数の定義を抽出する処理と、
    前記契約定義関数の定義と、前記契約条件と、前記契約定義関数のファイルの名称及び前記契約定義関数のファイルにおいて前記契約条件が記載されている行番号を記した契約定義箇所と、を含む契約定義関数情報を作成する処理と、
    前記検証用ソースコードを作成する処理と、
    をコンピュータに実行させ、
    前記検証用ソースコードを作成する処理は、
    前記契約定義箇所の処理を定義したスタブ関数を定義する処理と、
    前記契約条件を検証可能な形式に変換した表明を前記スタブ関数に挿入して表明埋め込みスタブ関数を定義する処理と、
    該表明埋め込みスタブ関数を有する表明埋め込みスタブファイルを、第1の前記検証用ソースコードとして作成する処理と、
    前記契約定義関数の呼び出し処理を、前記表明埋め込みスタブ関数の呼び出しに置き換えた、関数呼び出し置換ファイルを第2の前記検証用ソースコードとして作成する処理と、
    を含むこと、を特徴とする契約定義関数検証用プログラム。
  13. 前記検証用ソースコードを生成する処理は、前記契約定義箇所と、前記表明埋め込みスタブファイルの名称と、前記表明埋め込みスタブファイルにおいて前記契約条件が記載されている行番号と、の関係を示す表明生成情報を更に作成し、
    前記検証結果ファイル及び前記表明生成情報に基づいた検証結果を表示する検証結果表示処理を、更にコンピュータに実行させること、を特徴とする請求項12に記載の契約定義関数検証用プログラム。
  14. 前記スタブ関数を定義する処理は、前記契約定義関数情報を参照して、前記契約定義関数の呼び出しに対応した前記スタブ関数を作成すること、を特徴とする請求項12又は13に記載の契約定義関数検証用プログラム。
  15. 前記オブジェクトファイルはソースコードであること、を特徴とする請求項12乃至14のいずれか1項に記載の契約定義関数検証用プログラム。
  16. 前記オブジェクトファイルはバイナリファイルであること、を特徴とする請求項12乃至14のいずれか1項に記載の契約定義関数検証用プログラム。
JP2008056291A 2008-03-06 2008-03-06 契約定義関数検証装置、その方法及びそのプログラム Expired - Fee Related JP4888790B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008056291A JP4888790B2 (ja) 2008-03-06 2008-03-06 契約定義関数検証装置、その方法及びそのプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008056291A JP4888790B2 (ja) 2008-03-06 2008-03-06 契約定義関数検証装置、その方法及びそのプログラム

Publications (2)

Publication Number Publication Date
JP2009211622A true JP2009211622A (ja) 2009-09-17
JP4888790B2 JP4888790B2 (ja) 2012-02-29

Family

ID=41184673

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008056291A Expired - Fee Related JP4888790B2 (ja) 2008-03-06 2008-03-06 契約定義関数検証装置、その方法及びそのプログラム

Country Status (1)

Country Link
JP (1) JP4888790B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011154568A (ja) * 2010-01-27 2011-08-11 Nec Corp 情報処理装置、プログラム検証方法およびプログラム
JP2012048660A (ja) * 2010-08-30 2012-03-08 Nec Corp 静的解析処理システム、方法、およびプログラム
CN108960830A (zh) * 2018-07-16 2018-12-07 百度在线网络技术(北京)有限公司 智能合约的部署方法、装置、设备及存储介质
WO2022230074A1 (ja) * 2021-04-27 2022-11-03 日本電信電話株式会社 検知装置、検知方法及び検知プログラム

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011154568A (ja) * 2010-01-27 2011-08-11 Nec Corp 情報処理装置、プログラム検証方法およびプログラム
JP2012048660A (ja) * 2010-08-30 2012-03-08 Nec Corp 静的解析処理システム、方法、およびプログラム
CN108960830A (zh) * 2018-07-16 2018-12-07 百度在线网络技术(北京)有限公司 智能合约的部署方法、装置、设备及存储介质
CN108960830B (zh) * 2018-07-16 2022-07-15 百度在线网络技术(北京)有限公司 智能合约的部署方法、装置、设备及存储介质
WO2022230074A1 (ja) * 2021-04-27 2022-11-03 日本電信電話株式会社 検知装置、検知方法及び検知プログラム

Also Published As

Publication number Publication date
JP4888790B2 (ja) 2012-02-29

Similar Documents

Publication Publication Date Title
JP2007323573A (ja) 機能テスト・スクリプト生成装置
JP2009520268A5 (ja)
JP2008191963A (ja) ソースコード検証システム、ソースコード検証方法、およびソースコード検証用プログラム
JP5176478B2 (ja) データフロー解析装置、データフロー解析方法およびデータフロー解析プログラム
JP4888790B2 (ja) 契約定義関数検証装置、その方法及びそのプログラム
JP2009009418A (ja) 検証装置および検証方法
JP5316485B2 (ja) ソフトウェア開発支援装置、ソフトウェア開発支援方法およびソフトウェア開発支援プログラム
JP5293521B2 (ja) デザインルールチェック検証装置およびデザインルールチェック検証方法
JP2011191985A (ja) シンボリック実行支援プログラム、方法及び装置
JP2009230677A (ja) プロパティ生成システムおよびプロパティ検証システム
JP6665576B2 (ja) 支援装置、支援方法及びプログラム
JP2008052359A (ja) テストケース生成装置、テストケース生成方法及びテストケース生成プログラム
JP5702265B2 (ja) プログラム自動生成装置およびプログラム自動生成方法
CN110515653B (zh) 文档生成方法、装置、电子设备及计算机可读存储介质
JP6116983B2 (ja) エントリーポイント抽出装置
JP2004326650A (ja) 論理検証プログラム及び記録媒体
CN113076084A (zh) 资源文件处理方法、装置、设备及存储介质
JP2007018313A (ja) 回路設計プログラム、回路設計装置、回路設計方法
JP2009217720A (ja) プログラム生成装置およびプログラム生成方法
JP2007018205A (ja) アプリケーションプログラム実行装置,アプリケーション開発支援装置,画面遷移履歴表示装置及びプログラム
JP2010186378A (ja) ソフトウェアのバージョン間の差分表示システム及び方法
JP2009042951A (ja) プログラム中のデータ抽出方法及び装置
JP2007200125A (ja) コーディング規約選択プログラム
JP6556091B2 (ja) システム仕様検証支援装置及びシステム仕様検証支援方法
JP6268062B2 (ja) ソフトウェア仕様抽出装置、方法、及びプログラム

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20100805

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20100805

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110208

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110907

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111104

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111201

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141222

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313115

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees