(57)【要約】      （修正有）【課題】シンボル変数の値が永続化される場合であってもシンボリック実行を行えるようにする。【解決手段】シンボル変数１０４の値を含む第１のデータをファイル１０８に書き込むことを命令する書き込み命令を実行する場合、書き込み命令に従って第１のデータをファイルに書き込むと共に、内部表現のシンボル変数の値を記憶装置１０９に格納し、第１のデータをファイルから読み込むことを命令する読み込み命令を実行する場合、記憶装置１０９から内部表現のシンボル変数の値を読み込み、内部表現のシンボル変数の値を含む第１のデータを、読み込み命令の返り値に設定する。【選択図】図５
2014119869.tif 000002
【特許請求の範囲】
【請求項１】
シンボル変数の値を含む第１のデータをファイルに書き込むことを命令する書き込み命令を実行する場合、前記書き込み命令に従って前記第１のデータを前記ファイルに書き込むと共に、内部表現の前記シンボル変数の値を記憶装置に格納し、
前記第１のデータを前記ファイルから読み込むことを命令する読み込み命令を実行する場合、前記記憶装置から前記内部表現のシンボル変数の値を読み込み、前記内部表現のシンボル変数の値を含む前記第１のデータを、前記読み込み命令の返り値に設定する
処理をコンピュータが実行するシンボリック実行方法。
【請求項２】
前記シンボル変数の値を含まない第２のデータを前記ファイル以外のファイルである第２のファイルから読み込むことを命令する第２の読み込み命令を実行する場合、前記第２の読み込み命令に従って前記第２のデータを前記第２のファイルから読み込み、前記第２の読み込み命令の返り値に設定する
処理をさらにコンピュータが実行する請求項１記載のシンボリック実行方法。
【請求項３】
前記内部表現のシンボル変数の値を記憶装置に格納する処理において、
前記第１のデータが書き込まれる前記ファイルの情報を前記内部表現のシンボル変数に対応付けて前記記憶装置に格納し、
前記読み込み命令の返り値に設定する処理において、
前記読み込み命令において指定されているファイルの情報に対応付けて格納されている前記内部表現のシンボル変数の値を、前記記憶装置から読み込む
ことを特徴とする請求項１記載のシンボリック実行方法。
【請求項４】
シンボル変数の値を含む第１のデータをファイルに書き込むことを命令する書き込み命令を実行する場合、前記書き込み命令に従って前記第１のデータを前記ファイルに書き込むと共に、内部表現の前記シンボル変数の値を記憶装置に格納し、
前記第１のデータを前記ファイルから読み込むことを命令する読み込み命令を実行する場合、前記記憶装置から前記内部表現のシンボル変数の値を読み込み、前記内部表現のシンボル変数の値を含む前記第１のデータを、前記読み込み命令の返り値に設定する
処理をコンピュータに実行させるためのシンボリック実行プログラム。
【請求項５】
シンボル変数の値を含む第１のデータをファイルに書き込むことを命令する書き込み命令を実行する場合、前記書き込み命令に従って前記第１のデータを前記ファイルに書き込むと共に、内部表現の前記シンボル変数の値を記憶装置に格納する書き込み処理部と、
前記第１のデータを前記ファイルから読み込むことを命令する読み込み命令を実行する場合、前記記憶装置から前記内部表現のシンボル変数の値を読み込む読み込み処理部と、
前記読み込み処理部により読み込まれた前記内部表現のシンボル変数の値を含む前記第１のデータを、前記読み込み命令の返り値に設定する設定部と
を有するシンボリック実行装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シンボリック実行技術に関する。
【背景技術】
【０００２】
シンボリック実行とは、プログラム内の変数を具体化せず、変数をシンボル化して（すなわち、記号のまま）プログラムを実行する技術である。シンボル化される変数は、シンボル変数と呼ばれる。シンボリック実行中においては、具体値ではなくシンボル変数が満たすべき条件（以下、パス条件と呼ぶ）がシンボル変数の値としてメモリ等に保持される。そして、シンボリック実行が完了すると、プログラムにおける各パスについてパス条件が得られるため、パス条件を満たすシンボル変数の具体値を求めることで、プログラムをテストするためのテストデータを得ることができる。
【０００３】
例えば、図１に示した制御構造を有するプログラムについてシンボリック実行を行うことを考える。この制御構造には、２つの分岐が含まれる。１つ目の分岐は、シンボル変数ｂが０であるか否かを判断する分岐であり、０である場合にはパス１１に進み、０ではない場合にはパス１２に進む。２つ目の分岐は、シンボル変数ｂが５以下であるか否かを判断する分岐であり、５以下である場合には変数ａをデクリメントするパス２１に進み、５より大きい場合には変数ａをインクリメントするパス２２に進む。
【０００４】
図２に、図１に示した制御構造を有するプログラムの一例を示す。このプログラムにおいては、１行目の「＠Ｓｙｍｂｏｌｉｃ（”ｔｒｕｅ”）」がシンボリック実行を行うことを表している。そして、実際にこのプログラムについてシンボリック実行を行うと、ｂ＝０というテストデータ（パス条件は（ｂ＝０）∧（ｂ≦５））と、ｂ＝１というテストデータ（パス条件は（ｂ≠０）∧（ｂ≦５））と、ｂ＝６というテストデータ（パス条件は（ｂ≠０）∧（ｂ＞５））とを得ることができる。
【０００５】
ここで、図１に示した制御構造を図３に示すように変更する。図３に示した制御構造において、１つ目の分岐は図１と同じである。１つ目の分岐と２つ目の分岐との間に、シンボル変数ｂの値を「Ｔｅｓｔ．ｔｘｔ」という名前のファイルに出力する処理と、「Ｔｅｓｔ．ｔｘｔ」という名前のファイルから値を読み出す処理とが含まれる。２つ目の分岐においては、ファイルから読み出した値が５以下である場合には変数ａをデクリメントするパス２１に進み、５より大きい場合には変数ａをインクリメントするパス２２に進む。
【０００６】
図４に、図３に示した制御構造を有するプログラムの一例を示す。このプログラムは、図２に示したプログラムに、点線で囲った５行のコードを追加したプログラムである。そして、実際にこのプログラムについてシンボリック実行を行うと、ｂ＝０というテストデータ（パス条件は（ｂ＝０））と、ｂ＝１というテストデータ（パス条件は（ｂ≠０））とを得ることができる。このテストデータは、図２の例で得られるテストデータとは異なっている。
【０００７】
このように、プログラムの途中でシンボル変数の値を永続化すると、適切なテストデータを得られなくなることがある。これは、永続化によりシンボル変数が消えるためである。図４の例であれば、「ｄｉｓ．ｒｅａｄＩｎｔ（）」という命令によってファイルから読み込む値がシンボル変数ｂの値であることが認識されず、シンボル変数ｂが消えるため、シンボリック実行にシンボル変数ｂを引き継ぐことができない。シンボリック実行に関する従来の技術においては、このような問題については検討されていない。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１２−６８８６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
１つの側面では、本発明の目的は、シンボル変数の値が永続化される場合であってもシンボリック実行を行えるようにするための技術を提供することである。
【課題を解決するための手段】
【００１０】
本発明に係るシンボリック実行方法は、シンボル変数の値を含む第１のデータをファイルに書き込むことを命令する書き込み命令を実行する場合、書き込み命令に従って第１のデータをファイルに書き込むと共に、内部表現のシンボル変数の値を記憶装置に格納し、第１のデータをファイルから読み込むことを命令する読み込み命令を実行する場合、記憶装置から内部表現のシンボル変数の値を読み込み、内部表現のシンボル変数の値を含む第１のデータを、読み込み命令の返り値に設定する処理を含む。
【発明の効果】
【００１１】
シンボル変数の値が永続化される場合であってもシンボリック実行を行えるようになる。
【図面の簡単な説明】
【００１２】
【図１】図１は、プログラムの制御構造を示す図である。
【図２】図２は、プログラムの一例を示す図である。
【図３】図３は、プログラムの制御構造を示す図である。
【図４】図４は、プログラムの一例を示す図である。
【図５】図５は、本実施の形態における情報処理装置の機能ブロック図である。
【図６】図６は、ファイルへの書き込みの際に実行する処理の処理フローを示す図である。
【図７】図７は、シンボル変数格納部に格納されるデータの一例を示す図である。
【図８】図８は、シンボル値格納部に格納されるデータの一例を示す図である。
【図９】図９は、ファイル格納部に格納されるデータの一例を示す図である。
【図１０】図１０は、ファイルからの読み込みの際に実行する処理の処理フローを示す図である。
【図１１】図１１は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００１３】
図５に、本実施の形態における情報処理装置１の機能ブロック図を示す。情報処理装置１は、シンボリック実行の対象となるクラスである対象クラスを格納する対象クラス格納部１１０と、モデルクラス群１０１、判断部１０２、シンボル変数格納部１０４及び実行エンジン１０３を含むシンボリック実行部１００と、第１処理部１０６及び第２処理部１０７を含む入出力処理部１０５と、シンボル値格納部１０９と、ファイル格納部１０８とを含む。
【００１４】
実行エンジン１０３は、シンボリック実行を行うモジュールであり、例えばＪａｖａ（登録商標） ＰａｔｈＦｉｎｄｅｒである。実行エンジン１０３は、シンボリック実行におけるシンボル変数をシンボル変数格納部１０４を用いて管理している。
【００１５】
モデルクラス群１０１は、複数のモデルクラスを含む。モデルクラスは、例えばファイルへのデータの書き込み又はファイルからのデータの読み込み等の処理を実行するためのクラスであり、対象クラスから呼び出される。
【００１６】
判断部１０２は、モデルクラス群１０１における、ファイルへのデータの書き込み又はファイルからのデータの読み込み等を実行するためのモデルクラスが呼び出されると、当該モデルクラスから呼び出される。判断部１０２は、シンボル変数格納部１０４に格納されているデータを用いて、出力データにシンボル変数が含まれているか否かを判断し、含まれている場合には書き込みメソッドに係るデータを入出力処理部１０５に出力する。また、判断部１０２は、読み込み対象のファイルの情報がシンボル値格納部１０９に格納されているか判断し、格納されている場合には読み込みメソッドに係るデータを入出力処理部１０５に出力する。
【００１７】
入出力処理部１０５における第１処理部１０６は、判断部１０２から受け取った、書き込みメソッドに係るデータを用いて処理を行う。入出力処理部１０５における第２処理部１０７は、判断部１０２から受け取った、読み込みメソッドに係るデータを用いて処理を行う。
【００１８】
次に、図６乃至図１０を用いて、情報処理装置１の動作について説明する。まず、図６乃至図９を用いて、ファイルへの書き込みを行う際に実行する処理について説明する。
【００１９】
シンボリック実行部１００における実行エンジン１０３は、ユーザからの指示を受け付けると、対象クラス格納部１１０に格納されている対象クラスを用いて、シンボリック実行を開始する。シンボリック実行中、実行エンジン１０３は、ファイルへの書き込み命令（例えば図４の例であれば、ｄｏｓ．ｗｒｉｔｅＩｎｔ（ｂ））を実行する（図６：ステップＳ１）。ファイルへの書き込み命令とは、Ｊａｖａ（登録商標）であれば、例えばｗｒｉｔｅＩｎｔ、ｗｒｉｔｅＣｈａｒ又はｗｒｉｔｅＬｏｎｇ等を含む命令である。
【００２０】
実行エンジン１０３がファイルへの書き込み命令を実行すると、書き込みメソッドを実行するモデルクラスがモデルクラス群１０１から呼び出される。また、呼び出されたモデルクラスが、判断部１０２を呼び出し（ステップＳ３）、判断部１０２に書き込みメソッドに係るデータを出力する。この処理は、例えば、モデルクラス「ＤａｔａＯｕｔｐｕｔＳｔｒｅａｍ」の中に、書き込みメソッドを実行する部分とは別に、判断部１０２を呼び出す部分を設けることにより実現する。なお、書き込みメソッドに係るデータには、出力データ、ファイル名、書き込み開始位置の情報、出力データ長の情報及び型の情報等が含まれる。
【００２１】
判断部１０２は、シンボル変数格納部１０４に格納されているシンボル変数が出力データに含まれているか判断する（ステップＳ５）。
【００２２】
図７に、シンボル変数格納部１０４に格納されるデータの一例を示す。図７の例では、シンボル変数と、変数の型とが格納される。例えば図４に示したプログラムの場合、冒頭の２行がシンボル変数を定義する部分にあたるため、この部分が実行されると図７に示したようなデータが格納される。
【００２３】
例えば、ｗｒｉｔｅＩｎｔ（ｂ）という書き込みメソッドであればｂが出力データであるが、ｂはシンボル変数としてシンボル変数格納部１０４に登録されているため、シンボル変数が出力データに含まれるということになる。
【００２４】
シンボル変数が出力データに含まれない場合（ステップＳ７：Ｎｏルート）、通常どおりの書き込みメソッドであるので、ステップＳ９の処理に移行する。そして、書き込みメソッドを実行するモデルクラスが、書き込みメソッドに係るデータに従って出力データをファイル格納部１０８におけるファイルに書き込む（ステップＳ９）。
【００２５】
一方、シンボル変数が出力データに含まれる場合（ステップＳ７：Ｙｅｓルート）、判断部１０２は、書き込みメソッドに係るデータを入出力処理部１０５に出力する。そして、入出力処理部１０５における第１処理部１０６は、実行エンジン１０３が使用するメモリ領域から、内部表現のシンボル変数の値を取得する（ステップＳ１１）。内部表現のシンボル変数の値には、ステップＳ１１の時点においてメモリ領域に格納されているパス条件が含まれる。
【００２６】
第１処理部１０６は、書き込みメソッドに係るデータに含まれるファイルの情報と取得された内部表現のシンボル変数の値とをシンボル値格納部１０９に追加する（ステップＳ１３）。
【００２７】
図８に、シンボル値格納部１０９に格納されるデータの一例を示す。図８の例では、ファイル名と、書き込み開始位置の情報及び出力データ長の情報と、内部表現のシンボル変数の値とが格納される。
【００２８】
第１処理部１０６は、判断部１０２から受け取った、書き込みメソッドに係るデータに従って、ファイル格納部１０８におけるファイルに出力データを書き込む（ステップＳ１５）。そして処理を終了する。
【００２９】
図９に、ファイル格納部１０８に格納されるファイルの一例を示す。図９に示したファイルは、ファイル名が「Ｔｅｓｔ．ｔｘｔ」であり、出力データは「０」である。内部表現のシンボル変数ｂの値は図８における２行目の３列目に示された値であるが、ファイル上では整数型（Ｉｎｔ）で表されているため「０」になっている。
【００３０】
以上のような処理を実行すれば、ファイルへの書き込みの時点における出力データを保存できるので、後にファイルから読み込みを行う際に利用できるようになる。
【００３１】
次に、図１０を用いて、ファイルからの読み込みを行う際に実行する処理について説明する。
【００３２】
シンボリック実行部１００における実行エンジン１０３は、ユーザからの指示を受け付けると、対象クラス格納部１１０に格納されている対象クラスを用いて、シンボリック実行を開始する。シンボリック実行中、実行エンジン１０３は、ファイルの読み込み命令（例えば図４の例であれば、ｄｉｓ．ｒｅａｄＩｎｔ（））を実行する（図１０：ステップＳ２１）。ファイルの読み込み命令とは、Ｊａｖａ（登録商標）であれば、例えばｒｅａｄＩｎｔ、ｒｅａｄＣｈａｒ又はｒｅａｄＬｏｎｇ等を含む命令である。
【００３３】
実行エンジン１０３がファイルの読み込み命令を実行すると、読み込みメソッドを実行するモデルクラスがモデルクラス群１０１から呼び出される。また、呼び出されたモデルクラスが、判断部１０２を呼び出し（ステップＳ２３）、読み込みメソッドに係るデータを判断部１０２に出力する。例えば、モデルクラス「ＤａｔａＩｎｐｕｔＳｔｒｅａｍ」の中に、読み込みメソッドを実行する部分とは別に、判断部１０２を呼び出す部分を設けることにより実現する。なお、読み込みメソッドに係るデータには、ファイル名、読み込み開始位置の情報、データ長の情報及び型の情報等が含まれる。
【００３４】
判断部１０２は、読み込み対象のファイルの情報（ここでは、ファイル名、読み込み開始位置の情報及びデータ長の情報）がシンボル値格納部１０９に格納されているか判断する（ステップＳ２５）。
【００３５】
格納されていない場合（ステップＳ２７：Ｎｏルート）、通常どおりの読み込みメソッドであるので、読み込みメソッドを実行するモデルクラスが、読み込みメソッドに係るデータに従ってデータをファイル格納部１０８におけるファイルから読み込む。そして、読み込みメソッドを実行するモデルクラスは、ファイルから読み込んだデータを読み込みメソッドの返り値に設定する（ステップＳ２９）。
【００３６】
一方、格納されている場合（ステップＳ２７：Ｙｅｓルート）、判断部１０２は、読み込みメソッドに係るデータを入出力処理部１０５に出力する。そして、入出力処理部１０５における第２処理部１０７は、読み込み対象のファイルの情報に対応する内部表現のシンボル変数の値をシンボル値格納部１０９から取得する（ステップＳ３１）。シンボル値格納部１０９に格納されている内部表現のシンボル変数の値には、書き込みの時点においてメモリ領域に格納されていたパス条件が含まれる。
【００３７】
第２処理部１０７は、取得された内部表現のシンボル変数の値を含む設定値を生成する（ステップＳ３３）。例えばｗｒｉｔｅＩｎｔ（ｂ）という命令では出力データそのものがシンボル変数であるため、ステップＳ３３の処理をスキップしてもよい。これに対し、出力データの一部にシンボル変数が含まれるような場合には、ステップＳ３３の処理を実行する。そして、第２処理部１０７は、生成された設定値を判断部１０２に出力する。
【００３８】
判断部１０２は、第２処理部１０７から受け取った設定値を、読み込みメソッドの返り値に設定する（ステップＳ３５）。例えば、第２処理部１０７は、返り値としてＳｙｍｂｏｌｉｃ  Ｅｘｐ［（ｓ＿ｂ＿３＿ＳＹＭＩＮＴ＿ＳＴＡＴＩＣ＿ＦＩＥＬＤ＋ＣＯＮＳＴ＿１）］を設定する。そして処理を終了する。これにより、実行エンジン１０３にシンボル変数の値を引き継ぐことができる。
【００３９】
以上のような処理を実行すれば、ファイル上の値ではなく内部表現のシンボル変数の値をシンボリック実行に引き継ぐことができるので、シンボル変数の値が永続化される場合であってもシンボリック実行を行えるようになる。
【００４０】
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明した情報処理装置１の機能ブロック構成は実際のプログラムモジュール構成に対応しない場合もある。
【００４１】
また、上で説明した各テーブルの構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
【００４２】
例えば、上ではＪａｖａ（登録商標）のプログラムを例にして説明したが、その他のプログラミング言語のプログラムであってもよい。
【００４３】
なお、上で述べた情報処理装置１は、コンピュータ装置であって、図１１に示すように、メモリ２５０１とＣＰＵ（Central Processing Unit）２５０３とハードディスク・ドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【００４４】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【００４５】
本実施の形態に係るシンボリック実行方法は、（Ａ）シンボル変数の値を含む第１のデータをファイルに書き込むことを命令する書き込み命令を実行する場合、書き込み命令に従って第１のデータをファイルに書き込むと共に、内部表現のシンボル変数の値を記憶装置に格納し、（Ｂ）第１のデータをファイルから読み込むことを命令する読み込み命令を実行する場合、記憶装置から内部表現のシンボル変数の値を読み込み、内部表現のシンボル変数の値を含む第１のデータを、読み込み命令の返り値に設定する処理を含む。
【００４６】
このようにすれば、ファイル上のシンボル変数の値ではなく内部表現のシンボル変数の値をシンボリック実行に引き継ぐことができるので、シンボル変数の値が永続化される場合であってもシンボリック実行を行えるようになる。
【００４７】
また、本シンボリック実行方法が、（Ｃ）シンボル変数の値を含まない第２のデータを上記ファイル以外のファイルである第２のファイルから読み込むことを命令する第２の読み込み命令を実行する場合、第２の読み込み命令に従って第２のデータを第２のファイルから読み込み、第２の読み込み命令の返り値に設定する処理をさらに含むようにしてもよい。このようにすれば、シンボル変数の値を含まないデータをファイルから読み込む場合には通常どおりの読み込みを行うことができるようになる。
【００４８】
また、上で述べた内部表現のシンボル変数の値を記憶装置に格納する処理において、（ａ１）第１のデータが書き込まれるファイルの情報を内部表現のシンボル変数に対応付けて記憶装置に格納し、上で述べた読み込み命令の返り値に設定する処理において、（ｂ１）読み込み命令において指定されているファイルの情報に対応付けて格納されている内部表現のシンボル変数の値を、記憶装置から読み込むようにしてもよい。このようにすれば、例えば複数のシンボル変数を扱うような場合であっても、適切な値を記憶装置から読み込めるようになる。
【００４９】
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
【００５０】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００５１】
（付記１）
シンボル変数の値を含む第１のデータをファイルに書き込むことを命令する書き込み命令を実行する場合、前記書き込み命令に従って前記第１のデータを前記ファイルに書き込むと共に、内部表現の前記シンボル変数の値を記憶装置に格納し、
前記第１のデータを前記ファイルから読み込むことを命令する読み込み命令を実行する場合、前記記憶装置から前記内部表現のシンボル変数の値を読み込み、前記内部表現のシンボル変数の値を含む前記第１のデータを、前記読み込み命令の返り値に設定する
処理をコンピュータが実行するシンボリック実行方法。
【００５２】
（付記２）
前記シンボル変数の値を含まない第２のデータを前記ファイル以外のファイルである第２のファイルから読み込むことを命令する第２の読み込み命令を実行する場合、前記第２の読み込み命令に従って前記第２のデータを前記第２のファイルから読み込み、前記第２の読み込み命令の返り値に設定する
処理をさらにコンピュータが実行する付記１記載のシンボリック実行方法。
【００５３】
（付記３）
前記内部表現のシンボル変数の値を記憶装置に格納する処理において、
前記第１のデータが書き込まれる前記ファイルの情報を前記内部表現のシンボル変数に対応付けて前記記憶装置に格納し、
前記読み込み命令の返り値に設定する処理において、
前記読み込み命令において指定されているファイルの情報に対応付けて格納されている前記内部表現のシンボル変数の値を、前記記憶装置から読み込む
ことを特徴とする付記１記載のシンボリック実行方法。
【００５４】
（付記４）
シンボル変数の値を含む第１のデータをファイルに書き込むことを命令する書き込み命令を実行する場合、前記書き込み命令に従って前記第１のデータを前記ファイルに書き込むと共に、内部表現の前記シンボル変数の値を記憶装置に格納し、
前記第１のデータを前記ファイルから読み込むことを命令する読み込み命令を実行する場合、前記記憶装置から前記内部表現のシンボル変数の値を読み込み、前記内部表現のシンボル変数の値を含む前記第１のデータを、前記読み込み命令の返り値に設定する
処理をコンピュータに実行させるためのシンボリック実行プログラム。
【００５５】
（付記５）
シンボル変数の値を含む第１のデータをファイルに書き込むことを命令する書き込み命令を実行する場合、前記書き込み命令に従って前記第１のデータを前記ファイルに書き込むと共に、内部表現の前記シンボル変数の値を記憶装置に格納する書き込み処理部と、
前記第１のデータを前記ファイルから読み込むことを命令する読み込み命令を実行する場合、前記記憶装置から前記内部表現のシンボル変数の値を読み込む読み込み処理部と、
前記読み込み処理部により読み込まれた前記内部表現のシンボル変数の値を含む前記第１のデータを、前記読み込み命令の返り値に設定する設定部と
を有するシンボリック実行装置。
【符号の説明】
【００５６】
１  情報処理装置    １００  シンボリック実行装置
１０１  モデルクラス群    １０２  判断部
１０３  実行エンジン    １０４  シンボル変数格納部
１０５  入出力処理部    １０６  第１処理部
１０７  第２処理部    １０８  ファイル格納部
１０９  シンボル値格納部    １１０  対象クラス格納部
【図１】
2014119869.tif 000003
【図２】
2014119869.tif 000004
【図３】
2014119869.tif 000005
【図４】
2014119869.tif 000006
【図５】
2014119869.tif 000007
【図６】
2014119869.tif 000008
【図７】
2014119869.tif 000009
【図８】
2014119869.tif 000010
【図９】
2014119869.tif 000011
【図１０】
2014119869.tif 000012
【図１１】
2014119869.tif 000013