(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、入力される設計情報に基づいてソースコードを生成する場合、例えばその設計に何らかの不具合等が存在しても、入力した設計情報に基づいてソフトウェア開発支援装置にソースコードが生成され、生成されたソースコードをユーザがレビュー等するまで、その設計が意図通りのものであるかを検証することが困難であった。そこで、設計の妥当性をより早期に検証し、効率良いソフトウェア開発を支援することが望ましい。
【0005】
本発明は、このような状況に鑑みてなされたもので、ソフトウェア開発を支援するソフトウェア開発支援装置、ソフトウェア開発支援方法、ソフトウェア開発支援プログラムを提供する。
【課題を解決するための手段】
【0006】
上述した課題を解決するために、本発明の一態様は、特定のプログラミング言語に依存しない設計情報の入力を
複数の項目について受付可能な設計情報入力部と、前記設計情報入力部
によって入力を受付可能な項目が他の項目に切り替わる毎に、入力
が受け付けられた前記設計情報に基づいて、当該設計情報が示す内容を自然言語で表す文を生成する文生成部と、前記文生成部によって生成された前記文を出力する出力部と、を備えることを特徴とするソフトウェア開発支援装置である。
【0007】
また、本発明の一態様は、上述のソフトウェア開発支援装置が、自然言語の種別の選択を受け付ける自然言語選択部を備え、文生成部が、自然言語選択部に選択された種別による文を生成することを特徴とする。
【0008】
また、本発明の一態様は、上述のソフトウェア開発支援装置が、設計情報に基づいて、予め定められたフォーマットによるプログラム設計書を生成する設計書生成部を備えることを特徴とする。
【0009】
また、本発明の一態様は、上述のソフトウェア開発支援装置が、設計情報に基づいてソースコードを生成するソースコード生成部を備えることを特徴とする。
【0010】
また、本発明の一態様は、ソースコード生成部が、予め定められた複数のプログラミング言語のうち、選択されたプログラミング言語によるソースコードを生成することを特徴とする。
【0011】
また、本発明の一態様は、ソフトウェア開発支援装置が、特定のプログラミング言語に依存しない設計情報の入力を
複数の項目について受付可能な設計情報入力ステップと、
前記設計情報入力ステップによって入力を受付可能な項目が他の項目に切り替わる毎に、入力
が受け付けられた前記設計情報に基づいて、当該設計情報が示す内容を自然言語で表す文を生成する
文生成ステップと、
前記文生成ステップによって生成された前記文を出力する
出力ステップと、を備えることを特徴とするソフトウェア開発支援方法である。
【0012】
また、本発明の一態様は、ソフトウェア開発支援装置のコンピュータに、特定のプログラミング言語に依存しない設計情報の入力を
複数の項目について受付可能な設計情報入力ステップと、
前記設計情報入力ステップによって入力を受付可能な項目が他の項目に切り替わる毎に、入力
が受け付けられた前記設計情報に基づいて、当該設計情報が示す内容を自然言語で表す文を生成する
文生成ステップと、
前記文生成ステップによって生成された前記文を出力する
出力ステップと、を実行させるソフトウェア開発支援プログラムである。
【発明の効果】
【0013】
以上説明したように、本発明によれば、ソフトウェア開発支援装置が、特定のプログラミング言語に依存しない設計情報の入力を受け付ける設計情報入力部と、設計情報入力部に設計情報が入力されると、入力された設計情報に基づいて、設計情報が示す内容を自然言語で表す文を生成する文生成部と、文生成部によって生成された文を出力する出力部と、を備えるようにしたので、ソフトウェア開発を支援することができる。
【発明を実施するための形態】
【0015】
以下、本発明の一実施形態について、図面を参照して説明する。
図1は、本実施形態によるソフトウェア開発支援装置100の構成を示すブロック図である。ソフトウェア開発支援装置100は、記憶部110と、出力部120と、設計情報入力部130と、設計情報検証部140と、自然言語選択部150と、文生成部160と、ソースコード生成部170と、設計書生成部180とを備えている。
【0016】
記憶部110には、ソフトウェア開発支援装置100が動作するために参照する各種情報が記憶される。記憶部110は、設計情報記憶部111と、変数定義記憶部112と、処理定義記憶部113とを備えている。
設計情報記憶部111には、ソフトウェア開発の対象であるプログラムのソースコードや設計書を生成するためのソフトウェアの設計情報が記憶される。
図2は、設計情報記憶部111に記憶される設計情報のデータ例を示す図である。
【0017】
ここでは、設計情報は表形式によって表され、例えば表計算ソフトにより解釈可能なファイルのシートとしてテンプレートを生成して予め設計情報記憶部111に記憶させておくことができる。ソフトウェア開発支援装置100は、例えばこのような設計情報のテンプレートファイルを読み出し、コピーして設計情報記憶部111に記憶させる。また、コピーして設計情報記憶部111に記憶させた設計情報を表示してユーザから各項目の入力を受け付け、入力された情報とともに設計情報記憶部111に記憶させる。図に示すように、設計情報には、通番と、階層と、処理と、P1、P2、P3と、チャートとの項目が含まれる。ここでは、階層からP3までの項目に、処理記号等によって表される中間モデルとしての設計情報がユーザから入力されると、ソフトウェア開発支援装置100が、入力された項目に基づいてチャートの項目に入力する文を生成して表示する。
【0018】
通番の項目は、設計情報が入力される行を識別する情報である。
階層の項目は、プログラムをネスティングして複数の入れ子構造にする場合に、その階層を定める情報である。この例では、例えば通番が「8」である行に「s(rs.001)」との処理記号が入力されている。「rs.001」は、データベース等から読み出した複数の情報(レコード)が含まれるレコードセットを示す。ここで、「001」はレコードセットの種別を示しており、複数種別のレコードセットを予め定義しておくことができる。本実施形態では、「rs.001」は、注文情報検索のレコードセットである。「s(rs.001)」は、後続する処理を、「rs.001」に含まれるレコード数分ループすることを示す。ただし、階層の項目において、冒頭に「//」との記号が入力されると、その情報はコメント行として扱う。この例では、例えば通番が「1」である行に「//INPUTパラメータをアウトプットBeanに代入」とのコメントが入力されている。
【0019】
処理の項目は、特定のプログラミング言語に依存しない規則によって中間モデルとして定められた処理記号であり、その行によって表すプログラムの処理を示す情報である。この例では、例えば通番が「2」である行に「copy」の処理記号が入力されている。「copy」は、指定された変数に対応付けられて格納された情報を、他の変数に対応付けて格納する(代入する)ことを示す処理記号である。ここで、代入の対象である変数が、複数の要素を持つレコードセットや構造体である場合には、代入元の変数の要素と同一の名称である代入先の変数の要素に、対応する情報を代入する。通番が「4」である行に入力されている「print」の処理記号は、指定された変数に対応付けられて格納された情報をログ出力することを示す。ログ出力とは、例えば所定のログファイルに、指定された変数に対応付けられて格納された情報を書込むことを示す。通番が「6」である行に入力されている「rs.001@read(*)」の処理記号は、レコードセットである「rs.001」によって示される検索処理を実行し、レコードセットに検索結果を代入することを示す。ここで示した処理記号の例は一例であり、この他にも、様々なプログラムの処理を示す処理記号を予め定義しておくことができる。
【0020】
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)を示す。
【0021】
通番が「9」である行においては、処理の項目に「copy」が入力されており、「P2」の項目に入力された変数である「rs.001」のレコードセットに対応付けられて格納された情報を、「P1」の項目に入力された変数である「ou.01.orderinfo」に対応付けて格納することを示す。「rs.001」は注文情報検索の検索結果のレコードセットであり、「ou.01.orderinfo」は出力画面の要素である注文情報の構造体である。「P3」の項目は、チャートの項目に表示させる情報を指定するための情報であり、例えば代入元と代入先の変数が複数の情報の要素を持つ場合、「1」であれば、「P2」に指定された情報の要素のうち「P1」に代入されない要素の名称のみをチャートの項目に表示し、「2」であれば、「P2」に指定された情報の要素のうち「P1」に代入される項目のみをチャートの項目に表示することを示す。
【0022】
チャートの項目は、階層からP3までの項目に入力された中間モデルとしての設計情報に基づいて、その設計情報が示す内容(意味、処理)を自然言語で表す文である。この文は、後述する文生成部160によって生成され、チャートの項目に入力されて表示される。この例では、例えば通番が「1」、「3」、「5」、「7」である行においては、階層の項目にコメントが入力されており、このコメントがチャートの項目に入力される。通番が「2」である行においては、処理の項目に「copy」が入力されており、「P2」の項目に「in」(入力画面)が入力されており、「P1」の項目に「ou.01」(出力画面)が入力されている。このことから、チャートの項目には、「出力画面に入力画面の項目を全て代入する(ID一致)」のような文が生成されて入力される。
【0023】
通番が「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」に指定された注文情報に代入される項目のみがチャートの項目に入力される。
【0024】
このように、本実施形態によれば、ユーザが階層からP3までの設計情報を入力すると、ソフトウェア開発支援装置100によって即時にその設計情報の意味内容を示す文が生成され、チャートの項目に表示される。ユーザは、このチャートの項目に表示される文を確認することで、中間モデルとして入力された設計の妥当性や一貫性、項目の過不足等を即時に検証することができる。すなわち、入力した設計情報に基づいてソースコードを生成する処理を行わせたり、生成されたソースコードをレビューしたりする前に、設計の妥当性をより早期に検証することができ、効率良くソフトウェア開発を行うことができる。
【0025】
変数定義記憶部112には、変数を示す記号と、その変数の内容を示す対応文字列とが対応付けられた変数定義情報が予め記憶される。
図3は、変数定義情報のデータ例を示す図である。ここでは、例えば、「ou.01」の変数に「出力画面」の対応文字列が対応付けられ、「in」の変数に「入力画面」の対応文字列が対応付けられ、「in.orderid」の変数に「注文ID」の対応文字列が対応付けられ、「ou.01.orderinfo」の変数に「注文情報」の対応文字列が対応付けられ、「rs.001」の変数に「注文情報検索」の対応文字列が対応付けられている。
【0026】
ここでは、日本語による対応文字列が対応付けられている例を示すが、英語や中国語等の日本語以外の自然言語による対応文字列を対応付けておくこともできる。あるいは、複数の種別の自然言語ごとに、変数定義情報を記憶しておくこともできる。本実施形態では、複数の種別の自然言語ごとの変数定義情報を記憶させておき、ユーザから選択された種別の自然言語による対応文字列を使用する例を説明する。
【0027】
処理定義記憶部113には、処理の項目に入力される処理記号と、その処理の内容を示す対応文とが対応付けられた処理定義情報が予め記憶される。
図4は、処理定義情報のデータ例を示す図である。ここでは、例えば、「copy ${P1} ${P2}」の処理記号には、「${P1}に${P2}の項目を全て代入する(ID一致)」との対応文が対応付けられている。ここで、「${P1}」、「${P2}」は、処理記号の引数であるP1、P2を示し、対応文において、「${P1}」の個所にP1の項目の対応文字列を代入し、「${P2}」の個所にP2の項目の対応文字列を代入することにより文を生成することが示される。
【0028】
同様に、「print ${P1}」の処理記号には、「${P1}の値をログ出力する」との対応文が対応付けられている。対応文において「${P1}」の個所にP1の項目の対応文字列を代入することにより文を生成することが示される。「${Q1}@read」の処理記号には、「${Q1}を実行する」との対応文が対応付けられている。処理記号における「${Q1}」の個所に入力された変数に対応する対応文字列を、対応文における「${Q1}」の個所に代入することにより文を生成することが示される。「s(${Q1})」の処理記号には、「${Q1}のレコード数分ループ」との対応文が対応付けられている。処理記号における「${Q1}」の個所に入力された変数に対応する対応文字列を、対応文における「${Q1}」の個所に代入することにより文を生成することが示される。
【0029】
変数定義情報と同様に、ここでは、処理定義情報として日本語による対応文が対応付けられている例を示すが、英語や中国語等の日本語以外の自然言語による対応文を対応付けておくこともできる。あるいは、複数の種別の自然言語ごとに、処理定義情報を記憶しておくこともできる。本実施形態では、複数の種別の自然言語ごとの処理定義情報を記憶させておき、ユーザから選択された種別の自然言語による対応文を使用する例を説明する。
【0030】
出力部120は、情報を表示するディスプレイであり、設計情報等の情報を表示する。例えば、出力部120は、設計情報記憶部111に記憶されている設計情報のテンプレートや、中間モデルが入力された設計情報、入力された中間モデルに基づいて生成されたチャートの文を出力する。
【0031】
設計情報入力部130は、キーボードやマウス等の入力デバイスを備えており、特定のプログラミング言語に依存しない中間モデルの処理記号により、設計情報の入力を受け付ける。具体的には、上述した設計情報における階層からP3の項目の情報の入力を受け付ける。設計情報入力部130は、入力された設計情報の各項目の情報を、設計情報記憶部111に記憶させる。
【0032】
設計情報検証部140は、設計情報入力部130に入力された設計情報にエラーが存在するか否かを判定し、エラーが存在すると判定した場合には警告を出力し、エラーが存在しないと判定した場合には警告を出力しない。例えば、設計情報検証部140は、処理の項目に「copy」の処理記号が入力された場合、「P1」と「P2」との双方の項目に引数が入力されているか否かを判定し、いずれかまたは双方が入力されていなければエラーが存在すると判定して警告を出力する。「P1」と「P2」との双方の項目に引数が入力されていれば、警告を出力しない。設計情報検証部140は、例えば処理定義記憶部113に記憶されている処理定義情報を参照することにより、「copy」の処理記号が2つの引数を必要とすることを判定することができる。
【0033】
ここで、警告を出力するとは、例えば、処理記号として「copy」が入力されているにも関わらず「P1」の項目に変数が入力されていない場合には、「P1の項目を入力して下さい」等の警告の旨のダイアログボックスを表示させてもよいし、設計情報におけるP1の個所のセルに赤等の網掛けをするようにしてもよい。また、例えば処理の項目に入力された処理記号が、処理定義記憶部113に記憶されている処理定義情報によって定義されていない情報である場合や、P1からP3に入力された変数が変数定義記憶部112に記憶されている変数定義情報によって定義されていない情報である場合、警告を出力するようにしてもよい。
【0034】
自然言語選択部150は、ユーザから入力された設計情報に基づいて生成する文の自然言語の種別の選択を受け付ける。例えば、設計情報のシートに「日本語」、「英語」等の複数の自然言語の種別を選択するリストを表示させ、キーボードやマウス等の入力デバイスから選択を受け付ける。あるいは、例えば、選択する自然言語の種別を記載した設定ファイルを予めソフトウェア開発支援装置100や外部のサーバ等に記憶させておき、設定ファイルから自然言語の種別を読み込むことにより自然言語の種別の選択を受け付けることもできる。自然言語選択部150は、入力された自然言語の種別を記憶する。
【0035】
文生成部160は、設計情報入力部130に設計情報が入力されると、入力された設計情報に基づいて、その設計情報が示す処理を自然言語で表す文を生成する。具体的には、例えば、文生成部160は、設計情報のうち、階層の項目に入力されている情報がコメント(冒頭が「//」)であれば、そのコメントをチャートの項目に代入する。あるいは、文生成部160は、例えば処理の項目に「copy」が入力されていれば、P1の項目とP2の項目とに入力されている情報を読み出す。そして、「copy」の処理記号に対応付けられている対応文を処理定義記憶部113から読み出す。また、P1の項目に入力されている変数に対応付けられている対応文字列と、P2の項目に入力されている変数に対応付けられている対応文字列とを変数定義記憶部112から読み出す。そして、読み出した対応文の変数の個所に、読み出した対応文字列を代入して文を生成する。
【0036】
同様に、文生成部160は、例えば処理の項目に「print」が入力されていれば、P1の項目に入力されている情報を読み出す。そして、「print」の処理記号に対応付けられている対応文を処理定義記憶部113から読み出す。また、P1の項目に入力されている変数に対応付けられている対応文字列を変数定義記憶部112から読み出す。そして、読み出した対応文の変数の個所に、読み出した対応文字列を代入して文を生成する。
【0037】
同様に、文生成部160は、例えば処理の項目に「rs.001@read」が入力されていれば、「${Q1}@read」の処理記号に対応付けられている対応文を処理定義記憶部113から読み出す。また、「rs.001」である変数に対応付けられている対応文字列を変数定義記憶部112から読み出す。そして、読み出した対応文の変数の個所に、読み出した対応文字列を代入して文を生成する。
【0038】
同様に、文生成部160は、例えば階層の項目に「s(rs.001)」が入力されていれば、「s(${Q1})」の処理記号に対応付けられている対応文を処理定義記憶部113から読み出す。また、「rs.001」である変数に対応付けられている対応文字列を変数定義記憶部112から読み出す。そして、読み出した対応文の変数の個所に、読み出した対応文字列を代入して文を生成する。また、文生成部160は、生成した文を、設計情報のチャートの項目に入力し、設計情報記憶部111に記憶させる。ここで、文生成部160は、自然言語選択部150に選択された種別による文を生成する。また、文生成部160は、このような文の生成処理を、例えば、設計情報のシートにユーザから情報が入力されている際に、フォーカスがセルを移動する毎に行うことができる。これにより、設計情報が入力されると、入力された設計情報に対応する文を即時に生成し、表示する。
【0039】
ソースコード生成部170は、設計情報記憶部111に記憶されている設計情報に基づいてソースコードを生成する。例えば、ソースコード生成部170は、設計情報に入力される処理記号とソースコードとを対応付ける情報を予め記憶しておき、設計情報が入力された後に、ユーザからソースコード生成要求が入力されると、入力された処理記号に応じたソースコードを読み出してソースコードを生成する。ソースコード生成部170は、設計情報に入力される処理記号ごとに、複数のプログラミング言語によるソースコードを対応付けて記憶しておき、予め定められた複数のプログラミング言語のうち、ユーザから選択されたプログラミング言語によるソースコードを生成することもできる。ソースコード生成部170は、生成したソースコードを含むファイルを生成し、記憶する。
【0040】
設計書生成部180は、設計情報記憶部111に記憶されている設計情報に基づいて、予め定められたフォーマットによるプログラム設計書を生成する。
図5は、設計書生成部180が生成するプログラム設計書の例を示す図である。設計書生成部180は、設計情報が入力された後に、ユーザからプログラム設計書生成要求が入力されると、プログラム設計書を生成する。例えば、設計書生成部180は、予め定められたフォーマットによるプログラム設計書のテンプレートファイルと、テンプレートファイルにおけるどの箇所にどの項目の情報を入力するかを定める情報とを予め記憶しておき、設計情報に入力された項目に基づいてプログラム設計書に情報を入力することによりプログラム設計書を生成する。設計書生成部180は、生成したプログラム設計書を含むファイルを生成し、記憶する。
【0041】
例えば、この図の例では、符号aに示す領域には、プログラム設計の対象であるシステム名等の情報を入力する。符号bに示す領域には、プログラムの概要を入力する。これらの情報は、例えば設計情報のシートの所定の個所に入力しておき、入力された情報を転載することができる。
符号cに示す領域には、プログラム設計の対象であるプログラムにおける入力データを示す情報を入力する。ここでは、入力画面の入力項目のリストが入力されている。このようなリストは、例えば設計情報に含まれる変数の名称と変数定義記憶部112に記憶されている変数定義情報に基づいて生成することもできるし、入力画面の画面設計書を外部のサーバ等から読み出し、必要な事項を転載することもできる。
【0042】
符号dに示す領域には、処理ロジックを入力する。例えば、設計情報においてチャートの項目に入力した文を転載する。ここでは、ループ等の階層が存在する個所には、階層の深さに応じてインデントをつけて入力することができる。
符号eに示す領域には、プログラム設計の対象であるプログラムの出力データを示す情報を入力する。ここでは、出力画面の出力項目のリストが入力されている。このようなリストは、例えば設計情報に含まれる変数の名称と変数定義記憶部112に記憶されている変数定義情報に基づいて生成することもできるし、出力画面の画面設計書を外部のサーバ等から読み出し、必要な事項を転載することもできる。
符号fに示す領域には、備考の情報が入力される。備考の情報は、例えば設計情報のシートの所定の個所に入力しておき、入力された情報を転載するようにしてもよいし、例えば後からユーザにより入力されるようにしてもよい。
【0043】
次に、図面を参照して、本実施形態によるソフトウェア開発支援装置100の動作例を説明する。
図6は、本実施形態によるソフトウェア開発支援装置100の動作例を示すフローチャートである。
ソフトウェア開発支援装置100は、ユーザからの操作に応じて、設計情報記憶部111に記憶されている設計情報のテンプレートファイルを読み出し、出力部120に表示させる。自然言語選択部150は、ユーザからの自然言語の選択を受け付ける(ステップS1)。
【0044】
設計情報入力部130は、設計情報の入力を受け付ける(ステップS2)。設計情報検証部140は、入力された設計情報にエラーが存在するか否かを判定する(ステップS3)。エラーが存在すると判定すれば(ステップS3:YES)、エラー警告を出力し(ステップS4)、ステップS2に戻る。一方、エラーが存在しないと判定すれば(ステップS3:NO)、ステップS5に進む。ただしここでは、ステップS3においてエラーが存在すると判定した場合にも、エラーを無視してステップS5に進むようにしてもよい。
【0045】
文生成部160は、設計情報入力部130に入力された設計情報に基づいて、その設計情報が示す処理を、ステップS1において選択された自然言語で表す文を生成し、生成した文を設計情報のチャートの項目に入力して設計情報記憶部111に記憶させる(ステップS5)。出力部120は、文生成部160が生成した文を含む設計情報を表示する(ステップS6)。ソースコード生成部170は、プログラミング言語の選択を受け付け(ステップS7)、ユーザからソースコード生成要求が入力されると、選択されたプログラミング言語により、設計情報記憶部111に記憶されている設計情報に基づいてソースコードを生成する(ステップS8)。設計書生成部180は、ユーザからプログラム設計書生成要求が入力されると、設計情報記憶部111に記憶されている設計情報に基づいてプログラム設計書を生成する(ステップS9)。
【0046】
以上説明したように、本実施形態のソフトウェア開発支援装置100によれば、階層や処理、処理に対する引数や属性等の設計情報が、特定のプログラミング言語に依存しない規則によって定められた処理記号等により入力されると、入力した設計情報の内容を示す文を即時に生成して表示することができる。このように表示された文を確認することによって、ユーザは、入力した設計情報に基づいてソフトウェア開発支援装置100にソースコードを生成させる前に、入力した設計の妥当性を検証することができる。すなわち、例えばソフトウェア開発支援装置100に入力した設計に何らかの不具合等が存在する場合、ソフトウェア開発支援装置100にソースコードを生成させ、生成されたソースコードをレビューしたり、コンパイルしたり、そのソースコードに基づく実行ファイルを実行させたりする前に、設計が意図通りのものであるかを簡易に検証することができる。これにより、ユーザは、ソフトウェア開発支援装置100に入力した設計の妥当性をより早期に検証することができる。このように、本実施形態のソフトウェア開発支援装置100によれば、効率良いソフトウェア開発を支援することが可能となる。
【0047】
また、ソフトウェア開発支援装置100によれば、処理記号により入力された設計情報に基づいてその内容を示す自然言語の文が生成されて表示されるため、例えば、設計情報を入力するユーザと、その検証を行うユーザとが異なる自然言語を使用する場合にも、検証を行うユーザが検証しやすくなり、意思の疎通がしやすくなる。例えば、処理記号入力された設計情報が定型化された自然言語で提示されるため、日本の企業が外国の企業に対してソフトウェア開発を依頼するいわゆるオフショア開発を行う場合に、意思の疎通がしやすくなる。すなわち、日本語に不慣れな外国の企業のエンジニアが、本実施形態によるソフトウェア開発支援装置100を用いて設計を行って設計情報ファイルに処理記号を入力すれば、その設計の内容を日本語で表す文が生成されるため、依頼元の日本の企業は、設計を早い段階で検証しやすくなる。
【0048】
なお、本実施形態では、変数定義記憶部112に変数定義情報を予め記憶させておき、変数定義記憶部112から処理の引数等を示す文字列を読み出して文を生成する例を示したが、変数等の各要素は、外部のサーバ装置等に記憶させておき、その外部のサーバ装置等から読み出すようにしてもよい。この場合、例えば、画面設計書やDB設計書等の情報を外部のサーバ装置等に記憶させておき、その外部のサーバ装置から読み出すことができる。画面設計書には、例えば複数の画面ごとに、その画面が入力画面であるか出力画面であるかを示す種別や、その画面に含まれる項目の識別情報、項目名等の情報を含ませておくことができる。DB設計書には、データベースに含まれるテーブルごとに、そのテーブルに含まれる項目の識別情報、型、文字数、項目名等の情報を含ませておくことができる。この他にも、例えばデータベース等から情報を読み出す際のクエリやレコードセット、プログラム内で利用するクラス、メソッド、変数、定数、構造体等の情報を定義した設計書を予め作成して記憶させておき、このような情報を参照して、設計情報のチャートの項目に入力する文を生成したり、ソースコードやプログラム設計書を生成したりすることができる。
【0049】
また、本実施形態では、処理定義記憶部113には、処理記号に対して1対1で対応付けた対応文を記憶する例を示したが、対応文は、文節ごとに区切って記憶させておいてもよい。例えば、本実施形態では、「copy ${P1} ${P2}」の処理記号に、「${P1}に${P2}の項目を全て代入する(ID一致)」との対応文を対応付ける例を示したが、「に」と、「の項目を全て代入する(ID一致)」との文節に分けた対応文を対応付けて記憶させておき、P1の項目に対応する対応文字列と、P2の項目に対応する対応文字列とを連結してチャートの項目に入力する文を生成するようにしてもよい。
【0050】
また、本実施形態では、ソースコード生成部170は、設計情報として入力された処理記号に基づいてソースコードを生成する例を示したが、ソースコードを生成する前に、設計情報として入力された処理記号に基づく中間コードを生成し、中間コードに基づいてソースコードを生成するようにしてもよい。
【0051】
なお、本発明における処理部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによりソフトウェア開発の支援を行ってもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータシステム」は、インターネットやWAN、LAN、専用回線等の通信回線を含むネットワークを介して接続された複数のコンピュータ装置を含んでもよい。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、ネットワークを介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(RAM)のように、一定時間プログラムを保持しているものも含むものとする。また、上記プログラムは、上述した機能の一部を実現するためのものであってもよい。さらに、上述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
【0052】
また、上述した機能の一部または全部を、LSI(Large Scale Integration)等の集積回路として実現してもよい。上述した各機能は個別にプロセッサ化してもよいし、一部、または全部を集積してプロセッサ化してもよい。また、集積回路化の手法はLSIに限らず専用回路、または汎用プロセッサで実現してもよい。また、半導体技術の進歩によりLSIに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いてもよい。