(57)【要約】【課題】ソフトウェア開発を支援する。【解決手段】ソフトウェア開発支援装置が、特定のプログラミング言語に依存しない設計情報の入力を受け付ける設計情報入力部と、設計情報入力部に設計情報が入力されると、入力された設計情報に基づいて、設計情報が示す内容を自然言語で表す文を生成する文生成部と、文生成部によって生成された文を出力する出力部と、を備える。【選択図】図１
2014123321.tif 000002
【特許請求の範囲】
【請求項１】
特定のプログラミング言語に依存しない設計情報の入力を受け付ける設計情報入力部と、
前記設計情報入力部に前記設計情報が入力されると、入力された前記設計情報に基づいて、当該設計情報が示す内容を自然言語で表す文を生成する文生成部と、
前記文生成部によって生成された前記文を出力する出力部と、
を備えることを特徴とするソフトウェア開発支援装置。
【請求項２】
自然言語の種別の選択を受け付ける自然言語選択部を備え、
前記文生成部は、前記自然言語選択部に選択された前記種別による前記文を生成する
ことを特徴とする請求項１に記載のソフトウェア開発支援装置。
【請求項３】
前記設計情報に基づいて、予め定められたフォーマットによるプログラム設計書を生成する設計書生成部
を備えることを特徴とする請求項１または請求項２に記載のソフトウェア開発支援装置。
【請求項４】
前記設計情報に基づいてソースコードを生成するソースコード生成部
を備えることを特徴とする請求項１から請求項３までのいずれか１項に記載のソフトウェア開発支援装置。
【請求項５】
前記ソースコード生成部は、予め定められた複数のプログラミング言語のうち、選択されたプログラミング言語による前記ソースコードを生成する
ことを特徴とする請求項４に記載のソフトウェア開発支援装置。
【請求項６】
ソフトウェア開発支援装置が、
特定のプログラミング言語に依存しない設計情報の入力を受け付けるステップと、
前記設計情報が入力されると、入力された前記設計情報に基づいて、当該設計情報が示す内容を自然言語で表す文を生成するステップと、
生成した前記文を出力するステップと、
を備えることを特徴とするソフトウェア開発支援方法。
【請求項７】
ソフトウェア開発支援装置のコンピュータに、
特定のプログラミング言語に依存しない設計情報の入力を受け付けるステップと、
前記設計情報が入力されると、入力された前記設計情報に基づいて、当該設計情報が示す内容を自然言語で表す文を生成するステップと、
生成した前記文を出力するステップと、
を実行させるソフトウェア開発支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア開発を支援する技術に関する。
【背景技術】
【０００２】
効率良くソフトウェア開発を行うために、ソフトウェア開発の各工程を自動化することが研究されている（例えば、特許文献１参照）。例えば、予め定められた規則に基づく中間モデルとしての設計情報の入力を受け付けるソフトウェア開発支援装置が、入力された設計情報に基づいてソースコードを生成することが考えられる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−２９４９４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、入力される設計情報に基づいてソースコードを生成する場合、例えばその設計に何らかの不具合等が存在しても、入力した設計情報に基づいてソフトウェア開発支援装置にソースコードが生成され、生成されたソースコードをユーザがレビュー等するまで、その設計が意図通りのものであるかを検証することが困難であった。そこで、設計の妥当性をより早期に検証し、効率良いソフトウェア開発を支援することが望ましい。
【０００５】
本発明は、このような状況に鑑みてなされたもので、ソフトウェア開発を支援するソフトウェア開発支援装置、ソフトウェア開発支援方法、ソフトウェア開発支援プログラムを提供する。
【課題を解決するための手段】
【０００６】
上述した課題を解決するために、本発明の一態様は、特定のプログラミング言語に依存しない設計情報の入力を受け付ける設計情報入力部と、設計情報入力部に設計情報が入力されると、入力された設計情報に基づいて、設計情報が示す内容を自然言語で表す文を生成する文生成部と、文生成部によって生成された文を出力する出力部と、を備えることを特徴とするソフトウェア開発支援装置である。
【０００７】
また、本発明の一態様は、上述のソフトウェア開発支援装置が、自然言語の種別の選択を受け付ける自然言語選択部を備え、文生成部が、自然言語選択部に選択された種別による文を生成することを特徴とする。
【０００８】
また、本発明の一態様は、上述のソフトウェア開発支援装置が、設計情報に基づいて、予め定められたフォーマットによるプログラム設計書を生成する設計書生成部を備えることを特徴とする。
【０００９】
また、本発明の一態様は、上述のソフトウェア開発支援装置が、設計情報に基づいてソースコードを生成するソースコード生成部を備えることを特徴とする。
【００１０】
また、本発明の一態様は、ソースコード生成部が、予め定められた複数のプログラミング言語のうち、選択されたプログラミング言語によるソースコードを生成することを特徴とする。
【００１１】
また、本発明の一態様は、ソフトウェア開発支援装置が、特定のプログラミング言語に依存しない設計情報の入力を受け付けるステップと、設計情報が入力されると、入力された設計情報に基づいて、設計情報が示す内容を自然言語で表す文を生成するステップと、生成した文を出力するステップと、を備えることを特徴とするソフトウェア開発支援方法である。
【００１２】
また、本発明の一態様は、ソフトウェア開発支援装置のコンピュータに、特定のプログラミング言語に依存しない設計情報の入力を受け付けるステップと、設計情報が入力されると、入力された設計情報に基づいて、設計情報が示す内容を自然言語で表す文を生成するステップと、生成した文を出力するステップと、を実行させるソフトウェア開発支援プログラムである。
【発明の効果】
【００１３】
以上説明したように、本発明によれば、ソフトウェア開発支援装置が、特定のプログラミング言語に依存しない設計情報の入力を受け付ける設計情報入力部と、設計情報入力部に設計情報が入力されると、入力された設計情報に基づいて、設計情報が示す内容を自然言語で表す文を生成する文生成部と、文生成部によって生成された文を出力する出力部と、を備えるようにしたので、ソフトウェア開発を支援することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の一実施形態によるソフトウェア開発支援装置の構成例を示すブロック図である。
【図２】本発明の一実施形態による設計情報のデータ例を示す図である。
【図３】本発明の一実施形態による変数定義情報のデータ例を示す図である。
【図４】本発明の一実施形態による処理定義情報のデータ例を示す図である。
【図５】本発明の一実施形態によるプログラム設計書の例を示す図である。
【図６】本発明の一実施形態によるソフトウェア開発支援装置の動作例を示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下、本発明の一実施形態について、図面を参照して説明する。
図１は、本実施形態によるソフトウェア開発支援装置１００の構成を示すブロック図である。ソフトウェア開発支援装置１００は、記憶部１１０と、出力部１２０と、設計情報入力部１３０と、設計情報検証部１４０と、自然言語選択部１５０と、文生成部１６０と、ソースコード生成部１７０と、設計書生成部１８０とを備えている。
【００１６】
記憶部１１０には、ソフトウェア開発支援装置１００が動作するために参照する各種情報が記憶される。記憶部１１０は、設計情報記憶部１１１と、変数定義記憶部１１２と、処理定義記憶部１１３とを備えている。
設計情報記憶部１１１には、ソフトウェア開発の対象であるプログラムのソースコードや設計書を生成するためのソフトウェアの設計情報が記憶される。図２は、設計情報記憶部１１１に記憶される設計情報のデータ例を示す図である。
【００１７】
ここでは、設計情報は表形式によって表され、例えば表計算ソフトにより解釈可能なファイルのシートとしてテンプレートを生成して予め設計情報記憶部１１１に記憶させておくことができる。ソフトウェア開発支援装置１００は、例えばこのような設計情報のテンプレートファイルを読み出し、コピーして設計情報記憶部１１１に記憶させる。また、コピーして設計情報記憶部１１１に記憶させた設計情報を表示してユーザから各項目の入力を受け付け、入力された情報とともに設計情報記憶部１１１に記憶させる。図に示すように、設計情報には、通番と、階層と、処理と、Ｐ１、Ｐ２、Ｐ３と、チャートとの項目が含まれる。ここでは、階層からＰ３までの項目に、処理記号等によって表される中間モデルとしての設計情報がユーザから入力されると、ソフトウェア開発支援装置１００が、入力された項目に基づいてチャートの項目に入力する文を生成して表示する。
【００１８】
通番の項目は、設計情報が入力される行を識別する情報である。
階層の項目は、プログラムをネスティングして複数の入れ子構造にする場合に、その階層を定める情報である。この例では、例えば通番が「８」である行に「ｓ（ｒｓ．００１）」との処理記号が入力されている。「ｒｓ．００１」は、データベース等から読み出した複数の情報（レコード）が含まれるレコードセットを示す。ここで、「００１」はレコードセットの種別を示しており、複数種別のレコードセットを予め定義しておくことができる。本実施形態では、「ｒｓ．００１」は、注文情報検索のレコードセットである。「ｓ（ｒｓ．００１）」は、後続する処理を、「ｒｓ．００１」に含まれるレコード数分ループすることを示す。ただし、階層の項目において、冒頭に「／／」との記号が入力されると、その情報はコメント行として扱う。この例では、例えば通番が「１」である行に「／／ＩＮＰＵＴパラメータをアウトプットＢｅａｎに代入」とのコメントが入力されている。
【００１９】
処理の項目は、特定のプログラミング言語に依存しない規則によって中間モデルとして定められた処理記号であり、その行によって表すプログラムの処理を示す情報である。この例では、例えば通番が「２」である行に「ｃｏｐｙ」の処理記号が入力されている。「ｃｏｐｙ」は、指定された変数に対応付けられて格納された情報を、他の変数に対応付けて格納する（代入する）ことを示す処理記号である。ここで、代入の対象である変数が、複数の要素を持つレコードセットや構造体である場合には、代入元の変数の要素と同一の名称である代入先の変数の要素に、対応する情報を代入する。通番が「４」である行に入力されている「ｐｒｉｎｔ」の処理記号は、指定された変数に対応付けられて格納された情報をログ出力することを示す。ログ出力とは、例えば所定のログファイルに、指定された変数に対応付けられて格納された情報を書込むことを示す。通番が「６」である行に入力されている「ｒｓ．００１＠ｒｅａｄ（＊）」の処理記号は、レコードセットである「ｒｓ．００１」によって示される検索処理を実行し、レコードセットに検索結果を代入することを示す。ここで示した処理記号の例は一例であり、この他にも、様々なプログラムの処理を示す処理記号を予め定義しておくことができる。
【００２０】
Ｐ１、Ｐ２、Ｐ３は、処理の項目によって示される処理の引数や属性等を示す情報である。この例では、例えば通番が「２」である行においては、処理の項目に「ｃｏｐｙ」が入力されており、「Ｐ２」の項目に入力された変数である「ｉｎ」に対応付けられて格納された情報を、「Ｐ１」の項目に入力された変数である「ｏｕ．０１」に対応付けて格納することを示す。「ｉｎ」は入力項目を示し、「ｏｕ．０１」は出力項目を示す。例えば、「ｉｎ」は入力画面における複数の入力項目が含まれるオブジェクトを示し、「ｏｕ．０１」は出力画面における複数の出力項目が含まれるオブジェクトを示す。具体的には、例えば、開発対象のソフトウェアがオンラインウェブアプリケーションである場合、「ｉｎ」はリクエストパラメータをラップしたオブジェクトを示し、「ｉｎ」はレスポンスパラメータをラップしたオブジェクトを示す。あるいは、開発対象のソフトウェアがバッチアプリケーションである場合、「ｉｎ」はインプットパラメータをラップしたオブジェクトを示し、「ｉｎ」はアウトプットパラメータをラップしたオブジェクトを示す。ここで、「０１」は出力項目の通番を示しており、複数の出力項目を予め定義しておくことができる。例えば「ｏｕ．０１」は、複数の出力項目のうちのひとつめの出力項目であることを示す。通番が「４」である行においては、処理の項目に「ｐｒｉｎｔ」が入力されており、「Ｐ１」の項目に入力された変数である「ｉｎ．ｏｒｄｅｒｉｄ」に対応付けられて格納された情報をログ出力することを示す。「ｉｎ．ｏｒｄｅｒｉｄ」は、入力画面（ｉｎ）に含まれる要素のうち、「ｏｒｄｅｒｉｄ」の要素（注文ＩＤ）を示す。
【００２１】
通番が「９」である行においては、処理の項目に「ｃｏｐｙ」が入力されており、「Ｐ２」の項目に入力された変数である「ｒｓ．００１」のレコードセットに対応付けられて格納された情報を、「Ｐ１」の項目に入力された変数である「ｏｕ．０１．ｏｒｄｅｒｉｎｆｏ」に対応付けて格納することを示す。「ｒｓ．００１」は注文情報検索の検索結果のレコードセットであり、「ｏｕ．０１．ｏｒｄｅｒｉｎｆｏ」は出力画面の要素である注文情報の構造体である。「Ｐ３」の項目は、チャートの項目に表示させる情報を指定するための情報であり、例えば代入元と代入先の変数が複数の情報の要素を持つ場合、「１」であれば、「Ｐ２」に指定された情報の要素のうち「Ｐ１」に代入されない要素の名称のみをチャートの項目に表示し、「２」であれば、「Ｐ２」に指定された情報の要素のうち「Ｐ１」に代入される項目のみをチャートの項目に表示することを示す。
【００２２】
チャートの項目は、階層からＰ３までの項目に入力された中間モデルとしての設計情報に基づいて、その設計情報が示す内容（意味、処理）を自然言語で表す文である。この文は、後述する文生成部１６０によって生成され、チャートの項目に入力されて表示される。この例では、例えば通番が「１」、「３」、「５」、「７」である行においては、階層の項目にコメントが入力されており、このコメントがチャートの項目に入力される。通番が「２」である行においては、処理の項目に「ｃｏｐｙ」が入力されており、「Ｐ２」の項目に「ｉｎ」（入力画面）が入力されており、「Ｐ１」の項目に「ｏｕ．０１」（出力画面）が入力されている。このことから、チャートの項目には、「出力画面に入力画面の項目を全て代入する（ＩＤ一致）」のような文が生成されて入力される。
【００２３】
通番が「４」である行においては、処理の項目に「ｐｒｉｎｔ」が入力されており、「Ｐ１」の項目に「ｉｎ．ｏｒｄｅｒｉｄ」（注文ＩＤ）が入力されている。このことから、チャートの項目には、「注文ＩＤ（ｉｎ）の値をログ出力する」のような文が生成されて入力される。通番が「６」である行においては、処理の項目に「ｒｓ．００１＠ｒｅａｄ（＊）」が入力されている。このことから、チャートの項目には、「注文情報検索を実行する」のような文が生成されて入力される。通番が「８」である行においては、階層の項目に「ｓ（ｒｓ．００１）」が入力されている。このことから、チャートの項目には、「注文情報検索のレコード分ループ」のような文が生成されて入力される。通番が「９」である行においては、処理の項目に「ｃｏｐｙ」が入力されており、「Ｐ２」の項目に「ｒｓ．００１」（注文情報検索）が入力されており、「Ｐ１」の項目に「ｏｕ．０１．ｏｒｄｅｒｉｎｆｏ」（注文情報）が入力されている。このことから、チャートの項目には、「注文情報（ｏｕｔ）に注文情報検索（ＤＢ）の項目を全て代入する（ＩＤ一致）」のような文が生成されて入力される。また、「Ｐ３」の項目に「２」が指定されていることから、「Ｐ２」に指定された注文情報検索の要素のうち「Ｐ１」に指定された注文情報に代入される項目のみがチャートの項目に入力される。
【００２４】
このように、本実施形態によれば、ユーザが階層からＰ３までの設計情報を入力すると、ソフトウェア開発支援装置１００によって即時にその設計情報の意味内容を示す文が生成され、チャートの項目に表示される。ユーザは、このチャートの項目に表示される文を確認することで、中間モデルとして入力された設計の妥当性や一貫性、項目の過不足等を即時に検証することができる。すなわち、入力した設計情報に基づいてソースコードを生成する処理を行わせたり、生成されたソースコードをレビューしたりする前に、設計の妥当性をより早期に検証することができ、効率良くソフトウェア開発を行うことができる。
【００２５】
変数定義記憶部１１２には、変数を示す記号と、その変数の内容を示す対応文字列とが対応付けられた変数定義情報が予め記憶される。図３は、変数定義情報のデータ例を示す図である。ここでは、例えば、「ｏｕ．０１」の変数に「出力画面」の対応文字列が対応付けられ、「ｉｎ」の変数に「入力画面」の対応文字列が対応付けられ、「ｉｎ．ｏｒｄｅｒｉｄ」の変数に「注文ＩＤ」の対応文字列が対応付けられ、「ｏｕ．０１．ｏｒｄｅｒｉｎｆｏ」の変数に「注文情報」の対応文字列が対応付けられ、「ｒｓ．００１」の変数に「注文情報検索」の対応文字列が対応付けられている。
【００２６】
ここでは、日本語による対応文字列が対応付けられている例を示すが、英語や中国語等の日本語以外の自然言語による対応文字列を対応付けておくこともできる。あるいは、複数の種別の自然言語ごとに、変数定義情報を記憶しておくこともできる。本実施形態では、複数の種別の自然言語ごとの変数定義情報を記憶させておき、ユーザから選択された種別の自然言語による対応文字列を使用する例を説明する。
【００２７】
処理定義記憶部１１３には、処理の項目に入力される処理記号と、その処理の内容を示す対応文とが対応付けられた処理定義情報が予め記憶される。図４は、処理定義情報のデータ例を示す図である。ここでは、例えば、「ｃｏｐｙ  ＄｛Ｐ１｝  ＄｛Ｐ２｝」の処理記号には、「＄｛Ｐ１｝に＄｛Ｐ２｝の項目を全て代入する（ＩＤ一致）」との対応文が対応付けられている。ここで、「＄｛Ｐ１｝」、「＄｛Ｐ２｝」は、処理記号の引数であるＰ１、Ｐ２を示し、対応文において、「＄｛Ｐ１｝」の個所にＰ１の項目の対応文字列を代入し、「＄｛Ｐ２｝」の個所にＰ２の項目の対応文字列を代入することにより文を生成することが示される。
【００２８】
同様に、「ｐｒｉｎｔ  ＄｛Ｐ１｝」の処理記号には、「＄｛Ｐ１｝の値をログ出力する」との対応文が対応付けられている。対応文において「＄｛Ｐ１｝」の個所にＰ１の項目の対応文字列を代入することにより文を生成することが示される。「＄｛Ｑ１｝＠ｒｅａｄ」の処理記号には、「＄｛Ｑ１｝を実行する」との対応文が対応付けられている。処理記号における「＄｛Ｑ１｝」の個所に入力された変数に対応する対応文字列を、対応文における「＄｛Ｑ１｝」の個所に代入することにより文を生成することが示される。「ｓ（＄｛Ｑ１｝）」の処理記号には、「＄｛Ｑ１｝のレコード数分ループ」との対応文が対応付けられている。処理記号における「＄｛Ｑ１｝」の個所に入力された変数に対応する対応文字列を、対応文における「＄｛Ｑ１｝」の個所に代入することにより文を生成することが示される。
【００２９】
変数定義情報と同様に、ここでは、処理定義情報として日本語による対応文が対応付けられている例を示すが、英語や中国語等の日本語以外の自然言語による対応文を対応付けておくこともできる。あるいは、複数の種別の自然言語ごとに、処理定義情報を記憶しておくこともできる。本実施形態では、複数の種別の自然言語ごとの処理定義情報を記憶させておき、ユーザから選択された種別の自然言語による対応文を使用する例を説明する。
【００３０】
出力部１２０は、情報を表示するディスプレイであり、設計情報等の情報を表示する。例えば、出力部１２０は、設計情報記憶部１１１に記憶されている設計情報のテンプレートや、中間モデルが入力された設計情報、入力された中間モデルに基づいて生成されたチャートの文を出力する。
【００３１】
設計情報入力部１３０は、キーボードやマウス等の入力デバイスを備えており、特定のプログラミング言語に依存しない中間モデルの処理記号により、設計情報の入力を受け付ける。具体的には、上述した設計情報における階層からＰ３の項目の情報の入力を受け付ける。設計情報入力部１３０は、入力された設計情報の各項目の情報を、設計情報記憶部１１１に記憶させる。
【００３２】
設計情報検証部１４０は、設計情報入力部１３０に入力された設計情報にエラーが存在するか否かを判定し、エラーが存在すると判定した場合には警告を出力し、エラーが存在しないと判定した場合には警告を出力しない。例えば、設計情報検証部１４０は、処理の項目に「ｃｏｐｙ」の処理記号が入力された場合、「Ｐ１」と「Ｐ２」との双方の項目に引数が入力されているか否かを判定し、いずれかまたは双方が入力されていなければエラーが存在すると判定して警告を出力する。「Ｐ１」と「Ｐ２」との双方の項目に引数が入力されていれば、警告を出力しない。設計情報検証部１４０は、例えば処理定義記憶部１１３に記憶されている処理定義情報を参照することにより、「ｃｏｐｙ」の処理記号が２つの引数を必要とすることを判定することができる。
【００３３】
ここで、警告を出力するとは、例えば、処理記号として「ｃｏｐｙ」が入力されているにも関わらず「Ｐ１」の項目に変数が入力されていない場合には、「Ｐ１の項目を入力して下さい」等の警告の旨のダイアログボックスを表示させてもよいし、設計情報におけるＰ１の個所のセルに赤等の網掛けをするようにしてもよい。また、例えば処理の項目に入力された処理記号が、処理定義記憶部１１３に記憶されている処理定義情報によって定義されていない情報である場合や、Ｐ１からＰ３に入力された変数が変数定義記憶部１１２に記憶されている変数定義情報によって定義されていない情報である場合、警告を出力するようにしてもよい。
【００３４】
自然言語選択部１５０は、ユーザから入力された設計情報に基づいて生成する文の自然言語の種別の選択を受け付ける。例えば、設計情報のシートに「日本語」、「英語」等の複数の自然言語の種別を選択するリストを表示させ、キーボードやマウス等の入力デバイスから選択を受け付ける。あるいは、例えば、選択する自然言語の種別を記載した設定ファイルを予めソフトウェア開発支援装置１００や外部のサーバ等に記憶させておき、設定ファイルから自然言語の種別を読み込むことにより自然言語の種別の選択を受け付けることもできる。自然言語選択部１５０は、入力された自然言語の種別を記憶する。
【００３５】
文生成部１６０は、設計情報入力部１３０に設計情報が入力されると、入力された設計情報に基づいて、その設計情報が示す処理を自然言語で表す文を生成する。具体的には、例えば、文生成部１６０は、設計情報のうち、階層の項目に入力されている情報がコメント（冒頭が「／／」）であれば、そのコメントをチャートの項目に代入する。あるいは、文生成部１６０は、例えば処理の項目に「ｃｏｐｙ」が入力されていれば、Ｐ１の項目とＰ２の項目とに入力されている情報を読み出す。そして、「ｃｏｐｙ」の処理記号に対応付けられている対応文を処理定義記憶部１１３から読み出す。また、Ｐ１の項目に入力されている変数に対応付けられている対応文字列と、Ｐ２の項目に入力されている変数に対応付けられている対応文字列とを変数定義記憶部１１２から読み出す。そして、読み出した対応文の変数の個所に、読み出した対応文字列を代入して文を生成する。
【００３６】
同様に、文生成部１６０は、例えば処理の項目に「ｐｒｉｎｔ」が入力されていれば、Ｐ１の項目に入力されている情報を読み出す。そして、「ｐｒｉｎｔ」の処理記号に対応付けられている対応文を処理定義記憶部１１３から読み出す。また、Ｐ１の項目に入力されている変数に対応付けられている対応文字列を変数定義記憶部１１２から読み出す。そして、読み出した対応文の変数の個所に、読み出した対応文字列を代入して文を生成する。
【００３７】
同様に、文生成部１６０は、例えば処理の項目に「ｒｓ．００１＠ｒｅａｄ」が入力されていれば、「＄｛Ｑ１｝＠ｒｅａｄ」の処理記号に対応付けられている対応文を処理定義記憶部１１３から読み出す。また、「ｒｓ．００１」である変数に対応付けられている対応文字列を変数定義記憶部１１２から読み出す。そして、読み出した対応文の変数の個所に、読み出した対応文字列を代入して文を生成する。
【００３８】
同様に、文生成部１６０は、例えば階層の項目に「ｓ（ｒｓ．００１）」が入力されていれば、「ｓ（＄｛Ｑ１｝）」の処理記号に対応付けられている対応文を処理定義記憶部１１３から読み出す。また、「ｒｓ．００１」である変数に対応付けられている対応文字列を変数定義記憶部１１２から読み出す。そして、読み出した対応文の変数の個所に、読み出した対応文字列を代入して文を生成する。また、文生成部１６０は、生成した文を、設計情報のチャートの項目に入力し、設計情報記憶部１１１に記憶させる。ここで、文生成部１６０は、自然言語選択部１５０に選択された種別による文を生成する。また、文生成部１６０は、このような文の生成処理を、例えば、設計情報のシートにユーザから情報が入力されている際に、フォーカスがセルを移動する毎に行うことができる。これにより、設計情報が入力されると、入力された設計情報に対応する文を即時に生成し、表示する。
【００３９】
ソースコード生成部１７０は、設計情報記憶部１１１に記憶されている設計情報に基づいてソースコードを生成する。例えば、ソースコード生成部１７０は、設計情報に入力される処理記号とソースコードとを対応付ける情報を予め記憶しておき、設計情報が入力された後に、ユーザからソースコード生成要求が入力されると、入力された処理記号に応じたソースコードを読み出してソースコードを生成する。ソースコード生成部１７０は、設計情報に入力される処理記号ごとに、複数のプログラミング言語によるソースコードを対応付けて記憶しておき、予め定められた複数のプログラミング言語のうち、ユーザから選択されたプログラミング言語によるソースコードを生成することもできる。ソースコード生成部１７０は、生成したソースコードを含むファイルを生成し、記憶する。
【００４０】
設計書生成部１８０は、設計情報記憶部１１１に記憶されている設計情報に基づいて、予め定められたフォーマットによるプログラム設計書を生成する。図５は、設計書生成部１８０が生成するプログラム設計書の例を示す図である。設計書生成部１８０は、設計情報が入力された後に、ユーザからプログラム設計書生成要求が入力されると、プログラム設計書を生成する。例えば、設計書生成部１８０は、予め定められたフォーマットによるプログラム設計書のテンプレートファイルと、テンプレートファイルにおけるどの箇所にどの項目の情報を入力するかを定める情報とを予め記憶しておき、設計情報に入力された項目に基づいてプログラム設計書に情報を入力することによりプログラム設計書を生成する。設計書生成部１８０は、生成したプログラム設計書を含むファイルを生成し、記憶する。
【００４１】
例えば、この図の例では、符号ａに示す領域には、プログラム設計の対象であるシステム名等の情報を入力する。符号ｂに示す領域には、プログラムの概要を入力する。これらの情報は、例えば設計情報のシートの所定の個所に入力しておき、入力された情報を転載することができる。
符号ｃに示す領域には、プログラム設計の対象であるプログラムにおける入力データを示す情報を入力する。ここでは、入力画面の入力項目のリストが入力されている。このようなリストは、例えば設計情報に含まれる変数の名称と変数定義記憶部１１２に記憶されている変数定義情報に基づいて生成することもできるし、入力画面の画面設計書を外部のサーバ等から読み出し、必要な事項を転載することもできる。
【００４２】
符号ｄに示す領域には、処理ロジックを入力する。例えば、設計情報においてチャートの項目に入力した文を転載する。ここでは、ループ等の階層が存在する個所には、階層の深さに応じてインデントをつけて入力することができる。
符号ｅに示す領域には、プログラム設計の対象であるプログラムの出力データを示す情報を入力する。ここでは、出力画面の出力項目のリストが入力されている。このようなリストは、例えば設計情報に含まれる変数の名称と変数定義記憶部１１２に記憶されている変数定義情報に基づいて生成することもできるし、出力画面の画面設計書を外部のサーバ等から読み出し、必要な事項を転載することもできる。
符号ｆに示す領域には、備考の情報が入力される。備考の情報は、例えば設計情報のシートの所定の個所に入力しておき、入力された情報を転載するようにしてもよいし、例えば後からユーザにより入力されるようにしてもよい。
【００４３】
次に、図面を参照して、本実施形態によるソフトウェア開発支援装置１００の動作例を説明する。図６は、本実施形態によるソフトウェア開発支援装置１００の動作例を示すフローチャートである。
ソフトウェア開発支援装置１００は、ユーザからの操作に応じて、設計情報記憶部１１１に記憶されている設計情報のテンプレートファイルを読み出し、出力部１２０に表示させる。自然言語選択部１５０は、ユーザからの自然言語の選択を受け付ける（ステップＳ１）。
【００４４】
設計情報入力部１３０は、設計情報の入力を受け付ける（ステップＳ２）。設計情報検証部１４０は、入力された設計情報にエラーが存在するか否かを判定する（ステップＳ３）。エラーが存在すると判定すれば（ステップＳ３：ＹＥＳ）、エラー警告を出力し（ステップＳ４）、ステップＳ２に戻る。一方、エラーが存在しないと判定すれば（ステップＳ３：ＮＯ）、ステップＳ５に進む。ただしここでは、ステップＳ３においてエラーが存在すると判定した場合にも、エラーを無視してステップＳ５に進むようにしてもよい。
【００４５】
文生成部１６０は、設計情報入力部１３０に入力された設計情報に基づいて、その設計情報が示す処理を、ステップＳ１において選択された自然言語で表す文を生成し、生成した文を設計情報のチャートの項目に入力して設計情報記憶部１１１に記憶させる（ステップＳ５）。出力部１２０は、文生成部１６０が生成した文を含む設計情報を表示する（ステップＳ６）。ソースコード生成部１７０は、プログラミング言語の選択を受け付け（ステップＳ７）、ユーザからソースコード生成要求が入力されると、選択されたプログラミング言語により、設計情報記憶部１１１に記憶されている設計情報に基づいてソースコードを生成する（ステップＳ８）。設計書生成部１８０は、ユーザからプログラム設計書生成要求が入力されると、設計情報記憶部１１１に記憶されている設計情報に基づいてプログラム設計書を生成する（ステップＳ９）。
【００４６】
以上説明したように、本実施形態のソフトウェア開発支援装置１００によれば、階層や処理、処理に対する引数や属性等の設計情報が、特定のプログラミング言語に依存しない規則によって定められた処理記号等により入力されると、入力した設計情報の内容を示す文を即時に生成して表示することができる。このように表示された文を確認することによって、ユーザは、入力した設計情報に基づいてソフトウェア開発支援装置１００にソースコードを生成させる前に、入力した設計の妥当性を検証することができる。すなわち、例えばソフトウェア開発支援装置１００に入力した設計に何らかの不具合等が存在する場合、ソフトウェア開発支援装置１００にソースコードを生成させ、生成されたソースコードをレビューしたり、コンパイルしたり、そのソースコードに基づく実行ファイルを実行させたりする前に、設計が意図通りのものであるかを簡易に検証することができる。これにより、ユーザは、ソフトウェア開発支援装置１００に入力した設計の妥当性をより早期に検証することができる。このように、本実施形態のソフトウェア開発支援装置１００によれば、効率良いソフトウェア開発を支援することが可能となる。
【００４７】
また、ソフトウェア開発支援装置１００によれば、処理記号により入力された設計情報に基づいてその内容を示す自然言語の文が生成されて表示されるため、例えば、設計情報を入力するユーザと、その検証を行うユーザとが異なる自然言語を使用する場合にも、検証を行うユーザが検証しやすくなり、意思の疎通がしやすくなる。例えば、処理記号入力された設計情報が定型化された自然言語で提示されるため、日本の企業が外国の企業に対してソフトウェア開発を依頼するいわゆるオフショア開発を行う場合に、意思の疎通がしやすくなる。すなわち、日本語に不慣れな外国の企業のエンジニアが、本実施形態によるソフトウェア開発支援装置１００を用いて設計を行って設計情報ファイルに処理記号を入力すれば、その設計の内容を日本語で表す文が生成されるため、依頼元の日本の企業は、設計を早い段階で検証しやすくなる。
【００４８】
なお、本実施形態では、変数定義記憶部１１２に変数定義情報を予め記憶させておき、変数定義記憶部１１２から処理の引数等を示す文字列を読み出して文を生成する例を示したが、変数等の各要素は、外部のサーバ装置等に記憶させておき、その外部のサーバ装置等から読み出すようにしてもよい。この場合、例えば、画面設計書やＤＢ設計書等の情報を外部のサーバ装置等に記憶させておき、その外部のサーバ装置から読み出すことができる。画面設計書には、例えば複数の画面ごとに、その画面が入力画面であるか出力画面であるかを示す種別や、その画面に含まれる項目の識別情報、項目名等の情報を含ませておくことができる。ＤＢ設計書には、データベースに含まれるテーブルごとに、そのテーブルに含まれる項目の識別情報、型、文字数、項目名等の情報を含ませておくことができる。この他にも、例えばデータベース等から情報を読み出す際のクエリやレコードセット、プログラム内で利用するクラス、メソッド、変数、定数、構造体等の情報を定義した設計書を予め作成して記憶させておき、このような情報を参照して、設計情報のチャートの項目に入力する文を生成したり、ソースコードやプログラム設計書を生成したりすることができる。
【００４９】
また、本実施形態では、処理定義記憶部１１３には、処理記号に対して１対１で対応付けた対応文を記憶する例を示したが、対応文は、文節ごとに区切って記憶させておいてもよい。例えば、本実施形態では、「ｃｏｐｙ  ＄｛Ｐ１｝  ＄｛Ｐ２｝」の処理記号に、「＄｛Ｐ１｝に＄｛Ｐ２｝の項目を全て代入する（ＩＤ一致）」との対応文を対応付ける例を示したが、「に」と、「の項目を全て代入する（ＩＤ一致）」との文節に分けた対応文を対応付けて記憶させておき、Ｐ１の項目に対応する対応文字列と、Ｐ２の項目に対応する対応文字列とを連結してチャートの項目に入力する文を生成するようにしてもよい。
【００５０】
また、本実施形態では、ソースコード生成部１７０は、設計情報として入力された処理記号に基づいてソースコードを生成する例を示したが、ソースコードを生成する前に、設計情報として入力された処理記号に基づく中間コードを生成し、中間コードに基づいてソースコードを生成するようにしてもよい。
【００５１】
なお、本発明における処理部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによりソフトウェア開発の支援を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピュータシステム」は、インターネットやＷＡＮ、ＬＡＮ、専用回線等の通信回線を含むネットワークを介して接続された複数のコンピュータ装置を含んでもよい。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、ネットワークを介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。また、上記プログラムは、上述した機能の一部を実現するためのものであってもよい。さらに、上述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【００５２】
また、上述した機能の一部または全部を、ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）等の集積回路として実現してもよい。上述した各機能は個別にプロセッサ化してもよいし、一部、または全部を集積してプロセッサ化してもよい。また、集積回路化の手法はＬＳＩに限らず専用回路、または汎用プロセッサで実現してもよい。また、半導体技術の進歩によりＬＳＩに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いてもよい。
【符号の説明】
【００５３】
１００  ソフトウェア開発支援装置
１１０  記憶部
１１１  設計情報記憶部
１１２  変数定義記憶部
１１３  処理定義記憶部
１２０  出力部
１３０  設計情報入力部
１４０  設計情報検証部
１５０  自然言語選択部
１６０  文生成部
１７０  ソースコード生成部
１８０  設計書生成部
【図１】
2014123321.tif 000003
【図２】
2014123321.tif 000004
【図３】
2014123321.tif 000005
【図４】
2014123321.tif 000006
【図５】
2014123321.tif 000007
【図６】
2014123321.tif 000008