JP2016018390A - 検証支援方法、検証支援装置、及びプログラム - Google Patents

検証支援方法、検証支援装置、及びプログラム Download PDF

Info

Publication number
JP2016018390A
JP2016018390A JP2014140781A JP2014140781A JP2016018390A JP 2016018390 A JP2016018390 A JP 2016018390A JP 2014140781 A JP2014140781 A JP 2014140781A JP 2014140781 A JP2014140781 A JP 2014140781A JP 2016018390 A JP2016018390 A JP 2016018390A
Authority
JP
Japan
Prior art keywords
data
execution
program
input data
generation
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
JP2014140781A
Other languages
English (en)
Other versions
JP6364263B2 (ja
Inventor
友宏 武田
Tomohiro Takeda
友宏 武田
祐司 横山
Yuji Yokoyama
祐司 横山
登萌 丸山
Tomoe Maruyama
登萌 丸山
渡辺 健太郎
Kentaro Watanabe
健太郎 渡辺
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.)
NTT Data Group Corp
Original Assignee
NTT Data Corp
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 NTT Data Corp filed Critical NTT Data Corp
Priority to JP2014140781A priority Critical patent/JP6364263B2/ja
Publication of JP2016018390A publication Critical patent/JP2016018390A/ja
Application granted granted Critical
Publication of JP6364263B2 publication Critical patent/JP6364263B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】より効率良くプログラムの検証を支援する方法を提供する。【解決手段】グラフ生成部41が、ソースコードを記憶するソースコード記憶部31からソースコードを取得し、取得したソースコードを構文解析して、データの処理に関するノードであるデータ処理ノードと、処理の分岐に関するノードである分岐処理ノードとを含むグラフ構造を生成するグラフ生成ステップと、データ生成部42が、グラフ構造に基づいて、プログラムを実行する実行経路を抽出し、抽出した実行経路をプログラムに実行させるための入力データを生成するデータ生成ステップと、実行制御部43が、プログラムにより正常に動作することが確認されている第1の実行環境2と、プログラムにより正常に動作することが確認されていない第2の実行環境3とのそれぞれの実行環境において、データ生成ステップにて生成した入力データによりプログラムを実行させる実行制御ステップとを含む。【選択図】図1

Description

