特許第6607992号(P6607992)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社エヌ・ティ・ティ・データの特許一覧

特許6607992ソフトウェア開発支援装置、ソフトウェア開発支援方法、およびプログラム
<>
  • 特許6607992-ソフトウェア開発支援装置、ソフトウェア開発支援方法、およびプログラム 図000002
  • 特許6607992-ソフトウェア開発支援装置、ソフトウェア開発支援方法、およびプログラム 図000003
  • 特許6607992-ソフトウェア開発支援装置、ソフトウェア開発支援方法、およびプログラム 図000004
  • 特許6607992-ソフトウェア開発支援装置、ソフトウェア開発支援方法、およびプログラム 図000005
  • 特許6607992-ソフトウェア開発支援装置、ソフトウェア開発支援方法、およびプログラム 図000006
  • 特許6607992-ソフトウェア開発支援装置、ソフトウェア開発支援方法、およびプログラム 図000007
  • 特許6607992-ソフトウェア開発支援装置、ソフトウェア開発支援方法、およびプログラム 図000008
  • 特許6607992-ソフトウェア開発支援装置、ソフトウェア開発支援方法、およびプログラム 図000009
  • 特許6607992-ソフトウェア開発支援装置、ソフトウェア開発支援方法、およびプログラム 図000010
  • 特許6607992-ソフトウェア開発支援装置、ソフトウェア開発支援方法、およびプログラム 図000011
  • 特許6607992-ソフトウェア開発支援装置、ソフトウェア開発支援方法、およびプログラム 図000012
  • 特許6607992-ソフトウェア開発支援装置、ソフトウェア開発支援方法、およびプログラム 図000013
  • 特許6607992-ソフトウェア開発支援装置、ソフトウェア開発支援方法、およびプログラム 図000014
  • 特許6607992-ソフトウェア開発支援装置、ソフトウェア開発支援方法、およびプログラム 図000015
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6607992
(24)【登録日】2019年11月1日
(45)【発行日】2019年11月20日
(54)【発明の名称】ソフトウェア開発支援装置、ソフトウェア開発支援方法、およびプログラム
(51)【国際特許分類】
   G06F 11/36 20060101AFI20191111BHJP
   G06F 8/30 20180101ALI20191111BHJP
【FI】
   G06F11/36 176
   G06F11/36 184
   G06F8/30
