(57)【特許請求の範囲】
【請求項１】
中間データ生成部が、ソースファイルを記憶するソース記憶部から前記ソースファイルに記述されているソースコードを取得し、取得した前記ソースコードを構文解析して、処理の結果を格納する第１の変数と、入力変数で表現された論理式と、前記第１の変数の値とを対応付けた中間データを生成する中間データ生成ステップと、
分割処理部が、予め指定された入力チェックの処理結果を格納する第２の変数に基づいて、前記中間データを、前記入力チェックに対応する処理の部分を示す入力中間データと、当該入力チェックに対応する処理の部分を含まない業務処理の部分を示す業務中間データとに分割する分割処理ステップと、
簡素化処理部が、前記入力中間データに含まれる前記第２の変数の値のうち、前記入力チェックが成功である場合の前記第２の変数の値に対応する前記論理式に基づいて、前記業務中間データから不要な論理式を削除して、簡素化された業務中間データを生成する簡素化処理ステップと、
設計書生成部が、前記入力中間データに基づいて、前記入力チェックに関する設計仕様を記述した入力チェック設計書を生成するとともに、前記簡素化された業務中間データに基づいて、前記業務処理に関する設計仕様を記述した業務処理設計書を生成する設計書生成ステップと
を含むことを特徴とする仕様生成方法。
【請求項２】
前記簡素化処理ステップにおいて、
予め定められた所定のアルゴリズムに基づいて、前記入力中間データから不要な論理式を削除して、簡素化された前記入力中間データを生成し、
前記設計書生成ステップにおいて、
前記簡素化された入力中間データに基づいて、前記入力チェックに関する設計仕様を記述した入力チェック設計書を生成する
ことを特徴とする請求項１に記載の仕様生成方法。
【請求項３】
前記簡素化処理ステップにおいて、
前記論理式に基づいて構築された決定木に基づいて、前記業務中間データ及び前記入力中間データのうちの少なくとも一方に含まれる記載不要な論理式を削除する
ことを特徴とする請求項２に記載の仕様生成方法。
【請求項４】
前記簡素化処理ステップにおいて、
前記第２の変数の値の記載順序により既に記載された論理式に基づいて、記載不要な論理式を削除する
ことを特徴とする請求項２又は請求項３に記載の仕様生成方法。
【請求項５】
中間データ生成部が、ソースファイルを記憶するソース記憶部から前記ソースファイルに記述されているソースコードを取得し、取得した前記ソースコードを構文解析して、処理の結果を格納する第１の変数と、入力変数で表現された論理式と、前記第１の変数の値とを対応付けた中間データを生成する中間データ生成ステップと、
分割処理部が、予め指定された入力チェックの処理結果を格納する第２の変数に基づいて、前記中間データを、前記入力チェックに対応する処理の部分を示す入力中間データと、当該入力チェックに対応する処理の部分を含まない業務処理の部分を示す業務中間データとに分割する分割処理ステップと、
簡素化処理部が、予め定められた所定のアルゴリズムに基づいて、前記入力中間データから不要な論理式を削除して、簡素化された前記入力中間データを生成する簡素化処理ステップと、
設計書生成部が、前記簡素化された入力中間データに基づいて、前記入力チェックに関する設計仕様を記述した入力チェック設計書を生成するとともに、前記業務中間データに基づいて、前記業務処理に関する設計仕様を記述した業務処理設計書を生成する設計書生成ステップと
を含む仕様生成方法。
【請求項６】
ソースファイルを記憶するソース記憶部から前記ソースファイルに記述されているソースコードを取得し、取得した前記ソースコードを構文解析して、処理の結果を格納する第１の変数と、入力変数で表現された論理式と、前記第１の変数の値とを対応付けた中間データを生成する中間データ生成部と、
予め指定された入力チェックの処理結果を格納する第２の変数に基づいて、前記中間データを、前記入力チェックに対応する処理の部分を示す入力中間データと、当該入力チェックに対応する処理の部分を含まない業務処理の部分を示す業務中間データとに分割する分割処理部と、
前記入力中間データに含まれる前記第２の変数の値のうち、前記入力チェックが成功である場合の前記第２の変数の値に対応する前記論理式に基づいて、前記業務中間データから不要な論理式を削除して、簡素化された業務中間データを生成する簡素化処理部と、
前記入力中間データに基づいて、前記入力チェックに関する設計仕様を記述した入力チェック設計書を生成するとともに、前記簡素化された業務中間データに基づいて、前記業務処理に関する設計仕様を記述した業務処理設計書を生成する設計書生成部と
を備える仕様生成装置。
【請求項７】
ソースファイルを記憶するソース記憶部から前記ソースファイルに記述されているソースコードを取得し、取得した前記ソースコードを構文解析して、処理の結果を格納する第１の変数と、入力変数で表現された論理式と、前記第１の変数の値とを対応付けた中間データを生成する中間データ生成部と、
予め指定された入力チェックの処理結果を格納する第２の変数に基づいて、前記中間データを、前記入力チェックに対応する処理の部分を示す入力中間データと、当該入力チェックに対応する処理の部分を含まない業務処理の部分を示す業務中間データとに分割する分割処理部と、
予め定められた所定のアルゴリズムに基づいて、前記入力中間データから不要な論理式を削除して、簡素化された前記入力中間データを生成する簡素化処理部と、
前記簡素化された入力中間データに基づいて、前記入力チェックに関する設計仕様を記述した入力チェック設計書を生成するとともに、前記業務中間データに基づいて、前記業務処理に関する設計仕様を記述した業務処理設計書を生成する設計書生成部と
を備える仕様生成装置。
【請求項８】
コンピュータに、
ソースファイルを記憶するソース記憶部から前記ソースファイルに記述されているソースコードを取得し、取得した前記ソースコードを構文解析して、処理の結果を格納する第１の変数と、入力変数で表現された論理式と、前記第１の変数の値とを対応付けた中間データを生成する中間データ生成ステップと、
予め指定された入力チェックの処理結果を格納する第２の変数に基づいて、前記中間データを、前記入力チェックに対応する処理の部分を示す入力中間データと、当該入力チェックに対応する処理の部分を含まない業務処理の部分を示す業務中間データとに分割する分割処理ステップと、
前記入力中間データに含まれる前記第２の変数の値のうち、前記入力チェックが成功である場合の前記第２の変数の値に対応する前記論理式に基づいて、前記業務中間データから不要な論理式を削除して、簡素化された業務中間データを生成する簡素化処理ステップと、
前記入力中間データに基づいて、前記入力チェックに関する設計仕様を記述した入力チェック設計書を生成するとともに、前記簡素化された業務中間データに基づいて、前記業務処理に関する設計仕様を記述した業務処理設計書を生成する設計書生成ステップと
を実行させるためのプログラム。
【請求項９】
コンピュータに、
ソースファイルを記憶するソース記憶部から前記ソースファイルに記述されているソースコードを取得し、取得した前記ソースコードを構文解析して、処理の結果を格納する第１の変数と、入力変数で表現された論理式と、前記第１の変数の値とを対応付けた中間データを生成する中間データ生成ステップと、
予め指定された入力チェックの処理結果を格納する第２の変数に基づいて、前記中間データを、前記入力チェックに対応する処理の部分を示す入力中間データと、当該入力チェックに対応する処理の部分を含まない業務処理の部分を示す業務中間データとに分割する分割処理ステップと、
予め定められた所定のアルゴリズムに基づいて、前記入力中間データから不要な論理式を削除して、簡素化された前記入力中間データを生成する簡素化処理ステップと、
前記簡素化された入力中間データに基づいて、前記入力チェックに関する設計仕様を記述した入力チェック設計書を生成するとともに、前記業務中間データに基づいて、前記業務処理に関する設計仕様を記述した業務処理設計書を生成する設計書生成ステップと
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仕様生成方法、仕様生成装置、及びプログラムに関する。
【背景技術】
【０００２】
近年、長年使い続けた大規模システムをシステム更改することが行われている。このような大規模システムでは、ソースコード以外（例えば、設計書など）が残っていない場合がある。このような場合に対応するため、ソースコードを解析する技術が知られている（例えば、特許文献１を参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−１８１３１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述した技術では、例えば、ソースコードの構造を示すグラフを表示するなど、システムの仕様を理解する支援を行うものであり、ソースコードから理解しやすい設計書を生成することは困難であった。
【０００５】
本発明は、上記問題を解決すべくなされたもので、その目的は、ソースコードから理解しやすい設計書を生成することができる仕様生成方法、仕様生成装置、及びプログラムを提供することにある。
【課題を解決するための手段】
【０００６】
上記問題を解決するために、本発明の一態様は、中間データ生成部が、ソースファイルを記憶するソース記憶部から前記ソースファイルに記述されているソースコードを取得し、取得した前記ソースコードを構文解析して、処理の結果を格納する第１の変数と、入力変数で表現された論理式と、前記第１の変数の値とを対応付けた中間データを生成する中間データ生成ステップと、分割処理部が、予め指定された入力チェックの処理結果を格納する第２の変数に基づいて、前記中間データを、前記入力チェックに対応する処理の部分を示す入力中間データと、当該入力チェックに対応する処理の部分を含まない業務処理の部分を示す業務中間データとに分割する分割処理ステップと、簡素化処理部が、前記入力中間データに含まれる前記第２の変数の値のうち、前記入力チェックが成功である場合の前記第２の変数の値に対応する前記論理式に基づいて、前記業務中間データから不要な論理式を削除して、簡素化された業務中間データを生成する簡素化処理ステップと、設計書生成部が、前記入力中間データに基づいて、前記入力チェックに関する設計仕様を記述した入力チェック設計書を生成するとともに、前記簡素化された業務中間データに基づいて、前記業務処理に関する設計仕様を記述した業務処理設計書を生成する設計書生成ステップとを含むことを特徴とする仕様生成方法である。
【０００７】
また、本発明の一態様は、上記の仕様生成方法において、前記簡素化処理ステップにおいて、予め定められた所定のアルゴリズムに基づいて、前記入力中間データから不要な論理式を削除して、簡素化された前記入力中間データを生成し、前記設計書生成ステップにおいて、前記簡素化された入力中間データに基づいて、前記入力チェックに関する設計仕様を記述した入力チェック設計書を生成することを特徴とする。
【０００８】
また、本発明の一態様は、上記の仕様生成方法において、前記簡素化処理ステップにおいて、前記論理式に基づいて構築された決定木に基づいて、前記業務中間データ及び前記入力中間データのうちの少なくとも一方に含まれる記載不要な論理式を削除することを特徴とする。
【０００９】
また、本発明の一態様は、上記の仕様生成方法において、前記簡素化処理ステップにおいて、前記第２の変数の値の記載順序により既に記載された論理式に基づいて、記載不要な論理式を削除することを特徴とする。
【００１０】
また、本発明の一態様は、中間データ生成部が、ソースファイルを記憶するソース記憶部から前記ソースファイルに記述されているソースコードを取得し、取得した前記ソースコードを構文解析して、処理の結果を格納する第１の変数と、入力変数で表現された論理式と、前記第１の変数の値とを対応付けた中間データを生成する中間データ生成ステップと、分割処理部が、予め指定された入力チェックの処理結果を格納する第２の変数に基づいて、前記中間データを、前記入力チェックに対応する処理の部分を示す入力中間データと、当該入力チェックに対応する処理の部分を含まない業務処理の部分を示す業務中間データとに分割する分割処理ステップと、簡素化処理部が、予め定められた所定のアルゴリズムに基づいて、前記入力中間データから不要な論理式を削除して、簡素化された前記入力中間データを生成する簡素化処理ステップと、設計書生成部が、前記簡素化された入力中間データに基づいて、前記入力チェックに関する設計仕様を記述した入力チェック設計書を生成するとともに、前記業務中間データに基づいて、前記業務処理に関する設計仕様を記述した業務処理設計書を生成する設計書生成ステップとを含む仕様生成方法である。
【００１１】
また、本発明の一態様は、ソースファイルを記憶するソース記憶部から前記ソースファイルに記述されているソースコードを取得し、取得した前記ソースコードを構文解析して、処理の結果を格納する第１の変数と、入力変数で表現された論理式と、前記第１の変数の値とを対応付けた中間データを生成する中間データ生成部と、予め指定された入力チェックの処理結果を格納する第２の変数に基づいて、前記中間データを、前記入力チェックに対応する処理の部分を示す入力中間データと、当該入力チェックに対応する処理の部分を含まない業務処理の部分を示す業務中間データとに分割する分割処理部と、前記入力中間データに含まれる前記第２の変数の値のうち、前記入力チェックが成功である場合の前記第２の変数の値に対応する前記論理式に基づいて、前記業務中間データから不要な論理式を削除して、簡素化された業務中間データを生成する簡素化処理部と、前記入力中間データに基づいて、前記入力チェックに関する設計仕様を記述した入力チェック設計書を生成するとともに、前記簡素化された業務中間データに基づいて、前記業務処理に関する設計仕様を記述した業務処理設計書を生成する設計書生成部とを備える仕様生成装置である。
【００１２】
また、本発明の一態様は、ソースファイルを記憶するソース記憶部から前記ソースファイルに記述されているソースコードを取得し、取得した前記ソースコードを構文解析して、処理の結果を格納する第１の変数と、入力変数で表現された論理式と、前記第１の変数の値とを対応付けた中間データを生成する中間データ生成部と、予め指定された入力チェックの処理結果を格納する第２の変数に基づいて、前記中間データを、前記入力チェックに対応する処理の部分を示す入力中間データと、当該入力チェックに対応する処理の部分を含まない業務処理の部分を示す業務中間データとに分割する分割処理部と、予め定められた所定のアルゴリズムに基づいて、前記入力中間データから不要な論理式を削除して、簡素化された前記入力中間データを生成する簡素化処理部と、前記簡素化された入力中間データに基づいて、前記入力チェックに関する設計仕様を記述した入力チェック設計書を生成するとともに、前記業務中間データに基づいて、前記業務処理に関する設計仕様を記述した業務処理設計書を生成する設計書生成部とを備える仕様生成装置である。
【００１３】
また、本発明の一態様は、コンピュータに、ソースファイルを記憶するソース記憶部から前記ソースファイルに記述されているソースコードを取得し、取得した前記ソースコードを構文解析して、処理の結果を格納する第１の変数と、入力変数で表現された論理式と、前記第１の変数の値とを対応付けた中間データを生成する中間データ生成ステップと、予め指定された入力チェックの処理結果を格納する第２の変数に基づいて、前記中間データを、前記入力チェックに対応する処理の部分を示す入力中間データと、当該入力チェックに対応する処理の部分を含まない業務処理の部分を示す業務中間データとに分割する分割処理ステップと、前記入力中間データに含まれる前記第２の変数の値のうち、前記入力チェックが成功である場合の前記第２の変数の値に対応する前記論理式に基づいて、前記業務中間データから不要な論理式を削除して、簡素化された業務中間データを生成する簡素化処理ステップと、前記入力中間データに基づいて、前記入力チェックに関する設計仕様を記述した入力チェック設計書を生成するとともに、前記簡素化された業務中間データに基づいて、前記業務処理に関する設計仕様を記述した業務処理設計書を生成する設計書生成ステップとを実行させるためのプログラムである。
【００１４】
また、本発明の一態様は、コンピュータに、ソースファイルを記憶するソース記憶部から前記ソースファイルに記述されているソースコードを取得し、取得した前記ソースコードを構文解析して、処理の結果を格納する第１の変数と、入力変数で表現された論理式と、前記第１の変数の値とを対応付けた中間データを生成する中間データ生成ステップと、予め指定された入力チェックの処理結果を格納する第２の変数に基づいて、前記中間データを、前記入力チェックに対応する処理の部分を示す入力中間データと、当該入力チェックに対応する処理の部分を含まない業務処理の部分を示す業務中間データとに分割する分割処理ステップと、予め定められた所定のアルゴリズムに基づいて、前記入力中間データから不要な論理式を削除して、簡素化された前記入力中間データを生成する簡素化処理ステップと、前記簡素化された入力中間データに基づいて、前記入力チェックに関する設計仕様を記述した入力チェック設計書を生成するとともに、前記業務中間データに基づいて、前記業務処理に関する設計仕様を記述した業務処理設計書を生成する設計書生成ステップとを実行させるためのプログラムである。
【発明の効果】
【００１５】
本発明によれば、ソースコードから理解しやすい設計書を生成することができる。
【図面の簡単な説明】
【００１６】
【図１】本実施形態による仕様生成システムの一例を示すブロック図である。
【図２】本実施形態におけるソースファイル記憶部のデータ例を示す図である。
【図３】本実施形態における設定ファイル記憶部のデータ例を示す図である。
【図４】本実施形態における入力チェック設計書の一例を示す図である。
【図５】本実施形態における業務処理設計書の一例を示す図である。
【図６】本実施形態における中間データの一例を示す図である。
【図７】本実施形態における入力中間データの一例を示す図である。
【図８】本実施形態における業務中間データの一例を示す図である。
【図９】本実施形態における簡素化された入力中間データの一例を示す図である。
【図１０】本実施形態における簡素化された業務中間データの一例を示す図である。
【図１１】本実施形態による仕様生成装置の動作の一例を示すフローチャートである。
【図１２】本実施形態における入力中間データの簡素化処理の一例を示す図である。
【図１３】本実施形態の簡素化処理における順序評価の一例を示す図である。
【図１４】本実施形態における決定木を利用した簡素化処理の一例を示す図である。
【図１５】本実施形態の変形例における業務処理設計書の一例を示す図である。
【図１６】本実施形態の変形例における決定木を利用した業務中間データの簡素化処理の一例を説明する第１の図である。
【図１７】本実施形態の変形例における決定木を利用した業務中間データの簡素化処理の一例を説明する第２の図である。
【図１８】本実施形態の変形例における決定木を利用した業務中間データの簡素化処理の一例を説明する第３の図である。
【発明を実施するための形態】
【００１７】
以下、本発明の一実施形態による仕様生成装置及び仕様生成システムについて、図面を参照して説明する。
図１は、本実施形態による仕様生成システム１００の一例を示すブロック図である。
この図に示すように、仕様生成システム１００は、仕様生成装置１と、ファイルサーバ装置３０とを備えている。仕様生成装置１と、ファイルサーバ装置３０とは、例えば、ネットワークを介して接続されている。
【００１８】
ファイルサーバ装置３０は、例えば、記憶装置を備えたサーバ装置であり、仕様生成装置１の入力情報であるソースファイル及び設定ファイルと、仕様生成装置１の出力情報である設計書とを記憶する。ファイルサーバ装置３０は、ソースファイル記憶部３１と、設定ファイル記憶部３２と、設計書記憶部３３とを備えている。
【００１９】
ソースファイル記憶部３１（ソース記憶部の一例）は、例えば、既存のシステムのプログラムのソースファイルであって、設計書を生成するソースファイルを記憶する。なお、ソースファイル記憶部３１は、複数のソースファイルを予め記憶していてもよい。ソースファイル記憶部３１は、例えば、図２に示すようなソースファイルを記憶する。
【００２０】
図２は、本実施形態におけるソースファイル記憶部３１のデータ例を示す図である。
この図に示す例では、購入金額を計算するプログラムのソースコード（ＳＣ１）を示している。ソースコードＳＣ１において、処理の結果を格納する格納変数（第１の変数）が“ＰＲＩＣＥ”及び“ＥＲＲ”であり、このプログラムは、購入数（“ＮＵＭ”）、及び、商品がアルコール（“ＡＦＬＧ”）である場合に年齢が２０歳以上であるか否かの入力チェックをコンピュータに実行させる。また、ソースコードＳＣ１において、プログラムは、上述した入力チェックの条件を満たす場合に、合計金額を出力する業務処理をコンピュータに実行させる。このように、ソースコード（ＳＣ１）において、入力チェックに対応する入力チェック処理と、業務処理とが混在している。ここで、入力チェック処理とは、例えば、仕様上、入力された値が取り得る範囲に収まっているか否かをチェックする処理のことである。また、業務処理は、例えば、所定の目的（例えば、業務上の目的など）を達成するために、プログラムに実行させる処理のことである。
【００２１】
図１の説明に戻り、設定ファイル記憶部３２は、入力チェックの処理結果を格納するエラーコード格納変数（第２の変数）を設定する設定ファイルを記憶する。ここで、エラーコード格納変数は、例えば、ソースコードの内容を使用者が確認した上で、予め設定される。なお、エラーコード格納変数（第２の変数）は、格納変数（第１の変数）のうちの一部の変数であり、格納変数（第１の変数）には、エラーコード格納変数（第２の変数）が含まれる。設定ファイル記憶部３２は、図３に示すように、エラーコード格納変数と、入力チェックの成功を意味する値とを関連付けて、設定ファイルとして記憶する。
【００２２】
図３は、本実施形態における設定ファイル記憶部３２のデータ例を示す図である。
この図に示す例では、設定ファイル（ＥＶ１）を示している。この例では、設定ファイル記憶部３２は、エラーコード格納変数“ＥＲＲ”と、入力チェックの成功を意味する値“００”とを関連付けて、設定ファイル（ＥＶ１）として記憶している。
【００２３】
再び、図１の説明に戻り、設計書記憶部３３は、仕様生成装置１の出力情報（出力結果）である設計書を記憶する。なお、仕様生成装置１は、ソースコードから入力チェック設計書と、業務処理設計書とを生成するので、設計書記憶部３３は、入力チェック設計書と、業務処理設計書とを記憶する。ここで、入力チェック設計書は、入力チェックに関する設計仕様を記述した設計書である。また、業務処理設計書は、業務処理に関する設計仕様を記述した設計書である。なお、複数のソースファイルを仕様生成装置１に入力した場合には、設計書記憶部３３は、複数の入力チェック設計書と、複数の業務処理設計書とを記憶してもよい。ここで、図４及び図５を参照して、入力チェック設計書、及び業務処理設計書の一例について説明する。なお、図４及び図５に示す入力チェック設計書、及び業務処理設計書は、仕様生成装置１が上述した図２に示すソースコード（ＳＣ１）から生成した場合の一例である。
【００２４】
図４は、本実施形態における入力チェック設計書の一例を示す図である。
この図に示すように、入力チェック設計書は、例えば、「ＮＯ．」と、「入力チェック内容」と、「エラーコード」とを関連付けた情報を含んでいる。ここで、「ＮＯ．」は、入力チェック番号を示し、「入力チェック内容」は、入力チェックの内容であるチェック条件（論理式）を示している。また、「エラーコード」は、エラーコード格納変数の値を示している。なお、本実施形態の入力チェック設計書では、入力チェックが成功である場合の「入力チェック内容」及び「エラーコード」を含めないものとする。
図４に示す例では、例えば、「ＮＯ．」が“１”の入力チェックの仕様は、「入力チェック内容」が“ＮＵＭ＜１  ｜｜ＮＵＭ＞９９”であり、「エラーコード」が“Ｅ１”であることを示している。
【００２５】
図５は、本実施形態における業務処理設計書の一例を示す図である。
この図に示すように、業務処理設計書は、例えば、「変数名」と、「更新内容」と、「条件」とを関連付けた情報を含んでいる。ここで、「変数名」は、処理の結果を格納する格納変数名を示し、「更新内容」は、当該変数に値として更新される内容を示している。また、「条件」は、当該変数を更新するための条件を示している。なお、本実施形態の業務処理設計書では、入力チェックが成功したことを前提としており、入力チェックが成功である場合の条件は、記載されないものとする。
図５に示す例では、例えば、「変数名」が“ＰＲＩＣＥ”の業務仕様は、「更新内容」が“ＰＲＯＤ．ＰＲＩＣＥ＊ＮＵＭ”であり、「条件」が“常に成立”であることを示している。
【００２６】
再び、図１の説明に戻り、仕様生成装置１は、記憶部１０と、制御部２０とを備えている。
記憶部１０は、仕様生成装置１が利用する各種情報を記憶する。記憶部１０は、例えば、中間データ記憶部１１と、分割中間データ記憶部１２と、簡素化中間データ記憶部１３とを備えている。
【００２７】
中間データ記憶部１１は、後述する中間データ生成部２１によって記号実行の技術を利用して生成された中間データ（中間デシジョンテーブルという場合がある）を記憶する。ここで、中間データは、図６に示すように、格納変数（第１の変数）と、入力変数で表現された論理式と、格納変数の値とを対応付けた情報を含んでいる。
【００２８】
図６は、本実施形態における中間データの一例を示す図である。
この図に示す例では、上述した図２に示すソースコード（ＳＣ１）に基づいて生成された中間データ（ＤＴ１）を示している。この例では、格納変数（第１の変数）が“ＰＲＩＣＥ”及び“ＥＲＲ”であり、これらの変数それぞれについて、入力変数で表現された論理式と、格納変数の値とを対応付けている。
【００２９】
再び、図１の説明に戻り、分割中間データ記憶部１２は、後述する分割処理部２２によってエラーコード格納変数に基づいて分割（分離）された分割中間データを記憶する。なお、分割中間データには、入力チェックに対応する処理の部分を示す入力中間データと、当該入力チェックに対応する処理の部分を含まない業務処理の部分を示す業務中間データとが含まれる。ここで、図７及び図８を参照して、入力中間データ、及び業務中間データの一例について説明する。なお、図７及び図８に示す入力中間データ、及び業務中間データは、上述した図６に示す中間データ（ＤＴ１）を分割した場合の一例である。
【００３０】
図７は、本実施形態における入力中間データの一例を示す図である。
この図において、入力中間データ（ＳＤＴ１）は、上述した図６に示す中間データ（ＤＴ１）の入力チェックに対応する処理の部分を分割（分離）したデータである。この図に示すように、エラーコード格納変数（例えば、“ＥＲＲ”）に対応する論理式及びエラーコード格納変数の値を含んでいる。
【００３１】
図８は、本実施形態における業務中間データの一例を示す図である。
この図において、業務中間データ（ＳＤＴ２）は、上述した図６に示す中間データ（ＤＴ１）の業務処理に対応する処理の部分を分割（分離）したデータである。この図に示すように、業務処理の結果を格納する格納変数（例えば、“ＰＲＩＣＥ”）に対応する論理式及び当該格納変数の値を含んでいる。
【００３２】
再び、図１の説明に戻り、簡素化中間データ記憶部１３は、後述する簡素化処理部２３によって不要な論理式が削除されて簡素化された中間データを記憶する。なお、簡素化された中間データには、簡素化された入力中間データと、簡素化された業務中間データとが含まれる。ここで、図９及び図１０を参照して、簡素化された入力中間データ、及び簡素化された業務中間データの一例について説明する。なお、中間データを簡素化する処理（簡素化処理）の詳細については、後述する。
【００３３】
図９は、本実施形態における簡素化された入力中間データの一例を示す図である。
この図において、簡素化された入力中間データ（ＳＤＴ３）は、上述した図７に示す入力中間データ（ＳＤＴ１）を簡素化したデータである。この図に示すように、簡素化された入力中間データ（ＳＤＴ３）は、後述する所定のアルゴリズムによって、不要な論理式が削除された入力中間データである。
【００３４】
図１０は、本実施形態における簡素化された業務中間データの一例を示す図である。
この図において、簡素化された業務中間データ（ＳＤＴ４）は、上述した図８に示す業務中間データ（ＳＤＴ２）を簡素化したデータである。この図に示すように、簡素化された業務中間データ（ＳＤＴ４）は、後述する所定のアルゴリズムによって、不要な論理式が削除された業務中間データである。
【００３５】
再び、図１の説明に戻り、制御部２０は、例えば、ＣＰＵ（Central Processing Unit）などを含むプロセッサであり、仕様生成装置１を統括的に制御する。制御部２０は、例えば、中間データ生成部２１と、分割処理部２２と、簡素化処理部２３と、設計書生成部２４とを備えている。
【００３６】
中間データ生成部２１は、ファイルサーバ装置３０のソースファイル記憶部３１からソースファイルに記述されているソースコードを取得する。中間データ生成部２１は、取得したソースコードを構文解析し、記号実行の技術を利用した中間データを生成する。中間データ生成部２１は、例えば、格納変数（第１の変数）と、入力変数で表現された論理式と、当該格納変数の値とを対応付けた中間データ（例えば、図６参照）を生成する。ここで、記号実行の技術とは、通常の具体的な値を変数に代入しながらプログラムを実行する代わりに、変数とこれに対応する制約条件（論理式）との対を用いて、制約条件（論理式）を更新しながらシミュレーションする技術のことである。
【００３７】
中間データ生成部２１は、記号実行の技術を利用することにより、個別の値ではなく変数が取り得る全ての値の範囲を、制約条件（論理式）を通じて一括して取り扱うことができるとともに、中間データにおいて、処理の結果を格納する格納変数以外の中間変数を削除することができる。
また、中間データ生成部２１は、構文解析部２１１と、記号実行部２１２とを備えている。
【００３８】
構文解析部２１１は、ソースファイル記憶部３１から取得したソースコードを構文解析する。
記号実行部２１２は、構文解析部２１１が構文解析した解析結果に基づいて、記号実行の技術を利用して、上述した図６に示すような中間データを生成する。記号実行部２１２は、生成した中間データを中間データ記憶部１１に記憶させる。
【００３９】
分割処理部２２は、予め指定されたエラーコード格納変数に基づいて、上述した中間データを、入力中間データと、業務中間データとに分割する。分割処理部２２は、例えば、ファイルサーバ装置３０の設定ファイル記憶部３２から設定ファイル（例えば、図３参照）を取得する。分割処理部２２は、取得した設定ファイルにより指定されたエラーコード格納変数に基づいて、中間データ記憶部１１が記憶する中間データを、上述した図７に示すような入力中間データと、上述した図８に示すような業務中間データとに分割（分離）する。すなわち、分割処理部２２は、例えば、中間データからエラーコード格納変数を含む部分を抽出して、入力中間データとして分離する。また、分割処理部２２は、例えば、中間データからエラーコード格納変数を含まない部分を抽出して、業務中間データとして分離する。分割処理部２２は、分割（分離）した入力中間データと、業務中間データとを分割中間データ記憶部１２に記憶させる。
【００４０】
簡素化処理部２３は、入力中間データに含まれるエラーコード格納変数の値のうち、入力チェックが成功である場合のエラーコード格納変数の値に対応する論理式に基づいて、業務中間データから不要な論理式を削除して、簡素化された業務中間データを生成する。また、簡素化処理部２３は、予め定められた所定のアルゴリズムに基づいて、入力中間データから不要な論理式を削除して、簡素化された入力中間データを生成する。
簡素化処理部２３は、入力仕様生成部２３１と、業務仕様生成部２３２とを備えている。
【００４１】
入力仕様生成部２３１は、予め定められた所定のアルゴリズムに基づいて、簡素化された入力中間データを生成する。すなわち、入力仕様生成部２３１は、例えば、以下の２つの手法を利用して、入力中間データから不要な論理式を削除して、簡素化された入力中間データを生成する。
【００４２】
（第１の手法）
入力仕様生成部２３１は、恒偽条件となる論理式（例えば、“Ｘ＝＝１  かつ  Ｘ＝＝２”など）に基づいて、入力中間データに含まれる冗長な論理式を削除する。例えば、恒偽条件となる論理式“Ｘ＝＝１  かつ  Ｘ＝＝２”に注目した場合、恒偽条件となる論理式のうちの１つの条件が否定（ＮＯＴ）となる論理式が“Ｘ＝＝１  かつ  Ｘ！＝２”において、“Ｘ！＝２”は冗長の論理式である。この場合、入力仕様生成部２３１は、冗長な論理式“Ｘ！＝２”を削除して、“Ｘ＝＝１”とする簡素化処理を実行する。
なお、恒偽条件となる論理式は、例えば、上述した記号実行部２１２が実行する処理の際に抽出されるものとする。入力仕様生成部２３１は、この記号実行部２１２によって抽出された恒偽条件となる論理式のうちの１つの条件が否定（ＮＯＴ）となる論理式を、例えば、入力中間データから抽出する。入力仕様生成部２３１は、当該論理式における冗長な論理式の部分を削除する。
【００４３】
（第２の手法）
入力仕様生成部２３１は、簡素化処理部２３は、エラーコード格納変数の値の記載順序に基づいて、既に記載済み論理式を削除する。第２の手法は、記載順序に注目し、既に記載（登場）したチェック条件をチェック済み（記載済み）として削除する手法である。例えば、入力チェックの順序が以下のような場合を考える。
【００４４】
（１）“Ｘ！＝１  かつ  Ｘ！＝２”ならば、エラーコード格納変数“ＥＲＲ”が“Ｅ３”
（２）“（Ｘ＝＝１  または  Ｘ＝＝２）  かつ  Ｐ＝＝１”ならば、エラーコード格納変数“ＥＲＲ”が“Ｅ２”
【００４５】
この場合、（２）の論理式“（Ｘ＝＝１  または  Ｘ＝＝２）”は、既に記載済み論理式であるので、入力仕様生成部２３１は、（２）の論理式“（Ｘ＝＝１  または  Ｘ＝＝２）”を削除する。このように、入力仕様生成部２３１は、既に記載された論理式を論理反転した論理式を既に記載済み論理式として削除する。すなわち、入力仕様生成部２３１は、エラーコード格納変数の値の記載順序により既に記載された論理式に基づいて、記載不要な論理式を削除する。
なお、本実施形態では、入力仕様生成部２３１は、決定木に基づいて、（第２の手法）による簡素化処理を実行する。この本実施形態による簡素化処理の詳細については後述する。
【００４６】
このように、入力仕様生成部２３１は、上述した（第１の手法）又は（第２の手法）を利用して、入力中間データから不要な論理式を削除して、図９に示すような簡素化された入力中間データを生成する。ここで、入力仕様生成部２３１は、上述した（第１の手法）及び（第２の手法）のうちのいずれか一方を利用して、入力中間データから不要な論理式を削除してもよいし、（第１の手法）及び（第２の手法）の両方を利用して、入力中間データから不要な論理式を削除してもよい。入力仕様生成部２３１は、生成した簡素化された入力中間データを簡素化中間データ記憶部１３に記憶させる。
【００４７】
業務仕様生成部２３２は、上述した入力チェックが成功である場合のエラーコード格納変数の値に対応する論理式に基づいて、業務中間データから不要な論理式を削除して、簡素化された業務中間データを生成する。
【００４８】
例えば、図７に示す入力中間データの例では、入力チェックが成功である場合のエラーコード格納変数の値は、“ＥＲＲ”が“００”である場合である。そして、この場合、当該エラーコード格納変数の値に対応する論理式は、“(ＡＧＥ＞＝２０  ｜｜  ＰＲＯＤ．ＡＦＬＧ！＝１)  ＆＆  ＮＵＭ＞＝１  ＆＆  ＮＵＭ＜＝９９”である。業務仕様生成部２３２は、例えば、上述した（第２の手法）を利用して、論理式“(ＡＧＥ＞＝２０  ｜｜  ＰＲＯＤ．ＡＦＬＧ！＝１)  ＆＆  ＮＵＭ＞＝１  ＆＆  ＮＵＭ＜＝９９”に基づいて、不要な論理式として削除する。業務仕様生成部２３２は、まず、エラーコード格納変数“ＥＲＲ”以外の格納変数に相当する格納変数“ＰＲＩＣＥ”の決定木を構築する。そして、業務仕様生成部２３２は、論理式“(ＡＧＥ＞＝２０  ｜｜  ＰＲＯＤ．ＡＦＬＧ！＝１)  ＆＆  ＮＵＭ＞＝１  ＆＆  ＮＵＭ＜＝９９”の否定（ＮＯＴ）となる論理式“ＮＵＭ＜１  ｜｜  ＮＵＭ＞９９  ｜｜  (ＡＧＥ＜２０  ＆＆  ＰＲＯＤ．ＡＦＬＧ＝１)”を生成する。業務仕様生成部２３２は、構築した決定木と、入力チェックが成功である場合の論理式を否定（ＮＯＴ）となる論理式とを利用して、業務中間データのうちから不要な論理式を削除する。
【００４９】
その結果、業務仕様生成部２３２は、図１０に示すような簡素化された業務中間データを生成する。なお、業務仕様生成部２３２は、この業務中間データの簡素化処理において、決定木に基づいて、業務中間データを簡素化する処理の詳細については後述する。業務仕様生成部２３２は、生成した簡素化された業務中間データを簡素化中間データ記憶部１３に記憶させる。
なお、業務仕様生成部２３２は、業務中間データの簡素化処理において、上述した（第２の手法）のみではなく、（第１の手法）を利用して、業務中間データから不要な論理式を削除してもよい。すなわち、業務仕様生成部２３２は、業務中間データの簡素化処理において、上述した（第１の手法）及び（第２の手法）のうちのいずれか一方を利用して、業務中間データから不要な論理式を削除してもよいし、（第１の手法）及び（第２の手法）の両方を利用して、業務中間データから不要な論理式を削除してもよい。
【００５０】
設計書生成部２４は、簡素化された入力中間データに基づいて、図４に示すような入力チェック設計書を生成する。また、設計書生成部２４は、簡素化された業務中間データに基づいて、図５に示すような業務処理設計書を生成する。設計書生成部２４は、生成した入力チェック設計書及び業務処理設計書をファイルサーバ装置３０に出力し、入力チェック設計書及び業務処理設計書を設計書記憶部３３に記憶させる。また、設計書生成部２４は、入力仕様整形部２４１と、業務仕様整形部２４２とを備えている。
【００５１】
入力仕様整形部２４１は、簡素化された入力中間データに基づいて、入力チェックに関する設計仕様を記述した入力チェック設計書を生成する。
なお、簡素化された入力中間データは、分割処理部２２によって分割された入力中間データに基づいて生成されたものであるため、入力仕様整形部２４１は、分割処理部２２によって分割された入力中間データに基づいて入力チェック設計書を生成するとしてもよい。
【００５２】
業務仕様整形部２４２は、簡素化された業務中間データに基づいて、業務処理に関する設計仕様を記述した業務処理設計書を生成する。
なお、簡素化された業務中間データは、分割処理部２２によって分割された業務中間データに基づいて生成されたものであるため、業務仕様整形部２４２は、分割処理部２２によって分割された業務中間データに基づいて業務処理設計書を生成するとしてもよい。
【００５３】
次に、図面を参照して、本実施形態による仕様生成装置１の動作について説明する。
図１１は、本実施形態による仕様生成装置１の動作の一例を示すフローチャートである。
この図において、まず、仕様生成装置１の制御部２０は、ソースファイルを取得する（ステップＳ１０１）。すなわち、制御部２０の中間データ生成部２１は、ファイルサーバ装置３０のソースファイル記憶部３１からソースファイルに記述されているソースコードを取得する。
【００５４】
次に、中間データ生成部２１の構文解析部２１１は、ソースファイル記憶部３１から取得したソースコードを構文解析する（ステップＳ１０２）。
次に、中間データ生成部２１の記号実行部２１２は、記号実行の技術を利用して中間データを生成する（ステップＳ１０３）。すなわち、記号実行部２１２は、構文解析部２１１が構文解析した解析結果に基づいて、記号実行の技術を利用して、格納変数と、入力変数で表現された論理式と、格納変数の値とを対応付けた中間データを生成する。記号実行部２１２は、生成した中間データを中間データ記憶部１１に記憶させる。
【００５５】
次に、分割処理部２２は、入力チェック用の変数に基づいて、中間データを分割する（ステップＳ１０４）。すなわち、分割処理部２２は、ファイルサーバ装置３０の設定ファイル記憶部３２から取得した設定ファイルにより指定されたエラーコード格納変数に基づいて、中間データ記憶部１１が記憶する中間データを、入力中間データと、業務中間データとに分割する。分割処理部２２は、分割した入力中間データと、業務中間データとを分割中間データ記憶部１２に記憶させる。
【００５６】
また、簡素化処理部２３の業務仕様生成部２３２は、入力チェックが成功である場合の論理式に基づいて、業務中間データを簡素化する（ステップＳ１０５）。業務仕様生成部２３２は、中間データ記憶部１１から業務中間データを取得し、上述した入力チェックが成功である場合のエラーコード格納変数の値に対応する論理式に基づいて、業務中間データから不要な論理式を削除して、簡素化された業務中間データを生成する。業務仕様生成部２３２は、例えば、（第１の手法）及び（第２の手法）を利用して、業務中間データから不要な論理式を削除する。業務仕様生成部２３２は、生成した簡素化された業務中間データを簡素化中間データ記憶部１３に記憶させる。
【００５７】
次に、簡素化処理部２３の入力仕様生成部２３１は、入力中間データを簡素化する（ステップＳ１０６）。入力仕様生成部２３１は、中間データ記憶部１１から入力中間データを取得し、例えば、上述した（第１の手法）及び（第２の手法）を利用して、入力中間データから不要な論理式を削除する。入力仕様生成部２３１は、入力中間データから不要な論理式を削除して生成した簡素化された入力中間データを簡素化中間データ記憶部１３に記憶させる。
【００５８】
次に、設計書生成部２４は、簡素化された入力中間データ及び業務中間データを仕様整形して入力チェック設計書及び業務処理設計書を生成する（ステップＳ１０７）。すなわち、設計書生成部２４の入力仕様整形部２４１は、簡素化中間データ記憶部１３が記憶する簡素化された入力中間データに基づいて、入力チェック設計書を生成する。また、業務仕様整形部２４２は、簡素化中間データ記憶部１３が記憶する簡素化された業務中間データに基づいて、業務処理設計書を生成する。
【００５９】
次に、設計書生成部２４は、入力チェック設計書及び業務処理設計書を出力する（ステップＳ１０８）。すなわち、設計書生成部２４は、生成した入力チェック設計書及び業務処理設計書をファイルサーバ装置３０に出力し、入力チェック設計書及び業務処理設計書を設計書記憶部３３に記憶させる。ステップＳ１０８の処理後に、設計書生成部２４は、仕様生成装置１の制御部２０は、処理を終了する。
【００６０】
なお、上述した図１１に示す例では、ステップＳ１０１からステップＳ１０３までの処理が、中間データ生成ステップに対応する。また、ステップＳ１０４の処理が、分割処理ステップに対応する。ステップＳ１０５及びステップＳ１０６の処理が、簡素化処理ステップに対応する。また、ステップＳ１０７及びステップＳ１０８の処理が、設計書生成ステップに対応する。
また、上述した例は、仕様生成装置１が、１つのソースファイルに対して入力チェック設計書及び業務処理設計書を生成する場合の一例を説明したが、複数のソースファイルに対して入力チェック設計書及び業務処理設計書を生成してもよい。この場合には、仕様生成装置１は、上述したステップＳ１０１からステップＳ１０８までの処理をソースファイルの数に応じて、繰り返し実行する。
【００６１】
次に、図１２を参照して、本実施形態における入力中間データの簡素化処理の一例について説明する。
図１２は、本実施形態における入力中間データの簡素化処理の一例を示す図である。この図を参照して、上述した（第２の手法）による入力中間データの簡素化処理について説明する。
【００６２】
図１２に示すように簡素化処理前の入力中間データ（ＳＤＴ５）は、エラーコード格納変数の値が“Ｅ１”→“Ｅ２”→“Ｅ３”の順に記述されている。この場合、“Ｅ１”における「ＸＸコード＝＝“１００”」の論理式が、既に記載済みの論理式に相当するので、論理式ＬＧ１が削除対象（記載不要な論理式）となる。また、“Ｅ２”における「Ａ−ＤＡＴＥ＜Ｂ−ＤＡＴＥ」の論理式が、既に記載済みの論理式に相当するので、論理式ＬＧ２が削除対象となる。
そのため、入力仕様生成部２３１は、論理式ＬＧ１及び論理式ＬＧ２を削除して、簡素化された入力中間データ（ＳＤＴ６）を生成する。
【００６３】
なお、上述した（第２の手法）では、エラーコード格納変数の値の記載順序によって、削除可能な論理式が変化する。入力仕様生成部２３１は、エラーコード格納変数の値の記載順序を変更した複数のパターンにおいて、記載不要な論理式を削除し、複数のパターンのうちで最も簡素化可能なパターンを選択する。ここでは、図１３を参照して、入力仕様生成部２３１による順序評価の一例について説明する。
【００６４】
図１３は、本実施形態の簡素化処理における順序評価の一例を示す図である。
この図において、入力中間データ（ＳＤＴ１）は、簡素化処理前の入力中間データであり、図７に示す入力中間データと同様の例である。また、評価結果ＴＣ１は、「順序１」として、“Ｅ１”→“Ｅ２”→“０”の順の記述したバイの評価結果を示し、評価結果ＴＣ２は、「順序２」として、“Ｅ２”→“Ｅ１”→“０”の順の記述したバイの評価結果を示している。
【００６５】
図１３に示す例では、「順序１」による評価結果ＴＣ１は、入力中間データ（ＳＤＴ１）の論理式の数が４個に簡素化されることを示し、「順序２」による評価結果ＴＣ２は、入力中間データ（ＳＤＴ１）の論理式の数が６個のままであることを示している。この場合、入力仕様生成部２３１は、「順序１」を選択する。
なお、入力仕様生成部２３１は、全ての順序の組み合わせについて、上述のような評価を実行してもよいし、例えば、遺伝的アルゴリズムなどの現実的な組み合わせを生成する最適化手法を利用してもよい。
【００６６】
次に、図１４を参照して、入力仕様生成部２３１が、決定木に基づいて、（第２の手法）による簡素化処理を実行する場合の一例について詳細に説明する。
図１４は、本実施形態における決定木を利用した簡素化処理の一例を示す図である。
ここでは、図１４（ａ）に示す「元の論理式」を「チェック済み条件」に基づいて簡素化する場合の例である。この場合、入力仕様生成部２３１は、まず、図１4（ｂ）に示すように、「元の論理式」の決定木を構築する。なお、この図の決定木において、実線が“Ｔｒｕｅ”（真）を示し、破線が“Ｆａｌｓｅ”（偽）を示している。
【００６７】
次に、入力仕様生成部２３１は、図１４（ｃ）に示すように決定木の「チェック済み条件」の箇所に、記号“⊥”（「何でも良い」を意味する記号）を付与する。
次に、入力仕様生成部２３１は、図１４（ｄ）に示すように決定木を記号“⊥”から遡って通過したノード（○印の部分）を削除する。ここに示す例では、論理式“Ｐ＝＝１”に関するノードが残る。その結果、入力仕様生成部２３１は、図１４（ｅ）に示すように、「Ｐ＝＝１ならば“Ｅ２”」とする簡素化された入力中間データを生成する。
このように、入力仕様生成部２３１は、論理式に基づいて構築された決定木に基づいて、記載済み論理式を削除する。
【００６８】
＜第１の変形例＞
次に、図１５〜図１８を参照して、本実施形態の変形例について説明する。
本実施形態において、仕様生成装置１が、上述した図５に示すような業務処理設計書を生成する例を説明したが、図１５に示す変形例のように、エラー時の仕様を付与するようにしてもよい。
【００６９】
図１５は、本実施形態の変形例における業務処理設計書の一例を示す図である。
この図に示すように、業務処理設計書は、例えば、「変数名」と、「更新内容」と、「条件」と、「エラー時」とを関連付けた情報を含んでいる。ここで、「エラー時」は、当該変数のエラー時の値を示している。
図１５に示す例では、例えば、「変数名」が“ＰＲＩＣＥ”の業務仕様は、「更新内容」が“ＰＲＯＤ．ＰＲＩＣＥ＊ＮＵＭ”であり、「エラー時」が“０”であることを示している。
【００７０】
図１６〜図１８は、図１５に示す業務処理設計書を生成するために、業務仕様生成部２３２が、上述した図７及び図８に示す入力中間データ（ＳＤＴ１）及び業務中間データ（ＳＤＴ２）を簡素化する一例を説明する。
図１６〜図１８は、本実施形態の変形例における決定木を利用した業務中間データの簡素化処理の一例を説明する図である。
【００７１】
図１６（ａ）において、入力中間データ（ＳＤＴ１）及び業務中間データ（ＳＤＴ２）は、上述した図７及び図８と同様のものであり、「設定ファイル」は、図３に示す設定ファイル（ＥＶ１）と同様のものである。また、この例では、論理式（ＬＧ３）は、入力チェックが成功である場合の論理式である。
業務仕様生成部２３２は、まず、図１６（ａ）に示す業務中間データ（ＳＤＴ２）に基づいて、図１６（ｂ）の示すように「変数ＰＲＩＣＥの決定木」を構築する。また、業務仕様生成部２３２は、図１６（ｂ）に示すように、論理式（ＬＧ３）の否定（ＮＯＴ）となる論理式（ＬＧ４）を生成する。
【００７２】
次に、業務仕様生成部２３２は、図１７（ａ）に示すように、論理式（ＬＧ４）に基づいて、決定木に記号“⊥”を付与する。業務仕様生成部２３２は、決定木を記号“⊥”から遡って通過したノードを削除する。その結果、図１７（ｂ）に示すように、全てのノードが削除されて、業務仕様生成部２３２は、変数“ＰＲＩＣＥ”が常に“ＰＲＯＤ．ＰＲＩＣＥ＊ＮＵＭ”となるという簡素化された業務中間データを生成する。
また、業務仕様整形部２４２は、この簡素化された業務中間データに基づいて、図１７（ｃ）に示す業務処理設計書を生成する。
【００７３】
また、エラー時の仕様を付与するために、業務仕様生成部２３２は、図１８（ａ）に示すように、論理式（ＬＧ４）の否定（ＮＯＴ）となる論理式（ＬＧ３）に基づいて、決定木に記号“⊥”を付与する。業務仕様生成部２３２は、決定木を記号“⊥”から遡って通過したノードを削除する。その結果、図１８（ｂ）に示すように、全てのノードが削除されて、業務仕様生成部２３２は、変数“ＰＲＩＣＥ”が常に“０”となるという簡素化された業務中間データを生成する。
また、業務仕様整形部２４２は、この簡素化された業務中間データに基づいて、図１８（ｃ）に示す業務処理設計書を生成する。
このようにして、仕様生成装置１は、図１５に示すエラー時の仕様を付与した業務処理設計書を生成する。
【００７４】
以上説明したように、本実施形態による仕様生成方法は、中間データ生成ステップと、分割処理ステップと、簡素化処理ステップと、設計書生成ステップとを含んでいる。中間データ生成ステップにおいて、中間データ生成部２１が、ソースファイルを記憶するソースファイル記憶部３１からソースファイルに記述されているソースコードを取得し、取得したソースコードを構文解析して、処理の結果を格納する格納変数（第１の変数）と、入力変数で表現された論理式と、格納変数の値とを対応付けた中間データを生成する。分割処理ステップにおいて、分割処理部２２が、予め指定された入力チェックの処理結果を格納する第２の変数に基づいて、中間データを、入力チェックに対応する処理の部分を示す入力中間データと、当該入力チェックに対応する処理の部分を含まない業務処理の部分を示す業務中間データとに分割する。簡素化処理ステップにおいて、簡素化処理部２３が、入力中間データに含まれるエラーコード格納変数（第２の変数）の値のうち、入力チェックが成功である場合のエラーコード格納変数の値に対応する論理式に基づいて、業務中間データから不要な論理式を削除して、簡素化された業務中間データを生成する。設計書生成ステップにおいて、設計書生成部２４が、入力中間データに基づいて、入力チェックに関する設計仕様を記述した入力チェック設計書を生成するとともに、簡素化された業務中間データに基づいて、業務処理に関する設計仕様を記述した業務処理設計書を生成する。
【００７５】
これにより、本実施形態による仕様生成方法は、ソースコードから入力チェックに関する設計仕様と業務処理に関する設計仕様とに分離した入力チェック設計書及び業務処理設計書を生成するので、ソースコードから理解しやすい設計書を生成することができる。すなわち、本実施形態による仕様生成方法は、ソースコードから理解しやすい仕様を回復することができる。
例えば、数Ｍ（メガ）ステップを超えるソースコードのように大規模なシステムである場合であっても、本実施形態による仕様生成方法は、理解しやすい設計書を自動的に生成することができるので、大規模なシステムの理解を容易にすることができる。
【００７６】
また、本実施形態では、簡素化処理ステップにおいて、簡素化処理部２３が、予め定められた所定のアルゴリズムに基づいて、入力中間データから不要な論理式を削除して、簡素化された入力中間データを生成する。設計書生成ステップにおいて、設計書生成部２４が、簡素化された入力中間データに基づいて、入力チェックに関する設計仕様を記述した入力チェック設計書を生成する。
これにより、入力チェック設計書から不要な論理式が削除されるので、本実施形態による仕様生成方法は、さらに理解しやすい設計書を生成することができる。
【００７７】
また、本実施形態では、簡素化処理ステップにおいて、簡素化処理部２３が、論理式に基づいて構築された決定木に基づいて、業務中間データ及び入力中間データのうちの少なくとも一方に含まれる記載不要な論理式を削除する。
これにより、本実施形態による仕様生成方法は、簡易な手法により、設計書から記載不要な論理式を削除することができる。
【００７８】
また、本実施形態では、簡素化処理ステップにおいて、簡素化処理部２３が、恒偽条件となる論理式に基づいて、業務中間データ及び入力中間データのうちの少なくとも一方に含まれる冗長な論理式を削除する。
これにより、本実施形態による仕様生成方法は、簡易な手法により、冗長な論理式を削除することができる。
【００７９】
また、本実施形態では、簡素化処理ステップにおいて、簡素化処理部２３が、エラーコード格納変数の値の記載順序に基づいて、既に記載済み論理式を削除する。簡素化処理部２３は、例えば、既に記載済み論理式に基づいて構築された決定木を利用して、既に記載済み論理式である記載不要な論理式を削除する。
これにより、既に記載済み論理式を記載しないようにするので、本実施形態による仕様生成方法は、さらに理解しやすい設計書を生成することができる。
【００８０】
また、本実施形態では、簡素化処理ステップにおいて、簡素化処理部２３は、第２の変数の値の記載順序を変更した複数のパターンにおいて、記載済み論理式を削除し、複数のパターンのうちで最も簡素化可能なパターンを選択する。
これにより、本実施形態による仕様生成方法は、複雑なソースコードから適切に簡素化した設計書を生成することができる。
【００８１】
また、本実施形態では、中間データ生成部２１は、記号実行の技術を利用して、ソースコードから中間データ（中間デシジョンテーブル）を生成する。
これにより、中間データ生成部２１は、個別の値ではなく変数が取り得る全ての値の範囲を、制約条件（論理式）を通じて一括して取り扱うことができるとともに、中間データにおいて、処理の結果を格納する格納変数以外の中間変数を削除することができる。
【００８２】
また、本実施形態による仕様生成方法は、中間データ生成ステップと、分割処理ステップと、簡素化処理ステップと、設計書生成ステップとを含むようにしてもよい。分割処理ステップにおいて、中間データ生成部２１が、ソースファイル記憶部３１からソースファイルに記述されているソースコードを取得し、取得したソースコードを構文解析して、格納変数と、入力変数で表現された論理式と、格納変数の値とを対応付けた中間データを生成する。分割処理ステップにおいて、分割処理部２２が、予め指定されたエラーコード格納変数に基づいて、中間データを、入力中間データと、業務中間データとに分割する。簡素化処理ステップにおいて、簡素化処理部２３が、予め定められた所定のアルゴリズムに基づいて、入力中間データから不要な論理式を削除して、簡素化された入力中間データを生成する。設計書生成ステップにおいて、設計書生成部２４が、簡素化された入力中間データに基づいて、入力チェック設計書を生成するとともに、業務中間データに基づいて、業務処理設計書を生成する。
これにより、本実施形態による仕様生成方法は、ソースコードから理解しやすい設計書を生成することができる。
【００８３】
また、本実施形態による仕様生成装置１は、中間データ生成部２１と、分割処理部２２と、簡素化処理部２３と、設計書生成部２４とを備えている。中間データ生成部２１は、ソースファイル記憶部３１（ソース記憶部の一例）からソースファイルに記述されているソースコードを取得する。中間データ生成部２１は、取得したソースコードを構文解析して、処理の結果を格納する格納変数（第１の変数）と、入力変数で表現された論理式と、格納変数の値とを対応付けた中間データを生成する。分割処理部２２は、予め指定された入力チェックの処理結果を格納する第２の変数に基づいて、中間データを、入力チェックに対応する処理の部分を示す入力中間データと、当該入力チェックに対応する処理の部分を含まない業務処理の部分を示す業務中間データとに分割する。簡素化処理部２３は、入力中間データに含まれるエラーコード格納変数（第２の変数）の値のうち、入力チェックが成功である場合のエラーコード格納変数の値に対応する論理式に基づいて、業務中間データから不要な論理式を削除して、簡素化された業務中間データを生成する。設計書生成部２４は、入力中間データに基づいて、入力チェックに関する設計仕様を記述した入力チェック設計書を生成するとともに、簡素化された業務中間データに基づいて、業務処理に関する設計仕様を記述した業務処理設計書を生成する。
これにより、本実施形態による仕様生成装置１は、上述した本実施形態による仕様生成方法と同様の効果を奏し、ソースコードから理解しやすい仕様を回復することができる。
【００８４】
また、本実施形態による仕様生成装置１は、中間データ生成部２１と、分割処理部２２と、簡素化処理部２３と、設計書生成部２４とを備えるようにしてもよい。簡素化処理部２３は、予め定められた所定のアルゴリズムに基づいて、入力中間データから不要な論理式を削除して、簡素化された入力中間データを生成する。設計書生成部２４は、簡素化された入力中間データに基づいて、入力チェックに関する設計仕様を記述した入力チェック設計書を生成するとともに、業務中間データに基づいて、業務処理に関する設計仕様を記述した業務処理設計書を生成する。
これにより、本実施形態による仕様生成装置１は、上述した本実施形態による仕様生成方法と同様の効果を奏し、ソースコードから理解しやすい仕様を回復することができる。
【００８５】
なお、本発明は、上記の各実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で変更可能である。
例えば、上記の実施形態において、ファイルサーバ装置３０が、ソースファイル記憶部３１と、設定ファイル記憶部３２と、設計書記憶部３３とを備える例を説明したが、これに限定されるものではない。例えば、ソースファイル記憶部３１、設定ファイル記憶部３２、及び設計書記憶部３３の一部又は全てを仕様生成装置１の記憶部１０が備えるようにしてもよい。また、例えば、ネットワークに接続された複数のサーバ装置が、ソースファイル記憶部３１、設定ファイル記憶部３２、及び設計書記憶部３３を備えるようにしてもよい。
【００８６】
また、仕様生成装置１が備える各構成の一部を、例えば、ネットワークにより接続された外部装置（例えば、サーバ装置など）が備えるようにしてもよい。例えば、記憶部１０が備える中間データ記憶部１１、分割中間データ記憶部１２、及び簡素化中間データ記憶部１３の一部又は全部を例えば、ネットワークにより接続された外部装置（例えば、サーバ装置など）が備えるようにしてもよい。
【００８７】
また、上記の実施形態において、設定ファイルは、使用者によってエラーコード格納変数が人手で設定される例を説明したが、これに限定されるものではない。例えば、設定ファイルは、プロジェクトの標準コード（標準ルール）などからエラーコード格納変数を読み込むことで設定されるようにしてもよいし、仕様生成装置１が、複数のプログラムを解析して、共通に用いられる変数を自動的に抽出するようにしてもよい。
また、上記の実施形態において、不要な論理式を削除して中間データを簡素化する処理において、決定木を利用する例を説明したが、これに限定されるものではなく、他の手法を利用して簡素化するようにしてもよい。
【００８８】
なお、上述した仕様生成システム１００及び仕様生成装置１が備える各構成は、内部に、コンピュータシステムを有している。そして、上述した仕様生成システム１００及び仕様生成装置１が備える各構成の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより上述した仕様生成システム１００及び仕様生成装置１が備える各構成における処理を行ってもよい。ここで、「記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行する」とは、コンピュータシステムにプログラムをインストールすることを含む。ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。
また、「コンピュータシステム」は、インターネットやＷＡＮ、ＬＡＮ、専用回線等の通信回線を含むネットワークを介して接続された複数のコンピュータ装置を含んでもよい。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。このように、プログラムを記憶した記録媒体は、ＣＤ−ＲＯＭ等の非一過性の記録媒体であってもよい。
【００８９】
また、記録媒体には、当該プログラムを配信するために配信サーバからアクセス可能な内部又は外部に設けられた記録媒体も含まれる。なお、プログラムを複数に分割し、それぞれ異なるタイミングでダウンロードした後に仕様生成システム１００及び仕様生成装置１が備える各構成で合体される構成や、分割されたプログラムのそれぞれを配信する配信サーバが異なっていてもよい。さらに「コンピュータ読み取り可能な記録媒体」とは、ネットワークを介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。また、上記プログラムは、上述した機能の一部を実現するためのものであってもよい。さらに、上述した機能をコンピュータシステムに既に記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【００９０】
また、上述した機能の一部又は全部を、ＬＳＩ（Large Scale Integration）等の集積回路として実現してもよい。上述した各機能は個別にプロセッサ化してもよいし、一部、又は全部を集積してプロセッサ化してもよい。また、集積回路化の手法はＬＳＩに限らず専用回路、又は汎用プロセッサで実現してもよい。また、半導体技術の進歩によりＬＳＩに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いてもよい。
【符号の説明】
【００９１】
１  仕様生成装置
１０  記憶部
１１  中間データ記憶部
１２  分割中間データ記憶部
１３  簡素化中間データ記憶部
２０  制御部
２１  中間データ生成部
２２  分割処理部
２３  簡素化処理部
２４  設計書生成部
３０  ファイルサーバ装置
３１  ソースファイル記憶部
３２  設定ファイル記憶部
３３  設計書記憶部
１００  仕様生成システム
２１１  構文解析部
２１２  記号実行部
２３１  入力仕様生成部
２３２  業務仕様生成部
２４１  入力仕様整形部
２４２  業務仕様整形部
【図１】
0006364332.tif 000002
【図２】
0006364332.tif 000003
【図３】
0006364332.tif 000004
【図４】
0006364332.tif 000005
【図５】
0006364332.tif 000006
【図６】
0006364332.tif 000007
【図７】
0006364332.tif 000008
【図８】
0006364332.tif 000009
【図９】
0006364332.tif 000010
【図１０】
0006364332.tif 000011
【図１１】
0006364332.tif 000012
【図１２】
0006364332.tif 000013
【図１３】
0006364332.tif 000014
【図１４】
0006364332.tif 000015
【図１５】
0006364332.tif 000016
【図１６】
0006364332.tif 000017
【図１７】
0006364332.tif 000018
【図１８】
0006364332.tif 000019