本発明は、検証支援方法、検証支援装置、及びプログラムに関する。
金融機関や公共機関などの業務において、例えば、COBOL(COmmon Business Oriented Language)で構築されたプログラムが多数利用されている。このようなプログラムを、新しい実行基盤(実行環境)にシステム更改する際には、更改前の旧環境と、更改後の新環境とでそれぞれプログラムを実行して、プログラムのどの部分が実行されたかを示すカバレッジ情報を利用してプログラムの検証を行っている。また、このようなプログラムの検証のために、プログラムを実行して自動的にカバレッジ情報を出力する技術が知られている(例えば、特許文献1を参照)。
特開平5−324402号公報
しかしながら、上述のような技術では、プログラムを動作させるための入力データを作成する必要があり、プログラムを網羅的に実行するための入力データを作成するのに膨大な作業工数が必要になることがあった。そのため、プログラムを網羅的に実行するための入力データを自動で生成して、より効率良くプログラムの検証を行うことができる技術が望まれる。
本発明は、上記問題を解決すべくなされたもので、その目的は、より効率良くプログラムの検証を行うことができる検証支援方法、検証支援装置、及びプログラムを提供することにある。
上記問題を解決するために、本発明の一態様は、グラフ生成部が、プログラムを記述したソースコードを記憶するソースコード記憶部から前記ソースコードを取得し、取得した前記ソースコードを構文解析して、データの処理に関するノードであるデータ処理ノードと、処理の分岐に関するノードである分岐処理ノードとを含むグラフ構造を生成するグラフ生成ステップと、データ生成部が、前記グラフ生成ステップにて生成したグラフ構造に基づいて、前記プログラムを実行する実行経路を抽出し、抽出した前記実行経路を前記プログラムに実行させるための入力データを生成するデータ生成ステップと、実行制御部が、前記プログラムにより正常に動作することが確認されている第1の実行環境と、前記プログラムにより正常に動作することが確認されていない第2の実行環境とのそれぞれの実行環境において、前記データ生成ステップにて生成した入力データにより前記プログラムを実行させる実行制御ステップとを含むことを特徴とする検証支援方法である。
また、本発明の一態様は、上記の検証支援方法において、比較部が、前記第1の実行環境と前記第2の実行環境とのそれぞれで実行された実行経路と実行回数とを含むそれぞれの実行結果を比較する比較ステップを含むことを特徴とする。
また、本発明の一態様は、上記の検証支援方法において、前記データ生成ステップにおいて、前記実行経路に対して、当該実行経路におけるデータ処理ノードの処理を制約として、前記分岐処理ノードの分岐条件を満たす前記入力データを生成することを特徴とする。
また、本発明の一態様は、上記の検証支援方法において、前記データ生成ステップにおいて、前記実行経路に対して、前記分岐処理ノードごとに、分岐条件を満たす前記入力データを生成することを特徴とする。
また、本発明の一態様は、上記の検証支援方法において、前記データ生成ステップにおいて、前記実行経路に対して、前記分岐処理ノードごとに、乱数に基づいて前記入力データを生成する第1の生成アルゴリズムと、前記実行経路に対して、前記分岐処理ノードごとに、分岐条件を満たす前記入力データを生成する第2の生成アルゴリズムと、前記実行経路に対して、当該実行経路におけるデータ処理ノードを制約として、前記分岐処理ノードの分岐条件を満たす前記入力データを生成する第3の生成アルゴリズムとを組み合わせて、前記入力データを生成することを特徴とする。
また、本発明の一態様は、上記の検証支援方法において、前記データ生成ステップにおいて、前記第1の生成アルゴリズムと第2の生成アルゴリズムとのうちの少なくとも一方に基づいて前記入力データを生成した後に、前記実行経路のうち、生成した前記入力データにて実行されない実行経路に対して、前記第3の生成アルゴリズムに基づいて前記入力データを生成することを特徴とする。
また、本発明の一態様は、上記の検証支援方法において、前記データ生成ステップにおいて、前記プログラムの規模に基づいて、前記実行経路に対して、前記分岐処理ノードごとに、乱数に基づいて前記入力データを生成する第1の生成アルゴリズムと、前記実行経路に対して、前記分岐処理ノードごとに、分岐条件を満たす前記入力データを生成する第2の生成アルゴリズムと、前記実行経路に対して、当該実行経路におけるデータ処理ノードを制約として、前記分岐処理ノードの分岐条件を満たす前記入力データを生成する第3の生成アルゴリズムとのうちのいずれかの生成アルゴリズムを選択し、選択した当該生成アルゴリズムに基づいて前記入力データを生成することを特徴とする。
また、本発明の一態様は、プログラムを記述したソースコードを記憶するソースコード記憶部から前記ソースコードを取得し、取得した前記ソースコードを構文解析して、データの処理に関するノードであるデータ処理ノードと、処理の分岐に関するノードである分岐処理ノードとを含むグラフ構造を生成するグラフ生成部と、前記グラフ生成部が生成したグラフ構造に基づいて、前記プログラムを実行する実行経路を抽出し、抽出した前記実行経路を前記プログラムに実行させるための入力データを生成するデータ生成部と、前記プログラムにより正常に動作することが確認されている第1の実行環境と、前記プログラムにより正常に動作することが確認されていない第2の実行環境とのそれぞれの実行環境において、前記データ生成部が生成した入力データにより前記プログラムを実行させる実行制御部とを備えることを特徴とする検証支援装置である。
また、本発明の一態様は、コンピュータに、プログラムを記述したソースコードを記憶するソースコード記憶部から前記ソースコードを取得し、取得した前記ソースコードを構文解析して、データの処理に関するノードであるデータ処理ノードと、処理の分岐に関するノードである分岐処理ノードとを含むグラフ構造を生成するグラフ生成ステップと、前記グラフ生成ステップにて生成したグラフ構造に基づいて、前記プログラムを実行する実行経路を抽出し、抽出した前記実行経路を前記プログラムに実行させるための入力データを生成するデータ生成ステップと、前記プログラムにより正常に動作することが確認されている第1の実行環境と、前記プログラムにより正常に動作することが確認されていない第2の実行環境とのそれぞれの実行環境において、前記データ生成ステップにて生成した入力データにより前記プログラムを実行させる実行制御ステップとを実行させるためのプログラムである。
本発明によれば、より効率良くプログラムの検証を行うことができる。
第1の実施形態による検証支援システムの一例を示すブロック図である。 同実施形態におけるソース記憶部が記憶するソースコードの一例を示す図である。 同実施形態におけるグラフ記憶部が記憶する中間データの一例を示す図である。 同実施形態におけるグラフ構造の一例を示す図である。 同実施形態におけるランダム生成処理の一例を示す図である。 同実施形態におけるシンプル生成処理の一例を示す図である。 同実施形態におけるシンボリック生成処理の一例を示す図である。 第1の実施形態による検証支援システムの動作の一例を示すフローチャートである。 同実施形態におけるノードの再構成の一例を示す図である。 同実施形態におけるテストコードの実行動作の一例を示す図である。 同実施形態における比較結果の表示例を示す図である。 同実施形態におけるグラフ構造の生成処理の一例を示すフローチャートである。 同実施形態におけるランダム生成処理の一例を示すフローチャートである。 同実施形態におけるシンプル生成処理の一例を示すフローチャートである。 同実施形態におけるシンボリック生成処理の一例を示すフローチャートである。 第2の実施形態による検証支援システムの動作の一例を示すフローチャートである。 第3の実施形態による検証支援システムの動作の一例を示すフローチャートである。 本実施形態による比較結果の表示の変形例を示す第1の図である。 本実施形態による比較結果の表示の変形例を示す第2の図である。 本実施形態による比較結果の表示の変形例を示す第3の図である。
以下、本発明の一実施形態による検証支援装置、及び検証支援方法について、図面を参照して説明する。
[第1の実施形態]
図1は、本実施形態による検証支援システム100の一例を示すブロック図である。
この図に示すように、検証支援システム100は、検証支援装置1と、旧環境のコンピュータ装置2と、新環境のコンピュータ装置3とを備えている。
検証支援システム100は、例えば、COBOLによって旧環境(更改前の環境)で構築されているプログラムを、新しい環境である新環境(更改後の環境)に移植(更改)する場合に、プログラムが正しく新環境に移植されたか否かの検証を支援する。
本実施形態による検証支援システム100は、検証支援装置1がCOBOLのソースコードから検証用の入力データを生成するとともに、生成した入力データにより、旧環境のコンピュータ装置2と、新環境のコンピュータ装置3とのそれぞれで対象のプログラムを実行させる。そして、検証支援システム100は、旧環境のコンピュータ装置2の実行結果と、新環境のコンピュータ装置3の実行結果とを比較することにより、対象のプログラムが正しく新環境に移植されたか否かの検証を支援する。
旧環境のコンピュータ装置2は、移植前(更改前)の動作環境であるコンピュータ装置である。
新環境のコンピュータ装置3は、移植後(更改後)の動作環境であるコンピュータ装置である。
検証支援装置1は、対象のプログラムを検出するための入力データを生成するとともに、旧環境のコンピュータ装置2と、新環境のコンピュータ装置3とで、生成した入力データによって対象のプログラムを実行させるテストコード(テストドライバ、及びスタブ)を生成する。そして、検証支援装置1は、生成したテストコード(テストドライバ及びスタブ)を、旧環境のコンピュータ装置2と、新環境のコンピュータ装置3とのそれぞれに実行させ、旧環境のコンピュータ装置2の実行結果と、新環境のコンピュータ装置3の実行結果とを比較する。
検証支援装置1は、入力部10と、表示部20と、記憶部30と、制御部40とを備えている。
入力部10は、例えば、キーボードやマウスなどの入力装置であり、ユーザからの各種入力を受け付けて、制御部40に出力する。入力部10は、例えば、ソースコードの指定や、比較結果の表示の指定などを受け付ける。
表示部20は、例えば、液晶ディスプレイなどの表示装置であり、検証支援装置1を操作するための各種表示を表示する。また、表示部20は、例えば、旧環境のコンピュータ装置2と、新環境のコンピュータ装置3との実行結果の比較結果(例えば、カバレッジ情報の比較結果など)を表示する。ここでカバレッジとは、例えば、ソースコードに含まれる全ステップ数に対する実際に実行されたステップ数の割合を示す。また、カバレッジ情報には、例えば、少なくともカバレッジを示す情報を含んでいる。
記憶部30は、検証支援装置1が利用する各種情報を記憶する。記憶部30は、例えば、ソース記憶部31、グラフ記憶部32、入力データ記憶部33、実行環境記憶部34、及び実行結果記憶部35を備えている。
ソース記憶部31(ソースコード記憶部)は、対象のプログラムを記述したソースコードを記憶する。ここでソースコードは、例えば、図2に示すように、COBOLにより記述されたプログラムである。
図2は、実施形態におけるソース記憶部31が記憶するソースコードの一例を示す図である。図2に示す例では、ソースコード(SC1)は、COBOLにより記述されたプログラムであり、ソース記憶部31は、ソースコードをテキストファイルとして記憶している。なお、この図2において、ソースコードの左端の数字は、ソースコードの行数を示している。
図1の説明に戻り、グラフ記憶部32は、ソース記憶部31が記憶するソースコードに基づいて生成される、中間データ、グラフ構造を示すグラフ構造情報などを記憶する。
ここで、中間データとは、ソースコードを構文解析したデータであり、例えば、図3に示すように、中間データ(XD1)は、XML(Extensible Markup Language)で記述されている。また、グラフ構造情報は、図4に示すように、ノードとエッジとで構成される数学的グラフ構造のデータである。中間データ、及びグラフ構造情報は、後述するグラフ生成部41によって生成される。中間データ、及びグラフ構造情報の詳細については、図3及び図4を参照して後述する。
再び、図1に戻り、入力データ記憶部33は、後述するデータ生成部42が生成した検証用の入力データを記憶する。
実行環境記憶部34は、旧環境のコンピュータ装置2と、新環境のコンピュータ装置3とで、対象のプログラムを実行させるための環境情報(例えば、テストコードやスタブ)を記憶する。なお、この環境情報は、後述する実行制御部43によって構築(生成)される。
実行結果記憶部35は、旧環境のコンピュータ装置2と、新環境のコンピュータ装置3とで実行し対象のプログラムの実行結果、及び、後述する結果比較部44が比較した比較結果を記憶する。
制御部40は、例えば、CPU(Central Processing Unit)などを含むプロセッサであり、検証支援装置1を統括的に制御する。制御部40は、グラフ生成部41と、データ生成部42と、実行制御部43と、結果比較部44とを備えている。
グラフ生成部41は、ソース記憶部31からソースコードを取得し、取得したソースコードを構文解析して、グラフ構造を生成する。グラフ生成部41は、例えば、図2に示すようなソースコード(SC1)を取得し、取得したソースコード(SC1)を構文解析して、図3に示すようなXMLによる中間データ(XD1)を生成する。グラフ生成部41は、例えば、図2に示すソースコード(SC1)の“40”行目の記述を、図3に示す中間データ(XD1)におけるXMLの記述DSC1に変換する。グラフ生成部41は、生成したXMLによる中間データをグラフ記憶部32に記憶させる。
また、グラフ生成部41は、グラフ記憶部32が記憶する図3に示すような中間データ(XD1)から、図4に示すようなグラフ構造(GR1)を示す情報を生成する。グラフ生成部41は、例えば、中間データのうち、“PROCEDURE DIVISION”の部分をグラフ構造化して、グラフ構造を生成する。また、グラフ生成部41は、中間データのうち、実行経路(以下、ルートという)の解析に必要な情報、及びテストデータの生成に必要な情報をノード化して、グラフ構造情報を生成する。ここで、ルートの解析に必要な情報は、例えば、条件分岐文、“PERFORM”文、“GOTO”文などの記述である。また、テストデータの生成に必要な情報は、例えば、代入文、四則演算などの演算処理、文字列処理などの記述である。すなわち、グラフ生成部41は、データの処理に関するノード(代入文、演算処理、文字列処理など)であるデータ処理ノードと、処理の分岐に関するノード(条件分岐、“PERFORM”文、“GOTO”文など)である分岐処理ノードとを含むグラフ構造を生成する。
なお、図4に示すように、分岐処理ノードには、分岐条件を示す情報が含まれている。例えば、図4に示すノードN1には、“40:IF BEAN1−1 = 0”という分岐条件を示す情報が含まれている。ここで、“40”は、ソースコードにおける行番号を示し、“IF BEAN1−1 = 0”が分岐条件を示す情報である。
また、データ処理ノードには、代入文、演算処理、文字列処理などのデータの処理情報が含まれている。例えば、図4に示すノードN2には、“42:MOVE ‘3’ TO BEAN1−4” というデータの処理情報を含んでいる。
また、グラフ生成部41は、生成したグラフ構造を示すグラフ構造情報をグラフ記憶部32に記憶させる。
データ生成部42は、グラフ生成部41が生成したグラフ構造に基づいて、対象のプログラムを実行するルートを抽出し、抽出したルートを対象のプログラムに実行させるための入力データを生成する。本実施形態では、データ生成部42は、以下の3つの生成アルゴリズムに基づいて、入力データを生成する。
データ生成部42は、第1の生成アルゴリズムとして、抽出したルートに対して、分岐処理ノードごとに、乱数に基づいて入力データを生成するランダム生成処理を実行して、入力データを生成する。この場合、データ生成部42は、抽出したルートを検索することで、入力データを生成する対象の変数を特定する。そして、データ生成部42は、対象の変数の変数型などから生成する入力データの範囲を設定し、設定した範囲内で乱数に基づいて入力データを生成する。なお、ランダム生成処理の詳細については、後述する。
また、データ生成部42は、第2の生成アルゴリズムとして、抽出したルートに対して、分岐処理ノードごとに、分岐条件を満たす入力データを生成するシンプル生成処理を実行して、入力データを生成する。この場合、データ生成部42は、抽出したルートを検索することで、入力データを生成する対象の変数を特定する。そして、データ生成部42は、対象の変数により分岐条件を満たす入力データを生成する。なお、このシンプル生成処理の場合には、データ生成部42は、データ処理ノードによる代入処理や演算処理を考慮せずに、入力データを生成する。なお、シンプル生成処理の詳細については、後述する。
また、データ生成部42は、第3の生成アルゴリズムとして、抽出したルートに対して、当該ルートにおけるデータ処理ノードを制約として、分岐処理ノードの分岐条件を満たす入力データを生成するシンボリック生成処理を実行して、入力データを生成する。すなわち、データ生成部42は、制約充足問題を解くことにより入力データを生成する。なお、シンボリック生成処理の詳細については、後述する。
また、データ生成部42は、例えば、対象のプログラムの規模に基づいて、上述した3つの生成アルゴリズムのうちのいずれかの生成アルゴリズムを選択し、選択した当該生成アルゴリズムに基づいて入力データを生成する。ここで、データ生成部42は、対象のプログラムの規模を、例えば、ノードの数、ルートの数、IF文の数などに基づいて判定する。データ生成部42は、例えば、対象のプログラムの規模を“大規模”、“中規模”、“小規模”の3種類に分類する。データ生成部42は、例えば、対象のプログラムの規模が“大規模”であると判定した場合に、ランダム生成処理にて入力データを生成する。また、データ生成部42は、例えば、対象のプログラムの規模が“中規模”であると判定した場合に、シンプル生成処理にて入力データを生成する。また、データ生成部42は、例えば、対象のプログラムの規模が“小規模”であると判定した場合に、シンボリック生成処理にて入力データを生成する。
また、対象のプログラムの規模と、生成処理時間、又は、入力データによるカバレッジとの関係を統計的に予め求めておき、データ生成部42は、生成処理時間、又はカバレッジが最適になるように、対象のプログラムの規模に応じて、入力データを生成する生成アルゴリズムを決定してもよい。
データ生成部42は、生成した入力データを入力データ記憶部33に記憶させる。
実行制御部43は、第1の実行環境と、第2の実行環境とのそれぞれの実行環境において、データ生成部42が生成した入力データにより対象のプログラムを実行させる。ここで、第1の実行環境は、対象のプログラムにより正常に動作することが確認されている旧環境であり、第2の実行環境は、対象のプログラムにより正常に動作することが確認されていない新環境のことである。
具体的に、実行制御部43は、それぞれの環境でプログラムを実行させる、テストコード(テストドライバ、及び、入力データを含むスタブ)を生成し、生成したテストコード(テストドライバ、及びスタブ)と、ソースコードとを実行環境記憶部34に記憶させる。実行制御部43は、実行環境記憶部34が記憶するソースコード、テストコード(テストドライバ、及びスタブ)により、旧環境のコンピュータ装置2と、新環境のコンピュータ装置3とのそれぞれに、対象のプログラムを実行させる。なお、実行制御部43によるテストコードの実行動作の詳細については、後述する。
また、実行制御部43は、旧環境のコンピュータ装置2と、新環境のコンピュータ装置3とのそれぞれが対象のプログラムを実行した実行結果を実行結果記憶部35に記憶させる。
結果比較部44(比較部の一例)は、旧環境と新環境とのそれぞれで実行されたルートと当該実行回数とを含むそれぞれの実行結果を比較する。結果比較部44は、旧環境と新環境とにおいて、例えば、プログラムのどの部分が実行されたかを示すカバレッジ情報を比較して、当該比較結果を表示部20に表示させる。
<ランダム生成処理>
次に、図5を参照して、本実施形態におけるランダム生成処理について説明する。
図5は、本実施形態におけるランダム生成処理の一例を示す図である。
データ生成部42は、図5に示すグラフ構造GR2に対して、抽出したルートを検索することで、入力データを生成する対象の変数を特定する。この図に示すグラフ構造GR2では、変数“A”、“B”が、入力データを生成する対象の変数となる。データ生成部42は、この変数“A”、“B”に対して、乱数に基づいて、図5に示すような入力データD1を生成する。
図5に示す例では、「テスト1」として、“A=0、B=0”の入力データが生成されたことを示している。また、「テスト2」として、“A=88、B=59”の入力データが生成されたことを示している。
このように、ランダム生成処理では、データ生成部42は、乱数に基づいて入力データを生成するため、大規模又は複雑なプログラムに対しても、入力データを生成することができる。また、データ生成部42は、乱数を生成するという簡易な手段により、入力データを生成することができる。
<シンプル生成処理>
次に、図6を参照して、本実施形態におけるシンプル生成処理について説明する。
図6は、本実施形態におけるシンプル生成処理の一例を示す図である。
データ生成部42は、図6に示すグラフ構造GR3に対して、抽出したルートを検索することで、入力データを生成する対象の変数を特定する。この図に示すグラフ構造GR3では、変数“A”、“B”が、入力データを生成する対象の変数となる。データ生成部42は、抽出したルートごとに、この変数“A”、“B”に対して、分岐の条件を満たす値として、図6に示すような入力データD2を生成する。
図6に示す例では、データ生成部42は、ルートRT1に対応する「テスト1」として、“A=0”の入力データを生成する。また、データ生成部42は、ルートRT2に対応する「テスト2」として、“A=1、B=0”の入力データを生成する。また、データ生成部42は、ルートRT3に対応する「テスト3」として、“A=1、B=1”の入力データを生成する。
このように、シンプル生成処理では、データ生成部42は、ルートごとに、分岐条件を単独で満たす入力データを生成するので、より簡易な手段により、入力データを生成することができる。また、データ生成部42は、入力データを生成する処理時間を短縮することができる。
<シンボリック生成処理>
次に、図7を参照して、本実施形態におけるシンボリック生成処理について説明する。
図7は、本実施形態におけるシンボリック生成処理の一例を示す図である。
データ生成部42は、図7に示すグラフ構造GR4に対して、抽出したルートごとに、各ノードをシンボリック式(図7シンボル式SB1)に変換する。データ生成部42は、各シンボル式を制約として、分岐処理ノードの分岐条件を満たす入力データを生成する。すなわち、データ生成部42は、各シンボル式を制約として、制約充足問題を解くことにより、入力データを生成する。なお、データ生成部42は、分岐条件を満たす入力データを生成する場合に、分岐処理ノードから遡って分岐条件を満たす入力データを生成してもよいし、ルートに沿って、シンボル式を演算して、分岐条件を満たす入力データを生成してもよい。
図7に示す例では、データ生成部42は、ルートRT4に対して、“A=any(任意)、B=−1”の入力データ(D3)を生成する。
このように、シンボリック生成処理では、データ生成部42は、ルートの途中で条件式に関わる演算がされている場合もあっても、適切な入力データを生成することができる。
次に、図面を参照して、本実施形態による検証支援システム100の動作について説明する。
図8は、本実施形態による検証支援システム100の動作の一例を示すフローチャートである。
この図において、まず、検証支援装置1の制御部40は、ソースコードを取得する(ステップS101)。すなわち、制御部40のグラフ生成部41は、ソース記憶部31
が記憶するソースコードを取得する。
次に、グラフ生成部41は、グラフ構造を生成する(ステップS102)。すなわち、グラフ生成部41は、取得したソースコードを、まず、構文解析して、XMLによる中間データを生成し、生成した中間データに基づいて、グラフ構造を生成する。なお、このステップS102の処理の詳細については、図12を参照して後述する。グラフ生成部41は、生成したグラフ構造を示す情報(グラフ構造情報)をグラフ記憶部32に記憶させる。
次に、制御部40のデータ生成部42は、ルート検索処理を行う(ステップS103)。すなわち、データ生成部42は、グラフ記憶部32が記憶するグラフ構造情報に基づいて、ルートを抽出する。データ生成部42は、抽出したルートを示す情報を、例えば、入力データ記憶部33に記憶させる。
次に、データ生成部42は、グラフ構造情報をシーケンスなプログラムに展開する(ステップS104)。データ生成部42は、例えば、PERFORM文の呼び先のプログラムをコピーして、プログラムに展開し、1つのシーケンシャルなプログラムにする。
次に、データ生成部42は、意味のある処理単位にノードを再構成する(ステップS105)。データ生成部42は、例えば、図9に示すように、複数の文から構成される処理を1つのノードとしてまとめて再構成する。ここで、図9を参照して、意味のある処理単位にノードを再構成する処理について説明する。
図9は、本実施形態におけるノードの再構成の一例を示す図である。
この図において、ソースコードSC2には、条件式“A=B AND C=D”により、“処理1”と“処理2”とに分岐する分岐処理が記述されている。また、ソースコードSC3には、条件式“A=B”と条件式“C=D”との2回の分岐処理により、“処理1”と“処理2”とに分岐する処理が記述されている。この2つの処理は、同一の処理を実行するが、ソースコードSC2と、ソースコードSC3とでは、記述が異なっている。そのため、グラフ構造は、ソースコードSC2ではグラフ構造GR5に示すように1つのノードで表され、ソースコードSC3ではグラフ構造GR6に示すように2つのノードで表される。
このような場合には、データ生成部42は、ソースコードSC3のグラフ構造GR6において、2つのノードを1つに再構成し、図9に示すグラフ構造GR5のようなグラフ構造を生成する。このように、ノードの再構成を行うことにより、検証支援装置1は、グラフ構造を簡略化することができるとともに、実行結果をグラフ構造により比較し易くすることができる。
図8に戻り、次に、データ生成部42は、実行可能なルートをグラフ記憶部32に記憶させる(ステップS106)。
次に、データ生成部42は、対象のプログラムの規模に基づき、生成アルゴリズムを決定する(ステップS107)。例えば、データ生成部42は、対象のプログラムの規模を、例えば、ノードの数、ルートの数、IF文の数などに基づいて判定する。データ生成部42は、例えば、対象のプログラムの規模が“大規模”であると判定した場合に、生成アルゴリズムにランダム生成処理を選択する。また、データ生成部42は、例えば、対象のプログラムの規模が“中規模”であると判定した場合に、生成アルゴリズムにシンプル生成処理を選択する。また、データ生成部42は、例えば、対象のプログラムの規模が“小規模”であると判定した場合に、生成アルゴリズムにシンボリック生成処理を選択する。
ステップS108において、データ生成部42は、ランダム生成処理を選択した場合に、処理をステップS109に進め、ランダム生成処理を行う。また、ステップS109の処理後に、データ生成部42は、処理をステップS112に進める。なお、ステップS109のランダム生成処理の詳細については、後述する。
また、データ生成部42は、シンプル生成処理を選択した場合に、処理をステップS110に進め、シンプル生成処理を行う。また、ステップS110の処理後に、データ生成部42は、処理をステップS112に進める。なお、ステップS110のシンプル生成処理の詳細については、後述する。
また、データ生成部42は、シンボリック生成処理を選択した場合に、処理をステップS111に進め、シンボリック生成処理を行う。また、ステップS111の処理後に、データ生成部42は、処理をステップS112に進める。なお、ステップS111のシンボリック生成処理の詳細については、後述する。
ステップS112において、制御部40の実行制御部43は、旧環境のテストコードを作成する。実行制御部43は、データ生成部42が生成した入力データに基づいて、例えば、図10に示すような、テストドライバTD1と、スタブSTB1、及びテスト用ソースコードTC1(単体テスト用COBOLソースコード)とを旧環境のテスト環境情報として生成し、生成した旧環境のテスト環境情報を実行環境記憶部34に記憶させる。
次に、実行制御部43は、旧環境でテストコードを実行させる(ステップS113)。すなわち、実行制御部43は、実行環境記憶部34が記憶する旧環境のテスト環境情報を旧環境のコンピュータ装置2に送信して、テストコードを実行させる。
ここで、図10を参照して、テストコードの実行動作について説明する。
<テストコードの実行動作>
図10は、本実施形態におけるテストコードの実行動作の一例を示す図である。
実行制御部43は、データ生成部42が生成した入力データに基づいて、図10に示すような、テストドライバTD1と、スタブSTB1と、テスト用ソースコードTC1(単体テスト用COBOLソースコード)とをテスト環境情報として生成する。そして、実行制御部43は、テスト環境情報を旧環境のコンピュータ装置2に送信して、テストコードを実行させる。
旧環境のコンピュータ装置2は、テストコードを実行する際に、次のように、テストコードを実行する。
まず、[STEP1]として、旧環境のコンピュータ装置2は、テストドライバTD1を実行する際に、テストを実行する前に、スタブSTB1に値(入力データ)をセットする。
次に、[STEP2]として、旧環境のコンピュータ装置2は、テストを実行する。すなわち、旧環境のコンピュータ装置2及び新環境のコンピュータ装置3は、テストドライバTD1のcall記述により、テスト用ソースコードTC1(単体テスト用COBOLソースコード)を呼び出して実行する。
次に、[STEP3]として、旧環境のコンピュータ装置2は、テスト用ソースコードTC1の実行において、スタブSTB1から値(入力データ)をゲット(取得)して、テストを実行する。
このように、旧環境のコンピュータ装置2は、実行制御部43が生成(作成)したテスト環境により、テストを実行する。
再び、図8に戻り、次に、実行制御部43は、旧環境でのテストコードを実行結果記憶部35に記憶させる(ステップS114)。すなわち、実行制御部43は、旧環境のコンピュータ装置2からテストコードの実行結果を取得し、取得した旧環境でのテストコードの実行結果を実行結果記憶部35に記憶させる。実行制御部43は、対象のプログラムの全ルートと、旧環境での実行可否フラグ、及び実行回数とを含むカバレッジ情報を実行結果として、実行結果記憶部35に記憶させる。
次に、実行制御部43は、新環境のテストコードを作成する(ステップS115)。すなわち、実行制御部43は、例えば、図10に示すような、テストドライバTD1と、スタブSTB1と、テスト用ソースコードTC1(単体テスト用COBOLソースコード)とを新環境のテスト環境情報として生成し、生成した新環境のテスト環境情報を実行環境記憶部34に記憶させる。
次に、実行制御部43は、新環境でテストコードを実行させる(ステップS116)。すなわち、実行制御部43は、実行環境記憶部34が記憶する新環境のテスト環境情報を新環境のコンピュータ装置3に送信して、テストコードを実行させる。ここでの新環境のコンピュータ装置3の動作は、上述した図10に示す動作と同様である。
次に、実行制御部43は、新環境でのテストコードを実行結果記憶部35に記憶させる(ステップS117)。すなわち、実行制御部43は、新環境のコンピュータ装置3からテストコードの実行結果を取得し、取得した新環境でのテストコードの実行結果を実行結果記憶部35に記憶させる。実行制御部43は、対象のプログラムの全ルートと、新環境での実行可否フラグ、及び実行回数とを含むカバレッジ情報を実行結果として、実行結果記憶部35に記憶させる。
次に、制御部40の結果比較部44は、旧環境と新環境との実行結果を比較する(ステップS118)。すなわち、結果比較部44は、実行結果記憶部35が記憶する旧環境での実行結果であるカバレッジ情報と、新環境での実行結果であるカバレッジ情報とを比較し、当該比較結果を表示部20に表示させて、処理を終了する。結果比較部44は、比較結果として、例えば、図11に示すような画面G1を表示部20に表示させる。
図11は、本実施形態における比較結果の表示例を示す図である。
この図において、カバレッジ情報CV1は、旧環境のコンピュータ装置2によってテストコードを実行した実行結果を示し、カバレッジ情報CV2は、新環境のコンピュータ装置3によってテストコードを実行した実行結果を示している。
図11に示すように、結果比較部44は、旧環境のコンピュータ装置2によるカバレッジ情報CV1と、新環境のコンピュータ装置3によるカバレッジ情報CV2とを比較可能なように、並べて表示部20に表示させる。
なお、図11に示す例では、相違箇所DF1に示すように、ソースコードの54行目に対応する処理が、新環境のコンピュータ装置3において実行されていないことを示している。その結果、相違箇所DF2に示すように、呼び出された累計回数に、旧環境と新環境とで差異が生じている。この場合、対象のプログラムは、新環境のコンピュータ装置3において、旧環境のコンピュータ装置2とは動作が異なることを示し、ユーザは、対象のプログラムを現在の状態では、新環境のコンピュータ装置3に適用できないことを判定することができる。
一方で、例えば、実行された箇所、及び呼び出された累計回数に、旧環境と新環境とで差異が生じていない場合には、対象のプログラムにおいて、旧環境と新環境とで同値性が確認されたことになり、対象のプログラムの移植(更改)が問題ないことになる。
次に、図12を参照して、上述した図8のステップS102におけるグラフ構造の生成処理の詳細について説明する。
図12は、本実施形態におけるグラフ構造の生成処理の一例を示すフローチャートである。
この図に示すように、グラフ生成部41は、取得したソースコードの構文解析を行い、中間データを生成する(ステップS201)。すなわち、グラフ生成部41は、例えば、図2に示すソースコード(SC1)を、図3に示すようなXMLによる中間データ(XD1)に変換する。グラフ生成部41は、生成(変換)したMLによる中間データをグラフ記憶部32に記憶させる。
次に、グラフ生成部41は、中間データに基づきグラフ構造を生成する(ステップS202)。すなわち、グラフ生成部41は、グラフ記憶部32が記憶する図3に示すようなXMLによる中間データ(XD1)からグラフ構造を生成し、当該グラフ構造を示す情報をグラフ記憶部32に記憶させる。
次に、グラフ生成部41は、グラフ構造のノードを限定する(ステップS203)。グラフ生成部41は、例えば、グラフ構造を“PROCEDURE DIVISION”の部分のみに限定する。また、グラフ生成部41は、例えば、条件分岐文、“PERFORM”文、“GOTO”文などの記述、及び、代入文、四則演算などの演算処理、文字列処理などの記述にグラフ構造を限定し、図4に示すようなグラフ構造(GR1)を生成する。また、グラフ生成部41は、限定して生成したグラフ構造を示す情報をグラフ記憶部32に記憶させる。
これにより、グラフ構造を示す情報が簡略化されるので、後でデータ生成部42が実行する入力データの生成処理における処理負荷(処理の計算量)を低減することになる。
ステップS203の処理後に、グラフ生成部41は、グラフ構造の生成処理を終了する。
次に、図13を参照して、上述した図8のステップS109におけるランダム生成処理の詳細について説明する。
図13は、本実施形態におけるランダム生成処理の一例を示すフローチャートである。
この図に示すように、まず、データ生成部42は、対象の変数を特定する(ステップS301)。すなわち、データ生成部42は、抽出したルートを検索することで、入力データを生成する対象の変数を特定する。
次に、ステップS302からステップS304において、データ生成部42は、予め指定された指定時間内、ステップS303の処理を繰り返し実行する。なお、指定時間は、入力部10を介して、ユーザから指定されてもよいし、過去の生成処理の結果を統計的に解析して、対象のプログラムの規模などから指定されてもよい。
ステップS303において、データ生成部42は、対象の変数の範囲を考慮して、図5に示すように、ランダムに入力データを生成する。データ生成部42は、例えば、対象の変数が定義されている変数型の取り得る範囲内の乱数を生成し、生成した乱数に基づいて入力データを生成する。
データ生成部42は、予め指定された指定時間の経過後に、ランダム生成処理を終了する。
次に、図14を参照して、上述した図8のステップS110におけるシンプル生成処理の詳細について説明する。
図14は、本実施形態におけるシンプル生成処理の一例を示すフローチャートである。
この図に示すように、まず、データ生成部42は、対象の変数を特定する(ステップS401)。すなわち、データ生成部42は、抽出したルートを検索することで、入力データを生成する対象の変数を特定する。
次に、ステップS402からステップS404において、データ生成部42は、予め指定された指定実行ルート数に達するまで、ステップS403の処理を繰り返し実行する。なお、指定実行ルート数は、入力部10を介して、ユーザから指定されてもよいし、過去の生成処理の結果を統計的に解析して、対象のプログラムの規模などから指定されてもよい。
ステップS403において、データ生成部42は、図6に示すように、条件式から対象の変数の入力データを生成する。
データ生成部42は、予め指定された指定実行ルート数に達した後に、シンプル生成処理を終了する。
次に、図15を参照して、上述した図8のステップS111におけるシンボリック生成処理の詳細について説明する。
図15は、本実施形態におけるシンボリック生成処理の一例を示すフローチャートである。
この図に示すように、まず、データ生成部42は、ルートの共通部分の制約充足問題を解き、データを生成するルートを特定する(ステップS501)。ここで、データ生成部42は、共通部分の制約充足問題が解けなかった場合には、当該共通部分を含むルートを入力データの生成対象から除外する。また、データ生成部42は、後述するS503において、入力データ記憶部33に記憶させた解が得られないルートの特徴に基づいて、対象のルートを限定する。すなわち、データ生成部42は、解が得られないルートの特徴を示すルートを入力データの生成対象から除外する。
次に、データ生成部42は、ステップS502からステップS505において、データ生成部42は、予め指定された指定実行ルート数に達するまで、ステップS503及びステップS504の処理を繰り返し実行する。なお、指定実行ルート数は、入力部10を介して、ユーザから指定されてもよいし、過去の生成処理の結果を統計的に解析して、対象のプログラムの規模などから指定されてもよい。
ステップS503において、データ生成部42は、図7に示すように、制約充足問題を解くことで、各ルートに対しる入力データを生成する。
また、ステップS504において、データ生成部42は、制約充足問題を解くことができない場合には、制約充足問題の解が得られないルートの特徴を入力データ記憶部33に記憶させる。
データ生成部42は、予め指定された指定実行ルート数に達した後に、シンボリック生成処理を終了する。
なお、上述において、グラフ生成部41の処理は、グラフ生成ステップに対応し、データ生成部42の処理は、データ生成ステップに対応し、実行制御部43の処理は、実行制御ステップに対応し、結果比較部44の処理は、結果比較ステップに対応する。
以上説明したように、本実施形態による検証支援方法は、グラフ生成ステップと、データ生成ステップと、実行制御ステップとを含んでいる。グラフ生成ステップにおいて、グラフ生成部41が、プログラムを記述したソースコードを記憶するソース記憶部31からソースコードを取得し、取得したソースコードを構文解析して、グラフ構造を生成する。なお、グラフ構造には、データの処理に関するノードであるデータ処理ノードと、処理の分岐に関するノードである分岐処理ノードとを含む。データ生成ステップにおいて、データ生成部42が、グラフ生成ステップにて生成したグラフ構造に基づいて、プログラムを実行する実行経路(ルート)を抽出し、抽出した実行経路をプログラムに実行させるための入力データを生成する。実行制御ステップにおいて、実行制御部43が、プログラムにより正常に動作することが確認されている第1の実行環境(例えば、旧環境)と、プログラムにより正常に動作することが確認されていない第2の実行環境(例えば、新環境)とのそれぞれの実行環境において、データ生成ステップにて生成した入力データによりプログラムを実行させる。
これにより、本実施形態による検証支援方法は、ソースコードからグラフ構造を生成し、グラフ構造の実行経路から自動で入力データを生成し、生成した入力データにより2つの実行環境でプログラムを実行させる。そのため、本実施形態による検証支援方法は、プログラムを網羅的に実行するための入力データを自動で生成することができ、入力データを作成するための作業工数を低減できる。したがって、本実施形態による検証支援方法は、より効率良くプログラムの検証を行うことができる。
例えば、プログラムがCOBOLにより構築されている場合には、実行基盤(実行環境)ごとに、異なる構文や文法が存在しているため、従来の技術では、システム更改などにより、新しい実行基盤(実行環境)でプログラムの動作保障確認を行うためには、膨大な作業工数を必要とする。これに対して、本実施形態による検証支援方法では、プログラムがCOBOLにより構築されている場合であっても、プログラムを網羅的に実行するための入力データを自動で生成することができる。よって、本実施形態による検証支援方法は、入力データを作成するための作業工数を低減でき、新しい実行基盤(実行環境)でプログラムの動作保障確認をより効率的に行うことができる。
また、本実施形態による検証支援方法は、結果比較部44が、第1の実行環境(旧環境)と第2の実行環境(新環境)とのそれぞれで実行された実行経路と実行回数とを含むそれぞれの実行結果(例えば、カバレッジ情報)を比較する比較ステップを含んでいる。
これにより、本実施形態による検証支援方法は、第1の実行環境(旧環境)と第2の実行環境(新環境)との動作保障確認をより簡易に行うことができる。
また、本実施形態では、データ生成ステップにおいて、データ生成部42が、実行経路(ルート)に対して、当該実行経路におけるデータ処理ノードの処理を制約として、分岐処理ノードの分岐条件を満たす入力データを生成する。すなわち、データ生成部42は、実行経路における制約充足問題を解くことにより、入力データを生成する。
これにより、本実施形態による検証支援方法は、プログラムを網羅的に実行するための入力データより確実に生成することができる。よって、本実施形態による検証支援方法は、より効率良くプログラムの検証を行うことができる。
また、本実施形態では、データ生成ステップにおいて、データ生成部42が、実行経路(ルート)に対して、分岐処理ノードごとに、分岐条件を満たす入力データを生成する。
これにより、分岐処理ノードごとに分岐条件を満たす入力データを生成するので、本実施形態による検証支援方法は、より簡易な手段により、プログラムを網羅的に実行するための入力データを生成することができる。よって、本実施形態による検証支援方法は、入力データを生成するための計算量を低減しつつ、プログラムを網羅的に実行するための入力データを生成することができる。
また、本実施形態では、データ生成ステップにおいて、データ生成部42が、プログラムの規模に基づいて、第1の生成アルゴリズム(ランダム生成処理)と、第2の生成アルゴリズム(シンプル生成処理)と、第3の生成アルゴリズム(シンボリック生成処理)とのうちのいずれかの生成アルゴリズムを選択し、選択した当該生成アルゴリズムに基づいて入力データを生成する。第1の生成アルゴリズムは、実行経路(ルート)に対して、分岐処理ノードごとに、乱数に基づいて入力データを生成する。第2の生成アルゴリズムは、実行経路(ルート)に対して、分岐処理ノードごとに、分岐条件を満たす入力データを生成する。第3の生成アルゴリズムは、実行経路(ルート)に対して、当該実行経路におけるデータ処理ノードを制約として、分岐処理ノードの分岐条件を満たす入力データを生成する。
これにより、プログラムの規模に基づいて、適切な生成アルゴリズムにより、入力データが生成されるので、本実施形態による検証支援方法は、計算量を低減しつつ、プログラムを網羅的に実行するための入力データをより確実に生成することができる。
また、本実施形態による検証支援装置1は、上述したグラフ生成部41と、データ生成部42と、実行制御部43と、結果比較部44とを備えている。また、本実施形態による検証支援システム100は、検証支援装置1を備えている。
これにより、本実施形態による検証支援装置1及び検証支援システム100は、上述した本実施形態による検証支援方法と同様の効果を奏する。すなわち、本実施形態による検証支援装置1及び検証支援システム100は、より効率良くプログラムの検証を行うことができる。
[第2の実施形態]
次に、図面を参照して、本発明に係る第2の実施形態について説明する。
上述した第1の実施形態では、ランダム生成処理と、シンプル生成処理と、シンボリック生成処理とのうちのいずれかに基づいて、入力データを生成する例を説明したが、本実施形態では、ランダム生成処理と、シンプル生成処理と、シンボリック生成処理とを組み合わせて効率的に入力データを生成する例を説明する。
なお、本実施形態における検証支援装置1及び検証支援システム100の構成は、図1に示す第1の実施形態と同様であるので、ここではその説明を省略する。
本実施形態では、データ生成部42の処理が、第1の実施形態と異なる。
本実施形態におけるデータ生成部42は、ランダム生成処理(第1の生成アルゴリズム)と、シンプル生成処理(第2の生成アルゴリズム)と、シンボリック生成処理(第3の生成アルゴリズム)とを組み合わせて、入力データを生成する。例えば、データ生成部42は、ランダム生成処理とシンプル生成処理とのうちの少なくとも一方にて入力データを生成した後に、抽出した全ルートのうち、生成した入力データにて実行されないルートに対して、シンボリック生成処理にて入力データを生成する。すなわち、データ生成部42は、計算量の少なく(計算負荷の軽い)ランダム生成処理又はシンプル生成処理を実行した後に、生成した入力データにより網羅されていないルートに対して、シンボリック生成処理にて入力データを生成する。
次に、図16を参照して、本実施形態による検証支援システム100の動作について説明する。
図16は、本実施形態による検証支援システム100の動作の一例を示すフローチャートである。
この図において、ステップS601からステップS606までの処理は、図8に示すステップS101からステップS106までの処理と同様であるので、ここではその説明を省略する。
ステップS607において、データ生成部42は、対象のプログラムの規模に基づき、生成アルゴリズムを決定する。例えば、データ生成部42は、対象のプログラムの規模を、例えば、ノードの数、ルートの数、IF文の数などに基づいて判定する。データ生成部42は、例えば、対象のプログラムの規模が“大規模”であると判定した場合に、生成アルゴリズムにランダム生成処理及びシンボリック生成処理を選択する。また、データ生成部42は、例えば、対象のプログラムの規模が“中規模”であると判定した場合に、生成アルゴリズムにシンプル生成処理及びシンボリック生成処理を選択する。また、データ生成部42は、例えば、対象のプログラムの規模が“小規模”であると判定した場合に、生成アルゴリズムにシンボリック生成処理を選択する。
ステップS608において、データ生成部42は、ランダム生成処理及びシンボリック生成処理を選択した場合に、処理をステップS609に進める。また、データ生成部42は、シンプル生成処理及びシンボリック生成処理を選択した場合に、処理をステップS611に進める。また、データ生成部42は、シンボリック生成処理を選択した場合に、処理をステップS613に進める。
ステップS609において、データ生成部42は、ランダム生成処理に基づいて、入力データを生成した後、シンボリック生成処理に基づいて、入力データを生成する(ステップS610)。なお、ステップS610におけるシンボリック生成処理では、データ生成部42は、ステップS609において生成した入力データにより網羅されていないルートに対して、シンボリック生成処理にて入力データを生成する。ステップS610の処理後に、データ生成部42は、処理をステップS614に進める。
ステップS611において、データ生成部42は、シンプル生成処理に基づいて、入力データを生成した後、シンボリック生成処理に基づいて、入力データを生成する(ステップS612)。なお、ステップS612におけるシンボリック生成処理では、データ生成部42は、ステップS611において生成した入力データにより網羅されていないルートに対して、シンボリック生成処理にて入力データを生成する。ステップS612の処理後に、データ生成部42は、処理をステップS614に進める。
ステップS613において、データ生成部42は、シンボリック生成処理を行う。また、ステップS613の処理後に、データ生成部42は、処理をステップS614に進める。
ステップS614からステップS620までの処理は、図8に示すステップS112からステップS118までの処理と同様であるので、ここではその説明を省略する。
以上説明したように、本実施形態では、データ生成ステップにおいて、データ生成部42が、第1の生成アルゴリズム(ランダム生成処理)と、第2の生成アルゴリズム(シンプル生成処理)と、第3の生成アルゴリズム(シンボリック生成処理)とを組み合わせて、入力データを生成する。
これにより、本実施形態による検証支援方法は、適切な生成アルゴリズムの組合せにより、入力データが生成されるので、計算量を低減しつつ、プログラムを網羅的に実行するための入力データを生成することができる。よって、本実施形態による検証支援方法は、より効率良くプログラムの検証を行うことができる。
また、本実施形態では、データ生成ステップにおいて、データ生成部42が、第1の生成アルゴリズム(ランダム生成処理)と第2の生成アルゴリズム(シンプル生成処理)とのうちの少なくとも一方にて入力データを生成した後に、実行経路(ルート)のうち、生成した入力データにて実行されない実行経路に対して、第3の生成アルゴリズム(シンボリック生成処理)に基づいて入力データを生成する。
これにより、本実施形態による検証支援方法は、計算量を低減しつつ、プログラムを網羅的に実行するための入力データをより確実に生成することができる。
[第3の実施形態]
次に、本実施形態では、上述した第2の実施形態と同様に、ランダム生成処理と、シンプル生成処理と、シンボリック生成処理とを組み合わせて効率的に入力データを生成する別の例を説明する。
なお、本実施形態における検証支援装置1及び検証支援システム100の構成は、図1に示す第1の実施形態と同様であるので、ここではその説明を省略する。
本実施形態では、データ生成部42及び実行制御部43の処理が、第1及び第2の実施形態と異なる。
本実施形態におけるデータ生成部42は、一旦、生成した入力データに基づいて、実行制御部43がテストコードを実行させた後に、実行されていないルートに対して、再度、入力データを生成する。すなわち、データ生成部42は、実行されていない(網羅されていない)ルートに対して、ランダム生成処理(第1の生成アルゴリズム)と、シンプル生成処理(第2の生成アルゴリズム)と、シンボリック生成処理(第3の生成アルゴリズム)とのうちのいずれかにより入力データを生成することを繰り返す。例えば、データ生成部42は、最初は、ランダム生成処理により入力データを生成し、次に実行されていない残りのルートに対して、シンプル生成処理により入力データを生成し、さらに次には、シンボリック生成処理により入力データを生成するなどの処理を実行する。すなわち、結果として、データ生成部42は、ランダム生成処理と、シンプル生成処理と、シンボリック生成処理とを組み合わせて入力データを生成する。
本実施形態における実行制御部43は、データ生成部42が生成した入力データに基づいて、実行制御部43がテストコードを実行させた後に、未実行のルートが所定の割合以下(カバレッジ情報が所定の値以上)であるか否かを判定する。実行制御部43は、未実行のルートが所定の割合以下でない場合に、データ生成部42に再度入力データを生成させる。
次に、図17を参照して、本実施形態による検証支援システム100の動作について説明する。
図17は、本実施形態による検証支援システム100の動作の一例を示すフローチャートである。
この図において、ステップS701からステップS714までの処理は、図8に示すステップS101からステップS114までの処理と同様であるので、ここではその説明を省略する。
ステップS715において、実行制御部43は、未実行ルートが所定の割合以下であるか否かを判定する。ここで、未実行ルートとは、実行可能な全ルートのうち、実行されていないルートに割合を示している。なお、実行制御部43は、例えば、旧環境でテストコードを実行させた結果であるカバレッジ情報が所定の値以上であるか否かによって、未実行ルートが所定の割合以下であるか否かを判定してもよい。実行制御部43は、未実行ルートが所定の割合以下である場合(ステップS715:YES)に、処理をステップS717に進める。また、実行制御部43は、未実行ルートが所定の割合以下でない場合(ステップS715:NO)に、処理をステップS716に進める。
ステップS716において、データ生成部42は、未実行ルートを抽出して、処理をステップS707に進めて、再び、入力データの生成を実行する。
また、ステップS717からステップS720までの処理は、図8に示すステップS115からステップS118までの処理と同様であるので、ここではその説明を省略する。
以上説明したように、本実施形態では、実行制御ステップにおいて、実行制御部43が、例えば、データ生成ステップにて生成した入力データによりプログラムを旧環境で実行させ、当該実行結果に応じて、データ生成ステップに処理を戻す。データ生成ステップにおいて、データ生成部42は、再度、入力データを生成する。
これにより、本実施形態による検証支援方法は、繰り返しによって適切な生成アルゴリズムにより繰り返し入力データが生成されるので、プログラムを網羅的に実行するための入力データを効率良く生成することができる。
なお、データ生成部42は、例えば、前回と異なる生成アルゴリズムに基づいて、入力データを生成してもよいし、前回と同じ生成アルゴリズムに基づいて、入力データを生成してもよい。前回と異なる生成アルゴリズムに基づいて、入力データを生成した場合には、本実施形態による検証支援方法は、適切な生成アルゴリズムの組み合わせにより、入力データを効率良く生成することができる。
次に、図18〜図20を参照して、本実施形態による比較結果の表示の変形例について説明する。
図18〜図20は、本実施形態による比較結果の表示の変形例を示す図である。
なお、本実施形態において、対象のプログラムは、クラス、パッケージ、モジュール、ファンクションなどと称する階層に分かれて構成されており、例えば、図18に示す例は、パッケージの階層における比較結果を表示する一例である。この場合、結果比較部44は、画面G2に示すような比較結果を表示する。ここで、結果比較部44は、サブ画面SG1に、旧環境での実行結果としてカバレッジ情報を示す棒グラフを表示させるとともに、新環境での実行結果としてカバレッジ情報を示す棒グラフを表示させる。
また、結果比較部44は、旧環境での実行結果と新環境での実行結果との比較結果を結果表RES1として表示させる。なお、旧環境と新環境とでのテストデータの実行において、実行制御部43は、上述した各階層の処理における終了時の状態を示す終了時結果(例えば、各変数の値、戻り値など)を記憶部30の実行結果記憶部35に記憶させてもよい。この場合、結果比較部44は、図18の結果表RES1に示すように、「終了時結果(戻り値)」として、旧環境での終了時結果(戻り値)と、新環境での終了時結果(戻り値)とが一致するか否かを表示させる。この各階層の終了時結果(戻り値)の比較結果は、プログラムが正しく新環境に移植されたか否かの指標の1つとして活用できる。例えば、カバレッジ情報などの結果に差が生じた場合などに、補完的にプログラムが正しく新環境に移植されたか否かの指標として活用できる。
このように、旧環境と新環境とで、各階層の終了時結果(戻り値)の比較結果を表示することにより、本実施形態による検証支援システム100では、カバレッジ情報に差が生じた場合であっても、この終了時結果(戻り値)の比較結果により、プログラムが正しく新環境に移植されたか否かをユーザが判定することができる。
なお、結果表RES1において、例えば、各パッケージの結果部分をユーザが入力部10を介して指定した場合(例えば、マウスなどによりクリックした場合)、結果比較部44は、さらに下位の階層の比較結果を表示させるようにしてもよい。これにより、本実施形態による検証支援方法は、各階層の比較結果を確認し、対象のプログラム(システム)全体の比較結果を確認ことにより、対象のプログラム(システム)全体の検証が完了したか否かをユーザが判定することができる。
また、上述した例では、結果表RES1に示すような比較結果を表示させる例を説明したが、サブ画面SG1に示す棒グラフを、例えば、XMLの記述に変換して、テキスト情報として、テキスト比較ツール(例えば、diffなど)により比較してもよい。
図19に示す例は、対象のプログラムの階層のうちの最下層における比較結果を表示する一例である。図19において、結果比較部44は、画面G3に示すような比較結果を表示する。ここで、結果比較部44は、サブ画面SG2に、旧環境での実行結果としてグラフ構造GR7を表示させるとともに、新環境での実行結果としてグラフ構造GR8を表示させる。このサブ画面SG2において、ノードN3〜N5は、実行されなかったノードを示し、例えば、ノードの表示色を実行されたノードと異ならせて表示される。また、相違箇所DF3及び相違箇所DF4は、新環境の実行において旧環境との相違が生じたグラフ構造のノードを示しており、この場合も表示色を相違が生じていないノードと異ならせて表示される。
また、結果比較部44は、旧環境での実行結果と新環境での実行結果との比較結果を結果表RES2として表示させる。なお、結果表RES2において、例えば、“不一致”を示すボタンB1をユーザが入力部10を介して指定した場合(例えば、マウスなどによりクリックした場合)、結果比較部44は、図20に示すようなサブ画面SG3を表示させる。サブ画面SG3において、結果比較部44は、相違箇所DF3及び相違箇所DF4の相違内容を表示させる。
このように、図19及び図20に示す変形例では、結果比較部44が、旧環境と新環境との相違箇所の表示色を異ならせて、表示部20に表示させるので、ユーザが相違箇所をより容易に認識することができる。
また、結果比較部44は、さらに、相違箇所の内容を相違箇所に表示させるので、ユーザは、旧環境と新環境とで相違が生じている内容を把握することができるとともに、その対策を検討し易くすることができる。
また、図19に示す例では、図18に示す例と同様に、結果比較部44は、「終了時結果(戻り値)」として、旧環境での終了時結果(戻り値)と、新環境での終了時結果(戻り値)とが一致するか否かを表示させる。この場合、例えば、ルートの比較結果が“不一致”を示す場合であっても、この「終了時結果(戻り値)」の比較結果により、プログラムが正しく新環境に移植されたとユーザが判断してもよい。
なお、本発明は、上記の各実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で変更可能である。
例えば、上記の各実施形態において、検証支援装置1が記憶部30を備える例を説明したが、これに限定されるものではなく、記憶部30の一部又は全部を検証支援装置1の外部に備えてもよい。例えば、ネットワーク上の記憶装置が、ソース記憶部31を備え、検証支援装置1は、ネットワーク上のソース記憶部31からソースコードを取得してもよい。
また、上記の各実施形態において、検証支援装置1は、1台の装置として説明したが、複数の装置から構成されてもよい。例えば、制御部40の一部を検証支援装置1の外部に備えてもよい。
また、上記の各実施形態において、データ生成部42は、対象のプログラムの規模に基づいて、入力データを生成する生成アルゴリズムを決定(選択)する例を説明したが、これに限定されるものではない。例えば、データ生成部42は、対象のプログラムの複雑度に基づいて、生成アルゴリズムを決定(選択)してもよい。この場合、対象のプログラムの複雑度は、グラフ構造における分岐処理ノードの数や割合、ノード数に対するルートの数などに基づいて生成されてもよい。また、例えば、データ生成部42は、対象のプログラムの規模と、実際に入力データの生成に掛かる処理時間(演算時間)の実績値やカバレッジの実績値との統計的な相関関係に基づいて、生成アルゴリズムを決定(選択)してもよい。また、データ生成部42は、入力部10を介してユーザによって入力された情報に基づいて、生成アルゴリズムを決定(選択)してもよい。
また、上記の各実施形態において、検証支援装置1は、データ生成部42による入力データの生成と、実行制御部43による旧環境と新環境とでの実行させた後に、実行結果に基づいて、再度、データ生成部42による入力データの生成を行うようにしてもよい。この場合、実行結果がフィードバックされて、入力データが生成されるので、より効率よく入力データを生成することができる。
また、ソース記憶部31は、新環境用に変更した対象のプログラムを記述したソースコードを記憶し、実行制御部43は、データ生成部42が生成した入力データと、当該新環境用に変更した対象のプログラムとに基づいてテストコード(テストドライバ、及び、入力データを含むスタブ)を生成してもよい。この場合、実行制御部43は、新環境用に変更したソースコードと、生成したテストコード(テストドライバ、及びスタブ)とにより、新環境のコンピュータ装置3に、新環境用に変更した対象のプログラムを実行させる。これにより、上述した比較結果が不一致である場合に、新環境用に変更した対象のプログラムによる検証を行うことにより、ユーザは、効率良くデバックを行うことができる。
また、上記の各実施形態において、COBOLにより構築されたプログラムに適用する例を説明したが、これに限定されるものではなく、他の言語により構築されたプログラムに適用されてもよい。
なお、上述した検証支援システム100が備える各構成は、内部に、コンピュータシステムを有している。そして、上述した検証支援システム100が備える各構成の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより上述した検証支援システム100が備える各構成における処理を行ってもよい。ここで、「記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行する」とは、コンピュータシステムにプログラムをインストールすることを含む。ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。
また、「コンピュータシステム」は、インターネットやWAN、LAN、専用回線等の通信回線を含むネットワークを介して接続された複数のコンピュータ装置を含んでもよい。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。このように、プログラムを記憶した記録媒体は、CD−ROM等の非一過性の記録媒体であってもよい。
また、記録媒体には、当該プログラムを配信するために配信サーバからアクセス可能な内部又は外部に設けられた記録媒体も含まれる。なお、プログラムを複数に分割し、それぞれ異なるタイミングでダウンロードした後に検証支援システム100が備える各構成で合体される構成や、分割されたプログラムのそれぞれを配信する配信サーバが異なっていてもよい。さらに「コンピュータ読み取り可能な記録媒体」とは、ネットワークを介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(RAM)のように、一定時間プログラムを保持しているものも含むものとする。また、上記プログラムは、上述した機能の一部を実現するためのものであってもよい。さらに、上述した機能をコンピュータシステムに既に記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
また、上述した機能の一部又は全部を、LSI(Large Scale Integration)等の集積回路として実現してもよい。上述した各機能は個別にプロセッサ化してもよいし、一部、又は全部を集積してプロセッサ化してもよい。また、集積回路化の手法はLSIに限らず専用回路、又は汎用プロセッサで実現してもよい。また、半導体技術の進歩によりLSIに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いてもよい。
1 検証支援装置
2 旧環境のコンピュータ装置
3 新環境のコンピュータ装置
10 入力部
20 表示部
30 記憶部
31 ソース記憶部
32 グラフ記憶部
33 入力データ記憶部
34 実行環境記憶部
35 実行結果記憶部
40 制御部
41 グラフ生成部
42 データ生成部
43 実行制御部
44 結果比較部
100 検証支援システム

