(57)【要約】【課題】ソフトウェア開発の効率を向上させる。【解決手段】ソフトウェア開発支援装置は、設計情報からソースコードを生成するソースコード生成部と、ソースコードにより記述されるソフトウェアに入力するための入力データに対するソフトウェアの実行結果を出力するソフトウェア処理部と、レポートを生成するレポート生成部と、ソフトウェアが有する処理ステップであって、判定処理を行う処理ステップにおける判定条件に基づいて、入力データを生成する入力データ生成部と、を備え、網羅情報を参照し、網羅されていない判定処理で用いた入力データを構成するパラメータを、入力データの生成規則を表すデータ生成規則を参照して変更し、網羅情報の判定処理に関するルート情報を参照して判定処理で用いた入力データを、ルート情報の入力データ識別情報に基づいて特定し、パラメータ以外の部分の入力値とする。【選択図】図１
2018113082.tif 000002
【特許請求の範囲】
【請求項１】
設計情報からソースコードを生成するソースコード生成部と、
前記ソースコード生成部が生成したソースコードにより記述されるソフトウェアに入力するための入力データを入力して前記ソフトウェアを実行し、前記入力データに対する前記ソフトウェアの実行結果を出力するソフトウェア処理部と、
前記ソフトウェアに入力された入力データと、当該入力データに対する前記ソフトウェアの実行結果とを対応付けたレポートを生成するレポート生成部と、
前記ソフトウェアが有する処理ステップであって、判定処理を行う処理ステップにおける判定条件に基づいて、前記入力データを生成する入力データ生成部と、
を備え、
前記ソフトウェア処理部は、前記入力データ生成部が生成した入力データを入力して前記ソフトウェアを実行し、
前記入力データ生成部は、前記ソフトウェアに対して入力された前記入力データに基づいて、前記ソフトウェアに入力するための前記入力データを新たに生成し、
前記入力データ生成部は、前記判定処理における判定結果が網羅されたか否かを示す網羅情報を参照し、網羅されていない判定処理で用いた入力データを構成するパラメータを、入力データの生成規則を表すデータ生成規則を参照して変更し、
前記入力データ生成部は、前記網羅情報の判定処理に関するルート情報を参照して前記判定処理で用いた入力データを、前記ルート情報の入力データ識別情報に基づいて特定し、前記パラメータ以外の部分の入力値とすることを特徴とするソフトウェア開発支援装置。
【請求項２】
ソフトウェア開発支援装置が、設計情報からソースコードを生成するソースコード生成過程と、
ソフトウェア開発支援装置が、前記ソースコード生成過程において生成したソースコードにより記述されるソフトウェアに入力するための入力データを入力して前記ソフトウェアを実行し、前記入力データに対する前記ソフトウェアの実行結果を出力するソフトウェア処理過程と、
ソフトウェア開発支援装置が、前記ソフトウェアに入力された入力データと、当該入力データに対する前記ソフトウェアの実行結果とを対応付けたレポートを生成するレポート生成過程と、
ソフトウェア開発支援装置が、前記ソフトウェアが有する処理ステップであって、判定処理を行う処理ステップにおける判定条件に基づいて、前記入力データを生成する入力データ生成過程と、
を含み、
前記ソフトウェア処理過程において、前記入力データ生成過程で生成した入力データを入力して前記ソフトウェアを実行し、
前記入力データ生成過程において、前記ソフトウェアに対して入力された前記入力データに基づいて、前記ソフトウェアに入力するための前記入力データを新たに生成し、
前記入力データ生成過程において、前記判定処理における判定結果が網羅されたか否かを示す網羅情報を参照し、網羅されていない判定処理で用いた入力データを構成するパラメータを、入力データの生成規則を表すデータ生成規則を参照して変更し、
前記入力データ生成過程において、前記網羅情報の判定処理に関するルート情報を参照して前記判定処理で用いた入力データを、前記ルート情報の入力データ識別情報に基づいて特定し、前記パラメータ以外の部分の入力値とすることを特徴とするソフトウェア開発支援方法。
【請求項３】
ソフトウェア開発支援装置のコンピュータに、
設計情報からソースコードを生成するソースコード生成手順と、
前記ソースコード生成手順において生成したソースコードにより記述されるソフトウェアに入力するための入力データを入力して前記ソフトウェアを実行し、前記入力データに対する前記ソフトウェアの実行結果を出力するソフトウェア処理手順と、
前記ソフトウェアに入力された入力データと、当該入力データに対する前記ソフトウェアの実行結果とを対応付けたレポートを生成するレポート生成手順と、
前記ソフトウェアが有する処理ステップであって、判定処理を行う処理ステップにおける判定条件に基づいて、前記入力データを生成する入力データ生成手順と、
を実行させ、
前記ソフトウェア処理手順において、前記入力データ生成手順で生成した入力データを入力して前記ソフトウェアを実行し、
前記入力データ生成手順において、前記ソフトウェアに対して入力された前記入力データに基づいて、前記ソフトウェアに入力するための前記入力データを新たに生成し、
前記入力データ生成手順において、前記判定処理における判定結果が網羅されたか否かを示す網羅情報を参照し、網羅されていない判定処理で用いた入力データを構成するパラメータを、入力データの生成規則を表すデータ生成規則を参照して変更し、
前記入力データ生成手順において、前記網羅情報の判定処理に関するルート情報を参照して前記判定処理で用いた入力データを、前記ルート情報の入力データ識別情報に基づいて特定し、前記パラメータ以外の部分の入力値とするためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア開発支援装置、ソフトウェア開発支援方法、およびプログラムに関する。
【背景技術】
【０００２】
近年、ソフトウェア開発の効率を向上させるため、ソフトウェア開発の各工程を自動化することが研究されている。例えば、ソフトウェア用のテストデータを自動生成する場合、入力データに対するソフトウェアの実行経路を取得し、経路の始端から終端までを操作することで経路上の条件を順に集め、テストデータ生成のための条件とすることが考えられる（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−１８１７８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述のようにソフトウェア用のテストデータを生成した場合、条件が膨大になって、テストデータの生成に時間がかかることがあった。また、ソフトウェア用のテストデータを用いた試験によりソフトウェアの異常動作を検出した場合、問題の所在がソフトウェアの設計にあるのか、ソースコードにあるのかを検証する必要が生じ、試験に時間がかかることがあった。このように、従来のソフトウェア開発支援装置では、ソフトウェア開発を効率良く行うことが困難である場合があった。
【０００５】
本発明は上記の点に鑑みてなされたものであり、ソフトウェア開発の効率を向上させることができるソフトウェア開発支援装置、ソフトウェア開発支援方法、およびプログラムを提供する。
【課題を解決するための手段】
【０００６】
本発明は上記の課題を解決するためになされたものであり、本発明の一態様は、設計情報からソースコードを生成するソースコード生成部と、前記ソースコード生成部が生成したソースコードにより記述されるソフトウェアに入力するための入力データを入力して前記ソフトウェアを実行し、前記入力データに対する前記ソフトウェアの実行結果を出力するソフトウェア処理部と、前記ソフトウェアに入力された入力データと、当該入力データに対する前記ソフトウェアの実行結果とを対応付けたレポートを生成するレポート生成部と、前記ソフトウェアが有する処理ステップであって、判定処理を行う処理ステップにおける判定条件に基づいて、前記入力データを生成する入力データ生成部と、を備え、前記ソフトウェア処理部は、前記入力データ生成部が生成した入力データを入力して前記ソフトウェアを実行し、前記入力データ生成部は、前記ソフトウェアに対して入力された前記入力データに基づいて、前記ソフトウェアに入力するための前記入力データを新たに生成し、前記入力データ生成部は、前記判定処理における判定結果が網羅されたか否かを示す網羅情報を参照し、網羅されていない判定処理で用いた入力データを構成するパラメータを、入力データの生成規則を表すデータ生成規則を参照して変更し、前記入力データ生成部は、前記網羅情報の判定処理に関するルート情報を参照して前記判定処理で用いた入力データを、前記ルート情報の入力データ識別情報に基づいて特定し、前記パラメータ以外の部分の入力値とすることを特徴とするソフトウェア開発支援装置である。
【０００７】
また、本発明の一態様は、ソフトウェア開発支援装置が、設計情報からソースコードを生成するソースコード生成過程と、ソフトウェア開発支援装置が、前記ソースコード生成過程において生成したソースコードにより記述されるソフトウェアに入力するための入力データを入力して前記ソフトウェアを実行し、前記入力データに対する前記ソフトウェアの実行結果を出力するソフトウェア処理過程と、ソフトウェア開発支援装置が、前記ソフトウェアに入力された入力データと、当該入力データに対する前記ソフトウェアの実行結果とを対応付けたレポートを生成するレポート生成過程と、ソフトウェア開発支援装置が、前記ソフトウェアが有する処理ステップであって、判定処理を行う処理ステップにおける判定条件に基づいて、前記入力データを生成する入力データ生成過程と、を含み、前記ソフトウェア処理過程において、前記入力データ生成過程で生成した入力データを入力して前記ソフトウェアを実行し、前記入力データ生成過程において、前記ソフトウェアに対して入力された前記入力データに基づいて、前記ソフトウェアに入力するための前記入力データを新たに生成し、前記入力データ生成過程において、前記判定処理における判定結果が網羅されたか否かを示す網羅情報を参照し、網羅されていない判定処理で用いた入力データを構成するパラメータを、入力データの生成規則を表すデータ生成規則を参照して変更し、前記入力データ生成過程において、前記網羅情報の判定処理に関するルート情報を参照して前記判定処理で用いた入力データを、前記ルート情報の入力データ識別情報に基づいて特定し、前記パラメータ以外の部分の入力値とすることを特徴とするソフトウェア開発支援方法である。
【０００８】
また、本発明の一態様は、ソフトウェア開発支援装置のコンピュータに、設計情報からソースコードを生成するソースコード生成手順と、前記ソースコード生成手順において生成したソースコードにより記述されるソフトウェアに入力するための入力データを入力して前記ソフトウェアを実行し、前記入力データに対する前記ソフトウェアの実行結果を出力するソフトウェア処理手順と、前記ソフトウェアに入力された入力データと、当該入力データに対する前記ソフトウェアの実行結果とを対応付けたレポートを生成するレポート生成手順と、前記ソフトウェアが有する処理ステップであって、判定処理を行う処理ステップにおける判定条件に基づいて、前記入力データを生成する入力データ生成手順と、を実行させ、前記ソフトウェア処理手順において、前記入力データ生成手順で生成した入力データを入力して前記ソフトウェアを実行し、前記入力データ生成手順において、前記ソフトウェアに対して入力された前記入力データに基づいて、前記ソフトウェアに入力するための前記入力データを新たに生成し、前記入力データ生成手順において、前記判定処理における判定結果が網羅されたか否かを示す網羅情報を参照し、網羅されていない判定処理で用いた入力データを構成するパラメータを、入力データの生成規則を表すデータ生成規則を参照して変更し、前記入力データ生成手順において、前記網羅情報の判定処理に関するルート情報を参照して前記判定処理で用いた入力データを、前記ルート情報の入力データ識別情報に基づいて特定し、前記パラメータ以外の部分の入力値とするためのプログラムである。
【発明の効果】
【０００９】
本発明によれば、ソフトウェア開発の効率を向上させることができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の一実施形態に係るソフトウェア開発支援装置の概略機能構成の一例を示すブロック図である。
【図２】本発明の一実施形態に係る設計情報の一例を示す図である。
【図３】本発明の一実施形態に係る設計書の一例を示す図である。
【図４】本発明の一実施形態に係るソフトウェア開発支援装置により生成されるソースコードが記述するソフトウェアの処理の流れの一例を示すフローチャートである。
【図５】本発明の一実施形態に係る入力データ情報の一例を示す図である。
【図６】本発明の一実施形態に係るデータ生成規則情報の一例を示す図である。
【図７】本発明の一実施形態に係るルート情報の一例を示す図である。
【図８】本発明の一実施形態に係る網羅情報の一例を示す図である。
【図９】本発明の一実施形態に係る出力情報の一例を示す図である。
【図１０】本発明の一実施形態に係るソフトウェア開発支援装置による処理の流れの一例を示すフローチャートである。
【図１１】本発明の一実施形態に係るソフトウェア開発支援装置による入力データの生成処理の流れの一例を示すフローチャートである。
【図１２】本発明の一実施形態に係るレポートの第１例を示す図である。
【図１３】本発明の一実施形態に係るレポートの第２例を示す図である。
【図１４】本発明の一実施形態に係るレポートの第３例を示す図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照しながら本発明の実施形態について詳しく説明する。
［ソフトウェア開発支援装置の概略構成］
本実施形態に係るソフトウェア開発支援装置１は、ユーザから入力されたソフトウェアの設計情報に基づいてソースコードおよび設計書を生成する機能を有する。また、ソフトウェア開発支援装置１は、生成したソースコードによって記述されたソフトウェアを実行するための入力データを、既存の入力データに基づいて生成する機能を有する。当該入力データは、生成ソフトウェアおよび設計情報の品質確認のために生成される。以下では、ソフトウェア開発支援装置１が生成したソースコードによって記述されたソフトウェアを生成ソフトウェアと称する。さらに、ソフトウェア開発支援装置１は、生成ソフトウェアを、当該生成ソフトウェアに入力するための生成ソフトウェア用入力データに基づいて実行し、その実行結果を入力データと対応付けて表示する機能を有する。以下では、生成ソフトウェア用入力データを単に入力データと称する。
【００１２】
図１は、ソフトウェア開発支援装置１の概略機能構成の一例を示すブロック図である。
ソフトウェア開発支援装置１は、入力部１１と、表示部１２と、記憶部１３と、制御部１４と、を備える。
【００１３】
入力部１１は、入力装置を備え、ユーザからの入力を受け付ける。入力部１１は、例えば、マウス、キーボード、またはタッチパネルなどを備える。マウスやタッチパネルを介した入力の場合、入力部１１が受け付ける操作の内容は、例えば、表示部１２に表示される。また、入力部１１は、例えば通信用インターフェイスを備え、外部装置から通信を介して各種情報の入力を受け付けてもよい。
表示部１２は、表示装置を備え、各種情報を表示する。表示部１２は、例えば、液晶ディスプレイや有機ＥＬ（Ｅｌｅｃｔｒｏ−Ｌｕｍｉｎｅｓｃｅｎｃｅ）ディスプレイなどを備える。
【００１４】
記憶部１３は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、またはＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒy）などを備える。また、記憶部１３は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｃ  Ｄｒｉｖｅ）、フラッシュメモリーなどの外部記憶装置を備えてよい。記憶部１３は、ソフトウェア開発支援装置１が備えるＣＰＵが実行するための各種プログラムやＣＰＵが実行した処理の結果などを記憶する。
【００１５】
また、記憶部１３は、設計情報記憶部１３１と、設計書記憶部１３２と、ソースコード記憶部１３３と、入力データ情報記憶部１３４と、データ生成規則情報記憶部１３５と、ルート情報記憶部１３６と、網羅情報記憶部１３７と、出力情報記憶部１３８と、レポート記憶部１３９と、を備える。
【００１６】
設計情報記憶部１３１は、設計情報を記憶する。設計情報は、例えば、表計算ソフトにより解釈可能な表形式のファイルである。設計情報のファイルには、例えば、テンプレートファイルが存在し、当該テンプレートファイルの所定の領域にユーザは設計情報を入力する。
図２は、設計情報の一例を示す図である。
この図に示される例において、設計情報には、通番と、階層と、処理と、Ｐ１、Ｐ２、Ｐ３と、チャートとの各項目を有し、それぞれについて値を有する。本実施形態では、階層からＰ３までの項目に、処理記号などによって表される中間モデルとしての設計情報がユーザから入力される。チャートの項目には、ユーザから入力された項目に基づいてソフトウェア開発支援装置１が生成した情報が示されている。
【００１７】
通番の項目は、設計情報が入力される行を識別する情報である。階層の項目は、プログラムをネスティングして複数の入れ子構造にする場合に、その階層を定める情報である。
この例では、例えば通番が「８」である行に「ｓ（ｒｓ．００１）」との処理記号が入力されている。「ｒｓ．００１」は、データベースなどから読み出した複数の情報（レコード）が含まれるレコードセットを示す。ここで、「００１」はレコードセットの種別を示しており、複数種別のレコードセットが予め定義されていてよい。本実施形態では、「ｒｓ．００１」は、注文情報検索のレコードセットである。「ｓ（ｒｓ．００１）」は、後続する処理を、「ｒｓ．００１」に含まれるレコード数分ループすることを示す。ただし、階層の項目において、冒頭に「／／」との記号が入力されると、その情報はコメント行として扱う。この例では、例えば通番が「１」である行に「／／ＩＮＰＵＴパラメータをアウトプットＢｅａｎに代入」とのコメントが入力されている。
【００１８】
処理の項目は、特定のプログラミング言語に依存しない規則によって中間モデルとして定められた処理記号であり、その行によって表すプログラムの処理を示す情報である。この例では、例えば通番が「２」である行に「ｃｏｐｙ」の処理記号が入力されている。「ｃｏｐｙ」は、指定された変数に対応付けられて格納された情報を、他の変数に対応付けて格納する（代入する）ことを示す処理記号である。ここで、代入の対象である変数が、複数の要素を持つレコードセットや構造体である場合には、代入元の変数の要素と同一の名称である代入先の変数の要素に、対応する情報を代入する。通番が「４」である行に入力されている「ｐｒｉｎｔ」の処理記号は、指定された変数に対応付けられて格納された情報をログ出力することを示す。ログ出力とは、例えば所定のログファイルに、指定された変数に対応付けられて格納された情報を書込むことを示す。通番が「６」である行に入力されている「ｒｓ．００１＠ｒｅａｄ（＊）」の処理記号は、レコードセットである「ｒｓ．００１」によって示される検索処理を実行し、レコードセットに検索結果を代入することを示す。ここで示した処理記号の例は一例であり、この他にも、様々なソフトウェアの処理を示す処理記号が予め定義されていてよい。
【００１９】
Ｐ１、Ｐ２、Ｐ３は、処理の項目によって示される処理の引数や属性等を示す情報である。この例では、例えば通番が「２」である行においては、処理の項目に「ｃｏｐｙ」が入力されており、「Ｐ２」の項目に入力された変数である「ｉｎ」に対応付けられて格納された情報を、「Ｐ１」の項目に入力された変数である「ｏｕ．０１」に対応付けて格納することを示す。「ｉｎ」は入力項目を示し、「ｏｕ．０１」は出力項目を示す。例えば、「ｉｎ」は入力画面における複数の入力項目が含まれるオブジェクトを示し、「ｏｕ．０１」は出力画面における複数の出力項目が含まれるオブジェクトを示す。具体的には、例えば、開発対象のソフトウェアがオンラインウェブアプリケーションである場合、「ｉｎ」はリクエストパラメータをラップしたオブジェクトを示し、「ｉｎ」はレスポンスパラメータをラップしたオブジェクトを示す。あるいは、開発対象のソフトウェアがバッチアプリケーションである場合、「ｉｎ」はインプットパラメータをラップしたオブジェクトを示し、「ｉｎ」はアウトプットパラメータをラップしたオブジェクトを示す。ここで、「０１」は出力項目の通番を示しており、複数の出力項目が予め定義されていてよい。
例えば「ｏｕ．０１」は、複数の出力項目のうちのひとつめの出力項目であることを示す。通番が「４」である行においては、処理の項目に「ｐｒｉｎｔ」が入力されており、「Ｐ１」の項目に入力された変数である「ｉｎ．ｏｒｄｅｒｉｄ」に対応付けられて格納された情報をログ出力することを示す。「ｉｎ．ｏｒｄｅｒｉｄ」は、入力画面（ｉｎ）に含まれる要素のうち、「ｏｒｄｅｒｉｄ」の要素（注文ＩＤ）を示す。
【００２０】
通番が「９」である行においては、処理の項目に「ｃｏｐｙ」が入力されており、「Ｐ２」の項目に入力された変数である「ｒｓ．００１」のレコードセットに対応付けられて格納された情報を、「Ｐ１」の項目に入力された変数である「ｏｕ．０１．ｏｒｄｅｒｉｎｆｏ」に対応付けて格納することを示す。「ｒｓ．００１」は注文情報検索の検索結果のレコードセットであり、「ｏｕ．０１．ｏｒｄｅｒｉｎｆｏ」は出力画面の要素である注文情報の構造体である。「Ｐ３」の項目は、チャートの項目に表示させる情報を指定するための情報であり、例えば代入元と代入先の変数が複数の情報の要素を持つ場合、「１」であれば、「Ｐ２」に指定された情報の要素のうち「Ｐ１」に代入されない要素の名称のみをチャートの項目に表示し、「２」であれば、「Ｐ２」に指定された情報の要素のうち「Ｐ１」に代入される項目のみをチャートの項目に表示することを示す。
【００２１】
チャートの項目は、階層からＰ３までの項目に入力された中間モデルとしての設計情報に基づいて、その設計情報が示す内容（意味、処理）を自然言語で表す文である。この文は、後述する文生成部１６０によって生成され、チャートの項目に入力されて表示される。この例では、例えば通番が「１」、「３」、「５」、「７」である行においては、階層の項目にコメントが入力されており、このコメントがチャートの項目に入力される。通番が「２」である行においては、処理の項目に「ｃｏｐｙ」が入力されており、「Ｐ２」の項目に「ｉｎ」（入力画面）が入力されており、「Ｐ１」の項目に「ｏｕ．０１」（出力画面）が入力されている。このことから、チャートの項目には、「出力画面に入力画面の項目を全て代入する（ＩＤ一致）」のような文が生成されて入力される。
【００２２】
通番が「４」である行においては、処理の項目に「ｐｒｉｎｔ」が入力されており、「Ｐ１」の項目に「ｉｎ．ｏｒｄｅｒｉｄ」（注文ＩＤ）が入力されている。このことから、チャートの項目には、「注文ＩＤ（ｉｎ）の値をログ出力する」のような文が生成されて入力される。通番が「６」である行においては、処理の項目に「ｒｓ．００１＠ｒｅａｄ（＊）」が入力されている。このことから、チャートの項目には、「注文情報検索を実行する」のような文が生成されて入力される。通番が「８」である行においては、階層の項目に「ｓ（ｒｓ．００１）」が入力されている。このことから、チャートの項目には、「注文情報検索のレコード分ループ」のような文が生成されて入力される。通番が「９」である行においては、処理の項目に「ｃｏｐｙ」が入力されており、「Ｐ２」の項目に「ｒｓ．００１」（注文情報検索）が入力されており、「Ｐ１」の項目に「ｏｕ．０１．ｏｒｄｅｒｉｎｆｏ」（注文情報）が入力されている。このことから、チャートの項目には、「注文情報（ｏｕｔ）に注文情報検索（ＤＢ）の項目を全て代入する（ＩＤ一致）」のような文が生成されて入力される。また、「Ｐ３」の項目に「２」が指定されていることから、「Ｐ２」に指定された注文情報検索の要素のうち「Ｐ１」に指定された注文情報に代入される項目のみがチャートの項目に入力される。このように、本実施形態のソフトウェア開発支援装置１によれば、ユーザが階層からＰ３までの設計情報を入力すると、即時にその設計情報の意味内容を示す文が生成され、チャートの項目に表示される。
【００２３】
設計書記憶部１３２は、設計情報記憶部１３１に記憶された設計情報に基づいて、ソフトウェア開発支援装置１が生成した所定の書式で記述された設計書を記憶する。
図３は、設計書の一例を示す図である。
例えば、設計書記憶部１３２は、予め定められた書式の設計書のテンプレートファイルと、テンプレートファイルにおけるどの箇所にどの項目の情報を入力するかを定める情報とを予め記憶する。ソフトウェア開発支援装置１は、設計情報の各項目の情報に基づいて設計書に情報を入力することにより設計書を生成する。設計書生成部１４２は、生成した設計書を設計書記憶部１３２に記憶させる。
【００２４】
例えば、この図の例では、符号（ａ）が示す領域には、ソフトウェア設計の対象であるシステム名などの情報を入力する。符号（ｂ）が示す領域には、ソフトウェアの概要を入力する。これらの情報は、例えば設計情報のシートの所定の位置に入力される。
符号（ｃ）が示す領域には、設計の対象であるソフトウェアにおける入力データを示す情報を入力する。ここでは、入力画面の入力項目のリストが入力されている。ソフトウェア開発支援装置１は、このようなリストを、例えば設計情報に含まれる変数の名称と記憶部に記憶されている変数の定義情報に基づいて生成してもよいし、入力画面の画面設計書を外部のサーバ等から読み出し、必要な事項を転載してもよい。
【００２５】
符号（ｄ）に示す領域には、処理ロジックを入力する。例えば、設計情報においてチャートの項目に入力した文を転載する。ここで、ループなどの階層が存在する個所には、階層の深さに応じたインデントが入力されてよい。
符号（ｅ）に示す領域には、設計の対象であるソフトウェアの出力データを示す情報を入力する。ここでは、出力画面の出力項目のリストが入力されている。ソフトウェア開発支援装置１は、このようなリストを、例えば設計情報に含まれる変数の名称と記憶部に記憶されている変数定義情報に基づいて生成してもよいし、出力画面の画面設計書を外部のサーバなどから読み出し、必要な事項を転載してもよい。
符号（ｆ）に示す領域には、備考の情報が入力される。備考の情報は、例えば設計情報のシートの所定の個所に入力しておき、入力された情報を転載するようにしてもよいし、例えば後からユーザにより入力されるようにしてもよい。
【００２６】
ソースコード記憶部１３３は、設計情報記憶部１３１に記憶された設計情報に基づいて、ソフトウェア開発支援装置１が生成したソースコードを記憶する。
図４は、ソフトウェア開発支援装置１により生成されるソースコードが記述するソフトウェアの処理の流れの一例を示すフローチャートである。
この図に示される例において、生成ソフトウェアは、「分岐１」〜「分岐３」、「ループ１」、および「処理１」〜「処理３」の処理ステップを有する。ここで、処理ステップとは、生成ソフトウェアによる処理の単位である。この図に示される処理ステップは、それぞれ、図４〜図９を用いて説明する各種情報の処理ステップに対応する。
【００２７】
入力データ情報記憶部１３４は、入力データに関する入力データ情報を記憶する。
図５は、入力データ情報の一例を示す図である。
この図に示される例において、入力データは、３つのパラメータのセットを有するデータである。入力データ情報は、入力データ識別情報と、入力データと、派生元データと、データ生成規則識別情報と、判定処理ステップと、の各項目を有し、それぞれについて値を有する。入力データ識別情報の項目は、入力データを識別する入力データ識別情報を表す。入力データの項目は、パラメータ１と、パラメータ２と、パラメータ３と、の各項目を有する。パラメータ１、パラメータ２、およびパラメータ３の各項目は、入力データを構成するパラメータを表す。派生元データの項目は、入力データの生成時において、派生元となった入力データの識別情報を表す。なお、入力データがユーザにより入力された場合、派生元データの値は、「手入力」である。データ生成規則識別情報の項目は、入力データの生成時において参照されたデータ生成規則の識別情報を表す。
【００２８】
判定処理ステップは、入力データの生成時において、参照された判定処理ステップを表す。ここで、判定処理ステップとは、例えば、分岐やループなど、入力データのパラメータが所定の条件を満たすか否かを判定し、その後の処理ステップを変化させる処理ステップのことである。つまり、判定処理ステップの項目は、入力データの生成目的表す。換言すると、入力データは、判定処理ステップの判定結果のうち、それまでに実行された入力データからは出力されていない判定結果を出力するために生成される。判定処理ステップの値は、例えば、判定処理ステップの識別情報である。
【００２９】
この図に示される例において、入力データ情報記憶部１３４は、複数の入力データ情報を記憶する。最上段に表される入力データ情報は、入力データ識別情報の値が「Ｉｎ００１」であり、パラメータ１の値が「１２３４５」であり、パラメータ２の値が「豊洲太郎」であり、パラメータ３の値が「ｎｔｔｄａｔａ」であり、派生元データの値が「手入力」であり、データ生成規則識別情報の値が「なし」であり、判定処理ステップの値が「なし」である。すなわち、この入力データ情報は、入力データ識別情報「Ｉｎ００１」に対応する入力データに関するものであり、「１２３４５」、「豊洲太郎」、および「ｎｔｔｄａｔａ」の３つのパラメータセットから構成される入力データであることを表す。また、この入力データ情報は、入力データ識別情報「Ｉｎ００１」に対応する入力データがユーザに入力されたものであることを表す。
【００３０】
２段目に表される入力データ情報は、入力データ識別情報の値が「Ｉｎ００２」であり、パラメータ１の値が「１２３４５」であり、パラメータ２の値が「豊洲太郎」であり、パラメータ３の値が「ｎｔｔ」であり、派生元データの値が「Ｉｎ００１」であり、データ生成規則識別情報の値が「Ｒ０１２」であり、判定処理ステップの値が「分岐１」である。すなわち、この入力データ情報は、入力データ識別情報「Ｉｎ００２」の入力データに関するものであり、「１２３４５」、「豊洲太郎」、および「ｎｔｔ」の３つのパラメータセットから構成される入力データであることを表す。また、この入力データ情報は、入力データ識別情報「Ｉｎ００１」の入力データが、入力データ識別情報「Ｉｎ００１」の入力データを、データ生成規則識別情報「Ｒ０１２」に対応するデータ生成規則に則り、「分岐１」の処理内容を参照して派生させることにより生成されたものであることを表す。
【００３１】
データ生成規則情報記憶部１３５は、入力データを生成するときの生成規則に関するデータ生成規則情報を記憶する。
図６は、データ生成規則情報の一例を示す図である。
この図に示される例において、データ生成規則情報は、データ生成規則識別情報と、パラメータと、データ生成規則と、生成数と、の各項目を有し、それぞれについて値を有する。データ生成規則識別情報の項目は、データの生成規則を識別する識別情報を表す。パラメータの項目は、入力データを構成するパラメータであって、入力データの生成において値が変更されるパラメータを表す。データ生成規則の項目は、入力データの生成規則を表す。データ生成規則には、入力データの生成時における制限や入力データを生成するための関数、あるいは、入力データとして代入する値などが登録される。生成数は、データ生成規則に則って生成される入力データの最大個数を表す。
【００３２】
この図に示される例において、データ生成規則情報記憶部１３５は、複数のデータ生成規則情報を記憶する。最上段に表されるデータ生成規則情報は、データ生成規則識別情報の値が「Ｒ００１」であり、パラメータの値が「パラメータ１」であり、データ生成規則の値が「正の整数」であり、生成数の値が「５」である。すなわち、このデータ生成規則情報は、データ生成規則識別情報「Ｒ００１」に対応するデータ生成規則に関するものであり、「パラメータ１」を「正の整数」とした入力データを最大「５」個まで生成することを表している。
【００３３】
８段目に表されるデータ生成規則情報は、データ生成規則識別情報の値が「Ｒ００８」であり、パラメータの値が「パラメータ２」であり、データ生成規則の値が「とよすたろう」であり、「生成数」の値が「０」である。すなわち、このデータ生成規則情報は、データ生成規則識別情報「Ｒ００７」に対応するデータ生成規則に関するものであり、「パラメータ２」を「とよすたろう」とした入力データを生成するための規則を表す。ただし、生成数が「０」であるため、このデータ生成規則情報は、「パラメータ２」を「とよすたろう」とした入力データの生成が行われないことを表す。
【００３４】
なお、この図に示される例において、パラメータ１は、数字であり、パラメータ２およびパラメータ３は、文字列である。各パラメータの型を定義する変数の定義情報は、例えば、記憶部１３に記憶されている。そして、この情報は、入力データの生成時において参照され、型の定義を満たす範囲で入力データが生成されてよい。また、データ生成規則情報は、ユーザにより入力されてよい。これにより、本実施形態に係るソフトウェア開発支援装置１は、ユーザの所望する生成規則および生成数の範囲で入力データを生成するため、ユーザは、レポートにより設計情報の品質を確認できる。
【００３５】
ルート情報記憶部１３６は、ソフトウェア開発支援装置１が生成したソースコードを入力データに基づいて実行したときの実行経路に関するルート情報を記憶する。
図７は、ルート情報の一例を示す図である。
この図に示される例において、ルート情報は、入力データ識別情報と、処理ステップと、判定結果と、の各項目を有し、それぞれについて値を有する。入力データ識別情報の項目は、生成ソフトウェアに入力された入力データを表す。判定処理ステップの項目は、入力データに対して生成ソフトウェアが実行した判定処理ステップを表す。判定処理ステップの値は、判定処理ステップを識別する判定処理ステップ識別情報により表される。判定結果の項目は、判定処理ステップにおいて、入力データに対する判定結果を表す。
【００３６】
この図に示される例において、ルート情報記憶部１３６は、複数のルート情報を記憶する。最上段に表されるルート情報は、入力データ識別情報の値が「Ｉｎ００１」であり、判定処理ステップの値が「分岐１」であり、判定結果の値が「ＴＲＵＥ」である。２段目に表されるルート情報は、入力データ識別情報の値が「Ｉｎ００１」であり、判定処理ステップの値が「分岐２」であり、判定結果の値が「ＴＲＵＥ」である。３段目に表されるルート情報は、入力データ識別情報の値が「Ｉｎ００１」であり、判定処理ステップの値が「ループ１」であり、判定結果の値が「ＴＲＵＥ」である。すなわち、最上段から３段目までに表されるルート情報は、入力データ識別情報「Ｉｎ００１」に対応する入力データを入力して生成ソフトウェアを実行したときに、生成ソフトウェアが、判定処理ステップ「分岐１」において「ＴＲＵＥ」であると判定し、判定処理ステップ「分岐２」において「ＴＲＵＥ」であると判定し、処理ステップ「ループ１」において「ＴＲＵＥ」であると判定したことを表している。
【００３７】
網羅情報記憶部１３７は、生成ソフトウェアが有する判定処理ステップにおける判定結果が網羅されたか否かを示す網羅情報を記憶する。
図８は、網羅情報の一例を示す図である。
この図に示される例において、網羅情報は、判定処理ステップと、判定条件と、処理目的と、網羅フラグと、の各項目を有し、それぞれについて値を有する。判定処理ステップの項目は、判定処理ステップを識別する判定処理ステップ識別情報を表す。判定条件の項目は、判定処理ステップにおける判定条件を表す。処理目的の項目は、判定処理ステップにおける処理の目的を表す。網羅フラグは、判定処理ステップにおいて、判定結果が網羅されたか否かを表す。ここで、判定結果が網羅されたとは、判定処理ステップにおいて判定されうるすべての結果が出力されたことをいう。例えば、ＴＲＵＥまたはＦＡＬＳＥのいずれかを出力する分岐の判定処理ステップにおいて、ＴＲＵＥおよびＦＡＬＳＥのいずれも出力されたとき、判定結果が網羅されたという。判定処理ステップにおいて判定結果が網羅されるためには、当該判定処理ステップにおける判定結果が異なる複数の入力データに基づいて、生成ソフトウェアが実行される必要がある。
【００３８】
この図に示される例において、網羅情報記憶部１３７は、複数の網羅情報を記憶する。
最上段に表される網羅情報は、判定処理ステップの値が「分岐１」であり、判定条件の値が「条件１（パラメータ３）」であり、処理目的の値が「エラー１チェック」である。すなわち、この網羅情報は、判定処理ステップ「分岐１」において、入力データが「エラー１」に該当するか否かをチェックするために、「パラメータ３」が「条件１」を満たすか否かを判定することを表す。また、この網羅情報は、網羅フラグの値が「ＴＲＵＥ」であるため、判定処理ステップ「分岐１」において、ＴＲＵＥを出力した入力データとＦＡＬＳＥを出力した入力データとに関する入力データ情報が入力データ情報記憶部１３４に記憶されていることを表す。
【００３９】
３段目に表される網羅情報は、判定処理ステップの値が「分岐３」であり、判定条件の値が「条件３（パラメータ２）」であり、処理目的の値が「エラーチェック３」である。
すなわち、この網羅情報は、判定処理ステップ「分岐３」において、入力データが「エラー３」に該当するか否かをチェックするために、「パラメータ２」が「条件３」を満たすか否かが判定されることを表す。また、この網羅情報は、網羅フラグの値が、「ＦＡＬＳＥ」であるため、判定処理ステップ「分岐３」において、ＴＲＵＥを出力した入力データとＦＡＬＳＥを出力した入力データとに関する入力データ情報のいずれか、または、両方が入力データ情報記憶部１３４に記憶されていないことを表す。
【００４０】
出力情報記憶部１３８は、生成ソフトウェアに入力される入力データと、当該入力データを入力して生成ソフトウェアを実行したときの実行結果である出力データとを対応付けた出力情報を記憶する。
図９は、出力情報の一例を示す図である。
この図に示される例において、出力情報は、入力データ識別情報と出力データとの各項目を有し、それぞれについて値を有する。入力データ識別情報の項目は、生成ソフトウェアに入力された入力データを表す。出力データの項目は、入力データに対して生成ソフトウェアが出力した出力データを表す。出力データの値は、例えば、出力データを構成するパラメータの値、出力されるメッセージ、および出力される画像などのコンテンツのＵＲＩ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ）などである。
【００４１】
この図に示される例において、出力情報記憶部１３８は、複数の出力情報を記憶する。
最上段に表される出力情報は、入力データ識別情報の値が「Ｉｎ００１」であり、出力データの値が「実行結果１」である。すなわち、この出力情報は、入力データ識別情報「Ｉｎ００１」に対応する入力データに対して、生成ソフトウェアが「実行結果１」を出力データとして出力することを表す。
【００４２】
レポート記憶部１３９は、例えば、予め定められた書式のレポートのテンプレートファイルを記憶する。このテンプレートファイルには、ファイル中の各項目と、当該項目に入力される情報との対応関係が記録されている。また、レポート記憶部１３９は、テンプレートファイルに基づいて生成されたレポートを記憶する。本実施形態に係るレポートは、様々な態様で表現されうる。レポートの各態様には、それぞれ個別のテンプレートファイルが予め用意されている。レポートの具体的な態様は、後述する。
【００４３】
図１に戻り、ソフトウェア開発支援装置１の概略機能構成について説明を続ける。
制御部１４は、設計情報取得部１４１と、設計書生成部１４２と、ソースコード生成部１４３と、入力データ取得部１４４と、入力データ生成部１４５と、ソフトウェア処理部１４６と、レポート生成部１４７と、表示制御部１４８と、を備える。
【００４４】
設計情報取得部１４１は、入力部１１が設計情報の入力をユーザから受け付けた場合、当該設計情報を取得し、設計情報記憶部１３１に記憶させる。
設計書生成部１４２は、設計情報記憶部１３１から設計情報を取得し、取得した設計情報に基づいて設計書を生成する。設計書生成部１４２は、生成した設計書を設計書記憶部１３２に記憶させる。設計書生成部１４２による設計書の生成方法には、公知の技術を適用することができるため、ここでは説明を省略する。
【００４５】
ソースコード生成部１４３は、設計情報記憶部１３１から設計情報を取得し、取得した設計情報に基づいてソースコードを生成する。ソースコード生成部１４３は、生成したソースコードをソースコード記憶部１３３に記憶させる。ソースコード生成部１４３によるソースコードの生成方法には、公知の技術を適用することができるため、ここでは説明を省略する。
入力データ取得部１４４は、入力部１１が入力データの入力をユーザから受け付けた場合、当該入力データを取得する。入力データ取得部１４４は、取得した入力データに基づいて入力データ情報を生成し、入力データ情報記憶部１３４に記憶させる。入力データ取得部１４４は、例えば、ユーザに対して、代表的な入力データの入力要求を表示部１２に表示させてよい。また、入力データ取得部１４４は、例えば、入力データ生成部１４５によって生成された入力データに基づく生成ソフトウェアの実行では、処理されない処理ステップを実行するための入力データの入力要求を表示部１２に表示させてよい。入力データ取得部１４４は、このような入力データの入力要求を、例えば、入力データの生成終了条件が満たされたときに行ってもよい。
【００４６】
入力データ生成部１４５は、入力データ情報記憶部１３４が記憶する入力データ情報、データ生成規則情報記憶部１３５が記憶するデータ生成規則、ルート情報記憶部１３６が記憶するルート情報、および網羅情報記憶部１３７が記憶する網羅情報に基づいて入力データを生成する。入力データ生成部１４５は、判定結果が網羅されていない判定処理ステップの判定条件に基づいて入力データを生成する。このとき、入力データ生成部１４５は、他の判定処理ステップの判定条件は、参照しなくてもよい。これにより、入力データ生成部１４５は、生成ソフトウェアの実行時に対象とする判定処理ステップに至った場合、当該判定処理ステップにおいて、得られていない判定結果を確実に出力する入力データを簡易に生成することができる。
【００４７】
また、入力データ生成部１４５は、既に生成ソフトウェアに対して入力された入力データに基づいて、新たな入力データを生成する。具体的には、入力データ生成部１４５は、例えば、既に生成された入力データのパラメータのうち、対象とする判定処理ステップの判定条件に関するパラメータを変更することにより、新たな入力データを生成する。これにより、入力データ生成部１４５は、生成ソフトウェアの実行時に、対象とする判定処理ステップに至る可能性が高い入力データを生成するため、当該判定処理ステップにおいて得られていない判定結果を出力する入力データをさらに高い確率で生成することができる。
【００４８】
また、入力データ生成部１４５は、予め定められたデータ生成規則に基づいてデータを生成する。これにより、入力データ生成部１４５は、予め定められた範囲で生成ソフトウェアを実行するために必要最小限の入力データを生成するため、入力データの生成に要する時間を削減することができる。なお、入力データ生成部１４５は、例えば、変更するパラメータに関して、生成ソフトウェアの実行経路上に存在する判定処理ステップの判定条件を集約して当該集約した条件を満たすようなパラメータを生成してよい。これにより、入力データ生成部１４５は、入力データの生成に要する時間を短縮しつつ、することができる。
【００４９】
ソフトウェア処理部１４６は、ソースコード記憶部１３３からソースコードを取得する。また、ソフトウェア処理部１４６は、入力データ情報記憶部１３４から入力データを取得する。ソフトウェア処理部１４６は、入力データ情報記憶部１３４から取得した入力データを、ソースコード記憶部１３３から取得したソースコードに基づく生成ソフトウェアの入力データとし、生成ソフトウェアを実行する。
【００５０】
ソフトウェア処理部１４６は、生成ソフトウェアの実行において、判定処理ステップごとに入力データに対する判定結果を取得し、ルート情報を生成する。ソフトウェア処理部１４６は、生成したルート情報をルート情報記憶部１３６に記憶させる。ソフトウェア処理部１４６は、ソフトウェアを最後の処理ステップまで実行すると、ルート情報記憶部１３６に記憶されているルート情報を参照する。ソフトウェア処理部１４６は、参照したルート情報において、判定結果が網羅された判定処理ステップを特定する。ソフトウェア処理部１４６は、判定結果が網羅された判定処理ステップに関する網羅情報を網羅情報記憶部１３７から参照し、参照した網羅情報の網羅フラグを「ＴＲＵＥ」に変更する。
【００５１】
ソフトウェア処理部１４６は、生成ソフトウェア入力した入力データと、当該入力データに基づいて生成ソフトウェアが出力した出力データとを対応付けて出力情報を生成する。ソフトウェア処理部１４６は、生成した出力情報を出力情報記憶部１３８に記憶させる。
【００５２】
レポート生成部１４７は、例えば、ソースコード記憶部１３３が記憶するソースコード、設計書記憶部１３２が記憶する設計書、入力データ情報記憶部１３４が記憶する入力データ情報、データ生成規則情報記憶部１３５が記憶するデータ生成規則情報、ルート情報記憶部１３６が記憶するルート情報、網羅情報記憶部１３７が記憶する網羅情報、および出力情報記憶部１３８が記憶する出力情報などを参照してレポートを生成する。具体的には、レポート生成部１４７は、例えば、レポート記憶部１３９が記憶するレポートのテンプレートファイルが記録する情報の対応関係に基づいて、ソースコード、設計書、入力データ情報、ルート情報、網羅情報、および出力情報の各項目の情報を取得する。レポート生成部１４７は、取得した各項目の情報に基づいて、レポートの各項目に入力する情報を生成する。レポート生成部１４７は、生成した情報をテンプレートファイルが定める所定の位置に入力し、レポートを生成する。レポート生成部１４７は、生成したレポートをレポート記憶部１３９に記憶させる。
【００５３】
表示制御部１４８は、表示部１２を制御して各種情報を表示させる。表示制御部１４８は、例えば、設計書記憶部１３２から設計書を取得し、表示部１２に表示させる。また、表示部１２は、例えば、レポート記憶部１３９からレポートを取得し、表示部１２に表示させる。また、表示制御部１４８は、例えば、入力部１１がユーザからの入力を受け付けるときに、入力を支援するための情報を表示部１２に表示させる。表示制御部１４８は、例えば、設計情報の入力を支援するために、設計情報のテンプレートファイルを表示部１２に表示させる。
【００５４】
［ソフトウェア開発支援装置の動作］
図１０は、ソフトウェア開発支援装置１による処理の流れの一例を示すフローチャートである。
まず、設計情報取得部１４１は、入力部１１がユーザから受け付けた設計情報を設計情報記憶部１３１に記憶させる（ステップＳ１０１）。次に、ソースコード生成部１４３は、設計情報記憶部１３１が記憶する設計情報を参照して生成ソフトウェアのソースコードを生成し、ソースコード記憶部１３３に記憶させる。また、設計書生成部１４２は、設計情報記憶部１３１が記憶する設計情報を参照して生成ソフトウェアの設計書を生成し、設計書記憶部１３２に記憶させる（ステップＳ１０２）。
【００５５】
次に、入力データ取得部１４４は、入力部１１がユーザから受け付けた入力データを取得する（ステップＳ１０３）。ここで、入力部１１がユーザから受け付ける入力データは、例えば、生成ソフトウェアに対して入力されたときに正常系の処理ステップが実行される入力データである。ここで、正常系の入力データとは、例えば、エラーチェックを目的とする処理ステップにおいて、エラーと判定されない入力データである。
【００５６】
このような正常系の入力データは、ソフトウェア開発支援装置１により生成されてもよい。ただし、正常系の入力データがユーザによって入力されることにより、ソフトウェア開発支援装置１は、当該ユーザによって入力された入力データを派生させて、新たに入力データを生成する。そして、ソフトウェア開発支援装置１は、ユーザによって入力された入力データとその派生データとの関係を明確に示すレポートを生成することができるため、ユーザにとって理解しやすいレポートを生成することができる。
【００５７】
次に、入力データ取得部１４４は、取得した入力データに基づいて入力データ情報を生成し、生成した入力データ情報を入力データ情報記憶部１３４に記憶させる（ステップＳ１０４）。次に、ソフトウェア処理部１４６は、入力データ情報記憶部１３４から未実行の入力データを取得する（ステップＳ１０５）。ここで、ソフトウェア処理部１４６は、入力データが未実行であるか否かを、例えば、ルート情報記憶部１３６が記憶するルート情報や、出力情報記憶部１３８が記憶する出力情報を参照することにより判定することができる。次に、ソフトウェア処理部１４６は、取得した入力データに対して生成ソフトウェアを実行する（ステップＳ１０６）。
【００５８】
次に、ソフトウェア処理部１４６は、生成ソフトウェアの実行経路を取得してルート情報を生成し、生成したルート情報をルート情報記憶部１３６に記憶させる（ステップＳ１０７）。次に、ソフトウェア処理部１４６は、ルート情報記憶部１３６が記憶するルート情報を参照し、判定結果が新たに網羅された処理ステップが存在する場合、当該処理ステップに関する網羅情報の網羅フラグを「ＴＲＵＥ」に変更して網羅情報記憶部１３７に記憶させる（ステップＳ１０８）。
【００５９】
次に、ソフトウェア処理部１４６は、網羅情報記憶部１３７が記憶する網羅情報を参照し、すべての判定処理ステップにおいて判定結果が網羅されたか否かを判定する（ステップＳ１０９）。すべての判定処理ステップにおいて判定結果が網羅された場合（ステップＳ１０９；ＹＥＳ）、レポート生成部１４７は、入力データ情報記憶部１３４が記憶する入力データ情報、ルート情報記憶部１３６が記憶するルート情報、網羅情報記憶部１３７が記憶する網羅情報、および出力情報記憶部１３８が記憶する出力情報に基づいてレポートを生成し、レポート記憶部１３９に記憶させる（ステップＳ１１０）。次に、表示制御部１４８は、レポート記憶部１３９が記憶するレポートを取得し、表示部１２に表示させる（ステップＳ１１１）。その後、制御部１４は、処理を終了する。また、すべての判定処理ステップにおいて判定結果が網羅されていない場合（ステップＳ１０９；ＮＯ）、入力データ生成部１４５は、入力データの生成終了条件が満たされたか否かを判定する（ステップＳ１１２）。
【００６０】
ここで、入力データの生成終了条件とは、入力データ取得部１４４が入力データの生成を終了するための条件である。入力データの生成終了条件は、ユーザの任意に設定されてよい。入力データの生成終了条件は、例えば、入力データの生成開始から所定の数の入力データが生成されることであってもよい。また、入力データの生成終了条件は、例えば、判定結果が網羅されていないすべての判定処理ステップについて、データ生成規則情報記憶部１３５が記憶するすべてのデータ生成規則情報のデータ規則に則って、その生成数の項目の値の数の入力データが生成されることであってもよい。また、入力データの生成終了条件は、例えば、判定結果が網羅されていないすべての判定処理ステップについて、判定結果を網羅するために所定の回数以上の入力データが生成されることであってもよい。
【００６１】
また、入力データの生成終了条件は、例えば、初めの入力データの生成から所定時間経過することであってもよい。また、入力データの生成終了条件は、例えば、判定結果が網羅されていないすべての判定処理ステップについて、判定結果を網羅するために所定の時間以上入力データの生成を行ったことであってもよい。このように入力データの生成終了条件は、生成する入力データの数や生成に要する時間などに応じて任意に定められてよい。
【００６２】
入力データの生成終了条件が満たされた場合（ステップＳ１１２；ＹＥＳ）、制御部１４は、ステップＳ１１０に処理を進める。また、入力データの生成終了条件が満たされていない場合（ステップＳ１１２；ＮＯ）、入力データ生成部１４５は、ルート情報記憶部１３６が記憶するルート情報、網羅情報記憶部１３７が記憶する網羅情報、およびデータ生成規則情報記憶部１３５が記憶するデータ生成規則情報を参照し、入力データを生成する（ステップＳ１１３）。入力データ生成部１４５は、生成した入力データの入力データ情報を記憶部に記憶させる（ステップＳ１１４）。その後、制御部１４は、ステップＳ１０５に処理を戻す。
【００６３】
このように、ソフトウェア開発支援装置１は、判定結果を網羅することが困難な処理ステップに関する入力データの生成を必要以上に試みない。そして、例えば、生成が困難であった入力データの入力をユーザに求めることにより、結果的に、生成ソフトウェアおよび設計情報の品質確認に要する時間を削減することができる。
【００６４】
図１１は、ソフトウェア開発支援装置１による入力データの生成処理の流れの一例を示すフローチャートである。
まず、入力データ生成部１４５は、網羅情報記憶部１３７が記憶する網羅情報のうち、網羅フラグの値が「ＦＡＬＳＥ」である網羅情報を取得する（ステップＳ２０１）。次に、入力データ生成部１４５は、取得した網羅情報の判定条件の値を参照し、判定対象のパラメータを取得する（ステップＳ２０２）。次に、入力データ生成部１４５は、取得した判定対象のパラメータに関するデータ生成規則情報をデータ生成規則情報記憶部１３５から取得する（ステップＳ２０３）。次に、入力データ生成部１４５は、ステップＳ２０１において取得した網羅情報の判定処理ステップに関するルート情報をルート情報記憶部１３６から取得する（ステップＳ２０４）。次に、入力データ生成部１４５は、取得したルート情報の入力データ識別情報を参照し、派生元とする入力データを選択する（ステップＳ２０５）。
【００６５】
次に、入力データ生成部１４５は、派生元とする入力データのうちのステップＳ２０２において取得したパラメータを、ステップＳ２０３において取得したデータ生成規則情報のデータ規則およびステップＳ２０１において取得した網羅条件の判定条件に基づいて変更することにより、入力データを生成する（ステップＳ２０６）。次に、入力データ生成部１４５は、生成した入力データを識別する入力データ識別情報を採番する（ステップＳ２０７）。次に、入力データ生成部１４５は、入力データの生成において参照したデータ規則情報のデータ規則識別情報、網羅情報の判定処理ステップ、および派生元データの入力データ識別情報を、生成した入力データおよび採番した入力データ識別情報と対応付けることにより入力データ情報を生成して入力データ情報記憶部１３４に記憶させる（ステップＳ２０８）。その後、入力データ生成部１４５は、処理を終了する。
【００６６】
［レポートの表示態様］
図１２は、レポートの第１例を示す図である。
この図に示される例において、レポートは、符号（ａ）および（ｂ）により示される２つの領域を有する。
符号ａに示される領域において、入力要素の項目は、生成ソフトウェアの入力データの概要を表す。また、出力要素の項目は、出力データの概要を表す。
符号ｂに示される領域は、入力データと、当該入力データを入力して生成ソフトウェアを実行した場合に期待される実行結果と、当該入力データを入力して生成ソフトウェアを実行した場合の実行結果と、当該入力データに対する生成ソフトウェアの実行経路とを対応付けた実行結果表を表す。
【００６７】
この実行結果表は、例えば、項番、確認カテゴリ、実行ケースの項番、実行ケースの実行項目概要、事前条件、入力値、実行結果、およびパス情報の項目を有する。項番の項目は、入力データの分類の識別情報を表す。確認カテゴリの項目と実行ケースの実行項目概要の項目とは、生成ソフトウェアを実行した場合に期待される実行結果を表す。換言すると、実行ケースの実行項目概要は、入力データが生成された目的を表す。事前条件の項目は、生成ソフトウェアを実行するために必要な条件を表す。入力値の項目は、入力データを表す。実行結果の項目は、生成ソフトウェアによる実行結果を表す。なお、生成ソフトウェアによる実行結果が、例えば画像の表示などであって欄内への表示が困難な場合、ソフトウェア開発支援装置１は、例えば、行の任意の場所の選択に応じて当該画像を表示させるなど、実行結果を別途出力する機能を有してもよい。パス情報は、入力データに対する生成ソフトウェアの実行経路を表す。
【００６８】
実行結果表が有する各項目の値は、それぞれ、入力データ情報記憶部１３４が記憶する入力データ情報、データ生成規則情報記憶部１３５が記憶するデータ生成規則情報、ルート情報記憶部１３６が記憶するルート情報、網羅情報記憶部１３７が記憶する網羅情報、または出力情報記憶部１３８が記憶する出力情報などに基づいてレポート生成部１４７により生成される。確認カテゴリの項目の値は、例えば、網羅情報が有する処理目的の値に基づいて生成され、入力される。実行ケースの実行項目概要の値は、例えば、入力データ情報が有する判定処理ステップの値、データ生成規則情報が有するデータ生成規則の値、入力データ情報の派生元データの値などに基づいて生成され、入力される。事前条件の値は、例えば、ルート情報に基づいて生成され、入力される。例えば、ルート情報が示す実行経路上の処理ステップの処理内容が入力データ以外の情報を参照する場合には、当該参照先の情報を参照できることが事前条件となる。入力値の値は、例えば、入力データ情報が有する入力データの値に基づいて生成され、入力される。実行結果の値は、例えば、出力情報が有する出力データの値に基づいて生成され、入力される。パス情報の値は、例えば、ルート情報が有する判定結果の値に基づいて生成され、入力される。
【００６９】
図１３は、レポートの第２例を示す図である。
この図に示される例において、レポートは、入力データが有するパラメータの値と出力データが有するパラメータとのディシジョンテーブルの形式で表示される。
このディシジョンテーブルは、例えば、行の項目として入力値、出力値、確認日、確認者、判定、確認したＶ／Ｒ、修正確認日、修正確認者、修正確認済みＶ／Ｒ、および備考の各項目を有する。入力値の項目は、引数の項目を有する。出力値の項目は、戻り値と、フィールドとの項目を有する。入力値の引数の項目は、入力データが有するパラメータを表す。出力データが有するパラメータを表す。出力値のフィールドの値は、出力データが有する項目を表す。確認日の項目は、レポートの内容をレビューアが確認した日を表す。
確認者の項目は、レポートの内容を確認したレビューアの識別情報を表す。
【００７０】
このディシジョンテーブルは、例えば、列の項目として、型（定／実）、要素、値、コメント、ｃｎｔ、実行ケースの各項目を有する。型の項目は、入力データおよび出力データが有するパラメータのデータ形式を表す。要素の項目は、入力データおよび出力データが有するパラメータの概要を表す。値の項目は、入力データおよび出力データが有するパラメータの値を表す。値の項目の値は、例えば、入力データ情報が有する入力データの項目に基づいて生成される。コメントの項目は、例えば、入力データおよび出力データが有するパラメータや当該パラメータの値についての説明を表す。ｃｎｔの項目は、入力データまたは出力データが有するパラメータについて、同一の値を有する入力データまたは出力データの数を表す。ｃｎｔの項目の値は、例えば、実行ケースのチェックマークの数を計数することにより生成される。実行ケースは、入力データ識別情報ごとの情報を表す。
入力値に対応する実行ケースの値には、値の項目の値と、入力データ情報が有するパラメータの値とが一致する場合にチェックマークが入力される。出力値に対応する実行ケースの値には、値の項目の値と、出力情報が有する出力データの値が表す内容とが一致する場合に、チェックマークが入力される。
【００７１】
図１４は、本発明の一実施形態に係るレポートの第３例を示す図である。
この図に示される例において、レポートは、入力データのパラメータの値を選択可能とし、選択された入力データに応じた出力データをインターネットブラウザを介して表示するＷｅｂインターフェイスの形式で表示される。
この図に示される例において、入力項目は、入力データを表す。入力項目が有するユーザＩＤ、ユーザ名、およびパスワードの項目は、入力データが有するパラメータを表す。
ユーザＩＤ、ユーザ名、およびパスワードの値は、入力データ情報が有する入力データの値に基づいて生成され、選択可能に表示される。出力結果は、出力データを表す。出力結果は、出力情報の処理内容の値に基づいて生成される。この図に示される例において、出力結果として、変更後パスワード、メッセージ、画像イメージが表示されている。これら出力結果は、入力項目の選択に応じてその表示が遷移する。すなわち、入力データに応じた出力データが表示される。
【００７２】
以上説明したように、本実施形態に係るソフトウェア開発支援装置１は、設計情報からソースコードを生成するソースコード生成部１４３と、ソースコード生成部１４３が生成したソースコードにより記述される生成ソフトウェアに入力するための入力データを入力して生成ソフトウェアを実行し、入力データに対する生成ソフトウェアの実行結果を出力するソフトウェア処理部１４６と、生成ソフトウェアに入力された入力データと、当該入力データに対する生成ソフトウェアの実行結果とを対応付けたレポートを生成するレポート生成部１４７と、を備える。
【００７３】
これにより、ソフトウェア処理部１４６は、例えば、実行結果表の形式のレポートにより、入力データと、当該入力データを入力して生成ソフトウェアを実行した場合の実行結果とを表示するため、ソフトウェアの動作異常をユーザに分かり易く提示することができる。また、生成ソフトウェアは、設計情報から自動生成されたソースコードによって記述されたソフトウェアであるため、レポートによって示唆される動作異常は、設計情報の欠陥に起因する。すなわち、ソフトウェア開発支援装置１が生成するレポートは、ソフトウェア設計の欠陥をユーザに分かりやすく提示する。従って、ソフトウェア開発支援装置１は、ソフトウェア開発の効率を向上させることができる。
【００７４】
また、レポート生成部１４７は、生成ソフトウェアに入力された入力データと、当該入力データに対して生成ソフトウェアが出力することが期待される実行結果とを対応付けたレポートを生成する。
これにより、ソフトウェア開発支援装置１は、例えば、実行結果表の形式のレポートにより、入力データと、当該入力データを入力して生成ソフトウェアに実行した場合に期待される実行結果とを表示するため、生成ソフトウェアの実行において期待される実行結果と、実際の実行結果とを対応付けて表示する。従って、ソフトウェア開発支援装置１は、生成ソフトウェアの動作異常を分かり易く提示することができる。その結果、ソフトウェア開発支援装置１は、ユーザが生成ソフトウェアの動作異常を認識するまでの時間を短縮することができ、ソフトウェア開発の効率を向上させることができる。
【００７５】
また、ソフトウェア処理部１４６は、生成ソフトウェアによる処理の単位である処理ステップのうち、入力データに対して生成ソフトウェアが実行した処理ステップを出力し、レポート生成部１４７は、生成ソフトウェアに入力された入力データと、当該入力データに対して生成ソフトウェアが実行した処理ステップとを対応付けたレポートを生成する。すなわち、ソフトウェア開発支援装置１は、入力データと、当該入力データに対する生成ソフトウェアの実行経路とを対応付けたレポートを表示する。
これにより、ソフトウェア開発支援装置１は、判定結果が網羅されていない判定処理ステップと当該判定処理ステップによる処理を受けた入力データとを分かり易く提示することができるため、ユーザは、実行されていない処理ステップを実行させるための入力データを考える際に参考になる入力データを認識することができるため、ソフトウェア開発支援装置１は、ソフトウェア開発の効率を向上させることができる。
【００７６】
また、ソフトウェア開発支援装置１は、生成ソフトウェアが有する処理ステップであって、判定処理を行う処理ステップにおける判定条件に基づいて、入力データを生成する入力データ生成部１４５、をさらに備え、ソフトウェア処理部１４６は、入力データ生成部が生成した入力データを入力して生成ソフトウェアを実行する。
これにより、ソフトウェア開発支援装置１は、判定結果が網羅されていない判定処理ステップにおいて、得られていない判定結果を出力する入力データを生成することができる。従って、ソフトウェア開発支援装置１は、ソフトウェア開発の効率を向上させることができる。
【００７７】
また、入力データ生成部１４５は、生成ソフトウェアに対して入力された入力データに基づいて、生成ソフトウェアに入力するための入力データを新たに生成する。
これにより、ソフトウェア開発支援装置１は、判定結果が網羅されていない判定処理ステップにおける処理をより高い確率で受ける入力データを生成することが出きる。従って、ソフトウェア開発支援装置１は、ソフトウェア開発の効率を向上させることができる。
【００７８】
また、本実施形態に係るソフトウェア開発支援方法は、生成ソフトウェア開発支援装置が、設計情報からソースコードを生成するソースコード生成過程と、生成ソフトウェア開発支援装置が、ソースコード生成過程において生成したソースコードにより記述される生成ソフトウェアに入力するための入力データを入力して生成ソフトウェアを実行し、入力データに対する生成ソフトウェアの実行結果を出力する生成ソフトウェア処理過程と、生成ソフトウェア開発支援装置が、生成ソフトウェアに入力された入力データと、当該入力データに対する生成ソフトウェアの実行結果とを対応付けたレポートを生成するレポート生成過程と、を含む。
これにより、ソフトウェア開発支援方法は、ソフトウェア開発支援装置１と同様の効果を奏することができる。
【００７９】
また、本実施形態に係るソフトウェア開発支援プログラムは、生成ソフトウェア開発支援装置のコンピュータに、設計情報からソースコードを生成するソースコード生成手順、ソースコード生成手順において生成したソースコードにより記述される生成ソフトウェアに入力するための入力データを入力して生成ソフトウェアを実行し、入力データに対する生成ソフトウェアの実行結果を出力する生成ソフトウェア処理手順、生成ソフトウェアに入力された入力データと、当該入力データに対する生成ソフトウェアの実行結果とを対応付けたレポートを生成するレポート生成手順、を実行させる。
これにより、ソフトウェア開発支援プログラムは、ソフトウェア開発支援装置１と同様の効果を奏することができる。
【００８０】
なお、レポートの態様は上述したものに限られない。レポート生成部１４７は、例えば、網羅情報記憶部１３７が記憶する網羅情報に基づいて、処理ステップのカバレッジの情報を生成し、レポートとして出力してよい。カバレッジの生成において、レポート生成部１４７は、例えば、生成ソフトウェアの全処理ステップ数に対して網羅情報が有する網羅フラグの値が「ＴＲＵＥ」である処理ステップ数の比率を算出してもよい。また、レポート生成部１４７は、例えば、生成ソフトウェアが有する処理ステップをフローチャートの形式で図示し、生成ソフトウェアが実行した処理ステップと、実行しなかった処理ステップとを区別可能に表示するレポートを生成してもよい。
【００８１】
また、レポート生成部１４７は、ユーザが指定する情報のみを表示するレポートを生成してもよい。このとき、レポート生成部１４７は、ユーザが指定する情報のみを生成してからレポートを生成してもよい。また、このとき、レポート生成部１４７は、レポートにおいて生成可能な全ての情報を生成して必要な情報のみを抽出し、レポートを生成してもよい。
【００８２】
また、設計書生成部１４２は、設計情報に加え、入力データ情報記憶部１３４が記憶する入力データ情報、ルート情報記憶部１３６が記憶するルート情報、網羅情報記憶部１３７が記憶する網羅情報、および出力情報記憶部１３８が記憶する出力情報に基づいて、設計書を生成してもよい。設計書生成部１４２は、例えば、特定の入力データに対して生成ソフトウェアが実行した処理ステップと実行しなかった処理ステップとを区別可能に示す設計書を生成してもよい。具体的には、例えば、図３の例に示される設計書において、符号ｄに示される領域における処理ロジックの情報のうち、生成ソフトウェアが実行した処理、すなわち実行経路上の処理ステップと、生成ソフトウェアが実行しなかった処理ステップとが、色分け、塗りつぶし、または下線の付与などの視覚的効果を用いて区別可能に表示されてもよい。また、例えば、図３の例に示される設計書において、符号ｄに示される領域における処理ロジックの情報のうち、生成ソフトウェアが実行した処理ステップのみが表示されてもよい。また、設計書において、入力データの生成時に参照された処理ステップが区別可能に表示されてもよい。このように、設計書生成部１４２は、入力データに対応する設計情報を区別可能に表す設計書を生成してもよい。これにより、ソフトウェア開発支援装置１は、特定の入力データに対する実行経路上の設計情報について、具体的な処理内容を提示するため、ユーザは、ソフトウェア設計の欠陥の詳細を認識することができる。従って、ソフトウェア開発支援装置１は、ソフトウェア開発の効率を向上させることができる。
【００８３】
また、ソースコード生成部１４３は、設計書生成部１４２と同様に、設計情報に加え、入力データ情報記憶部１３４が記憶する入力データ情報、ルート情報記憶部１３６が記憶するルート情報、網羅情報記憶部１３７が記憶する網羅情報、および出力情報記憶部１３８が記憶する出力情報に基づいて、ソースコードを生成してもよい。そして、ソースコード生成部１４３は、例えば、特定の入力データに対して生成ソフトウェアが実行した処理と実行しなかった処理とを区別可能に示すソースコードを生成してもよい。
【００８４】
また、ソフトウェア開発支援装置１は、設計書生成部１４２が生成した設計書と、ソースコード生成部１４３が生成したソースコードと、レポート生成部１４７が生成したレポートとを互いに対応付けてよい。例えば、レポートにおいて、特定の入力データがユーザにより選択された場合、ソフトウェア開発支援装置１は、当該入力データに対する生成ソフトウェアの実行経路を区別可能に示す設計書を表示してもよい。また、設計書の特定の処理ステップがユーザにより選択された場合、ソフトウェア開発支援装置１は、当該処理ステップを参照して生成された入力データについての情報を区別可能に示すレポートを表示してもよい。
【００８５】
なお、上述した実施形態におけるソフトウェア開発支援装置１の一部、例えば、設計情報取得部１４１、設計書生成部１４２、ソースコード生成部１４３、入力データ取得部１４４、入力データ生成部１４５、ソフトウェア処理部１４６、レポート生成部１４７、および表示制御部１４８をコンピュータで実現するようにしてもよい。その場合、この制御機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。
【００８６】
なお、ここでいう「コンピュータシステム」とは、ソフトウェア開発支援装置１に内蔵されたコンピュータシステムであって、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよい。
【００８７】
また、上述した実施形態におけるソフトウェア開発支援装置１の一部、または全部を、ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）等の集積回路として実現してもよい。ソフトウェア開発支援装置１の各機能ブロックは個別にプロセッサ化してもよいし、一部、または全部を集積してプロセッサ化してもよい。また、集積回路化の手法はＬＳＩに限らず専用回路、または汎用プロセッサで実現してもよい。また、半導体技術の進歩によりＬＳＩに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いてもよい。
【００８８】
以上、図面を参照してこの発明の一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。
【符号の説明】
【００８９】
１…ソフトウェア開発支援装置、１１…入力部、１２…表示部、１３…記憶部、１３１
…設計情報記憶部、１３２…設計書記憶部、１３３…ソースコード記憶部、１３４…入力
データ情報記憶部、１３５…データ生成規則情報記憶部、１３６…ルート情報記憶部、１
３７…網羅情報記憶部、１３８…出力情報記憶部、１３９…レポート記憶部、１４…制御
部、１４１…設計情報取得部、１４２…設計書生成部、１４３…ソースコード生成部、１
４４…入力データ取得部、１４５…入力データ生成部、１４６…ソフトウェア処理部、１
４７…レポート生成部、１４８…表示制御部
【図１】
2018113082.tif 000003
【図２】
2018113082.tif 000004
【図３】
2018113082.tif 000005
【図４】
2018113082.tif 000006
【図５】
2018113082.tif 000007
【図６】
2018113082.tif 000008
【図７】
2018113082.tif 000009
【図８】
2018113082.tif 000010
【図９】
2018113082.tif 000011
【図１０】
2018113082.tif 000012
【図１１】
2018113082.tif 000013
【図１２】
2018113082.tif 000014
【図１３】
2018113082.tif 000015
【図１４】
2018113082.tif 000016