"変数を表す部分文字列各々を用いて表現される文字列の表現パターンと、該文字列の表現において必須となる前記部分文字列各々の必須部分文字列の桁数を求める式パターンと、前記部分文字列各々が関連していることを示す関連パターンと、が関連付けて記憶された関連パターン情報テーブルを参照し、テスト対象のプログラムの入力データの制約条件を示す元制約情報から、前記文字列の表現パターンと一致する文字列を抽出し、前記関連パターン情報テーブルを参照して、抽出した前記文字列の前記表現パターンに対応する前記式パターン及び関連パターンを取得し、取得した前記式パターン及び前記関連パターンに、抽出した前記文字列に含まれる部分文字列を代入して、必須部分文字列と部分文字列各々が関連していることを示す関連情報を求め、前記元制約情報に含まれる変数を表す前記部分文字列と、該部分文字列の桁数と、が関連付けられている項目定義情報を参照して、前記部分文字列に対応する前記必須部分文字列の桁数を取得し、前記必須部分文字列に取得した前記桁数を代入し、前記桁数を代入した前記必須部分文字列と前記関連情報とを用いて、関連する該必須部分文字列各々の前記桁数を取得し、取得した前記桁数各々を前記必須部分文字列各々に対応する前記部分文字列の分割位置を求め、前記分割位置に従い、抽出した前記文字列に含まれる前記部分文字列を分割し、分割した部分文字列各々の桁範囲と、該分割した部分文字列各々に名称を割り振り、前記元制約情報の抽出した前記文字列に含まれる前記部分文字列のうち分割された前記部分文字列を、分割した前記部分文字列の名称を用いた表現に変換して変換後制約情報を生成する、処理をコンピュータに実行させるテストデータ生成プログラム。前記変換後制約情報を入力として、SMTソルバを用いて前記変換後制約情報が有する条件各々の充足値を求め、前記充足値各々を用いて変換後制約の充足値から元制約情報の有する条件を充足するテストデータを生成する、処理を前記コンピュータに実行させること特徴とする請求項1に記載のテストデータ生成プログラム。前記桁数を代入したすべての前記必須部分文字列に対して、複数回、前記桁数を代入した前記必須部分文字列と前記関連情報とを用いて、関連する該必須部分文字列各々に前記桁数各々を、反映させて分割位置を求め、前記桁数を代入したすべての前記必須部分文字列に対応する前回の分割位置と今回の分割位置を同じにする、処理を前記コンピュータに実行させること特徴とする請求項1または2に記載のテストデータ生成プログラム。変数を表す部分文字列各々を用いて表現される文字列の表現パターンと、該文字列の表現において必須となる前記部分文字列各々の必須部分文字列の桁数を求める式パターンと、前記部分文字列各々が関連していることを示す関連パターンと、が関連付けて記憶された関連パターン情報テーブルを参照し、テスト対象のプログラムの入力データの制約条件を示す元制約情報から、前記文字列の表現パターンと一致する文字列を抽出し、前記関連パターン情報テーブルを参照して、抽出した前記文字列の前記表現パターンに対応する前記式パターン及び関連パターンを取得し、取得した前記式パターン及び前記関連パターンに、抽出した前記文字列に含まれる部分文字列を代入して、必須部分文字列と部分文字列各々が関連していることを示す関連情報を求め、前記元制約情報に含まれる変数を表す前記部分文字列と、該部分文字列の桁数と、が関連付けられている項目定義情報を参照して、前記部分文字列に対応する前記必須部分文字列の桁数を取得し、前記必須部分文字列に取得した前記桁数を代入し、前記桁数を代入した前記必須部分文字列と前記関連情報とを用いて、関連する該必須部分文字列各々の前記桁数を取得し、取得した前記桁数各々を前記必須部分文字列各々に対応する前記部分文字列の分割位置を求め、前記分割位置に従い、抽出した前記文字列に含まれる前記部分文字列を分割し、分割した部分文字列各々の桁範囲と、該分割した部分文字列各々に名称を割り振り、前記元制約情報の抽出した前記文字列に含まれる前記部分文字列のうち分割された前記部分文字列を、分割した前記部分文字列の名称を用いた表現に変換して変換後制約情報を生成する、こと特徴とするテストデータ生成方法。変数を表す部分文字列各々を用いて表現される文字列の表現パターンと、該文字列の表現において必須となる前記部分文字列各々の必須部分文字列の桁数を求める式パターンと、前記部分文字列各々が関連していることを示す関連パターンと、が関連付けて記憶された関連パターン情報テーブルを参照し、テスト対象のプログラムの入力データの制約条件を示す元制約情報から、前記文字列の表現パターンと一致する文字列を抽出し、前記関連パターン情報テーブルを参照して、抽出した前記文字列の前記表現パターンに対応する前記式パターン及び関連パターンを取得し、取得した前記式パターン及び前記関連パターンに、抽出した前記文字列に含まれる部分文字列を代入して、必須部分文字列と部分文字列各々が関連していることを示す関連情報を求め、前記元制約情報に含まれる変数を表す前記部分文字列と、該部分文字列の桁数と、が関連付けられている項目定義情報を参照して、前記部分文字列に対応する前記必須部分文字列の桁数を取得し、前記必須部分文字列に取得した前記桁数を代入する、生成部と、前記桁数を代入した前記必須部分文字列と前記関連情報とを用いて、関連する該必須部分文字列各々の前記桁数を取得し、取得した前記桁数各々を前記必須部分文字列各々に対応する前記部分文字列の分割位置を求める、分割部と、前記分割位置に従い、抽出した前記文字列に含まれる前記部分文字列を分割し、分割した部分文字列各々の桁範囲と、該分割した部分文字列各々に名称を割り振る、定義部と、前記元制約情報の抽出した前記文字列に含まれる前記部分文字列のうち分割された前記部分文字列を、分割した前記部分文字列の名称を用いた表現に変換して変換後制約情報を生成する、制約変換部と、を備えること特徴とするテストデータ生成装置。本発明は、制約に含まれる文字列毎に、他の文字列と関連する部分文字列を求め、該部分文字列を1つの要素に変換し、SMTソルバの時間計算量を削減するテストデータ生成プログラム、テストデータ生成方法、テストデータ生成装置を提供することを目的とする。本実施の態様のひとつであるテストデータ生成は、関連パターン情報を参照し、上記文字列のパターンと一致するプログラムの仕様に基づいて生成されるテストの条件を有する元制約情報に含まれる文字列を抽出する。関連パターン情報は、変数を表す部分文字列各々を用いて表現される文字列の表現パターン、該文字列の表現において必須となる上記部分文字列各々の桁数を求める式パターン、上記部分文字列各々の関連していることを示す関連パターン、が関連付けられている。続いて、上記関連パターン情報を参照し、抽出した文字列に対応する上記式パターンを取得し、取得した上記式パターンと上記関連パターンに、抽出した上記文字列に含まれる部分文字列を代入し、必須部分文字列と関連情報を求める。続いて、上記元制約情報に含まれる変数を表す上記部分文字列と、該部分文字列の桁数と、が関連付けられている項目定義情報を参照し、上記部分文字列に対応する上記必須部分文字列の桁数を取得し、上記必須部分文字列に取得した上記桁数を代入する。続いて、上記桁数を代入した上記必須部分文字列と上記関連情報とを用いて、関連する該必須部分文字列各々の上記桁数を取得し、取得した上記桁数各々を上記必須部分文字列各々に対応する上記部分文字列の分割位置を示す数値とする。続いて、上記分割位置に従い、抽出した上記文字列に含まれる上記部分文字列を分割し、分割した部分文字列各々の桁範囲と、該分割した部分文字列各々に名称を割り振りる。続いて、上記元制約情報の抽出した上記文字列に含まれる上記部分文字列のうち分割された上記部分文字列を、分割した上記部分文字列の名称を用いた表現に変換して変換後制約情報を生成する。続いて、上記変換後制約情報を入力として、SMTソルバを用いて上記変換後制約情報が有する条件各々の充足値を求める。上記充足値各々を用いて変換後制約の充足値から元制約情報の有する条件を充足するテストデータを生成する。実施の形態によれば、SMTソルバの時間計算量を削減することができるという効果を奏する。本実施の態様では、制約に含まれる文字列ごとに、複数の文字列間の関連を記憶した情報を参照して他文字列と一致する部分文字列を求め、該部分文字列を1つの要素とする配列に変換し、制約を変換する。元の文字列制約の例文字列1=subString4文字文字列2=subString3文字文字列4=文字列312文字変換後の文字列制約における文字列表現の例文字列1=要素11要素文字列2=要素21要素文字列3=要素3要素4要素53要素文字列4=要素6要素7要素83要素変換後の文字列制約の例要素1=要素3要素2=要素4要素6=要素3要素7=要素4要素8=要素5要素1は文字列1、要素2は文字列2、要素3、要素4、要素5は文字列3、要素6、要素7、要素8は文字列4にそれぞれ対応する。その後、変換した制約をSMTソルバの入力として充足値求め、求めた充足値を用いてテストデータを生成する。その結果、SMTソルバの時間計算量を削減することができる。以下図面に基づいて、本発明の実施形態について詳細を説明する。テストデータ生成装置1について説明する。図1は、テストデータ生成装置のハードウェアの一実施例を示す図である。テストデータ生成装置1は、制御部2、記憶部3、記録媒体読取装置4、入出力インタフェース5入出力I/F、通信インタフェース6通信I/Fなどを備えている。また、上記各構成部はバス7によってそれぞれ接続されている。制御部2は、後述する生成部201、分割部202、定義部203、制約変換部204、充足値生成部205、充足値変換部206などを有している。また、制御部2はCentralProcessingUnitCPU、マルチコアCPU、プログラマブルなデバイスFieldProgrammableGateArrayFPGA、ProgrammableLogicDevicePLDなどを用いることが考えられる。記憶部3は、制御部2が実行するプログラムや後述する関連パターン情報207、元制約情報208、項目定義情報209、元制約充足情報210を記憶している。また、部分文字列関連情報211、項目分割情報212、データ表現情報213、変換後制約情報214、変換後制約充足値情報215などを記憶している。記憶部3は、例えばReadOnlyMemoryROM、RandomAccessMemoryRAMなどのメモリやハードディスクなどが考えられる。なお、記憶部3にはパラメータ値、変数値などのデータを記録してもよいし、実行時のワークエリアとして用いてもよい。上記関連パターン情報207、元制約情報208、項目定義情報209、元制約充足情報210を記憶している。また、部分文字列関連情報211、項目分割情報212、データ表現情報213、変換後制約情報214、変換後制約充足値情報215などは、データベースに記録されていてもよい。記録媒体読取装置4は、制御部2の制御に従って記録媒体8に対するデータのリード/ライトを制御する。そして、記録媒体8に記録媒体読取装置4の制御で書き込まれたデータを記録させたり、記録媒体8に記録されたデータを読み取らせたりする。また、着脱可能な記録媒体8は、コンピュータで読み取り可能なnontransitory非一時的な記録媒体として、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置HDDなどがある。光ディスクには、DigitalVersatileDiscDVD、DVD-RAM、CompactDiscReadOnlyMemoryCD-ROM、CD-R/RWReWritableなどがある。光磁気記録媒体には、MagnetoOpticaldiskMOなどがある。なお、記憶部3もnontransitory非一時的な記録媒体に含まれる。入出力インタフェース5には、入出力部9が接続され、利用者が入力した情報例えば、プログラムや仕様などのデータを受信し、バス7を介して制御部2または記憶部3などに送信する。また、制御部2からの命令に従ってディスプレイの画面上に出力情報プログラムのテスト結果やテストデータなどや操作情報などを表示する。入出力部9の入力装置は、例えば、キーボード、ポインティングデバイスマウスなど、タッチパネルなどが考えられる。なお、入出力部9の出力部であるディスプレイは、例えば、液晶ディスプレイなどが考えられる。また、出力部はCathodeRayTubeCRTディスプレイ、プリンタなどの出力装置であってもよい。通信インタフェース6は、LocalAreaNetworkLAN接続やインターネット接続や無線接続を行うためのインタフェースである。また、通信インタフェース6は必要に応じ、他のコンピュータとの間のLAN接続やインターネット接続や無線接続を行うためのインタフェースである。また、他の装置に接続され、外部装置からのデータの入出力を制御する。このようなハードウェア構成を有するコンピュータを用いることによって、後述する各種処理機能例えば、図7、図9、図11、図13、図15、図18に示すフローが実現される。その場合システムが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体8に記録しておくことができる。プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD-ROMなどの記録媒体8が販売される。また、プログラムをサーバコンピュータの記憶装置に記録しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。プログラムを実行するコンピュータは、例えば、記録媒体8に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶部3に記録する。そして、コンピュータは、自己の記憶部3からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、記録媒体8から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。図2は、テストデータ生成装置の制御部と記憶部の一実施例を示す図である。生成部201は、後述する関連パターン情報を参照し、文字列のパターンと一致するプログラムの仕様に基づいて生成されるテストの条件を有する元制約情報に含まれる文字列を抽出する。関連パターン情報は、変数を表す部分文字列各々を用いて表現される文字列の表現パターン、該文字列の表現において必須となる前記部分文字列各々の桁数を求める式パターン、前記部分文字列各々の関連していることを示す関連パターン、が関連付けられている。また、生成部201は、関連パターン情報を参照し、抽出した文字列に対応する式パターンを取得し、取得した式パターンと関連パターンに、抽出した文字列に含まれる部分文字列を代入し、必須部分文字列と関連情報を求める。生成部201は、後述する項目定義情報を参照し、部分文字列に対応する必須部分文字列の桁数を取得し、必須部分文字列に取得した桁数を代入する。項目定義情報は、元制約情報に含まれる変数を表す部分文字列と、該部分文字列の桁数と、が関連付けられている。分割部202は、桁数を代入した必須部分文字列と関連情報とを用いて、関連する該必須部分文字列各々の桁数を取得し、取得した桁数各々を必須部分文字列各々に対応する部分文字列の分割位置を示す数値を求める。定義部203は、分割位置に従い、抽出した文字列に含まれる部分文字列を分割し、分割した部分文字列各々の桁範囲と、該分割した部分文字列各々に名称を割り振る。制約変換部204は、元制約情報から抽出した文字列に含まれる部分文字列のうち分割された部分文字列を、分割した部分文字列の名称を用いた表現に変換して後述する変換後制約情報を生成する。充足値生成部205は、変換後制約情報を入力として、SMTソルバを用いて変換後制約情報が有する条件各々の充足値を求める。充足値変換部206は、充足値各々を用いて変換後制約の充足値から元制約情報の有する条件を充足するテストデータを生成する。テストデータ生成装置の動作について説明する。例えば、商品検索用アプリケーションを用いて説明をする。なお、本例では商品検索用アプリケーションを用いて説明するが、商品検索用アプリケーションに限定されるものではない。図3は、商品検索用アプリケーションの画面の一実施例を示す図である。図3に示す商品検索アプリケーションは、入出力部9の出力装置に表示される商品検索画面301を用いて商品を検索し、検索結果をする商品検索結果画面305または商品検索結果画面307に表示する。商品検索画面301には、メーカ名を入力するためのテキスト入力部302、カテゴリ名を入力するためのテキスト入力部303、検索を開始するための実行ボタン304検索結果が配置されている。本例では、テキスト入力部302にMaker1が入力され、テキスト入力部303にCategory1が入力された場合が示されている。商品検索結果画面305は、入力されたメーカ名またはカテゴリ名に基いて検索した結果、一致する商品がない場合に表示される画面で、マッチする商品はありませんなどのメッセージを表示する。商品検索結果画面307は、入力されたメーカ名またはカテゴリ名に基いて検索した結果、一致する商品がある場合に表示される画面である。商品検索結果画面307のテーブル308は、行が選択されたことを示す選択と、商品名を表示する商品名と、商品名に関連する商品コードを表示する商品コードとを表示する情報を有する。選択は、本例では選択されると●が表示され、選択されていない状態では○が表示される。商品名には、本例ではProduct1Product2が示されている。商品コードには、本例では空であるが実際には商品名に関連する商品コードを表示される。商品検索結果画面307の実行ボタン309詳細は、選択されると商品名に関連付けられている単価在庫数が表示される。商品検索結果画面305と商品検索結果画面307の実行ボタン306と310戻るは、商品検索画面301の画面に戻る場合に選択するボタンである。商品検索用アプリケーションは、商品検索画面301のテキスト入力部302、303から入力されたメーカ名とカテゴリ名を用いて、記憶部3または外部のデータベースシステムなどに記憶されているデータベースDBを検索して商品検索結果を求める。DBの例を図4に示す。図4は、商品検索用アプリケーションのDBの一実施例を示す図である。DB401は、メーカDB402またはメーカテーブル、カテゴリDB403またはカテゴリテーブル、商品DB404または商品テーブル、在庫状況DB405または在庫状況テーブルを有している。メーカDB402は、メーカ名を記憶する名前と、名前に記憶されているメーカ名各々に関連付けられているコードが記憶されているコードとを有している。カテゴリDB403は、カテゴリ名を記憶する名前と、名前に記憶されているカテゴリ名各々に関連付けられているコードが記憶されているコードとを有している。商品DB404は、商品名を記憶する商品名と、商品名に記憶されている商品名各々に関連付けられている商品コードが記憶されている商品コードと、商品名各々に関連付けられている単価が記憶されている単価とを有している。在庫状況DB405には、商品DB404の商品名に記憶されている商品名各々関連付けられている商品コードが記憶されている商品コードと、商品コード各々に関連付けられている商品の在庫数が記憶されている在庫数とを有している。商品検索用アプリケーションでは、商品検索画面301のテキスト入力部302、303にメーカ名とカテゴリ名が入力されて実行ボタン304検索結果が選択されると、DB401のメーカDB402とカテゴリDB403各々の名前を参照する。そして、入力されたメーカ名とカテゴリ名とに一致する名前を検索する。検索された場合には、メーカDB402とカテゴリDB403各々の名前に関連付けられているメーカDB402とカテゴリDB403各々のコードを用いて、該コード各々を含む商品コードが商品DB404の商品コードに存在するかを検索する。一致する商品コードが存在した場合には、商品検索結果画面305を表示する。また、実行ボタン309詳細が選択されると、商品DB404と在庫状況DB405を参照して、現在選択されている商品の単価と在庫数が表示される。次に、商品検索用アプリケーションにおけるデータの定義について説明する。図5は、項目定義情報のデータ構造の一実施例を示す図である。図2の項目定義情報209は、例えば、図5に示す画面に関する項目定義情報501やDBに関する項目定義情報502などがある。項目定義情報501は、画面項目型桁などの情報を記憶する。画面には、画面を識別するための識別情報が記憶されている。本例では、商品検索画面301を示す検索画面が記憶されている。項目には、検索画面に記憶されている画面に設けられている項目などを識別する情報が記憶されている。例えば、プログラムで扱う変数に対応する名称などが記憶されている。本例では、商品検索画面301のテキスト入力部302、303を用いて入力されるデータが代入される変数に対応する情報メーカカテゴリが記憶されている。型には、項目に対応する変数などのデータの型が記憶されている。データの型は、例えば、プログラムで扱うことができる変数などの型などである。本例では、項目の情報各々に対応する文字列などが記憶されている。桁には、項目に対応する変数などのデータの桁桁数が記憶されている。本例では、項目のメーカカテゴリに対応する文字列の桁10が記憶されている。項目定義情報502は、DB項目型桁などの情報を記憶する。本例では、図4のDB401に関する項目定義情報が示されている。DBには、DBなどに含まれるデータベース情報またはテーブルを識別する情報が記憶される。本例では、データベース情報としてメーカDBを示すメーカ、カテゴリDBを示すカテゴリ、商品DBを示す商品、在庫状況DBを示す在庫状況が記憶されている。項目には、DBに記憶さえているデータベース情報各々に対応するカラムが記憶されている。本例では、メーカに関連する項目として名前コードと、カテゴリに関連する項目として名前コードとが記憶されている。また、商品に関連する項目として商品名商品コード単価と、在庫状況に関連する項目として商品コード在庫数とが記憶されている。型には、項目に対応する変数などのデータの型が記憶されている。データの型は、例えば、プログラムで扱うことができる変数の型である。本例では、項目に記憶されている情報各々に対応する型として文字列文字列非負整数文字列非負整数が記憶されている。桁には、項目に対応する変数などのデータの桁桁数が記憶されている。本例では、項目に記憶されている情報各々に対応する桁として104101310が記憶されている。元制約情報について説明をする。元制約情報208は、仕様に基づいて生成したテスト項目と、アプリケーションで使用する各種スタブ例えば、データベーススタブやネットワークスタブなどの制約項目と、を用いて生成される情報である。例えば、上記商品検索用アプリケーションをテストするために用いる元制約情報を図6に示す。図6は、元制約情報の一実施例を示す図である。図6の元制約情報603は、テスト項目6011~3と、制約項目6024~7とを用いて生成される。元制約情報603は、例えば、テスト項目6011~3と制約項目6024~7に示されている条件を、形式的に記述したものである。記述例numOfRecord記述1subStr記述2上記記述1はconditionを満たすテーブルTのレコードrの数という意味を表し、上記記述2は項目Xのi番目からj1番目の文字列という意味を表している。図7は、テストデータ生成装置の動作の一実施例を示すフロー図である。ステップS101で生成部201は後述する関連パターン情報207を用いて元制約情報208を解析して、後述する部分文字列関連情報211を生成する。関連パターン情報207は、例えば、図8に示すようなパターンが考えられる。図8は、関連パターン情報のデータ構造の一実施例を示す図である。図8の関連パターン情報801は、No表現パターン式パターン関連パターンなどの情報を有している。Noには、表現パターンに記憶されている文字列を識別する情報が記憶されている。本例では、P1P2P3P12が記憶されている。表現パターンには、変数を表す部分文字列各々を用いて表現される文字列のパターンが記憶されている。本例では、表現パターンとして大小関係を示すstr1Sstr1str2がP1P2に関連付けられて記憶されている。また、部分文字列に関する関係を示すcharAtCcharAtcharAtsubStringSsubStringstr2subStringsubStringprefixprefixがP3~P9に関連付けられて記憶されている。また、文字列長に関する関係を示すstrLengthNstrLengthNstrLengthstrLengthがP10~P12に関連付けられて記憶されている。上記表現パターンの記述について説明する。straは、strのa番目の文字単独で構成される部分文字列を示している。strabは、a番目からb1番目までの文字からなるstrの部分文字列を示している。charsは、stristri1strj1を示している。dは、Xの桁数最大文字列長、Xが文字列リテラルの場合はその長さを示している。str連番Nは文字列変数を示している。連番は数値を示している。Sは文字列リテラルを示している。Cは文字リテラルを示している。はstr2という表現を考える。str1str2はorandと捉えるため、str105、str205が必須部分文字列となる。なお、str205を切り出せば、str2の6文字目以降を切り出すことができる。mindはdとdのうち小さい方の値が代入される。表現パターンcharAtCの場合は、例えば、str1の式をstr1N1にする。なお、charAtAといった制約の表現では、str1の4文字目0発進を特別扱いする。表現パターンcharAtcharAtの場合は、例えば、str1の式をstr1N1にし、str2をstr2N2にする。表現パターンsubStringSの場合は、例えば、str1の式をstr1N1N2にする。表現パターンsubStringstr2の場合は、例えば、str1の式をstr1N1N2にし、str2の式をstr20N2N1にする。NoP2の表現と同様、お互いに対応する文字が存在する部分とそうでない部分とを区別した表現を行うため、str1のN1からN21文字目とstr2の先頭N2N1文字を切り出す。表現パターンsubStringsubStringの場合は、例えば、str1の式をstr1N1N2にし、str2の式をstr2N3N4にする。表現パターンprefixの場合は、例えば、str1の式をsrt10dにする。prefixという表現は、str103ABCと等価である。d3に注意。表現パターンprefixの場合は、例えば、str1の式をcharsにし、str2の式をcharsにする。str2の長さが可変であるので、str1str2について、str2の桁数-1番目までの全ての文字を分けて考える。表現パターンstrLengthNの場合は、例えば、str1の式をstr1N1str1Nにする。strLength4はstr130andstr140と捉えるため、str1の3文字目と4文字目を切り出す。表現パターンstrLengthNの場合は、例えば、str1の式をstr1Nにする。表現パターンstrLengthstrLengthの場合は、例えば、str1の式をcharsdにし、str2の式をcharsdにする。str1、str2の長さが可変であるので、お互いに対応する文字が存在する全ての文字は切り出す。関連パターンには、部分文字列各々が関係していることを示す情報が記憶されている。例えば、str1str2は、str1とstr2の部分文字列が関係していることを示している。ステップS101の動作について図9を用いて説明する。図9は、生成部の動作の一実施例を示すフロー図である。ステップS201では、生成部201が元制約情報208の未選択の文字列を抽出する。例えば、図6の1~7から文字列を抽出する。抽出した文字列の例r名前検索画面メーカ上記抽出した文字列の例は、図6の元制約情報603の1の行から抽出した文字列である。文字列の抽出は、予め記憶部3に記憶されている文字列に示されている表現各々と、元制約情報208に記憶されている文字列の表現とを、例えば、パターンマッチングなどの技術を用いて比較し、パターンが一致する文字列を抽出する。なお、パターンマッチング以外でも、文字列の表現が一致することが判定できれば限定されるものではない。ステップS202では、生成部201がステップS201でパターンが一致する文字列が抽出されたか否かを判定し、文字列が抽出されない場合には生成部201の処理を終了Yesし、抽出された場合はステップS203Noに移行する。文字列が抽出されない場合とは、元制約情報208にパターンが一致する文字列がないか、または元制約情報208に含まれている文字列についてすべてを抽出してしまい、これ以上抽出すべき文字列がないことを示している。ステップS203では、生成部201がステップS201で抽出した文字列に対して、関連パターン情報207のうち未選択の表現パターンを取得する。例えば、図8のP1から順番に行を選択し表現パターンに記憶されている文字列を取得することが考えられる。ステップS204では、生成部201が抽出した文字列と取得した表現パターンを比較し、パターンが一致する場合にはステップS205Yesに移行し、一致しない場合にはステップS206Noに移行する。例えば、上記抽出した文字列の例の場合、図8の関連パターン情報801のNoP2と一致する。ステップS205では、生成部201が一致した表現パターンを記憶部3に記憶する。ステップS206では、生成部201が現在選択されている文字列に対して関連パターン情報207の表現パターンを全て選択したか否かを判定し、全ての表現パターンが選択されていればステップS206Yesに移行する。未選択の表現パターンがなければステップS203Noに移行する。関連パターン情報801の例であれば、NoP1からP12までの表現をすべて選択した場合にステップS207Yesに移行する。ステップS207では、生成部201が一致した文字列に含まれる変数となる部分文字列を、関連パターン情報207の式パターンに記憶されている式に当てはめて、部分文字列関連情報211に記憶する。例えば、上記抽出した文字列の例について説明する。抽出した文字列がr名前検索画面メーカとすると、一致する表現パターンは関連パターン情報801のNoP2の表現パターンになる。そうすると抽出した文字列r名前検索画面メーカを参照し、NoP2の表現パターンに対応する式パターンのstr10mindstr20mindを選択することになる。str1str2各々に対応する部分文字列変数は、それぞれstr1がメーカDB402の有する部分文字列変数メーカ名前となり、str2が商品検索画面301の有する部分文字列変数検索画面メーカとなる。なお、抽出した文字列r名前検索画面メーカ内のrはメーカDB402を示すメーカに変換されている。次に、パターンstr10mindstr20mindのstr1str2各々に、メーカ名前と検索画面メーカを代入する。その結果、代入した式を得る。代入した式の例メーカ名前0mind検索画面メーカ0mindステップS208では、生成部201が項目定義情報209から関連するデータを取得し、ステップS207で生成した式に代入する。関連するデータは、例えば、桁などが考えられる。上記説明した生成した式の例の場合、dとdは、メーカ名前と検索画面メーカ各々の文字列の桁を代入する。検索画面メーカに対応する関連するデータとして図5の項目定義情報501の桁に記憶されている10を取得する。また、メーカ名前に対応する関連するデータとして図5の項目定義情報502の桁に記憶されている10を取得する。その後、生成した式の例に示した対応箇所に、取得した関連データである桁を代入する。生成した式にデータを代入した例メーカ名前0min→メーカ名前010検索画面メーカ0min→検索画面メーカ010ステップS209では、生成部201が部分文字列関連情報211の必須部分文字列にステップS208で代入した式を記憶する。例えば、図10に示す部分文字列関連情報101に示すように記憶する。図10は、部分文字列関連情報のデータ構造の一実施例を示す図である。図10の部分文字列関連情報101は、No関連文字列項目必須部分文字列に記憶する情報を有する。Noには、部分文字列関連情報101の行ごとに割り振られる情報で、本例では、R1R2R3R10が記憶されている。関連は、必須部分文字列が関係していることを示している。例えば、関連パターン情報801に必須部分文字列が関係していることを示す情報が記憶されている。本例では、メーカ名前検索画面メーカカテコ ゙リ名前検索画面カテコ ゙リメーカ名前検索画面メーカ在庫状況商品コート ゙商品商品コート ゙が記憶されている。例えば、関連パターン情報801の関連にstr1str2が記憶されていて、str1がメーカ名前でstr2が検索画面メーカである場合は、メーカ名前検索画面メーカが記憶される。文字列項目には項目を示す情報が記憶される。本例では、No各々に関連付けられて文字列項目メーカ名前検索画面メーカカテコ ゙リ名前検索画面カテコ ゙リメーカ名前検索画面メーカ在庫状況商品コート ゙商品商品コート ゙が記憶されている。例えば、R1には文字列項目メーカ名前検索画面メーカが記憶されている。必須部分文字列には、必須部分文字列を示す情報が記憶される。本例では、文字列項目各々に関連付けられて必須部分文字列str010]str010]str010]str013]が記憶されている。なお、本例では必須部分文字列の文字列項目はstrで表しているが、文字列項目を用いて表してもよい。図7のステップS102の説明をする。ステップS102では、分割部202が部分文字列関連情報211を用いて項目分割情報を抽出する。ステップS102の動作について図11を用いて説明する。図11は、分割部の動作の一実施例を示すフロー図である。ステップS301では、分割部202が項目分割情報212を初期化する。図12は、項目分割情報のデータ構造の一実施例を示す図である。図12の項目分割情報121は画面情報に関する項目分割情報で、図2の項目分割情報212は、例えば、図5に示す画面に関する項目定義情報501やDBに関する項目定義情報502などがある。項目定義情報121は、画面項目分割位置などの情報を記憶する。画面には、画面を識別するための識別情報が記憶されている。本例では、商品検索画面301を示す検索画面が記憶されている。項目には、画面に記憶されている画面に設けられている項目などを識別する情報が記憶されている。例えば、プログラムで扱う変数に対応する名称などが記憶されている。本例では、商品検索画面301のテキスト入力部302、303を用いて入力されるデータが代入される変数に対応する情報メーカカテゴリが記憶されている。分割位置には、項目に対応する文字列変数などのデータを分割する位置が記憶されている。本例では、項目各々に対応する文字列変数の分割位置として010010が記憶されている。項目定義情報122は、DB項目分割位置などの情報を記憶する。本例では、図4のDB401に関する項目定義情報が示されている。DBには、DBなどに含まれるデータベース情報またはテーブルを識別する情報が記憶される。本例では、データベース情報としてメーカDBを示すメーカ、カテゴリDBを示すカテゴリ、商品DBを示す商品、在庫状況DBを示す在庫状況が記憶されている。項目には、DBに記憶されているデータベース情報各々に対応するカラムが記憶されている。本例では、メーカに関連する項目として名前コードと、カテゴリに関連する項目として名前コードとが記憶されている。また、商品に関連する項目として商品名商品コード単価と、在庫状況に関連する項目として商品コード在庫数とが記憶されている。分割位置には、項目各々に対応する文字列変数などのデータを分割する位置が記憶されている。本例では、項目各々に対応する文字列変数の分割位置として0100401004713が記憶されている。なお、ステップS301において、分割部202が項目分割情報121と122とを初期化するとは、分割位置の内容をすべてにすることである。ステップS302では、分割部202が部分文字列関連情報211の未選択の行を選択する。ステップS303では、分割部202が部分文字列関連情報211の必須部分文字列を項目分割情報212の分割位置に反映させる。ステップS304では、分割部202が二項間の分割位置を反映させる。ステップS305では、部分文字列関連情報の全ての行を選択したか否かを判定し、全てを選択した場合にはステップS306Yesに移行し、未選択の行がある場合にはステップS302Noに移行する。ステップS302~S305の動作について説明する。例えば、図10の部分文字列関連情報101のR1に対応する行から順番に選択する場合について説明する。ステップS302でR1に対応する行が選択された場合、ステップS303では部分文字列関連情報101の文字列項目メーカ名前検索画面メーカを参照して項目分割情報121、122の必須部分文字列を反映させる分割位置を特定する。R1の場合、文字列項目がメーカDB402の名前を示しているので、項目分割情報122の1行目の分割位置が特定される。また、文字列項目が商品検索画面301の入力部302のメーカを示しているので、項目分割情報121の1行目の分割位置が特定される。その後、特定され項目分割情報122の1行目の分割位置に必須部分文字列の開始位置と終了位置示す情報例えば、010などを記憶させる。また、特定され項目分割情報121の1行目の分割位置に必須部分文字列の開始位置と終了位置示す情報例えば、010などを記憶させる。次に、R1~R3の処理が完了してステップS302でR4に対応する行が選択された場合について説明する。ステップS303では部分文字列関連情報101の文字列項目商品商品コート ゙メーカコート ゙を参照して項目分割情報121、122の必須部分文字列を反映させる分割位置を特定する。R4の場合、文字列項目が商品DB404の商品コードを示しているので、項目分割情報122の6行目の分割位置が特定される。また、文字列項目がメーカDB402のコードを示しているので、項目分割情報122の2行目の分割位置が特定される。その後、特定され項目分割情報122の6行目の分割位置に必須部分文字列の開始位置と終了位置示す情報例えば、04などを記憶させる。また、特定された項目分割情報122の2行目の分割位置に必須部分文字列の開始位置と終了位置示す情報例えば、04などを記憶させる。次に、R1~R8の処理が完了してステップS302でR9に対応する行が選択された場合について説明する。ステップS303では部分文字列関連情報101の文字列項目商品商品コート ゙在庫状況商品コート ゙を参照して項目分割情報121、122の必須部分文字列を反映させる分割位置を特定する。R9の場合、文字列項目が商品DB404の商品コードを示しているので、項目分割情報122の6行目の分割位置が特定される。また、文字列項目が在庫状況DB405のコードを示しているので、項目分割情報122の8行目の分割位置が特定される。その後、特定され項目分割情報122の6行目の分割位置に必須部分文字列の開始位置と終了位置示す情報例えば、013などを反映させる。このとき、既に分割位置にデータがある場合は、今回取得した情報を追加する。本例であれば、既にある情報04に今回取得した情報013を追加して0413を生成する。また、特定され項目分割情報122の8行目の分割位置に必須部分文字列の開始位置と終了位置示す情報例えば、013などを反映させる。このとき、既に分割位置にデータがある場合は、今回取得した情報を追加する。本例であれば、R8の行さ選択されたときに既にある情報が047であるので、今回取得した情報013を追加して04713を生成する。ステップS304では、分割部202が二項間の分割位置を反映させる。例えば、部分文字列関連情報101のR1の場合は、部分文字列関連情報101の関連のメーカ名前検索画面メーカを参照して、メーカDB402の名前と検索画面DB405のメーカの二項を選択する。しかし、選択した二項に対応する項目分割情報122の分割位置各々には同じ010が記憶されているので、分割位置の情報はともに010のまま変更されない。部分文字列関連情報101のR4の場合は、部分文字列関連情報101の関連の商品商品コート ゙メーカコート ゙を参照して、商品DB404のコードとメーカDB402のコードの二項を選択する。しかし、選択した二項に対応する項目分割情報122の分割位置各々には同じ04が記憶されているので、分割位置の情報はともに04のまま変更されない。部分文字列関連情報101のR9の場合であれば、部分文字列関連情報101の関連の商品商品コート ゙在庫状況商品コート ゙を参照して、商品DB404の商品コードと在庫状況DB405の商品コードの二項を選択する。選択した二項に対応する項目分割情報122の分割位置の商品DB404の商品コードには04713が記憶されている。また、選択した二項の項目分割情報122の分割位置の在庫状況DB405の商品コードには013が記憶されている。そこで、選択した二項に対応する項目分割情報122の分割位置各々の情報を同じにするため、在庫状況DB405の商品コードの013に商品DB404の商品コードの04713を反映させる。ステップS305では、分割部202が部分文字列関連情報211のすべての行を選択したか否かを判定し、すべての行を選択した場合にはステップS306Yesに移行し、未選択の行がある場合にはステップS302Noに移行する。部分文字列関連情報101の例であれば、R1~R10に対応する行をすべて選択されていれば、ステップS306Yesに移行する。ステップS306では、分割部202が反映ステップS302~S305の処理の前初期化または前回のステップS302~S305の処理と後今回のステップS302~S305の処理で、部分文字列関連情報211のすべての分割位置を比較する。そして、反映の前後で部分文字列関連情報211のすべての分割位置が変化していればステップS307Yesに移行し、変化していない場合にはこの処理を終了する。ステップS301で分割部202が初期化または前回の項目分割情報212と、ステップS305までの処理により生成された項目分割情報212とを比較する。例えば、初期化した直後は項目分割情報121、122の分割位置の情報はすべて{}で、その後のステップS302~S305により生成される項目分割情報121、122の分割位置の情報は図12に示した状態になる。その結果、項目分割情報121、122は反映の前後で変化しているので、ステップS307Yesに移行する。また、初期化後の1回目のステップS302~S305の処理である図12に示した状態の項目分割情報121、122の分割位置のすべての情報と、次のステップS302~S305の処理の結果が図12に示した項目分割情報121、122の分割位置のすべての情報と、が同じであるならこの処理を終了する。ステップS306の処理は、項目分割情報212を生成する際に、部分文字列関連情報211の行の選択する順番により、ステップS304の二項間の分割位置が反映されないことを避けるための処理である。この処理を実行することにより、項目分割情報212に二項間の分割位置の反映がされる。図7のステップS103の説明をする。ステップS103では、定義部203が項目分割情報212と項目定義情報209とを用いてデータ表現情報を抽出する。ステップS103の動作について図13を用いて説明する。図13は、定義部の動作の一実施例を示すフロー図である。ステップS401では、定義部203が項目分割情報212の未選択の行を選択する。例えば、図12に示した項目分割情報121、122を選択し、項目分割情報121の最初の行から順番に選択をし、項目分割情報121の行をすべて選択し終えたら、項目分割情報122の最初の行を選択し、順番に行を選択することが考えられる。ステップS402では、定義部203がステップS401で選択した行に対応する項目定義情報209を取得する。例えば、図12の項目分割情報122の6行目が選択された場合、商品DB404の商品コードに対応する図5の項目定義情報502の6行目が選択され、商品商品コード文字列13を取得する。ステップS403では、定義部203が選択した項目分割情報212の分割位置が空{}であるか否かを判定し、空{}である場合にはステップS404Yesに移行し、空{}でない場合にはステップS405Noに移行する。ステップS404では、定義部203が項目分割情報212の分割位置の空{}に関連付けられている項目と一致する、項目定義情報209の項目に関連付けられている桁各々を取得する。次に、データ表現情報213の上記項目定義情報209の項目と一致する項目に対応する桁範囲に、0から桁-1を入力する。データ表現情報213は、例えば、図14に示すデータ表現情報141、142などが考えられる。図14は、データ表現情報のデータ構造の一実施例を示す図である。データ表現情報141は、例えば、画面項目データ表現などの情報を記憶する。画面には、画面を識別するための識別情報が記憶されている。本例では、図3に商品検索画面301に関連することを示す検索画面が記憶されている。項目には、画面に記憶されている検索画面に設けられている項目などを識別する情報が記憶されている。例えば、プログラムで扱う変数に対応する名称などが記憶されている。本例では、商品検索画面301のテキスト入力部302、303を用いて入力されるデータが代入される変数に対応する情報メーカカテゴリが記憶されている。データ表現は、桁範囲対応データ項目を有している。桁範囲には、項目各々に対応する桁数から1を引いた値が記憶される。本例では、桁範囲に0-90-9が記憶されている。対応データ項目には、項目各々に対応する項目名が記憶される。本例では、項目にメーカカテゴリが記憶されている。データ表現情報142は、DB項目データ表現などの情報を記憶する。本例では、図4のDB401に関するデータ表現情報が示されている。DBには、DBなどに含まれるデータベース情報またはテーブルを識別する情報が記憶される。本例では、データベース情報としてメーカDBを示すメーカ、カテゴリDBを示すカテゴリ、商品DBを示す商品、在庫状況DBを示す在庫状況が記憶されている。項目には、DBにあるデータベース情報各々に対応するカラムが記憶されている。本例では、メーカに関連する項目として名前コードと、カテゴリに関連する項目として名前コードとが記憶されている。また、商品に関連する項目として商品名商品コード単価と、在庫状況に関連する項目として商品コード在庫数とが記憶されている。データ表現は、桁範囲対応データ項目を有している。桁範囲には、項目各々に対応する桁数から1を引いた値が記憶される。本例では、桁範囲に0-90-40-90-9が記憶されている。対応データ項目には、項目各々に対応する項目名が記憶される。本例では、項目に名前コード名前在庫数が記憶されている。ステップS404で定義部203は、例えば、項目分割情報122の分割位置の5、7、9行目の空{}に関連付けられている項目と一致する、項目定義情報502の項目に関連付けられている桁各々を取得する。本例では、項目定義情報502の桁からそれぞれ101010を取得する。次に、データ表現情報141の上記項目定義情報502の項目と一致する項目に対応する桁範囲に、0-9を入力する。本例では、データ表現情報141の桁範囲の5、9、13に0-9が記憶される。9は、桁10から1を引いて数値であり、-は、例えば範囲を示す記号で、0-9であれば0から9範囲を示す。ステップS405では、定義部203が項目分割情報212の分割位置の先頭の分割位置を示す数値を選択する。例えば、項目分割情報122の分割位置の6行目の04713が選択されているとすると、0が選択される。ステップS406では、定義部203が現在選択されている分割位置の数値の次に、分割位置を示す数値が存在するか否かを判定し、存在する場合にはステップS407Yesに移行し、存在しない場合にはステップS410Noに移行する。例えば、項目分割情報122の分割位置の6行目の04713が選択されているとすると、0の次に4が存在するのでステップS407Yesに移行する。ステップS407では、定義部203が現在選択されている項目に対応する分割位置の数値の次の数値と、現在選択されている項目に一致する項目定義情報209に対応する桁とを比較する。次の数値<桁であるときステップS408Yesに移行し、次の数値<桁でない場合ステップS410Noに移行する。例えば、項目分割情報122の分割位置の6行目の04713が選択されているとすると、0の次に4が存在し、現在選択されている項目に一致する項目定義情報502の6行目に対応する桁が13である。よって、次の数値4<桁13なのでステップS408Yesに移行する。ステップS408で定義部203は、現在選択されている桁範囲に選択している分割位置の数値から次の分割位置の数値-1を生成するとともに、対応する行を生成してデータ表現情報213に追加する。例えば、項目分割情報122の分割位置の6行目の04713のうち、現在選択されている分割位置の数値が0で、次の分割位置を示す数値が4である場合、図14のデータ表現情報142の桁範囲の6行目に対応する行が生成される。すなわち、商品商品コード0-3商品コード1が生成され、データ表現情報142に追加される。データ表現情報142の商品商品コードは、データ表現情報142の項目と一致する項目分割情報122の商品商品コードを記憶する。0-3は、選択している分割位置の数値0から次の分割位置の数値-14-1を求めて記憶する。商品コード1は、生成した新しい項目名である。本例では、項目の商品コードに連番1を付している。また、項目分割情報122の分割位置の6行目の04713のうち、現在選択されている分割位置の数値が4で、次の分割位置を示す数値が7である場合、図14のデータ表現情報142の桁範囲の7行目に対応する行が生成される。すなわち、商品商品コード4-6商品コード2が生成され、データ表現情報142に追加される。データ表現情報142の商品商品コードは、データ表現情報142の項目と一致する項目分割情報122の商品商品コードを記憶する。4-6は、選択している分割位置の数値4から次の分割位置の数値-17-1を求めて記憶する。商品コード2は、生成した新しい項目名である。本例では、項目の商品コードに連番2を付している。ステップS409では、定義部203が次の分割位置の数値を選択し、ステップS406に移行する。例えば、項目分割情報122の分割位置の6行目の04713のうち、現在選択されている分割位置の数値が0で、次の分割位置を示す数値が4である場合には、4が選択される。ステップS410では、定義部203が現在選択されている桁範囲に現在選択されている分割位置の数値と、項目定義情報209の対応する桁から1を引いた値とを用いて桁範囲を生成し、桁範囲に対応する行をデータ表現情報213に追加する。例えば、項目分割情報122の分割位置の6行目の04713のうち、現在選択されている分割位置の数値が7で、次の分割位置を示す数値が13である場合、ステップS407からステップS410に移行する。そして、図14のデータ表現情報142の桁範囲の8行目に対応する行が生成される。すなわち、商品商品コード4-6商品コード3が生成され、データ表現情報142に追加される。データ表現情報142の商品商品コードは、データ表現情報142の項目と一致する項目分割情報122の商品商品コードを記憶する。7-12は、選択している分割位置の数値7から次の分割位置の数値-113-1を求めて記憶する。商品コード3は、生成した新しい項目名である。本例では、項目の商品コードに連番3を付している。ステップS411では、定義部203が項目分割情報212に未選択の項目が存在するか否かを判定し、存在する場合にはステップS401Yesに移行し、存在しない場合にはこの処理を終了Noする。図7のステップS104の説明をする。ステップS104では、制約変換部204が元制約情報208とデータ表現情報213とを用いて変換後制約情報214を抽出する。ステップS104の動作について図15を用いて説明する。図15は、制約変換部の動作の一実施例を示すフロー図である。図15のステップS201~S208では、制約変換部204が図9に示したステップS201~S208と同じ処理を行う。例えば、図6の元制約情報603の3のr2コート ゙が選択されたとすれば、文字列項目として商品商品コート ゙カテコ ゙リコート ゙が生成される。そして、必須部分文字列として商品商品コート ゙に対応するstr47とカテコ ゙リコート ゙に対応するstr03が生成される。ステップS501では、制約変換部204が生成した必須部分文字列の範囲に対応するデータ表現情報213の対応データ項目名を特定する。例えば、図6の元制約情報603の3のr2コート ゙が選択され、必須部分文字列として商品商品コート ゙に対応するstr47とカテコ ゙リコート ゙に対応するstr03が生成されている場合を考える。その場合、制約変換部204はデータ表現情報141、142から、商品商品コード4-6商品コード2を有する行が選択される。すなわち、対応データ項目名として商品コード2が特定される。ステップS502では、制約変換部204がステップS501で特定した対応データ項目名を用いて、元制約情報208の対応する箇所を変換する。例えば、図6の元制約情報603の3において、商品コード2が特定された場合、上記r2コート ゙は、r1商品コード2r2コードのように表現される。図16に、図6の元制約情報603を、対応データ項目名を用いて変換した例を示す。図16は、変換後元制約情報の一実施例を示す図である。図16の下線部が変換された箇所を示している。図7のステップS105では、充足値生成部205が変換後制約情報214を入力として、SatisfiabilityModuloTheoriesを用いて変換後制約情報214を充足する解充足値を求め、変換後制約充足値情報215に記憶する。SMTソルバに関しては、例えば、次の非特許文献を参照されたい。足立正和,他、充足可能性判定に基づくリアルタイムシステムのスケジューリング解析、組込みシステムシンポジウム2008、平成20年10月ArminBiereMarijnHeuleHansVanMaarenTobyWalshHandbookofSatisfiabilityIOSPress2009年2月REBryantDanielKroeningOferStrichmanDecisionProceduresAnAlgorithmicPointofViewSpringer2008年7月7日図17は、SMTソルバにより求められた充足値の一実施例を示す図である。変換後制約情報161の充足値は変換後制約充足値情報215に記憶される。検索画面171の場合、商品検索画面301のテキスト入力部302、303に入力されるメーカに対応する101、カテゴリに対応する202となる。また、メーカ172の場合、メーカDB402に記憶される名前101に対応付けられるコード10001と、名前202に対応付けられるコード10002が充足値となる。カテゴリ173の場合、カテゴリDB403に記憶される名前201に対応付けられるコード20001と、名前202に対応付けられるコード20002が充足値となる。商品174の場合、商品DB404に記憶される商品名商品コード1商品コード2商品コード3単価各々に対応付けられるデータが充足値となる。商品名の充足値は301302303である。商品コード1の充足値は商品名301302303各々に関連付けられる100011000110002である。商品コード2の充足値は商品名301302303各々に関連付けられる200012000120002である。商品コード3の充足値は商品名301302303各々に関連付けられる300013000230001である。単価の充足値は商品名301302303各々に関連付けられる100020003000である。在庫状況175の場合、在庫状況DB405に記憶される商品コード1商品コード2商品コード3在庫数各々に対応付けられるデータが充足値となる。商品コード1の充足値は1000110002である。商品コード2の充足値は2000120002である。商品コード3の充足値は3000130001である。在庫数の充足値は商品コード1商品コード2商品コード3各々に関連付けられる100020003000である。ステップS106では、充足値生成部205が変換後制約情報を充足する解があるか否かを判定し、解がある場合にはステップS107Yesに移行し、解がない場合にはステップS108Noに移行する。ステップS107では、充足値変換部206が元制約充足データを生成する。図7のステップS107の説明をする。ステップS107の動作について図18を用いて説明する。図18は、制約変換部の動作の一実施例を示すフロー図である。ステップS601では、充足値変換部206が変換後制約情報の充足値変換後制約充足値情報215を文字列に変換する。ステップS602では、充足値変換部206が文字列に変換した各データをデータ表現情報213に従って結合し、元制約充足情報210を生成する。例えば、商品コード1商品コード2商品コード3に10001200130001が記憶されている場合、まず、ステップS601で文字列A001C0100001に変換される。次に、ステップS602で、データ表現情報142の6~8行目を参照してA001C0100001を結合して、A001C0100001とする。図19は、元制約充足情報のデータ構造の一実施例を示す図である。検索画面191の場合、商品検索画面301のテキスト入力部302、303に入力されるメーカに対応する101、カテゴリに対応する202を、ステップS601では、Maker0Category1に変換する。また、メーカ192の場合、メーカDB402に記憶される名前の101を、ステップS601でMaker0にし、対応付けられるコード10001をA001に変換する。また、名前の202を、ステップS601でMaker1にし、対応付けられるコード10002をA002に変換する。また、カテゴリ193の場合、カテゴリDB403に記憶される名前の201を、ステップS601でCategory0にし、対応付けられるコード20001をC001に変換する。また、名前の202を、ステップS601でCategory1にし、対応付けられるコード20002をC002に変換する。また、商品194の場合、商品DB404に記憶される商品の301302303は、ステップS601でProduct0Product1Product2に変換される。商品コードには、Product0Product1Product2各々に関連付けられている。ステップS601、S602により変換されたA001C0100001A001C0100002A002C0200001が記憶されている。単価にはProduct0Product1Product2各々に関連付けられ、100020003000が記憶されている。また、在庫状況195の場合、在庫状況DB404に記憶される商品コードは、ステップS601、S602により変換されたA001C0100001A001C0100002A002C0200001が記憶されている。在庫数にはA001C0100001A002C0200001各々に関連付けられ、100200が記憶されている。効果について説明する。本実施の態様では、制約に含まれる文字列ごとに、複数の文字列間の関連を記憶した情報を参照して他文字列と一致する部分文字列を求め、該部分文字列を1つの要素とする配列に変換し、制約を変換する。その後、変換した制約をSMTソルバの入力として充足値求め、求めた充足値を用いてテストデータを生成する。その結果、SMTソルバの時間計算量を削減することができるという効果を奏する。すなわち、項目分割情報に従って変換後制約情報を生成することで、文字配列に対する制約として表現していた文字列の制約は、部分文字列に対応する単独の値数値等に対する制約として表現され、変換後制約の複雑さが抑えられる。そのため、充足可能性判定がより効率化し、多くの文字列制約を含むデータをより高速に生成することが可能になる例えば、商品商品コードによって表現される文字列が13文字からなる場合、文字列に関する制約を3つの部分文字列に対する制約として表現できる場合、従来と比べて制約の複雑さ変数の数は3/13となり、制約に対する充足可能性判定もより効率化される。また、文字列の制約のうち、0文字目から3文字目といった、部分文字列の切り出し位置が一通りに定まっているものに対し効果的に作用する。こういった性質は業務アプリケーションの仕様に頻出するので、業務システムのテストデータ生成に寄与するところ大であるまた、本発明は、上記実施の形態に限定されるものでなく、本発明の要旨を逸脱しない範囲内で種々の改良、変更が可能である。実施形態に関し、更に以下の付記を開示する。付記1変数を表す部分文字列各々を用いて表現される文字列の表現パターンと、該文字列の表現において必須となる前記部分文字列各々の必須部分文字列の桁数を求める式パターンと、前記部分文字列各々が関連していることを示す関連パターンと、が関連付けて記憶された関連パターン情報テーブルを参照し、テスト対象のプログラムの入力データの制約条件を示す元制約情報から、前記文字列の表現パターンと一致する文字列を抽出し、前記関連パターン情報テーブルを参照して、抽出した前記文字列の前記表現パターンに対応する前記式パターン及び関連パターンを取得し、取得した前記式パターン及び前記関連パターンに、抽出した前記文字列に含まれる部分文字列を代入して、必須部分文字列と部分文字列各々が関連していることを示す関連情報を求め、前記元制約情報に含まれる変数を表す前記部分文字列と、該部分文字列の桁数と、が関連付けられている項目定義情報を参照して、前記部分文字列に対応する前記必須部分文字列の桁数を取得し、前記必須部分文字列に取得した前記桁数を代入し、前記桁数を代入した前記必須部分文字列と前記関連情報とを用いて、関連する該必須部分文字列各々の前記桁数を取得し、取得した前記桁数各々を前記必須部分文字列各々に対応する前記部分文字列の分割位置を求め、前記分割位置に従い、抽出した前記文字列に含まれる前記部分文字列を分割し、分割した部分文字列各々の桁範囲と、該分割した部分文字列各々に名称を割り振り、前記元制約情報の抽出した前記文字列に含まれる前記部分文字列のうち分割された前記部分文字列を、分割した前記部分文字列の名称を用いた表現に変換して変換後制約情報を生成する、処理をコンピュータに実行させるテストデータ生成プログラム。付記2前記変換後制約情報を入力として、SMTソルバを用いて前記変換後制約情報が有する条件各々の充足値を求め、前記充足値各々を用いて変換後制約の充足値から元制約情報の有する条件を充足するテストデータを生成する、処理を前記コンピュータに実行させること特徴とする付記1に記載のテストデータ生成プログラム。付記3前記桁数を代入したすべての前記必須部分文字列に対して、複数回、前記桁数を代入した前記必須部分文字列と前記関連情報とを用いて、関連する該必須部分文字列各々に前記桁数各々を、反映させて分割位置を求め、前記桁数を代入したすべての前記必須部分文字列に対応する前回の分割位置と今回の分割位置を同じにする、処理を前記コンピュータに実行させること特徴とする付記1または2に記載のテストデータ生成プログラム。付記4変数を表す部分文字列各々を用いて表現される文字列の表現パターンと、該文字列の表現において必須となる前記部分文字列各々の必須部分文字列の桁数を求める式パターンと、前記部分文字列各々が関連していることを示す関連パターンと、が関連付けて記憶された関連パターン情報テーブルを参照し、テスト対象のプログラムの入力データの制約条件を示す元制約情報から、前記文字列の表現パターンと一致する文字列を抽出し、前記関連パターン情報テーブルを参照して、抽出した前記文字列の前記表現パターンに対応する前記式パターン及び関連パターンを取得し、取得した前記式パターン及び前記関連パターンに、抽出した前記文字列に含まれる部分文字列を代入して、必須部分文字列と部分文字列各々が関連していることを示す関連情報を求め、前記元制約情報に含まれる変数を表す前記部分文字列と、該部分文字列の桁数と、が関連付けられている項目定義情報を参照して、前記部分文字列に対応する前記必須部分文字列の桁数を取得し、前記必須部分文字列に取得した前記桁数を代入し、前記桁数を代入した前記必須部分文字列と前記関連情報とを用いて、関連する該必須部分文字列各々の前記桁数を取得し、取得した前記桁数各々を前記必須部分文字列各々に対応する前記部分文字列の分割位置を求め、前記分割位置に従い、抽出した前記文字列に含まれる前記部分文字列を分割し、分割した部分文字列各々の桁範囲と、該分割した部分文字列各々に名称を割り振り、前記元制約情報の抽出した前記文字列に含まれる前記部分文字列のうち分割された前記部分文字列を、分割した前記部分文字列の名称を用いた表現に変換して変換後制約情報を生成する、こと特徴とするテストデータ生成方法。付記5前記コンピュータは、前記変換後制約情報を入力として、SMTソルバを用いて前記変換後制約情報が有する条件各々の充足値を求め、前記充足値各々を用いて変換後制約の充足値から元制約情報の有する条件を充足するテストデータを生成する、こと特徴とする付記4に記載のテストデータ生成方法。付記6前記コンピュータは、前記桁数を代入したすべての前記必須部分文字列に対して、複数回、前記桁数を代入した前記必須部分文字列と前記関連情報とを用いて、関連する該必須部分文字列各々に前記桁数各々を、反映させて分割位置を求め、前記桁数を代入したすべての前記必須部分文字列に対応する前回の分割位置と今回の分割位置を同じにする、こと特徴とする付記4または5に記載のテストデータ生成方法。付記7変数を表す部分文字列各々を用いて表現される文字列の表現パターンと、該文字列の表現において必須となる前記部分文字列各々の必須部分文字列の桁数を求める式パターンと、前記部分文字列各々が関連していることを示す関連パターンと、が関連付けて記憶された関連パターン情報テーブルを参照し、テスト対象のプログラムの入力データの制約条件を示す元制約情報から、前記文字列の表現パターンと一致する文字列を抽出し、前記関連パターン情報テーブルを参照して、抽出した前記文字列の前記表現パターンに対応する前記式パターン及び関連パターンを取得し、取得した前記式パターン及び前記関連パターンに、抽出した前記文字列に含まれる部分文字列を代入して、必須部分文字列と部分文字列各々が関連していることを示す関連情報を求め、前記元制約情報に含まれる変数を表す前記部分文字列と、該部分文字列の桁数と、が関連付けられている項目定義情報を参照して、前記部分文字列に対応する前記必須部分文字列の桁数を取得し、前記必須部分文字列に取得した前記桁数を代入する、生成部と、前記桁数を代入した前記必須部分文字列と前記関連情報とを用いて、関連する該必須部分文字列各々の前記桁数を取得し、取得した前記桁数各々を前記必須部分文字列各々に対応する前記部分文字列の分割位置を求め、分割部と、前記分割位置に従い、抽出した前記文字列に含まれる前記部分文字列を分割し、分割した部分文字列各々の桁範囲と、該分割した部分文字列各々に名称を割り振る、定義部と、前記元制約情報の抽出した前記文字列に含まれる前記部分文字列のうち分割された前記部分文字列を、分割した前記部分文字列の名称を用いた表現に変換して変換後制約情報を生成する、制約変換部と、を備えること特徴とするテストデータ生成装置。付記8前記変換後制約情報を入力として、SMTソルバを用いて前記変換後制約情報が有する条件各々の充足値を求める充足値生成部と、前記充足値各々を用いて変換後制約の充足値から元制約情報の有する条件を充足するテストデータを生成する充足値変換部と、を備えること特徴とする付記7に記載のテストデータ生成装置。付記9前記分割部は、前記桁数を代入したすべての前記必須部分文字列に対して、複数回、前記桁数を代入した前記必須部分文字列と前記関連情報とを用いて、関連する該必須部分文字列各々に前記桁数各々を、反映させて分割位置を求め、前記桁数を代入したすべての前記必須部分文字列に対応する前回の分割位置と今回の分割位置を同じにする、を備えること特徴とする付記7または8に記載のテストデータ生成装置。"