Claims (9)

  1. グラフ生成部が、プログラムを記述したソースコードを記憶するソースコード記憶部から前記ソースコードを取得し、取得した前記ソースコードを構文解析して、データの処理に関するノードであるデータ処理ノードと、処理の分岐に関するノードである分岐処理ノードとを含むグラフ構造を生成するグラフ生成ステップと、
    データ生成部が、前記グラフ生成ステップにて生成したグラフ構造に基づいて、前記プログラムを実行する実行経路を抽出し、抽出した前記実行経路を前記プログラムに実行させるための入力データを生成するデータ生成ステップと、
    実行制御部が、前記プログラムにより正常に動作することが確認されている第1の実行環境と、前記プログラムにより正常に動作することが確認されていない第2の実行環境とのそれぞれの実行環境において、前記データ生成ステップにて生成した入力データにより前記プログラムを実行させる実行制御ステップと
    を含むことを特徴とする検証支援方法。
  2. 比較部が、前記第1の実行環境と前記第2の実行環境とのそれぞれで実行された実行経路と実行回数とを含むそれぞれの実行結果を比較する比較ステップを含む
    ことを特徴とする請求項1に記載の検証支援方法。
  3. 前記データ生成ステップにおいて、
    前記実行経路に対して、当該実行経路におけるデータ処理ノードの処理を制約として、前記分岐処理ノードの分岐条件を満たす前記入力データを生成する
    ことを特徴とする請求項1又は請求項2に記載の検証支援方法。
  4. 前記データ生成ステップにおいて、
    前記実行経路に対して、前記分岐処理ノードごとに、分岐条件を満たす前記入力データを生成する
    ことを特徴とする請求項1から請求項3のいずれか一項に記載の検証支援方法。
  5. 前記データ生成ステップにおいて、
    前記実行経路に対して、前記分岐処理ノードごとに、乱数に基づいて前記入力データを生成する第1の生成アルゴリズムと、
    前記実行経路に対して、前記分岐処理ノードごとに、分岐条件を満たす前記入力データを生成する第2の生成アルゴリズムと、
    前記実行経路に対して、当該実行経路におけるデータ処理ノードを制約として、前記分岐処理ノードの分岐条件を満たす前記入力データを生成する第3の生成アルゴリズムと
    を組み合わせて、前記入力データを生成する
    ことを特徴とする請求項1又は請求項2に記載の検証支援方法。
  6. 前記データ生成ステップにおいて、
    前記第1の生成アルゴリズムと第2の生成アルゴリズムとのうちの少なくとも一方にて前記入力データを生成した後に、前記実行経路のうち、生成した前記入力データにて実行されない実行経路に対して、前記第3の生成アルゴリズムに基づいて前記入力データを生成する
    ことを特徴とする請求項5に記載の検証支援方法。
  7. 前記データ生成ステップにおいて、
    前記プログラムの規模に基づいて、
    前記実行経路に対して、前記分岐処理ノードごとに、乱数に基づいて前記入力データを生成する第1の生成アルゴリズムと、
    前記実行経路に対して、前記分岐処理ノードごとに、分岐条件を満たす前記入力データを生成する第2の生成アルゴリズムと、
    前記実行経路に対して、当該実行経路におけるデータ処理ノードを制約として、前記分岐処理ノードの分岐条件を満たす前記入力データを生成する第3の生成アルゴリズムと
    のうちのいずれかの生成アルゴリズムを選択し、選択した当該生成アルゴリズムに基づいて前記入力データを生成する
    ことを特徴とする請求項1又は請求項2に記載の検証支援方法。
  8. プログラムを記述したソースコードを記憶するソースコード記憶部から前記ソースコードを取得し、取得した前記ソースコードを構文解析して、データの処理に関するノードであるデータ処理ノードと、処理の分岐に関するノードである分岐処理ノードとを含むグラフ構造を生成するグラフ生成部と、
    前記グラフ生成部が生成したグラフ構造に基づいて、前記プログラムを実行する実行経路を抽出し、抽出した前記実行経路を前記プログラムに実行させるための入力データを生成するデータ生成部と、
    前記プログラムにより正常に動作することが確認されている第1の実行環境と、前記プログラムにより正常に動作することが確認されていない第2の実行環境とのそれぞれの実行環境において、前記データ生成部が生成した入力データにより前記プログラムを実行させる実行制御部と
    を備えることを特徴とする検証支援装置。
  9. コンピュータに、
    プログラムを記述したソースコードを記憶するソースコード記憶部から前記ソースコードを取得し、取得した前記ソースコードを構文解析して、データの処理に関するノードであるデータ処理ノードと、処理の分岐に関するノードである分岐処理ノードとを含むグラフ構造を生成するグラフ生成ステップと、
    前記グラフ生成ステップにて生成したグラフ構造に基づいて、前記プログラムを実行する実行経路を抽出し、抽出した前記実行経路を前記プログラムに実行させるための入力データを生成するデータ生成ステップと、
    前記プログラムにより正常に動作することが確認されている第1の実行環境と、前記プログラムにより正常に動作することが確認されていない第2の実行環境とのそれぞれの実行環境において、前記データ生成ステップにて生成した入力データにより前記プログラムを実行させる実行制御ステップと
    を実行させるためのプログラム。