【請求項の数】3
【全頁数】25
(21)【出願番号】特願2018-85762(P2018-85762)
(22)【出願日】2018年4月26日
(62)【分割の表示】特願2014-96402(P2014-96402)の分割
【原出願日】2014年5月7日
(65)【公開番号】特開2018-113082(P2018-113082A)
(43)【公開日】2018年7月19日
【審査請求日】2018年4月26日
【新規性喪失の例外の表示】特許法第30条第2項適用 開催日:平成25年11月8日、集会名:クボタシステム開発株式会社向け製品説明会、開催場所:住友不動産上野ビル5号館2F
【新規性喪失の例外の表示】特許法第30条第2項適用 開催日:平成26年2月20日、集会名:セミナー「ソフトウェア生産技術の革新!〜システム開発の方向性を徹底解説!〜」、開催場所:豊洲イノベーションセンタ
【新規性喪失の例外の表示】特許法第30条第2項適用 開催日:平成26年3月4日、集会名:防衛省向け製品説明会、開催場所:航空自衛隊 十条補給本部
(73)【特許権者】
【識別番号】000102728
【氏名又は名称】株式会社エヌ・ティ・ティ・データ
(74)【代理人】
【識別番号】110001634
【氏名又は名称】特許業務法人 志賀国際特許事務所
(72)【発明者】
【氏名】金子 武彦
(72)【発明者】
【氏名】水野 孝俊
【審査官】 多胡 滋
(56)【参考文献】
【文献】 特開2000−347900(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/36
G06F 8/30
(57)【特許請求の範囲】
【請求項1】
設計情報からソースコードを生成するソースコード生成部と、
前記ソースコード生成部が生成したソースコードにより記述されるソフトウェアに入力するための入力データを入力して前記ソフトウェアを実行し、前記入力データに対する前記ソフトウェアの実行結果を出力するソフトウェア処理部と、
前記ソフトウェアに入力された入力データと、当該入力データに対する前記ソフトウェアの実行結果とを対応付けたレポートを生成するレポート生成部と、
前記ソフトウェアが有する処理ステップであって、判定処理を行う処理ステップにおける判定条件に基づいて、前記入力データを生成する入力データ生成部と、
を備え、
前記ソフトウェア処理部は、前記入力データ生成部が生成した入力データを入力して前記ソフトウェアを実行し、
前記入力データ生成部は、前記ソフトウェアに対して入力された前記入力データに基づいて、前記ソフトウェアに入力するための前記入力データを新たに生成し、
前記入力データ生成部は、前記判定処理における判定結果が網羅されたか否かを示す網羅情報を参照し、判定結果が網羅されていない判定処理で用いた、前記ソフトウェアに対して入力された前記入力データを構成するパラメータを入力データの生成規則を表すデータ生成規則を参照して変更し、
前記入力データ生成部は、前記網羅情報の判定処理に関するルート情報を参照して前記判定結果が網羅されていない判定処理で用いた入力データを前記ルート情報の入力データ識別情報に基づいて特定し、特定した前記入力データを構成する一部のパラメータを、生成規則を参照して変更したパラメータ以外のパラメータの部分の入力値とすることを特徴とするソフトウェア開発支援装置。
【請求項2】
ソフトウェア開発支援装置が、設計情報からソースコードを生成するソースコード生成過程と、
ソフトウェア開発支援装置が、前記ソースコード生成過程において生成したソースコードにより記述されるソフトウェアに入力するための入力データを入力して前記ソフトウェアを実行し、前記入力データに対する前記ソフトウェアの実行結果を出力するソフトウェア処理過程と、
ソフトウェア開発支援装置が、前記ソフトウェアに入力された入力データと、当該入力データに対する前記ソフトウェアの実行結果とを対応付けたレポートを生成するレポート生成過程と、
ソフトウェア開発支援装置が、前記ソフトウェアが有する処理ステップであって、判定処理を行う処理ステップにおける判定条件に基づいて、前記入力データを生成する入力データ生成過程と、
を含み、
前記ソフトウェア処理過程において、前記入力データ生成過程で生成した入力データを入力して前記ソフトウェアを実行し、
前記入力データ生成過程において、前記ソフトウェアに対して入力された前記入力データに基づいて、前記ソフトウェアに入力するための前記入力データを新たに生成し、
前記入力データ生成過程において、前記判定処理における判定結果が網羅されたか否かを示す網羅情報を参照し、判定結果が網羅されていない判定処理で用いた、前記ソフトウェアに対して入力された前記入力データを構成するパラメータを入力データの生成規則を表すデータ生成規則を参照して変更し、
前記入力データ生成過程において、前記網羅情報の判定処理に関するルート情報を参照して前記判定結果が網羅されていない判定処理で用いた入力データを前記ルート情報の入力データ識別情報に基づいて特定し、特定した前記入力データを構成する一部のパラメータを、生成規則を参照して変更したパラメータ以外のパラメータの部分の入力値とすることを特徴とするソフトウェア開発支援方法。
【請求項3】
ソフトウェア開発支援装置のコンピュータに、
設計情報からソースコードを生成するソースコード生成手順と、
前記ソースコード生成手順において生成したソースコードにより記述されるソフトウェアに入力するための入力データを入力して前記ソフトウェアを実行し、前記入力データに対する前記ソフトウェアの実行結果を出力するソフトウェア処理手順と、
前記ソフトウェアに入力された入力データと、当該入力データに対する前記ソフトウェアの実行結果とを対応付けたレポートを生成するレポート生成手順と、
前記ソフトウェアが有する処理ステップであって、判定処理を行う処理ステップにおける判定条件に基づいて、前記入力データを生成する入力データ生成手順と、
を実行させ、
前記ソフトウェア処理手順において、前記入力データ生成手順で生成した入力データを入力して前記ソフトウェアを実行し、
前記入力データ生成手順において、前記ソフトウェアに対して入力された前記入力データに基づいて、前記ソフトウェアに入力するための前記入力データを新たに生成し、
前記入力データ生成手順において、前記判定処理における判定結果が網羅されたか否かを示す網羅情報を参照し、判定結果が網羅されていない判定処理で用いた、前記ソフトウェアに対して入力された前記入力データを構成するパラメータを入力データの生成規則を表すデータ生成規則を参照して変更し、
前記入力データ生成手順において、前記網羅情報の判定処理に関するルート情報を参照して前記判定結果が網羅されていない判定処理で用いた入力データを前記ルート情報の入力データ識別情報に基づいて特定し、特定した前記入力データを構成する一部のパラメータを、生成規則を参照して変更したパラメータ以外のパラメータの部分の入力値とするためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ソフトウェア開発支援装置、ソフトウェア開発支援方法、およびプログラムに関する。
【背景技術】
【0002】
近年、ソフトウェア開発の効率を向上させるため、ソフトウェア開発の各工程を自動化することが研究されている。例えば、ソフトウェア用のテストデータを自動生成する場合、入力データに対するソフトウェアの実行経路を取得し、経路の始端から終端までを操作することで経路上の条件を順に集め、テストデータ生成のための条件とすることが考えられる(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2012−181782号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上述のようにソフトウェア用のテストデータを生成した場合、条件が膨大になって、テストデータの生成に時間がかかることがあった。また、ソフトウェア用のテストデータを用いた試験によりソフトウェアの異常動作を検出した場合、問題の所在がソフトウェアの設計にあるのか、ソースコードにあるのかを検証する必要が生じ、試験に時間がかかることがあった。このように、従来のソフトウェア開発支援装置では、ソフトウェア開発を効率良く行うことが困難である場合があった。
【0005】
本発明は上記の点に鑑みてなされたものであり、ソフトウェア開発の効率を向上させることができるソフトウェア開発支援装置、ソフトウェア開発支援方法、およびプログラムを提供する。
【課題を解決するための手段】
【0006】
本発明は上記の課題を解決するためになされたものであり、本発明の一態様は、設計情報からソースコードを生成するソースコード生成部と、前記ソースコード生成部が生成したソースコードにより記述されるソフトウェアに入力するための入力データを入力して前記ソフトウェアを実行し、前記入力データに対する前記ソフトウェアの実行結果を出力するソフトウェア処理部と、前記ソフトウェアに入力された入力データと、当該入力データに対する前記ソフトウェアの実行結果とを対応付けたレポートを生成するレポート生成部と、前記ソフトウェアが有する処理ステップであって、判定処理を行う処理ステップにおける判定条件に基づいて、前記入力データを生成する入力データ生成部と、を備え、前記ソフトウェア処理部は、前記入力データ生成部が生成した入力データを入力して前記ソフトウェアを実行し、前記入力データ生成部は、前記ソフトウェアに対して入力された前記入力データに基づいて、前記ソフトウェアに入力するための前記入力データを新たに生成し、前記入力データ生成部は、前記判定処理における判定結果が網羅されたか否かを示す網羅情報を参照し、判定結果が網羅されていない判定処理で用いた、前記ソフトウェアに対して入力された前記入力データを構成するパラメータを入力データの生成規則を表すデータ生成規則を参照して変更し、前記入力データ生成部は、前記網羅情報の判定処理に関するルート情報を参照して前記判定結果が網羅されていない判定処理で用いた入力データを前記ルート情報の入力データ識別情報に基づいて特定し、特定した前記入力データを構成する一部のパラメータを、生成規則を参照して変更したパラメータ以外のパラメータの部分の入力値とすることを特徴とするソフトウェア開発支援装置である。
【0007】
また、本発明の一態様は、ソフトウェア開発支援装置が、設計情報からソースコードを生成するソースコード生成過程と、ソフトウェア開発支援装置が、前記ソースコード生成過程において生成したソースコードにより記述されるソフトウェアに入力するための入力データを入力して前記ソフトウェアを実行し、前記入力データに対する前記ソフトウェアの実行結果を出力するソフトウェア処理過程と、ソフトウェア開発支援装置が、前記ソフトウェアに入力された入力データと、当該入力データに対する前記ソフトウェアの実行結果とを対応付けたレポートを生成するレポート生成過程と、ソフトウェア開発支援装置が、前記ソフトウェアが有する処理ステップであって、判定処理を行う処理ステップにおける判定条件に基づいて、前記入力データを生成する入力データ生成過程と、を含み、前記ソフトウェア処理過程において、前記入力データ生成過程で生成した入力データを入力して前記ソフトウェアを実行し、前記入力データ生成過程において、前記ソフトウェアに対して入力された前記入力データに基づいて、前記ソフトウェアに入力するための前記入力データを新たに生成し、前記入力データ生成過程において、前記判定処理における判定結果が網羅されたか否かを示す網羅情報を参照し、判定結果が網羅されていない判定処理で用いた、前記ソフトウェアに対して入力された前記入力データを構成するパラメータを入力データの生成規則を表すデータ生成規則を参照して変更し、前記入力データ生成過程において、前記網羅情報の判定処理に関するルート情報を参照して前記判定結果が網羅されていない判定処理で用いた入力データを前記ルート情報の入力データ識別情報に基づいて特定し、特定した前記入力データを構成する一部のパラメータを、生成規則を参照して変更したパラメータ以外のパラメータの部分の入力値とすることを特徴とするソフトウェア開発支援方法である。
【0008】
また、本発明の一態様は、ソフトウェア開発支援装置のコンピュータに、設計情報からソースコードを生成するソースコード生成手順と、前記ソースコード生成手順において生成したソースコードにより記述されるソフトウェアに入力するための入力データを入力して前記ソフトウェアを実行し、前記入力データに対する前記ソフトウェアの実行結果を出力するソフトウェア処理手順と、前記ソフトウェアに入力された入力データと、当該入力データに対する前記ソフトウェアの実行結果とを対応付けたレポートを生成するレポート生成手順と、前記ソフトウェアが有する処理ステップであって、判定処理を行う処理ステップにおける判定条件に基づいて、前記入力データを生成する入力データ生成手順と、を実行させ、前記ソフトウェア処理手順において、前記入力データ生成手順で生成した入力データを入力して前記ソフトウェアを実行し、前記入力データ生成手順において、前記ソフトウェアに対して入力された前記入力データに基づいて、前記ソフトウェアに入力するための前記入力データを新たに生成し、前記入力データ生成手順において、前記判定処理における判定結果が網羅されたか否かを示す網羅情報を参照し、判定結果が網羅されていない判定処理で用いた、前記ソフトウェアに対して入力された前記入力データを構成するパラメータを入力データの生成規則を表すデータ生成規則を参照して変更し、前記入力データ生成手順において、前記網羅情報の判定処理に関するルート情報を参照して前記判定結果が網羅されていない判定処理で用いた入力データを前記ルート情報の入力データ識別情報に基づいて特定し、特定した前記入力データを構成する一部のパラメータを、生成規則を参照して変更したパラメータ以外のパラメータの部分の入力値とするためのプログラムである。
【発明の効果】
【0009】
本発明によれば、ソフトウェア開発の効率を向上させることができる。
【図面の簡単な説明】
【0010】
図1】本発明の一実施形態に係るソフトウェア開発支援装置の概略機能構成の一例を示すブロック図である。
図2】本発明の一実施形態に係る設計情報の一例を示す図である。
図3】本発明の一実施形態に係る設計書の一例を示す図である。
図4】本発明の一実施形態に係るソフトウェア開発支援装置により生成されるソースコードが記述するソフトウェアの処理の流れの一例を示すフローチャートである。
図5】本発明の一実施形態に係る入力データ情報の一例を示す図である。
図6】本発明の一実施形態に係るデータ生成規則情報の一例を示す図である。
図7】本発明の一実施形態に係るルート情報の一例を示す図である。
図8】本発明の一実施形態に係る網羅情報の一例を示す図である。
図9】本発明の一実施形態に係る出力情報の一例を示す図である。
図10】本発明の一実施形態に係るソフトウェア開発支援装置による処理の流れの一例を示すフローチャートである。
図11】本発明の一実施形態に係るソフトウェア開発支援装置による入力データの生成処理の流れの一例を示すフローチャートである。
図12】本発明の一実施形態に係るレポートの第1例を示す図である。
図13】本発明の一実施形態に係るレポートの第2例を示す図である。
図14】本発明の一実施形態に係るレポートの第3例を示す図である。
【発明を実施するための形態】
【0011】
以下、図面を参照しながら本発明の実施形態について詳しく説明する。
[ソフトウェア開発支援装置の概略構成]
本実施形態に係るソフトウェア開発支援装置1は、ユーザから入力されたソフトウェアの設計情報に基づいてソースコードおよび設計書を生成する機能を有する。また、ソフトウェア開発支援装置1は、生成したソースコードによって記述されたソフトウェアを実行するための入力データを、既存の入力データに基づいて生成する機能を有する。当該入力データは、生成ソフトウェアおよび設計情報の品質確認のために生成される。以下では、ソフトウェア開発支援装置1が生成したソースコードによって記述されたソフトウェアを生成ソフトウェアと称する。さらに、ソフトウェア開発支援装置1は、生成ソフトウェアを、当該生成ソフトウェアに入力するための生成ソフトウェア用入力データに基づいて実行し、その実行結果を入力データと対応付けて表示する機能を有する。以下では、生成ソフトウェア用入力データを単に入力データと称する。
【0012】
図1は、ソフトウェア開発支援装置1の概略機能構成の一例を示すブロック図である。
ソフトウェア開発支援装置1は、入力部11と、表示部12と、記憶部13と、制御部14と、を備える。
【0013】
入力部11は、入力装置を備え、ユーザからの入力を受け付ける。入力部11は、例えば、マウス、キーボード、またはタッチパネルなどを備える。マウスやタッチパネルを介した入力の場合、入力部11が受け付ける操作の内容は、例えば、表示部12に表示される。また、入力部11は、例えば通信用インターフェイスを備え、外部装置から通信を介して各種情報の入力を受け付けてもよい。
表示部12は、表示装置を備え、各種情報を表示する。表示部12は、例えば、液晶ディスプレイや有機EL(Electro−Luminescence)ディスプレイなどを備える。
【0014】
記憶部13は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)、またはEEPROM(Electrically Erasable Programmable Read Only Memory)などを備える。また、記憶部13は、HDD(Hard Disc Drive)、フラッシュメモリーなどの外部記憶装置を備えてよい。記憶部13は、ソフトウェア開発支援装置1が備えるCPUが実行するための各種プログラムやCPUが実行した処理の結果などを記憶する。
【0015】
また、記憶部13は、設計情報記憶部131と、設計書記憶部132と、ソースコード記憶部133と、入力データ情報記憶部134と、データ生成規則情報記憶部135と、ルート情報記憶部136と、網羅情報記憶部137と、出力情報記憶部138と、レポート記憶部139と、を備える。
【0016】
設計情報記憶部131は、設計情報を記憶する。設計情報は、例えば、表計算ソフトにより解釈可能な表形式のファイルである。設計情報のファイルには、例えば、テンプレートファイルが存在し、当該テンプレートファイルの所定の領域にユーザは設計情報を入力する。
図2は、設計情報の一例を示す図である。
この図に示される例において、設計情報には、通番と、階層と、処理と、P1、P2、P3と、チャートとの各項目を有し、それぞれについて値を有する。本実施形態では、階層からP3までの項目に、処理記号などによって表される中間モデルとしての設計情報がユーザから入力される。チャートの項目には、ユーザから入力された項目に基づいてソフトウェア開発支援装置1が生成した情報が示されている。
【0017】
通番の項目は、設計情報が入力される行を識別する情報である。階層の項目は、プログラムをネスティングして複数の入れ子構造にする場合に、その階層を定める情報である。
この例では、例えば通番が「8」である行に「s(rs.001)」との処理記号が入力されている。「rs.001」は、データベースなどから読み出した複数の情報(レコード)が含まれるレコードセットを示す。ここで、「001」はレコードセットの種別を示しており、複数種別のレコードセットが予め定義されていてよい。本実施形態では、「rs.001」は、注文情報検索のレコードセットである。「s(rs.001)」は、後続する処理を、「rs.001」に含まれるレコード数分ループすることを示す。ただし、階層の項目において、冒頭に「//」との記号が入力されると、その情報はコメント行として扱う。この例では、例えば通番が「1」である行に「//INPUTパラメータをアウトプットBeanに代入」とのコメントが入力されている。
【0018】
処理の項目は、特定のプログラミング言語に依存しない規則によって中間モデルとして定められた処理記号であり、その行によって表すプログラムの処理を示す情報である。この例では、例えば通番が「2」である行に「copy」の処理記号が入力されている。「copy」は、指定された変数に対応付けられて格納された情報を、他の変数に対応付けて格納する(代入する)ことを示す処理記号である。ここで、代入の対象である変数が、複数の要素を持つレコードセットや構造体である場合には、代入元の変数の要素と同一の名称である代入先の変数の要素に、対応する情報を代入する。通番が「4」である行に入力されている「print」の処理記号は、指定された変数に対応付けられて格納された情報をログ出力することを示す。ログ出力とは、例えば所定のログファイルに、指定された変数に対応付けられて格納された情報を書込むことを示す。通番が「6」である行に入力されている「rs.001@read(*)」の処理記号は、レコードセットである「rs.001」によって示される検索処理を実行し、レコードセットに検索結果を代入することを示す。ここで示した処理記号の例は一例であり、この他にも、様々なソフトウェアの処理を示す処理記号が予め定義されていてよい。
【0019】
P1、P2、P3は、処理の項目によって示される処理の引数や属性等を示す情報である。この例では、例えば通番が「2」である行においては、処理の項目に「copy」が入力されており、「P2」の項目に入力された変数である「in」に対応付けられて格納された情報を、「P1」の項目に入力された変数である「ou.01」に対応付けて格納することを示す。「in」は入力項目を示し、「ou.01」は出力項目を示す。例えば、「in」は入力画面における複数の入力項目が含まれるオブジェクトを示し、「ou.01」は出力画面における複数の出力項目が含まれるオブジェクトを示す。具体的には、例えば、開発対象のソフトウェアがオンラインウェブアプリケーションである場合、「in」はリクエストパラメータをラップしたオブジェクトを示し、「in」はレスポンスパラメータをラップしたオブジェクトを示す。あるいは、開発対象のソフトウェアがバッチアプリケーションである場合、「in」はインプットパラメータをラップしたオブジェクトを示し、「in」はアウトプットパラメータをラップしたオブジェクトを示す。ここで、「01」は出力項目の通番を示しており、複数の出力項目が予め定義されていてよい。
例えば「ou.01」は、複数の出力項目のうちのひとつめの出力項目であることを示す。通番が「4」である行においては、処理の項目に「print」が入力されており、「P1」の項目に入力された変数である「in.orderid」に対応付けられて格納された情報をログ出力することを示す。「in.orderid」は、入力画面(in)に含まれる要素のうち、「orderid」の要素(注文ID)を示す。
【0020】
通番が「9」である行においては、処理の項目に「copy」が入力されており、「P2」の項目に入力された変数である「rs.001」のレコードセットに対応付けられて格納された情報を、「P1」の項目に入力された変数である「ou.01.orderinfo」に対応付けて格納することを示す。「rs.001」は注文情報検索の検索結果のレコードセットであり、「ou.01.orderinfo」は出力画面の要素である注文情報の構造体である。「P3」の項目は、チャートの項目に表示させる情報を指定するための情報であり、例えば代入元と代入先の変数が複数の情報の要素を持つ場合、「1」であれば、「P2」に指定された情報の要素のうち「P1」に代入されない要素の名称のみをチャートの項目に表示し、「2」であれば、「P2」に指定された情報の要素のうち「P1」に代入される項目のみをチャートの項目に表示することを示す。
【0021】
チャートの項目は、階層からP3までの項目に入力された中間モデルとしての設計情報に基づいて、その設計情報が示す内容(意味、処理)を自然言語で表す文である。この文は、後述する文生成部160によって生成され、チャートの項目に入力されて表示される。この例では、例えば通番が「1」、「3」、「5」、「7」である行においては、階層の項目にコメントが入力されており、このコメントがチャートの項目に入力される。通番が「2」である行においては、処理の項目に「copy」が入力されており、「P2」の項目に「in」(入力画面)が入力されており、「P1」の項目に「ou.01」(出力画面)が入力されている。このことから、チャートの項目には、「出力画面に入力画面の項目を全て代入する(ID一致)」のような文が生成されて入力される。
【0022】
通番が「4」である行においては、処理の項目に「print」が入力されており、「P1」の項目に「in.orderid」(注文ID)が入力されている。このことから、チャートの項目には、「注文ID(in)の値をログ出力する」のような文が生成されて入力される。通番が「6」である行においては、処理の項目に「rs.001@read(*)」が入力されている。このことから、チャートの項目には、「注文情報検索を実行する」のような文が生成されて入力される。通番が「8」である行においては、階層の項目に「s(rs.001)」が入力されている。このことから、チャートの項目には、「注文情報検索のレコード分ループ」のような文が生成されて入力される。通番が「9」である行においては、処理の項目に「copy」が入力されており、「P2」の項目に「rs.001」(注文情報検索)が入力されており、「P1」の項目に「ou.01.orderinfo」(注文情報)が入力されている。このことから、チャートの項目には、「注文情報(out)に注文情報検索(DB)の項目を全て代入する(ID一致)」のような文が生成されて入力される。また、「P3」の項目に「2」が指定されていることから、「P2」に指定された注文情報検索の要素のうち「P1」に指定された注文情報に代入される項目のみがチャートの項目に入力される。このように、本実施形態のソフトウェア開発支援装置1によれば、ユーザが階層からP3までの設計情報を入力すると、即時にその設計情報の意味内容を示す文が生成され、チャートの項目に表示される。
【0023】
設計書記憶部132は、設計情報記憶部131に記憶された設計情報に基づいて、ソフトウェア開発支援装置1が生成した所定の書式で記述された設計書を記憶する。
図3は、設計書の一例を示す図である。
例えば、設計書記憶部132は、予め定められた書式の設計書のテンプレートファイルと、テンプレートファイルにおけるどの箇所にどの項目の情報を入力するかを定める情報とを予め記憶する。ソフトウェア開発支援装置1は、設計情報の各項目の情報に基づいて設計書に情報を入力することにより設計書を生成する。設計書生成部142は、生成した設計書を設計書記憶部132に記憶させる。
【0024】
例えば、この図の例では、符号(a)が示す領域には、ソフトウェア設計の対象であるシステム名などの情報を入力する。符号(b)が示す領域には、ソフトウェアの概要を入力する。これらの情報は、例えば設計情報のシートの所定の位置に入力される。
符号(c)が示す領域には、設計の対象であるソフトウェアにおける入力データを示す情報を入力する。ここでは、入力画面の入力項目のリストが入力されている。ソフトウェア開発支援装置1は、このようなリストを、例えば設計情報に含まれる変数の名称と記憶部に記憶されている変数の定義情報に基づいて生成してもよいし、入力画面の画面設計書を外部のサーバ等から読み出し、必要な事項を転載してもよい。
【0025】
符号(d)に示す領域には、処理ロジックを入力する。例えば、設計情報においてチャートの項目に入力した文を転載する。ここで、ループなどの階層が存在する個所には、階層の深さに応じたインデントが入力されてよい。
符号(e)に示す領域には、設計の対象であるソフトウェアの出力データを示す情報を入力する。ここでは、出力画面の出力項目のリストが入力されている。ソフトウェア開発支援装置1は、このようなリストを、例えば設計情報に含まれる変数の名称と記憶部に記憶されている変数定義情報に基づいて生成してもよいし、出力画面の画面設計書を外部のサーバなどから読み出し、必要な事項を転載してもよい。
符号(f)に示す領域には、備考の情報が入力される。備考の情報は、例えば設計情報のシートの所定の個所に入力しておき、入力された情報を転載するようにしてもよいし、例えば後からユーザにより入力されるようにしてもよい。
【0026】
ソースコード記憶部133は、設計情報記憶部131に記憶された設計情報に基づいて、ソフトウェア開発支援装置1が生成したソースコードを記憶する。
図4は、ソフトウェア開発支援装置1により生成されるソースコードが記述するソフトウェアの処理の流れの一例を示すフローチャートである。
この図に示される例において、生成ソフトウェアは、「分岐1」〜「分岐3」、「ループ1」、および「処理1」〜「処理3」の処理ステップを有する。ここで、処理ステップとは、生成ソフトウェアによる処理の単位である。この図に示される処理ステップは、それぞれ、図4図9を用いて説明する各種情報の処理ステップに対応する。
【0027】
入力データ情報記憶部134は、入力データに関する入力データ情報を記憶する。
図5は、入力データ情報の一例を示す図である。
この図に示される例において、入力データは、3つのパラメータのセットを有するデータである。入力データ情報は、入力データ識別情報と、入力データと、派生元データと、データ生成規則識別情報と、判定処理ステップと、の各項目を有し、それぞれについて値を有する。入力データ識別情報の項目は、入力データを識別する入力データ識別情報を表す。入力データの項目は、パラメータ1と、パラメータ2と、パラメータ3と、の各項目を有する。パラメータ1、パラメータ2、およびパラメータ3の各項目は、入力データを構成するパラメータを表す。派生元データの項目は、入力データの生成時において、派生元となった入力データの識別情報を表す。なお、入力データがユーザにより入力された場合、派生元データの値は、「手入力」である。データ生成規則識別情報の項目は、入力データの生成時において参照されたデータ生成規則の識別情報を表す。
【0028】
判定処理ステップは、入力データの生成時において、参照された判定処理ステップを表す。ここで、判定処理ステップとは、例えば、分岐やループなど、入力データのパラメータが所定の条件を満たすか否かを判定し、その後の処理ステップを変化させる処理ステップのことである。つまり、判定処理ステップの項目は、入力データの生成目的表す。換言すると、入力データは、判定処理ステップの判定結果のうち、それまでに実行された入力データからは出力されていない判定結果を出力するために生成される。判定処理ステップの値は、例えば、判定処理ステップの識別情報である。
【0029】
この図に示される例において、入力データ情報記憶部134は、複数の入力データ情報を記憶する。最上段に表される入力データ情報は、入力データ識別情報の値が「In001」であり、パラメータ1の値が「12345」であり、パラメータ2の値が「豊洲太郎」であり、パラメータ3の値が「nttdata」であり、派生元データの値が「手入力」であり、データ生成規則識別情報の値が「なし」であり、判定処理ステップの値が「なし」である。すなわち、この入力データ情報は、入力データ識別情報「In001」に対応する入力データに関するものであり、「12345」、「豊洲太郎」、および「nttdata」の3つのパラメータセットから構成される入力データであることを表す。また、この入力データ情報は、入力データ識別情報「In001」に対応する入力データがユーザに入力されたものであることを表す。
【0030】
2段目に表される入力データ情報は、入力データ識別情報の値が「In002」であり、パラメータ1の値が「12345」であり、パラメータ2の値が「豊洲太郎」であり、パラメータ3の値が「ntt」であり、派生元データの値が「In001」であり、データ生成規則識別情報の値が「R012」であり、判定処理ステップの値が「分岐1」である。すなわち、この入力データ情報は、入力データ識別情報「In002」の入力データに関するものであり、「12345」、「豊洲太郎」、および「ntt」の3つのパラメータセットから構成される入力データであることを表す。また、この入力データ情報は、入力データ識別情報「In001」の入力データが、入力データ識別情報「In001」の入力データを、データ生成規則識別情報「R012」に対応するデータ生成規則に則り、「分岐1」の処理内容を参照して派生させることにより生成されたものであることを表す。
【0031】
データ生成規則情報記憶部135は、入力データを生成するときの生成規則に関するデータ生成規則情報を記憶する。
図6は、データ生成規則情報の一例を示す図である。
この図に示される例において、データ生成規則情報は、データ生成規則識別情報と、パラメータと、データ生成規則と、生成数と、の各項目を有し、それぞれについて値を有する。データ生成規則識別情報の項目は、データの生成規則を識別する識別情報を表す。パラメータの項目は、入力データを構成するパラメータであって、入力データの生成において値が変更されるパラメータを表す。データ生成規則の項目は、入力データの生成規則を表す。データ生成規則には、入力データの生成時における制限や入力データを生成するための関数、あるいは、入力データとして代入する値などが登録される。生成数は、データ生成規則に則って生成される入力データの最大個数を表す。
【0032】
この図に示される例において、データ生成規則情報記憶部135は、複数のデータ生成規則情報を記憶する。最上段に表されるデータ生成規則情報は、データ生成規則識別情報の値が「R001」であり、パラメータの値が「パラメータ1」であり、データ生成規則の値が「正の整数」であり、生成数の値が「5」である。すなわち、このデータ生成規則情報は、データ生成規則識別情報「R001」に対応するデータ生成規則に関するものであり、「パラメータ1」を「正の整数」とした入力データを最大「5」個まで生成することを表している。
【0033】
8段目に表されるデータ生成規則情報は、データ生成規則識別情報の値が「R008」であり、パラメータの値が「パラメータ2」であり、データ生成規則の値が「とよすたろう」であり、「生成数」の値が「0」である。すなわち、このデータ生成規則情報は、データ生成規則識別情報「R007」に対応するデータ生成規則に関するものであり、「パラメータ2」を「とよすたろう」とした入力データを生成するための規則を表す。ただし、生成数が「0」であるため、このデータ生成規則情報は、「パラメータ2」を「とよすたろう」とした入力データの生成が行われないことを表す。
【0034】
なお、この図に示される例において、パラメータ1は、数字であり、パラメータ2およびパラメータ3は、文字列である。各パラメータの型を定義する変数の定義情報は、例えば、記憶部13に記憶されている。そして、この情報は、入力データの生成時において参照され、型の定義を満たす範囲で入力データが生成されてよい。また、データ生成規則情報は、ユーザにより入力されてよい。これにより、本実施形態に係るソフトウェア開発支援装置1は、ユーザの所望する生成規則および生成数の範囲で入力データを生成するため、ユーザは、レポートにより設計情報の品質を確認できる。
【0035】
ルート情報記憶部136は、ソフトウェア開発支援装置1が生成したソースコードを入力データに基づいて実行したときの実行経路に関するルート情報を記憶する。
図7は、ルート情報の一例を示す図である。
この図に示される例において、ルート情報は、入力データ識別情報と、処理ステップと、判定結果と、の各項目を有し、それぞれについて値を有する。入力データ識別情報の項目は、生成ソフトウェアに入力された入力データを表す。判定処理ステップの項目は、入力データに対して生成ソフトウェアが実行した判定処理ステップを表す。判定処理ステップの値は、判定処理ステップを識別する判定処理ステップ識別情報により表される。判定結果の項目は、判定処理ステップにおいて、入力データに対する判定結果を表す。
【0036】
この図に示される例において、ルート情報記憶部136は、複数のルート情報を記憶する。最上段に表されるルート情報は、入力データ識別情報の値が「In001」であり、判定処理ステップの値が「分岐1」であり、判定結果の値が「TRUE」である。2段目に表されるルート情報は、入力データ識別情報の値が「In001」であり、判定処理ステップの値が「分岐2」であり、判定結果の値が「TRUE」である。3段目に表されるルート情報は、入力データ識別情報の値が「In001」であり、判定処理ステップの値が「ループ1」であり、判定結果の値が「TRUE」である。すなわち、最上段から3段目までに表されるルート情報は、入力データ識別情報「In001」に対応する入力データを入力して生成ソフトウェアを実行したときに、生成ソフトウェアが、判定処理ステップ「分岐1」において「TRUE」であると判定し、判定処理ステップ「分岐2」において「TRUE」であると判定し、処理ステップ「ループ1」において「TRUE」であると判定したことを表している。
【0037】
網羅情報記憶部137は、生成ソフトウェアが有する判定処理ステップにおける判定結果が網羅されたか否かを示す網羅情報を記憶する。
図8は、網羅情報の一例を示す図である。
この図に示される例において、網羅情報は、判定処理ステップと、判定条件と、処理目的と、網羅フラグと、の各項目を有し、それぞれについて値を有する。判定処理ステップの項目は、判定処理ステップを識別する判定処理ステップ識別情報を表す。判定条件の項目は、判定処理ステップにおける判定条件を表す。処理目的の項目は、判定処理ステップにおける処理の目的を表す。網羅フラグは、判定処理ステップにおいて、判定結果が網羅されたか否かを表す。ここで、判定結果が網羅されたとは、判定処理ステップにおいて判定されうるすべての結果が出力されたことをいう。例えば、TRUEまたはFALSEのいずれかを出力する分岐の判定処理ステップにおいて、TRUEおよびFALSEのいずれも出力されたとき、判定結果が網羅されたという。判定処理ステップにおいて判定結果が網羅されるためには、当該判定処理ステップにおける判定結果が異なる複数の入力データに基づいて、生成ソフトウェアが実行される必要がある。
【0038】
この図に示される例において、網羅情報記憶部137は、複数の網羅情報を記憶する。
最上段に表される網羅情報は、判定処理ステップの値が「分岐1」であり、判定条件の値が「条件1(パラメータ3)」であり、処理目的の値が「エラー1チェック」である。すなわち、この網羅情報は、判定処理ステップ「分岐1」において、入力データが「エラー1」に該当するか否かをチェックするために、「パラメータ3」が「条件1」を満たすか否かを判定することを表す。また、この網羅情報は、網羅フラグの値が「TRUE」であるため、判定処理ステップ「分岐1」において、TRUEを出力した入力データとFALSEを出力した入力データとに関する入力データ情報が入力データ情報記憶部134に記憶されていることを表す。
【0039】
3段目に表される網羅情報は、判定処理ステップの値が「分岐3」であり、判定条件の値が「条件3(パラメータ2)」であり、処理目的の値が「エラーチェック3」である。
すなわち、この網羅情報は、判定処理ステップ「分岐3」において、入力データが「エラー3」に該当するか否かをチェックするために、「パラメータ2」が「条件3」を満たすか否かが判定されることを表す。また、この網羅情報は、網羅フラグの値が、「FALSE」であるため、判定処理ステップ「分岐3」において、TRUEを出力した入力データとFALSEを出力した入力データとに関する入力データ情報のいずれか、または、両方が入力データ情報記憶部134に記憶されていないことを表す。
【0040】
出力情報記憶部138は、生成ソフトウェアに入力される入力データと、当該入力データを入力して生成ソフトウェアを実行したときの実行結果である出力データとを対応付けた出力情報を記憶する。
図9は、出力情報の一例を示す図である。
この図に示される例において、出力情報は、入力データ識別情報と出力データとの各項目を有し、それぞれについて値を有する。入力データ識別情報の項目は、生成ソフトウェアに入力された入力データを表す。出力データの項目は、入力データに対して生成ソフトウェアが出力した出力データを表す。出力データの値は、例えば、出力データを構成するパラメータの値、出力されるメッセージ、および出力される画像などのコンテンツのURI(Uniform Resource Identifier)などである。
【0041】
この図に示される例において、出力情報記憶部138は、複数の出力情報を記憶する。
最上段に表される出力情報は、入力データ識別情報の値が「In001」であり、出力データの値が「実行結果1」である。すなわち、この出力情報は、入力データ識別情報「In001」に対応する入力データに対して、生成ソフトウェアが「実行結果1」を出力データとして出力することを表す。
【0042】
レポート記憶部139は、例えば、予め定められた書式のレポートのテンプレートファイルを記憶する。このテンプレートファイルには、ファイル中の各項目と、当該項目に入力される情報との対応関係が記録されている。また、レポート記憶部139は、テンプレートファイルに基づいて生成されたレポートを記憶する。本実施形態に係るレポートは、様々な態様で表現されうる。レポートの各態様には、それぞれ個別のテンプレートファイルが予め用意されている。レポートの具体的な態様は、後述する。
【0043】
図1に戻り、ソフトウェア開発支援装置1の概略機能構成について説明を続ける。
制御部14は、設計情報取得部141と、設計書生成部142と、ソースコード生成部143と、入力データ取得部144と、入力データ生成部145と、ソフトウェア処理部146と、レポート生成部147と、表示制御部148と、を備える。
【0044】
設計情報取得部141は、入力部11が設計情報の入力をユーザから受け付けた場合、当該設計情報を取得し、設計情報記憶部131に記憶させる。
設計書生成部142は、設計情報記憶部131から設計情報を取得し、取得した設計情報に基づいて設計書を生成する。設計書生成部142は、生成した設計書を設計書記憶部132に記憶させる。設計書生成部142による設計書の生成方法には、公知の技術を適用することができるため、ここでは説明を省略する。
【0045】
ソースコード生成部143は、設計情報記憶部131から設計情報を取得し、取得した設計情報に基づいてソースコードを生成する。ソースコード生成部143は、生成したソースコードをソースコード記憶部133に記憶させる。ソースコード生成部143によるソースコードの生成方法には、公知の技術を適用することができるため、ここでは説明を省略する。
入力データ取得部144は、入力部11が入力データの入力をユーザから受け付けた場合、当該入力データを取得する。入力データ取得部144は、取得した入力データに基づいて入力データ情報を生成し、入力データ情報記憶部134に記憶させる。入力データ取得部144は、例えば、ユーザに対して、代表的な入力データの入力要求を表示部12に表示させてよい。また、入力データ取得部144は、例えば、入力データ生成部145によって生成された入力データに基づく生成ソフトウェアの実行では、処理されない処理ステップを実行するための入力データの入力要求を表示部12に表示させてよい。入力データ取得部144は、このような入力データの入力要求を、例えば、入力データの生成終了条件が満たされたときに行ってもよい。
【0046】
入力データ生成部145は、入力データ情報記憶部134が記憶する入力データ情報、データ生成規則情報記憶部135が記憶するデータ生成規則、ルート情報記憶部136が記憶するルート情報、および網羅情報記憶部137が記憶する網羅情報に基づいて入力データを生成する。入力データ生成部145は、判定結果が網羅されていない判定処理ステップの判定条件に基づいて入力データを生成する。このとき、入力データ生成部145は、他の判定処理ステップの判定条件は、参照しなくてもよい。これにより、入力データ生成部145は、生成ソフトウェアの実行時に対象とする判定処理ステップに至った場合、当該判定処理ステップにおいて、得られていない判定結果を確実に出力する入力データを簡易に生成することができる。
【0047】
また、入力データ生成部145は、既に生成ソフトウェアに対して入力された入力データに基づいて、新たな入力データを生成する。具体的には、入力データ生成部145は、例えば、既に生成された入力データのパラメータのうち、対象とする判定処理ステップの判定条件に関するパラメータを変更することにより、新たな入力データを生成する。これにより、入力データ生成部145は、生成ソフトウェアの実行時に、対象とする判定処理ステップに至る可能性が高い入力データを生成するため、当該判定処理ステップにおいて得られていない判定結果を出力する入力データをさらに高い確率で生成することができる。
【0048】
また、入力データ生成部145は、予め定められたデータ生成規則に基づいてデータを生成する。これにより、入力データ生成部145は、予め定められた範囲で生成ソフトウェアを実行するために必要最小限の入力データを生成するため、入力データの生成に要する時間を削減することができる。なお、入力データ生成部145は、例えば、変更するパラメータに関して、生成ソフトウェアの実行経路上に存在する判定処理ステップの判定条件を集約して当該集約した条件を満たすようなパラメータを生成してよい。これにより、入力データ生成部145は、入力データの生成に要する時間を短縮しつつ、することができる。
【0049】
ソフトウェア処理部146は、ソースコード記憶部133からソースコードを取得する。また、ソフトウェア処理部146は、入力データ情報記憶部134から入力データを取得する。ソフトウェア処理部146は、入力データ情報記憶部134から取得した入力データを、ソースコード記憶部133から取得したソースコードに基づく生成ソフトウェアの入力データとし、生成ソフトウェアを実行する。
【0050】
ソフトウェア処理部146は、生成ソフトウェアの実行において、判定処理ステップごとに入力データに対する判定結果を取得し、ルート情報を生成する。ソフトウェア処理部146は、生成したルート情報をルート情報記憶部136に記憶させる。ソフトウェア処理部146は、ソフトウェアを最後の処理ステップまで実行すると、ルート情報記憶部136に記憶されているルート情報を参照する。ソフトウェア処理部146は、参照したルート情報において、判定結果が網羅された判定処理ステップを特定する。ソフトウェア処理部146は、判定結果が網羅された判定処理ステップに関する網羅情報を網羅情報記憶部137から参照し、参照した網羅情報の網羅フラグを「TRUE」に変更する。
【0051】
ソフトウェア処理部146は、生成ソフトウェア入力した入力データと、当該入力データに基づいて生成ソフトウェアが出力した出力データとを対応付けて出力情報を生成する。ソフトウェア処理部146は、生成した出力情報を出力情報記憶部138に記憶させる。
【0052】
レポート生成部147は、例えば、ソースコード記憶部133が記憶するソースコード、設計書記憶部132が記憶する設計書、入力データ情報記憶部134が記憶する入力データ情報、データ生成規則情報記憶部135が記憶するデータ生成規則情報、ルート情報記憶部136が記憶するルート情報、網羅情報記憶部137が記憶する網羅情報、および出力情報記憶部138が記憶する出力情報などを参照してレポートを生成する。具体的には、レポート生成部147は、例えば、レポート記憶部139が記憶するレポートのテンプレートファイルが記録する情報の対応関係に基づいて、ソースコード、設計書、入力データ情報、ルート情報、網羅情報、および出力情報の各項目の情報を取得する。レポート生成部147は、取得した各項目の情報に基づいて、レポートの各項目に入力する情報を生成する。レポート生成部147は、生成した情報をテンプレートファイルが定める所定の位置に入力し、レポートを生成する。レポート生成部147は、生成したレポートをレポート記憶部139に記憶させる。
【0053】
表示制御部148は、表示部12を制御して各種情報を表示させる。表示制御部148は、例えば、設計書記憶部132から設計書を取得し、表示部12に表示させる。また、表示部12は、例えば、レポート記憶部139からレポートを取得し、表示部12に表示させる。また、表示制御部148は、例えば、入力部11がユーザからの入力を受け付けるときに、入力を支援するための情報を表示部12に表示させる。表示制御部148は、例えば、設計情報の入力を支援するために、設計情報のテンプレートファイルを表示部12に表示させる。
【0054】
[ソフトウェア開発支援装置の動作]
図10は、ソフトウェア開発支援装置1による処理の流れの一例を示すフローチャートである。
まず、設計情報取得部141は、入力部11がユーザから受け付けた設計情報を設計情報記憶部131に記憶させる(ステップS101)。次に、ソースコード生成部143は、設計情報記憶部131が記憶する設計情報を参照して生成ソフトウェアのソースコードを生成し、ソースコード記憶部133に記憶させる。また、設計書生成部142は、設計情報記憶部131が記憶する設計情報を参照して生成ソフトウェアの設計書を生成し、設計書記憶部132に記憶させる(ステップS102)。
【0055】
次に、入力データ取得部144は、入力部11がユーザから受け付けた入力データを取得する(ステップS103)。ここで、入力部11がユーザから受け付ける入力データは、例えば、生成ソフトウェアに対して入力されたときに正常系の処理ステップが実行される入力データである。ここで、正常系の入力データとは、例えば、エラーチェックを目的とする処理ステップにおいて、エラーと判定されない入力データである。
【0056】
このような正常系の入力データは、ソフトウェア開発支援装置1により生成されてもよい。ただし、正常系の入力データがユーザによって入力されることにより、ソフトウェア開発支援装置1は、当該ユーザによって入力された入力データを派生させて、新たに入力データを生成する。そして、ソフトウェア開発支援装置1は、ユーザによって入力された入力データとその派生データとの関係を明確に示すレポートを生成することができるため、ユーザにとって理解しやすいレポートを生成することができる。
【0057】
次に、入力データ取得部144は、取得した入力データに基づいて入力データ情報を生成し、生成した入力データ情報を入力データ情報記憶部134に記憶させる(ステップS104)。次に、ソフトウェア処理部146は、入力データ情報記憶部134から未実行の入力データを取得する(ステップS105)。ここで、ソフトウェア処理部146は、入力データが未実行であるか否かを、例えば、ルート情報記憶部136が記憶するルート情報や、出力情報記憶部138が記憶する出力情報を参照することにより判定することができる。次に、ソフトウェア処理部146は、取得した入力データに対して生成ソフトウェアを実行する(ステップS106)。
【0058】
次に、ソフトウェア処理部146は、生成ソフトウェアの実行経路を取得してルート情報を生成し、生成したルート情報をルート情報記憶部136に記憶させる(ステップS107)。次に、ソフトウェア処理部146は、ルート情報記憶部136が記憶するルート情報を参照し、判定結果が新たに網羅された処理ステップが存在する場合、当該処理ステップに関する網羅情報の網羅フラグを「TRUE」に変更して網羅情報記憶部137に記憶させる(ステップS108)。
【0059】
次に、ソフトウェア処理部146は、網羅情報記憶部137が記憶する網羅情報を参照し、すべての判定処理ステップにおいて判定結果が網羅されたか否かを判定する(ステップS109)。すべての判定処理ステップにおいて判定結果が網羅された場合(ステップS109;YES)、レポート生成部147は、入力データ情報記憶部134が記憶する入力データ情報、ルート情報記憶部136が記憶するルート情報、網羅情報記憶部137が記憶する網羅情報、および出力情報記憶部138が記憶する出力情報に基づいてレポートを生成し、レポート記憶部139に記憶させる(ステップS110)。次に、表示制御部148は、レポート記憶部139が記憶するレポートを取得し、表示部12に表示させる(ステップS111)。その後、制御部14は、処理を終了する。また、すべての判定処理ステップにおいて判定結果が網羅されていない場合(ステップS109;NO)、入力データ生成部145は、入力データの生成終了条件が満たされたか否かを判定する(ステップS112)。
【0060】
ここで、入力データの生成終了条件とは、入力データ取得部144が入力データの生成を終了するための条件である。入力データの生成終了条件は、ユーザの任意に設定されてよい。入力データの生成終了条件は、例えば、入力データの生成開始から所定の数の入力データが生成されることであってもよい。また、入力データの生成終了条件は、例えば、判定結果が網羅されていないすべての判定処理ステップについて、データ生成規則情報記憶部135が記憶するすべてのデータ生成規則情報のデータ規則に則って、その生成数の項目の値の数の入力データが生成されることであってもよい。また、入力データの生成終了条件は、例えば、判定結果が網羅されていないすべての判定処理ステップについて、判定結果を網羅するために所定の回数以上の入力データが生成されることであってもよい。
【0061】
また、入力データの生成終了条件は、例えば、初めの入力データの生成から所定時間経過することであってもよい。また、入力データの生成終了条件は、例えば、判定結果が網羅されていないすべての判定処理ステップについて、判定結果を網羅するために所定の時間以上入力データの生成を行ったことであってもよい。このように入力データの生成終了条件は、生成する入力データの数や生成に要する時間などに応じて任意に定められてよい。
【0062】
入力データの生成終了条件が満たされた場合(ステップS112;YES)、制御部14は、ステップS110に処理を進める。また、入力データの生成終了条件が満たされていない場合(ステップS112;NO)、入力データ生成部145は、ルート情報記憶部136が記憶するルート情報、網羅情報記憶部137が記憶する網羅情報、およびデータ生成規則情報記憶部135が記憶するデータ生成規則情報を参照し、入力データを生成する(ステップS113)。入力データ生成部145は、生成した入力データの入力データ情報を記憶部に記憶させる(ステップS114)。その後、制御部14は、ステップS105に処理を戻す。
【0063】
このように、ソフトウェア開発支援装置1は、判定結果を網羅することが困難な処理ステップに関する入力データの生成を必要以上に試みない。そして、例えば、生成が困難であった入力データの入力をユーザに求めることにより、結果的に、生成ソフトウェアおよび設計情報の品質確認に要する時間を削減することができる。
【0064】
図11は、ソフトウェア開発支援装置1による入力データの生成処理の流れの一例を示すフローチャートである。
まず、入力データ生成部145は、網羅情報記憶部137が記憶する網羅情報のうち、網羅フラグの値が「FALSE」である網羅情報を取得する(ステップS201)。次に、入力データ生成部145は、取得した網羅情報の判定条件の値を参照し、判定対象のパラメータを取得する(ステップS202)。次に、入力データ生成部145は、取得した判定対象のパラメータに関するデータ生成規則情報をデータ生成規則情報記憶部135から取得する(ステップS203)。次に、入力データ生成部145は、ステップS201において取得した網羅情報の判定処理ステップに関するルート情報をルート情報記憶部136から取得する(ステップS204)。次に、入力データ生成部145は、取得したルート情報の入力データ識別情報を参照し、派生元とする入力データを選択する(ステップS205)。
【0065】
次に、入力データ生成部145は、派生元とする入力データのうちのステップS202において取得したパラメータを、ステップS203において取得したデータ生成規則情報のデータ規則およびステップS201において取得した網羅条件の判定条件に基づいて変更することにより、入力データを生成する(ステップS206)。次に、入力データ生成部145は、生成した入力データを識別する入力データ識別情報を採番する(ステップS207)。次に、入力データ生成部145は、入力データの生成において参照したデータ規則情報のデータ規則識別情報、網羅情報の判定処理ステップ、および派生元データの入力データ識別情報を、生成した入力データおよび採番した入力データ識別情報と対応付けることにより入力データ情報を生成して入力データ情報記憶部134に記憶させる(ステップS208)。その後、入力データ生成部145は、処理を終了する。
【0066】
[レポートの表示態様]
図12は、レポートの第1例を示す図である。
この図に示される例において、レポートは、符号(a)および(b)により示される2つの領域を有する。
符号aに示される領域において、入力要素の項目は、生成ソフトウェアの入力データの概要を表す。また、出力要素の項目は、出力データの概要を表す。
符号bに示される領域は、入力データと、当該入力データを入力して生成ソフトウェアを実行した場合に期待される実行結果と、当該入力データを入力して生成ソフトウェアを実行した場合の実行結果と、当該入力データに対する生成ソフトウェアの実行経路とを対応付けた実行結果表を表す。
【0067】
この実行結果表は、例えば、項番、確認カテゴリ、実行ケースの項番、実行ケースの実行項目概要、事前条件、入力値、実行結果、およびパス情報の項目を有する。項番の項目は、入力データの分類の識別情報を表す。確認カテゴリの項目と実行ケースの実行項目概要の項目とは、生成ソフトウェアを実行した場合に期待される実行結果を表す。換言すると、実行ケースの実行項目概要は、入力データが生成された目的を表す。事前条件の項目は、生成ソフトウェアを実行するために必要な条件を表す。入力値の項目は、入力データを表す。実行結果の項目は、生成ソフトウェアによる実行結果を表す。なお、生成ソフトウェアによる実行結果が、例えば画像の表示などであって欄内への表示が困難な場合、ソフトウェア開発支援装置1は、例えば、行の任意の場所の選択に応じて当該画像を表示させるなど、実行結果を別途出力する機能を有してもよい。パス情報は、入力データに対する生成ソフトウェアの実行経路を表す。
【0068】
実行結果表が有する各項目の値は、それぞれ、入力データ情報記憶部134が記憶する入力データ情報、データ生成規則情報記憶部135が記憶するデータ生成規則情報、ルート情報記憶部136が記憶するルート情報、網羅情報記憶部137が記憶する網羅情報、または出力情報記憶部138が記憶する出力情報などに基づいてレポート生成部147により生成される。確認カテゴリの項目の値は、例えば、網羅情報が有する処理目的の値に基づいて生成され、入力される。実行ケースの実行項目概要の値は、例えば、入力データ情報が有する判定処理ステップの値、データ生成規則情報が有するデータ生成規則の値、入力データ情報の派生元データの値などに基づいて生成され、入力される。事前条件の値は、例えば、ルート情報に基づいて生成され、入力される。例えば、ルート情報が示す実行経路上の処理ステップの処理内容が入力データ以外の情報を参照する場合には、当該参照先の情報を参照できることが事前条件となる。入力値の値は、例えば、入力データ情報が有する入力データの値に基づいて生成され、入力される。実行結果の値は、例えば、出力情報が有する出力データの値に基づいて生成され、入力される。パス情報の値は、例えば、ルート情報が有する判定結果の値に基づいて生成され、入力される。
【0069】
図13は、レポートの第2例を示す図である。
この図に示される例において、レポートは、入力データが有するパラメータの値と出力データが有するパラメータとのディシジョンテーブルの形式で表示される。
このディシジョンテーブルは、例えば、行の項目として入力値、出力値、確認日、確認者、判定、確認したV/R、修正確認日、修正確認者、修正確認済みV/R、および備考の各項目を有する。入力値の項目は、引数の項目を有する。出力値の項目は、戻り値と、フィールドとの項目を有する。入力値の引数の項目は、入力データが有するパラメータを表す。出力データが有するパラメータを表す。出力値のフィールドの値は、出力データが有する項目を表す。確認日の項目は、レポートの内容をレビューアが確認した日を表す。
確認者の項目は、レポートの内容を確認したレビューアの識別情報を表す。
【0070】
このディシジョンテーブルは、例えば、列の項目として、型(定/実)、要素、値、コメント、cnt、実行ケースの各項目を有する。型の項目は、入力データおよび出力データが有するパラメータのデータ形式を表す。要素の項目は、入力データおよび出力データが有するパラメータの概要を表す。値の項目は、入力データおよび出力データが有するパラメータの値を表す。値の項目の値は、例えば、入力データ情報が有する入力データの項目に基づいて生成される。コメントの項目は、例えば、入力データおよび出力データが有するパラメータや当該パラメータの値についての説明を表す。cntの項目は、入力データまたは出力データが有するパラメータについて、同一の値を有する入力データまたは出力データの数を表す。cntの項目の値は、例えば、実行ケースのチェックマークの数を計数することにより生成される。実行ケースは、入力データ識別情報ごとの情報を表す。
入力値に対応する実行ケースの値には、値の項目の値と、入力データ情報が有するパラメータの値とが一致する場合にチェックマークが入力される。出力値に対応する実行ケースの値には、値の項目の値と、出力情報が有する出力データの値が表す内容とが一致する場合に、チェックマークが入力される。
【0071】
図14は、本発明の一実施形態に係るレポートの第3例を示す図である。
この図に示される例において、レポートは、入力データのパラメータの値を選択可能とし、選択された入力データに応じた出力データをインターネットブラウザを介して表示するWebインターフェイスの形式で表示される。
この図に示される例において、入力項目は、入力データを表す。入力項目が有するユーザID、ユーザ名、およびパスワードの項目は、入力データが有するパラメータを表す。
ユーザID、ユーザ名、およびパスワードの値は、入力データ情報が有する入力データの値に基づいて生成され、選択可能に表示される。出力結果は、出力データを表す。出力結果は、出力情報の処理内容の値に基づいて生成される。この図に示される例において、出力結果として、変更後パスワード、メッセージ、画像イメージが表示されている。これら出力結果は、入力項目の選択に応じてその表示が遷移する。すなわち、入力データに応じた出力データが表示される。
【0072】
以上説明したように、本実施形態に係るソフトウェア開発支援装置1は、設計情報からソースコードを生成するソースコード生成部143と、ソースコード生成部143が生成したソースコードにより記述される生成ソフトウェアに入力するための入力データを入力して生成ソフトウェアを実行し、入力データに対する生成ソフトウェアの実行結果を出力するソフトウェア処理部146と、生成ソフトウェアに入力された入力データと、当該入力データに対する生成ソフトウェアの実行結果とを対応付けたレポートを生成するレポート生成部147と、を備える。
【0073】
これにより、ソフトウェア処理部146は、例えば、実行結果表の形式のレポートにより、入力データと、当該入力データを入力して生成ソフトウェアを実行した場合の実行結果とを表示するため、ソフトウェアの動作異常をユーザに分かり易く提示することができる。また、生成ソフトウェアは、設計情報から自動生成されたソースコードによって記述されたソフトウェアであるため、レポートによって示唆される動作異常は、設計情報の欠陥に起因する。すなわち、ソフトウェア開発支援装置1が生成するレポートは、ソフトウェア設計の欠陥をユーザに分かりやすく提示する。従って、ソフトウェア開発支援装置1は、ソフトウェア開発の効率を向上させることができる。
【0074】
また、レポート生成部147は、生成ソフトウェアに入力された入力データと、当該入力データに対して生成ソフトウェアが出力することが期待される実行結果とを対応付けたレポートを生成する。
これにより、ソフトウェア開発支援装置1は、例えば、実行結果表の形式のレポートにより、入力データと、当該入力データを入力して生成ソフトウェアに実行した場合に期待される実行結果とを表示するため、生成ソフトウェアの実行において期待される実行結果と、実際の実行結果とを対応付けて表示する。従って、ソフトウェア開発支援装置1は、生成ソフトウェアの動作異常を分かり易く提示することができる。その結果、ソフトウェア開発支援装置1は、ユーザが生成ソフトウェアの動作異常を認識するまでの時間を短縮することができ、ソフトウェア開発の効率を向上させることができる。
【0075】
また、ソフトウェア処理部146は、生成ソフトウェアによる処理の単位である処理ステップのうち、入力データに対して生成ソフトウェアが実行した処理ステップを出力し、レポート生成部147は、生成ソフトウェアに入力された入力データと、当該入力データに対して生成ソフトウェアが実行した処理ステップとを対応付けたレポートを生成する。すなわち、ソフトウェア開発支援装置1は、入力データと、当該入力データに対する生成ソフトウェアの実行経路とを対応付けたレポートを表示する。
これにより、ソフトウェア開発支援装置1は、判定結果が網羅されていない判定処理ステップと当該判定処理ステップによる処理を受けた入力データとを分かり易く提示することができるため、ユーザは、実行されていない処理ステップを実行させるための入力データを考える際に参考になる入力データを認識することができるため、ソフトウェア開発支援装置1は、ソフトウェア開発の効率を向上させることができる。
【0076】
また、ソフトウェア開発支援装置1は、生成ソフトウェアが有する処理ステップであって、判定処理を行う処理ステップにおける判定条件に基づいて、入力データを生成する入力データ生成部145、をさらに備え、ソフトウェア処理部146は、入力データ生成部が生成した入力データを入力して生成ソフトウェアを実行する。
これにより、ソフトウェア開発支援装置1は、判定結果が網羅されていない判定処理ステップにおいて、得られていない判定結果を出力する入力データを生成することができる。従って、ソフトウェア開発支援装置1は、ソフトウェア開発の効率を向上させることができる。
【0077】
また、入力データ生成部145は、生成ソフトウェアに対して入力された入力データに基づいて、生成ソフトウェアに入力するための入力データを新たに生成する。
これにより、ソフトウェア開発支援装置1は、判定結果が網羅されていない判定処理ステップにおける処理をより高い確率で受ける入力データを生成することが出きる。従って、ソフトウェア開発支援装置1は、ソフトウェア開発の効率を向上させることができる。
【0078】
また、本実施形態に係るソフトウェア開発支援方法は、生成ソフトウェア開発支援装置が、設計情報からソースコードを生成するソースコード生成過程と、生成ソフトウェア開発支援装置が、ソースコード生成過程において生成したソースコードにより記述される生成ソフトウェアに入力するための入力データを入力して生成ソフトウェアを実行し、入力データに対する生成ソフトウェアの実行結果を出力する生成ソフトウェア処理過程と、生成ソフトウェア開発支援装置が、生成ソフトウェアに入力された入力データと、当該入力データに対する生成ソフトウェアの実行結果とを対応付けたレポートを生成するレポート生成過程と、を含む。
これにより、ソフトウェア開発支援方法は、ソフトウェア開発支援装置1と同様の効果を奏することができる。
【0079】
また、本実施形態に係るソフトウェア開発支援プログラムは、生成ソフトウェア開発支援装置のコンピュータに、設計情報からソースコードを生成するソースコード生成手順、ソースコード生成手順において生成したソースコードにより記述される生成ソフトウェアに入力するための入力データを入力して生成ソフトウェアを実行し、入力データに対する生成ソフトウェアの実行結果を出力する生成ソフトウェア処理手順、生成ソフトウェアに入力された入力データと、当該入力データに対する生成ソフトウェアの実行結果とを対応付けたレポートを生成するレポート生成手順、を実行させる。
これにより、ソフトウェア開発支援プログラムは、ソフトウェア開発支援装置1と同様の効果を奏することができる。
【0080】
なお、レポートの態様は上述したものに限られない。レポート生成部147は、例えば、網羅情報記憶部137が記憶する網羅情報に基づいて、処理ステップのカバレッジの情報を生成し、レポートとして出力してよい。カバレッジの生成において、レポート生成部147は、例えば、生成ソフトウェアの全処理ステップ数に対して網羅情報が有する網羅フラグの値が「TRUE」である処理ステップ数の比率を算出してもよい。また、レポート生成部147は、例えば、生成ソフトウェアが有する処理ステップをフローチャートの形式で図示し、生成ソフトウェアが実行した処理ステップと、実行しなかった処理ステップとを区別可能に表示するレポートを生成してもよい。
【0081】
また、レポート生成部147は、ユーザが指定する情報のみを表示するレポートを生成してもよい。このとき、レポート生成部147は、ユーザが指定する情報のみを生成してからレポートを生成してもよい。また、このとき、レポート生成部147は、レポートにおいて生成可能な全ての情報を生成して必要な情報のみを抽出し、レポートを生成してもよい。
【0082】
また、設計書生成部142は、設計情報に加え、入力データ情報記憶部134が記憶する入力データ情報、ルート情報記憶部136が記憶するルート情報、網羅情報記憶部137が記憶する網羅情報、および出力情報記憶部138が記憶する出力情報に基づいて、設計書を生成してもよい。設計書生成部142は、例えば、特定の入力データに対して生成ソフトウェアが実行した処理ステップと実行しなかった処理ステップとを区別可能に示す設計書を生成してもよい。具体的には、例えば、図3の例に示される設計書において、符号dに示される領域における処理ロジックの情報のうち、生成ソフトウェアが実行した処理、すなわち実行経路上の処理ステップと、生成ソフトウェアが実行しなかった処理ステップとが、色分け、塗りつぶし、または下線の付与などの視覚的効果を用いて区別可能に表示されてもよい。また、例えば、図3の例に示される設計書において、符号dに示される領域における処理ロジックの情報のうち、生成ソフトウェアが実行した処理ステップのみが表示されてもよい。また、設計書において、入力データの生成時に参照された処理ステップが区別可能に表示されてもよい。このように、設計書生成部142は、入力データに対応する設計情報を区別可能に表す設計書を生成してもよい。これにより、ソフトウェア開発支援装置1は、特定の入力データに対する実行経路上の設計情報について、具体的な処理内容を提示するため、ユーザは、ソフトウェア設計の欠陥の詳細を認識することができる。従って、ソフトウェア開発支援装置1は、ソフトウェア開発の効率を向上させることができる。
【0083】
また、ソースコード生成部143は、設計書生成部142と同様に、設計情報に加え、入力データ情報記憶部134が記憶する入力データ情報、ルート情報記憶部136が記憶するルート情報、網羅情報記憶部137が記憶する網羅情報、および出力情報記憶部138が記憶する出力情報に基づいて、ソースコードを生成してもよい。そして、ソースコード生成部143は、例えば、特定の入力データに対して生成ソフトウェアが実行した処理と実行しなかった処理とを区別可能に示すソースコードを生成してもよい。
【0084】
また、ソフトウェア開発支援装置1は、設計書生成部142が生成した設計書と、ソースコード生成部143が生成したソースコードと、レポート生成部147が生成したレポートとを互いに対応付けてよい。例えば、レポートにおいて、特定の入力データがユーザにより選択された場合、ソフトウェア開発支援装置1は、当該入力データに対する生成ソフトウェアの実行経路を区別可能に示す設計書を表示してもよい。また、設計書の特定の処理ステップがユーザにより選択された場合、ソフトウェア開発支援装置1は、当該処理ステップを参照して生成された入力データについての情報を区別可能に示すレポートを表示してもよい。
【0085】
なお、上述した実施形態におけるソフトウェア開発支援装置1の一部、例えば、設計情報取得部141、設計書生成部142、ソースコード生成部143、入力データ取得部144、入力データ生成部145、ソフトウェア処理部146、レポート生成部147、および表示制御部148をコンピュータで実現するようにしてもよい。その場合、この制御機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。
【0086】
なお、ここでいう「コンピュータシステム」とは、ソフトウェア開発支援装置1に内蔵されたコンピュータシステムであって、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよい。
【0087】
また、上述した実施形態におけるソフトウェア開発支援装置1の一部、または全部を、LSI(Large Scale Integration)等の集積回路として実現してもよい。ソフトウェア開発支援装置1の各機能ブロックは個別にプロセッサ化してもよいし、一部、または全部を集積してプロセッサ化してもよい。また、集積回路化の手法はLSIに限らず専用回路、または汎用プロセッサで実現してもよい。また、半導体技術の進歩によりLSIに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いてもよい。
【0088】
以上、図面を参照してこの発明の一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。
【符号の説明】
【0089】
1…ソフトウェア開発支援装置、11…入力部、12…表示部、13…記憶部、131
…設計情報記憶部、132…設計書記憶部、133…ソースコード記憶部、134…入力
データ情報記憶部、135…データ生成規則情報記憶部、136…ルート情報記憶部、1
37…網羅情報記憶部、138…出力情報記憶部、139…レポート記憶部、14…制御
部、141…設計情報取得部、142…設計書生成部、143…ソースコード生成部、1
44…入力データ取得部、145…入力データ生成部、146…ソフトウェア処理部、1
47…レポート生成部、148…表示制御部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14