JP2014140781A 2014-07-08 2014-07-08 検証支援方法、検証支援装置、及びプログラム Active JP6364263B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014140781A JP6364263B2 (ja) 2014-07-08 2014-07-08 検証支援方法、検証支援装置、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014140781A JP6364263B2 (ja) 2014-07-08 2014-07-08 検証支援方法、検証支援装置、及びプログラム

Publications (2)

Publication Number Publication Date
JP2016018390A true JP2016018390A (ja) 2016-02-01
JP6364263B2 JP6364263B2 (ja) 2018-07-25

Family

ID=55233568

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014140781A Active JP6364263B2 (ja) 2014-07-08 2014-07-08 検証支援方法、検証支援装置、及びプログラム

Country Status (1)

Country Link
JP (1) JP6364263B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018049492A (ja) * 2016-09-23 2018-03-29 富士通株式会社 解析装置、解析プログラムおよび解析方法
JP2019003385A (ja) * 2017-06-14 2019-01-10 富士通株式会社 解析装置、解析プログラムおよび解析方法
JP2020144842A (ja) * 2019-03-08 2020-09-10 富士通株式会社 コンピュータ可読プログラム検査のための入力の生成
CN112347454A (zh) * 2020-11-06 2021-02-09 上海悦易网络信息技术有限公司 一种验证信息生成方法及设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06236295A (ja) * 1992-03-16 1994-08-23 Nippon Telegr & Teleph Corp <Ntt> プログラム移植支援システム
JP2000347900A (ja) * 1999-06-02 2000-12-15 Fujitsu Ltd 入力パラメータ生成装置、その方法及び記録媒体
JP2010267023A (ja) * 2009-05-13 2010-11-25 Nippon Telegr & Teleph Corp <Ntt> テストデータ生成方法及び装置及びプログラム
US20130007772A1 (en) * 2011-06-28 2013-01-03 Unisys Corporation Method and system for automated system migration
WO2013058393A1 (ja) * 2011-10-18 2013-04-25 日本電気株式会社 異常検出装置、プログラム、及び、方法
JP2014006643A (ja) * 2012-06-22 2014-01-16 Fujitsu Ltd プログラム、テストケース生成方法およびテストケース生成装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06236295A (ja) * 1992-03-16 1994-08-23 Nippon Telegr & Teleph Corp <Ntt> プログラム移植支援システム
JP2000347900A (ja) * 1999-06-02 2000-12-15 Fujitsu Ltd 入力パラメータ生成装置、その方法及び記録媒体
JP2010267023A (ja) * 2009-05-13 2010-11-25 Nippon Telegr & Teleph Corp <Ntt> テストデータ生成方法及び装置及びプログラム
US20130007772A1 (en) * 2011-06-28 2013-01-03 Unisys Corporation Method and system for automated system migration
WO2013058393A1 (ja) * 2011-10-18 2013-04-25 日本電気株式会社 異常検出装置、プログラム、及び、方法
JP2014006643A (ja) * 2012-06-22 2014-01-16 Fujitsu Ltd プログラム、テストケース生成方法およびテストケース生成装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
TAO SUN(孫) 他: "「マルチメディアシステムに対するQoS機能試験の一手法」", 情報処理学会論文誌, vol. 第45巻 第2号, JPN6018009524, 15 February 2004 (2004-02-15), JP, pages 475 - 486, ISSN: 0003760150 *
西川 忍: "「Javaテスト・ツールJtestの威力を検証する」", 日経ソフトウェア, vol. 第3巻 第11号, JPN6018009525, 24 October 2000 (2000-10-24), JP, pages 104 - 109, ISSN: 0003760151 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018049492A (ja) * 2016-09-23 2018-03-29 富士通株式会社 解析装置、解析プログラムおよび解析方法
JP2019003385A (ja) * 2017-06-14 2019-01-10 富士通株式会社 解析装置、解析プログラムおよび解析方法
JP2020144842A (ja) * 2019-03-08 2020-09-10 富士通株式会社 コンピュータ可読プログラム検査のための入力の生成
JP7318516B2 (ja) 2019-03-08 2023-08-01 富士通株式会社 コンピュータ可読プログラム検査のための入力の生成
CN112347454A (zh) * 2020-11-06 2021-02-09 上海悦易网络信息技术有限公司 一种验证信息生成方法及设备

Also Published As

Publication number Publication date
JP6364263B2 (ja) 2018-07-25

Similar Documents

Publication Publication Date Title
US10943191B2 (en) Designer tool for managing cloud computing services
JP6364263B2 (ja) 検証支援方法、検証支援装置、及びプログラム
US9330369B2 (en) Resource planning for data protection validation
US11182132B1 (en) Determining functional equivalence of configurations of a model
US20170235661A1 (en) Integration of Software Systems via Incremental Verification
US8955115B2 (en) Automatic generation of security checks
CN108073390A (zh) 统一管理多个工程中配置文件的方法、装置及系统
Alhazov et al. P systems working in maximal variants of the set derivation mode
Petroulakis et al. Patterns for the design of secure and dependable software defined networks
WO2012036304A1 (ja) 動作検証支援装置、動作検証支援方法、及び動作検証支援プログラム
Jena et al. Test case creation from UML sequence diagram: a soft computing approach
US20210019136A1 (en) Method, device, and computer program product for updating software
Târnaucă et al. Modelling a flexible manufacturing system using reconfigurable finite capacity Petri nets
CN110737426A (zh) 程序块创建方法、装置、计算机设备和存储介质
JP5743663B2 (ja) テスト支援システム、テスト支援方法、及びプログラム
Bouré et al. First steps on asynchronous lattice-gas models with an application to a swarming rule
CN112632293B (zh) 行业图谱的构建方法、装置、电子设备及存储介质
CN107665124A (zh) 模块化JavaScript文件处理方法、设备和服务器
JP6665576B2 (ja) 支援装置、支援方法及びプログラム
JP6287093B2 (ja) ソフトウェア開発支援装置、ソフトウェア開発支援方法及びプログラム
JP2019144881A (ja) セキュリティ評価サーバおよびセキュリティ評価方法
Rosat et al. Integral simplex using decomposition with primal cutting planes
Suzuki et al. Exact computation of strongly connected reliability by binary decision diagrams
WO2024190228A1 (ja) ソフトウェア検証装置、及びソフトウェア検証方法
Bergomi et al. Beyond traceability: Compared approaches to consistent security risk assessments

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170512

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180209

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180327

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180516

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180702

R150 Certificate of patent or registration of utility model

Ref document number: 6364263

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250