(57)【要約】【課題】  従来では、再利用する機能からプログラム部品を作成し、開発者が要求された機能に応じプログラム部品を組み合わせ、開発者がプログラム部品を接続するためのコードを手書きしている。【解決手段】  機能の構成要素に対応付くプログラム部品とデータを、パーツと呼ぶ単位で管理する。フレームワークと呼ぶプログラムの共通的な枠組みを用意し、パーツをフレームワークに挿入することでプログラムを作成する。人手により機能項目が選択された時、その機能項目に対応するプログラム部品を自動的に選択し、フレームワークに挿入する。また、パーツをフレームワークに挿入する時、人手による入出力データの対応付けに基づきパーツ接続用のコードを自動生成する。【効果】  複数ソフトウェアシステムから要求機能の実現に必要なプログラム部品を選択する時の作業量と、選択したプログラム部品を組み合わせる時のコード作成の作業量を削減することができる。【選択図】図１
2009176076.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアシステムの少なくとも一部の機能の情報を入力する機能入力手段と、前記入力された機能に応じて複数の機能細目を選択する機能細目選択手段と、前記複数の機能細目毎に対応する機能項目を複数読み出す機能項目読出手段と、前記読み出された機能項目を前記機能細目に対応させるよう区分して表示装置に表示する表示手段と、操作者に選択された前記機能項目に対応するパーツプログラムを読み出すパーツプログラム読出手段と、前記パーツプログラムのデータ情報に基づいて、前記パーツプログラムをフレームワークプログラムに挿入するプログラム挿入手段を有することを特徴とするプログラム生成装置。
【請求項２】
請求項１において、前記プログラム挿入手段は、前記フレームワークのパーツプログラム挿入に係る箇所の入力データ情報または出力データ情報に、前記パーツプログラムの入力データ情報または出力データ情報をそれぞれ適合させるように構成することを特徴とするプログラム生成装置。
【請求項３】
請求項１において、前記フレームワークに係るパーツプログラムの出力データに対応する他パーツの入力データを指定し、該指定に基づいて前記入力データと前記出力データの結合コードを生成するように構成することを特徴とする請求項１に記載のプログラム生成装置。
【請求項４】
請求項１において、前記選択した前記機能項目に対応するパーツプログラムが機能を実現するための前記パーツプログラムのデータ対応関係を定義し、前記パーツプログラムと前記パーツプログラムのデータ対応関係を登録することを特徴とするプログラム生成装置。
【請求項５】
ソフトウェアシステムの少なくとも一部の機能の情報を入力し、前記入力された機能に応じて複数の機能細目を選択し、前記複数の機能細目毎に対応する機能項目を複数読み出し、前記読み出された機能項目を前記機能細目に対応させるよう区分して表示装置に表示し、操作者に選択された前記機能項目に対応するパーツプログラムを読み出し、前記パーツプログラムのデータ情報に基づいて、前記パーツプログラムをフレームワークプログラムに挿入するプログラム生成方法。
【請求項６】
電子計算機に、ソフトウェアシステムの少なくとも一部の機能の情報を入力させ、前記入力された機能に応じて複数の機能細目を選択させ、前記複数の機能細目毎に対応する機能項目を複数読み出させ、前記読み出された機能項目を前記機能細目に対応させるよう区分して表示装置に表示させ、操作者に選択された前記機能項目に対応するパーツプログラムを読み出させ、前記パーツプログラムのデータ情報に基づいて、前記パーツプログラムをフレームワークプログラムに挿入させることを行わせるプログラム。
【請求項７】
電子計算機に、ソフトウェアシステムの少なくとも一部の機能の情報を入力させ、前記入力された機能に応じて複数の機能細目を選択させ、前記複数の機能細目毎に対応する機能項目を複数読み出させ、前記読み出された機能項目を前記機能細目に対応させるよう区分して表示装置に表示させ、操作者に選択された前記機能項目に対応するパーツプログラムを読み出させ、前記パーツプログラムのデータ情報に基づいて、前記パーツプログラムをフレームワークプログラムに挿入させることを行わせるプログラムが記憶されたプログラム媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム生成装置，プログラム生成方法，プログラム及びプログラム媒体に関する。
【背景技術】
【０００２】
既存のソフトウェアシステムを再利用して新たなソフトウェアシステムを開発することが行われている。この時、既存の類似するシステムが複数存在する場合は、それらシステムの機能を比較し、新たなシステムへの要求に最も近い機能を部分的に流用し組み合わせて新たなシステムを開発することが行われていた。
【０００３】
この場合、流用するシステムの機能からコンポーネントと呼ぶプログラムの固まりを作成し、新たなシステムの開発時には、開発者が要求された機能の実現に必要なコンポーネントを集め、集めたコンポーネントを接続してプログラムを作成していたので、コンポーネントを接続する時、開発者がコンポーネント接続のためのコードを手書きせざるを得なかった。
【０００４】
また、モジュール化されたプログラムを予め作成し、構成データに従って、モジュール化されたプログラムを取出してプログラムを自動生成することが、例えば特願２００４−８６９２４号公報に記載のように、知られていた。
【０００５】
【特許文献１】特開２００４−８６９２４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、操作者との対話によるプログラム作成、或いは、モジュール化されたプログラムのはめ込み等については十分に記載されおらず、実際にプログラムを自動的に作成する際には問題であった。
【０００７】
本発明の目的は、上記問題を解決することが可能なプログラム生成装置，プログラム生成方法，プログラム及びプログラム媒体を提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明では、ソフトウェアシステムの少なくとも一部の機能の情報を入力し、前記入力された機能に応じて複数の機能細目を選択し、前記複数の機能細目毎に対応する機能項目を複数読み出し、前記読み出された機能項目を前記機能細目に対応させるよう区分して表示装置に表示し、操作者に選択された前記機能項目に対応するパーツプログラムを読み出し、前記パーツプログラムのデータ情報に基づいて、前記パーツプログラムをフレームワークプログラムに挿入するように構成した。
【０００９】
あるいは、機能の機能要素を機能項目と呼ぶ単位に分割し、機能項目が機能で必須のものか否か、どの機能項目と入替え可能かという機能項目の選択関係を、機能モデルと呼ぶ表記で表す方法を持つ。機能モデルにより、複数システムの機能仕様を一つの機能モデルに記述することができる。
【００１０】
この機能項目に対応するプログラムの固まりをパーツと呼ぶ単位で用意する。更に、フレームワークと呼ぶパーツ挿入箇所の情報を持つプログラムの共通的な枠組みを用意し、フレームワークにパーツを挿入することでプログラムを生成する。フレームワークとパーツは、入力データと出力データをインタフェースとして持ち、人手で入力データと出力データを対応付けた結果に基づき出力から入力へのデータ代入コードを生成し、パーツとフレームワークまたはパーツ間の接続を実現する。
【００１１】
新たなシステムを開発する時、開発者が要求された機能に応じて機能項目を選択することで、選択した機能項目に対応するパーツを自動的に選択することができる。また、開発者がフレームワークへのパーツ挿入の際に入出力データの対応付けを行うことで、選択したパーツをフレームワークの該当箇所に自動的に挿入することができる。
【発明の効果】
【００１２】
本発明によれば、操作者との対話によるプログラム作成及びパーツプログラムのはめ込みが可能となる。より具体的には、特に、ソフトウェア開発における機能仕様書とプログラムの再利用，機能仕様とソースコードの対応付け、ソースコードの部品化，部品化したソースコードの接続，部品化したソースコードの接続等に好適なプログラム自動生成に係り、既存の複数ソフトウェアシステムの機能を流用する時、機能の構成要素を一つの図上で比較し、要求された機能に必要な機能要素を選択することでプログラム部品を得ることができ、ソフトウェアシステム開発の作業量を削減することができる。また、入出力データの対応付けによりプログラム部品を組み合わせてプログラムを生成することができ、コーディングの手間を削減することができる。
【発明を実施するための最良の形態】
【００１３】
図１を用いて本発明の構成を説明する。本実施例ではパーツ及びフレームワークとして主にソースコードを用いて説明しているが、オブジェクトコードを用いて良いのはもちろんである。また、プログラムとは、コンピュータを実行させるものであり、いずれの言語で記載されても良く、また、オブジェクトコードで作成されたものを含む。
【００１４】
プログラム生成装置１００は、プロジェクト作成・機能選択部１０１，機能項目選択部１０３，パーツ接続部１０４，プログラム生成部１０５，管理データＤＢ１０６，プログラムＤＢ１１２，プロジェクト情報ＤＢ１１７で構成される。
【００１５】
プロジェクト作成・機能選択部１０１は、プロジェクト名登録・機能選択画面１１００を表示し、ユーザがプロジェクト名登録・機能選択画面１１００に入力したプロジェクト名をプロジェクト名管理テーブル１１８に、ユーザがプロジェクト名登録・機能選択画面１１００で選択した機能を機能項目選択結果テーブル１１９に記録する。
【００１６】
機能項目選択部１０３は、機能モデル管理テーブル１０８を読み込み、機能モデル画面４００を表示し、ユーザが機能モデル画面４００で選択した機能モデルの機能項目を機能項目選択結果テーブル１１９に記録する。
【００１７】
パーツ接続部１０４は、フレームワークの入出力データ項目とパーツの入出力データ項目をデータ対応先指定画面１３００に表示し、ユーザがデータ対応先指定画面１３００で対応付けたデータ項目のペアの情報をデータ対応テーブル１２０に記録する。
【００１８】
プログラム生成部１０５は、パーツ接続のためのコードを生成し、この生成コードとパーツソースコード管理ディレクトリ１１３に格納されたパーツソースコード１１４を、フレームワークソースコード管理ディレクトリ１１５に格納されたフレームワークソースコード１１６に挿入してプログラムを生成し、生成したプログラムを生成プログラム管理ディレクトリ１２２に格納する。
【００１９】
管理データＤＢ１０６は、機能，フレームワーク，パーツの情報を格納するＤＢである。管理データＤＢ１０６は、機能管理テーブル１０７，機能モデル管理テーブル１０８，パーツ実装情報テーブル１０９，パーツ挿入箇所テーブル１１０，データ定義テーブル１１１から成る。
【００２０】
プログラムＤＢ１１２は、予め用意したフレームワークとパーツのソースコードを格納するＤＢである。プログラムＤＢ１１２のパーツソースコード管理ディレクトリ１１３には複数のパーツソースコード１１４を格納し、フレームワークソースコード管理ディレクトリ１１５には複数のフレームワークソースコード１１６を格納する。
【００２１】
プロジェクト情報ＤＢ１１７は、ユーザが画面上で入力した情報と、プログラム生成部１０５で生成したプログラムを格納する。プロジェクト情報ＤＢ１１７は、プロジェクト名管理テーブル１１８，機能項目選択結果テーブル１１９，データ対応テーブル１２０，データ管理テーブル１２１，生成プログラム管理ディレクトリ１２２から成る。
【００２２】
次に、本発明で再利用の元情報として予め記録されている情報の構成について説明する。
【００２３】
機能は、図２に示す機能管理テーブル１０７で管理される。機能管理テーブル１０７は、機能を識別する機能ＩＤ２０１，機能の名称である機能名２０２，機能に含まれる機能項目を表す機能項目ＩＤ２０３，機能に対応するフレームワークのソースコードの格納先を示すフレームワーク格納先２０４，機能の概略を記載する説明２０５のフィールドを持つ。
【００２４】
機能モデルは、図３に示す機能モデル管理テーブル１０８で管理される。機能モデル管理テーブル１０８は、機能モデルに含まれる機能項目を識別する機能項目ＩＤ３０１，機能項目の名称である機能項目名３０２，機能項目の選択関係を判別する情報のグループ３０３のフィールドを持つ。同じ機能に含まれかつグループ３０３が同じ機能項目は、その中で一つの機能項目が選択される。同じ機能内に同一のグループ３０３が存在しない機能項目は、選択が必須となる。
【００２５】
フレームワークのソースコード１１６は、フレームワークソースコード管理ディレクトリ１１５に格納され、機能との対応が機能管理テーブル１０７のフレームワーク格納先２０４で管理される。フレームワークのパーツ挿入箇所は、図５に示すパーツ挿入箇所テーブル１１０で管理される。パーツ挿入箇所テーブル１１０は、フレームワークが対応する機能を示す機能ＩＤ５０１，パーツ接続のコードを挿入するパーツ挿入箇所５０２，接続するパーツのデータ宣言コードを挿入するデータ宣言箇所５０３，フレームワークが挿入するパーツへ渡す入力データの入力データＩＤ５０４，フレームワークが挿入するパーツから受け取る出力データの出力データＩＤ５０５のフィールドを持つ。パーツ挿入箇所５０２は、図６に示すフレームワークのソースコード１１６上で「/*#parts insert:X#*/」というコメントで対応付けられ、「Ｘ」の部分がパーツ挿入箇所５０２の値に相当する。データ宣言箇所５０３は、図６に示すフレームワークのソースコード１１６上で「/*#local data declaration:Y#*/」というコメントで対応付けられ、「Ｙ」の部分がデータ宣言箇所５０３の値に相当する。
【００２６】
フレームワークの入出力，パーツの入出力を表すデータ項目は、図９に示すデータ定義テーブル１１１で管理される。データ定義テーブル１１１は、データを識別するデータＩＤ９０１，データの属性を表すデータ種別コード９０２，データをプログラム上で使用する時の型９０３，データをプログラム上で使用する時の変数名９０４のフィールドを持つ。データ種別コード９０２は、１の時にグローバル変数、２の時にローカル変数を意味する。
【００２７】
パーツは、パーツ実装情報テーブル１０９で管理される。パーツ実装情報テーブル１０９は、パーツを識別するパーツＩＤ７０１，パーツの名称であるパーツ名７０２，パーツソースコードの格納先を示すパーツ格納先７０３，パーツの呼出しに使用する関数名７０４，フレームワークへの挿入や他パーツとの接続に使用する、パーツの入力データの入力データＩＤ７０５，パーツの出力データの出力データＩＤ７０６、およびパーツの返値データの返値データＩＤ７０７，パーツがブロック単位の場合にブロック内のみで使用される内部データの内部データＩＤ７０８，対応する機能項目を識別する機能項目ＩＤ７０９，パーツをフレームワークに挿入する時のパーツ挿入箇所７１０のフィールドを持つ。パーツソースコード１１４は、プログラムＤＢ１１２のパーツソースコード管理ディレクトリ１１３に格納される。図８は、パーツソースコード１１４の例を示す。パーツは、関数単位８０１やブロック単位８０２に作成することができる。
【００２８】
プログラム生成部１０５が生成する生成プログラム１２３は、機能名と同じファイル名が付けられ、生成プログラム管理ディレクトリ１２２内の階層下に格納される。
【００２９】
次に、ユーザが画面上で入力した情報の管理方法を説明する。
【００３０】
ユーザがプロジェクト名登録・機能選択画面１１００で入力したプロジェクト名は、図１０に示すプロジェクト名管理テーブル１１８で管理される。プロジェクト名管理テーブル１１８は、プロジェクトを識別するプロジェクトＩＤ１００１，ユーザが入力したプロジェクト名１００２のフィールドを持つ。
【００３１】
ユーザがプロジェクト名登録・機能選択画面１１００で選択した機能と、機能モデル画面４００で選択した機能項目は、図１２に示す機能項目選択結果テーブル１１９で管理される。機能項目選択結果テーブル１１９は、ユーザが登録したプロジェクトを識別するプロジェクトＩＤ１２０１，ユーザが選択した機能の機能ＩＤ１２０２，ユーザが選択した機能項目の機能項目ＩＤ１２０３のフィールドを持つ。
【００３２】
ユーザがデータ対応先指定画面１３００でパーツのデータを対応付けた結果は、図１４に示すデータ対応テーブル１２０で管理される。データ対応テーブル１２０は、ユーザが登録したプロジェクトを識別するためのプロジェクトＩＤ１４０１，ユーザが接続元に指定したデータのパーツデータＩＤ１４０２，ユーザが接続元に指定したデータのフレームワーク上でのパーツデータ宣言箇所１４０３，ユーザが接続先に指定したデータの対応先データＩＤ１４０４，ユーザが接続先に指定したデータのフレームワーク上での対応先データ宣言箇所１４０５のフィールドを持つ。
【００３３】
次にプログラム生成装置１００を使用したプログラム生成の流れを説明する。プログラム生成は次の（１）から（４）の手順で行われる。
【００３４】
（１）プロジェクト名の登録と機能の選択
（２）機能項目の選択
（３）データの対応付け
（４）プログラムの生成
以下、図とフローチャートを用いて（１）から（４）の処理を説明する。
【００３５】
（１）のプロジェクト名の登録の処理を以下に説明する。
【００３６】
図１６は、プロジェクト作成・機能選択部１０１の処理のフローチャートである。ステップ１６０１では、プロジェクト名登録・機能選択画面１１００を表示する。
【００３７】
図１１にプロジェクト名登録・機能選択画面１１００を示す。プロジェクト名登録・機能選択画面１１００は、プロジェクト名を入力するための入力領域１１０１，機能管理テーブル１０７から読み込んだ機能名を表示するプルダウン１１０２，入力領域１１０１に入力されたプロジェクト名とプルダウン１１０２で選択された機能名を確定する決定ボタン１１０３，入力領域１１０１の入力データとプルダウン１１０２の選択結果を削除するキャンセルボタン１１０４から構成される。
【００３８】
ユーザは、プロジェクト名登録・機能選択画面１１００のプロジェクト名の入力領域１１０１にプロジェクト名を入力し、機能名のプルダウン１１０２から作成する機能名を選択し、決定ボタンのクリックにより入力を確定する。
【００３９】
ステップ１６０２では、ユニークなプロジェクトＩＤを生成し、プロジェクト名管理テーブル１１８のプロジェクトＩＤ１００１に登録する。次に、入力領域１１０１に入力されたプロジェクト名を、プロジェクト名管理テーブル１１８のプロジェクト名１００２に登録する。
【００４０】
ステップ１６０３では、プロジェクト作成・機能選択部１０１からプロジェクトＩＤを受け取り、機能項目選択結果テーブル１１９のプロジェクトＩＤ１２０１に登録し、次にプルダウン１１０２で選択された機能名の機能ＩＤを機能項目選択結果テーブル１１９の機能ＩＤ１２０２に登録する。
【００４１】
（２）の機能項目の選択の処理を以下に説明する。
【００４２】
図１７は、機能項目選択部１０３の処理のフローチャートである。図１７では、機能モデル画面４００を表示し、ユーザが機能モデル画面４００で選択した機能項目を機能項目選択結果テーブル１１９の機能項目ＩＤ１２０３に登録する。
【００４３】
図４に機能モデル画面４００を示す。機能モデル画面４００は、ユーザが選択した機能名４０１，機能モデルに含まれる機能項目名４０５，機能項目を選択するためのラジオボタン４０６，ユーザが選択した機能項目を確定する決定ボタン４０５，選択をキャンセルし前画面に戻るためのボタン４０６で構成される。機能モデル画面４００では、機能モデル管理テーブル１０８のグループ３０３の値が同じ機能項目を選択肢として表示する。図４では、要素Ａ１と要素Ａ２のグループ４０２，要素Ｂ１と要素Ｂ２のグループ４０３，要素Ｃのグループ４０４の、３グループが存在する。グループ４０４のように機能項目が１つのみの場合、機能項目は既に選択状態にする。
【００４４】
ステップ１８０１では、プロジェクト作成・機能選択部１０１から受け取った機能ＩＤを元に、機能モデル管理テーブル１０８の機能ＩＤ３０１と合致するレコードを取得し、取得したレコードの機能項目名とラジオボタンを、グループ３０３単位に機能モデル画面４００に表示し、最後に決定ボタン４０５と戻るボタン４０６を機能モデル画面４００に表示する。
【００４５】
ユーザは、機能モデル画面４００で機能項目のラジオボタンを選択した後、決定ボタンをクリックし選択を確定する。
【００４６】
ステップ１８０２では、機能モデル画面４００で選択された機能項目の機能項目ＩＤを、機能項目選択結果テーブル１１９のプロジェクト作成・機能選択部１０１が登録したレコードの機能項目ＩＤ１２０３に登録する。
【００４７】
（３）のデータの対応付けの処理を以下に説明する。
【００４８】
図１８は、パーツ接続部１０４の処理のフローチャートである。パーツ接続部１０４は、データ対応先指定画面１３００の表示を行う処理１９０１，ユーザがデータ対応先指定画面１３００でデータを対応付けた結果からデータ対応テーブル１２０を作成する処理１９０２，データ対応テーブル１２０からデータ管理テーブルを作成する処理１９０３から成る。
【００４９】
図１９はステップ１９０１対応データ表示の処理のフローチャートである。
【００５０】
ステップ２００１からステップ２００４では、ユーザが機能モデル画面で選択した機能項目の入力データ，出力データ，返値データをデータ対応先指定画面１３００のパーツデータ表１３０１に表示する。
【００５１】
ステップ２００１では、機能項目選択部１０３が機能項目選択結果テーブル１１９に登録した機能項目ＩＤを取得し、その機能項目ＩＤの数だけステップ２００２からステップ２００４の処理を繰り返す。
【００５２】
ステップ２００２では、ステップ２００１の機能項目ＩＤに該当するパーツ実装情報テーブル１０９のレコードを取得する。
【００５３】
ステップ２００３では、ステップ２００２で取得したレコードの入力データＩＤ，出力データＩＤ，返値データＩＤ，内部データＩＤに各々該当するデータ定義テーブル１１１のレコードを取得する。
【００５４】
ステップ２００４では、ステップ２００３で取得したレコードの型と変数名を、データ対応先指定画面１３００のパーツデータ表１３０１にパーツ毎に表示する。
【００５５】
ステップ２００５からステップ２００７では、フレームワークのパーツ挿入箇所における入力データと出力データをデータ対応先指定画面１３００のフレームワークデータ表１３０７に表示する。
【００５６】
ステップ２００５では、プロジェクト作成・機能選択部１０１から受け取った機能ＩＤに該当するレコードをパーツ挿入箇所テーブル１１０から取得し、該当レコードの数だけステップ２００６とステップ２００７の処理を繰り返す。
【００５７】
ステップ２００６では、ステップ２００５の該当レコードの入力データＩＤ，出力データＩＤに各々該当するデータ定義テーブル１１１のレコードを取得する。
【００５８】
ステップ２００７では、ステップ２００６の該当レコードの型と変数名，ステップ２００５の該当レコードのパーツ挿入箇所を、データ対応先指定画面１３００のフレームワークデータ表１３０７にパーツ挿入箇所毎に表示する。
【００５９】
図１３は、データ対応先指定画面１３００である。データ対応先指定画面１３００は、作業中の機能名１３２１，パーツデータ表１３０１，フレームワークデータ表１３０７，データ対応先指定結果表１３１１，追加ボタン１３１７，決定ボタン１３１８，削除ボタン１３１９，戻るボタン１３２０で構成される。
【００６０】
パーツデータ表１３０１は、要素名：パーツ名１３０２，パーツの入力データの型と変数名とラジオボタン１３０３，パーツの出力データの型と変数名とラジオボタン１３０４，パーツの返値データの型と変数名とラジオボタン１３０４，フレームワークソースコードへの挿入箇所１３０６を持ち、パーツ単位に表示される。
【００６１】
フレームワークデータ表１３０７は、フレームワークソースコードのパーツ挿入箇所１３０８，挿入箇所における入力データの型と変数名とラジオボタン１３０９，挿入箇所における出力データの型と変数名とラジオボタン１３１０を持ち、パーツ挿入箇所単位に表示される。
【００６２】
データ対応先指定結果表１３１１は、パーツ名１３１２，パーツ１３１２のデータの型と変数名１３１３，パーツ１３１２の対応先１３１４，対応先１３１４のデータの型と変数名１３１５，表に登録したデータを指定する時に使用するチェックボックス１３１６で構成される。対応先１３１４は、フレームワークの場合は「ＦＷ：Ｘ」の形式で表示し、「Ｘ」はフレームワークデータ表１３０７のパーツ挿入箇所１３０８となる。一方、パーツの場合はパーツデータ表１３０１の要素名：パーツ名１３０２のパーツ名となる。
【００６３】
ユーザがパーツデータ表１３０１またはフレームワークデータ表１３０７で対応付け元データと対応付け先データのラジオボタンをそれぞれ選択した後、追加ボタン１３１７をクリックすると、選択したデータの情報がデータ対応先指摘結果表１３１１に表示される。最初に選択した対応付け元データのパーツ名とデータは、データ対応先指摘結果表１３１１のパーツ名１３１２とデータ１３１３に表示される。続けて選択した対応付け先データのパーツ名またはパーツ挿入箇所とデータは、対応付け元データと同じ行の対応先１３１４とデータ１３１５に表示される。
【００６４】
ユーザが追加ボタン１３１７をクリックした時、同時にパーツデータ表のパーツ挿入箇所１３０６とフレームワークデータ表１３０７のパーツ挿入箇所１３０８のチェックも行われる。
【００６５】
ユーザが決定ボタン１３１８をクリックすると選択が確定され、データ対応付け１９０２を実行する。ユーザがチェックボックス１３１６をチェックし削除ボタン１３１９をクリックすると、チェックした行が削除される。ユーザが戻るボタン１３２０をクリックすると、選択結果を破棄し前画面に戻る。
【００６６】
図２０は、ステップ１９０２データ対応付けの処理のフローチャートである。図２０は、データ対応先指定画面１３００のデータ対応先指定結果表１３１１から、データ対応テーブル１２０を生成する処理を示す。
【００６７】
ステップ２１０１では、データ対応先指定画面１３００のデータ対応先指定結果表１３１１の行数だけステップ２１０２から２１０４の処理を繰り返す。
【００６８】
ステップ２１０２では、対応付け元と対応付け先がパーツのデータの場合はステップ２１０３を行い、そうでない場合はステップ２１０４を行う。
【００６９】
図２１は、ステップ２１０３データ生成・内容コピーの処理のフローチャートである。
【００７０】
ステップ２２０１では、データ定義テーブル１１１の最大データＩＤに１を加算し、データ定義テーブルでユニークなデータＩＤを生成し、それをデータ定義テーブル１１１のデータＩＤ９０１に登録する。次に、データ定義テーブルでユニークな変数名を生成し、データ定義テーブル１１１の変数名９０４に登録する。次に、データ定義テーブル１１１のデータ種別コード９０２に「１」を登録する。最後に、データ対応先指定結果表１３１１のデータ１３１３と同じ型をデータ定義テーブル１１１の型９０３に登録する。
【００７１】
ステップ２２０２では、データ対応先指定結果表１３１１のデータ１３１３のデータＩＤを、データ対応テーブル１２０のパーツデータＩＤ１４０２に登録する。
【００７２】
ステップ２２０３では、最初にステップ２２０２のデータＩＤにより、パーツ実装情報テーブル１０９からパーツ挿入箇所を取得する。次に、前記パーツ挿入箇所とプロジェクト作成・機能選択部１０１から受け取った機能ＩＤにより、パーツ挿入箇所テーブル１１０からデータ宣言箇所を取得する。最後に、前記データ宣言箇所をデータ対応テーブル１２０のパーツデータ宣言箇所１４０３に登録する。
【００７３】
ステップ２２０４では、ステップ２２０１で作成したデータＩＤを、ステップ２２０２で登録したデータ対応テーブル１２０のレコードの対応先データＩＤ１４０４に登録する。
【００７４】
ステップ２２０５では、データ対応先指定結果表１３１１のデータ１３１５のデータＩＤを、データ対応テーブル１２０のパーツデータＩＤ１４０２に登録する。
【００７５】
ステップ２２０６では、最初にステップ２２０５のデータＩＤにより、パーツ実装情報テーブル１０９からパーツ挿入箇所を取得する。次に、前記パーツ挿入箇所とプロジェクト作成・機能選択部１０１から受け取った機能ＩＤにより、パーツ挿入箇所テーブル１１０からデータ宣言箇所を取得する。最後に、前記データ宣言箇所をデータ対応テーブル１２０のパーツデータ宣言箇所１４０３に登録する。
【００７６】
ステップ２２０７では、ステップ２２０１で作成したデータＩＤを、ステップ２２０５で登録したデータ対応テーブル１２０のレコードの対応先データＩＤ１４０４に登録する。
【００７７】
図２２は、ステップ２１０４選択データコピーの処理のフローチャートである。
【００７８】
ステップ２３０１では、データ対応先指定結果表１３１１のデータ１３１３のデータＩＤを、データ対応テーブル１２０のパーツデータＩＤ１４０２に登録する。
【００７９】
ステップ２３０２では、最初にステップ２３０１のデータＩＤにより、パーツ実装情報テーブル１０９からパーツ挿入箇所を取得する。次に、前記パーツ挿入箇所とプロジェクト作成・機能選択部１０１から受け取った機能ＩＤにより、パーツ挿入箇所テーブル１１０からデータ宣言箇所を取得する。最後に、前記データ宣言箇所をデータ対応テーブル１２０のパーツデータ宣言箇所１４０３に登録する。
【００８０】
ステップ２３０３では、データ対応先指定結果表１３１１のデータ１３１５のデータＩＤを、ステップ２３０１で登録したデータ対応テーブル１２０のレコードの対応先データＩＤ１４０４に登録する。
【００８１】
ステップ２３０４では、最初にステップ２３０３のデータＩＤにより、パーツ実装情報テーブル１０９からパーツ挿入箇所を取得する。次に、前記パーツ挿入箇所とプロジェクト作成・機能選択部１０１から受け取った機能ＩＤにより、パーツ挿入箇所テーブル１１０からデータ宣言箇所を取得する。最後に、前記データ宣言箇所をデータ対応テーブル１２０の対応先データ宣言箇所１４０５に登録する。
【００８２】
図２３は、ステップ１９０３データ生成の処理のフローチャートである。図２３は、データ対応テーブル１２０からデータ管理テーブル１２１を生成する処理を示す。
【００８３】
ステップ２４０１では、データ対応テーブル１２０からパーツデータＩＤと対応先データＩＤを取得し、その数だけステップ２４０２から２４０５の処理を繰り返す。
【００８４】
ステップ２４０２では、データ管理テーブル１２１のデータＩＤ重複登録のチェックを行い、既に同じデータＩＤが登録されている場合は、次のデータＩＤを読み込む。
【００８５】
ステップ２４０３では、プロジェクト作成・機能選択部１０１から受け取ったプロジェクトＩＤを、データ管理テーブル１２１のプロジェクトＩＤ１５０１に登録する。
【００８６】
ステップ２４０４では、データ対応テーブル１２０のデータＩＤとデータ宣言箇所を、データ管理テーブル１２１のデータＩＤ１５０２とデータ宣言箇所１５０４にそれぞれ登録する。
【００８７】
ステップ２４０５では、データ管理テーブル１２１のデータＩＤによりデータ定義テーブル１１１からデータ種別コード，型，変数名を取得し、データ管理テーブル１２１のデータ種別コード１５０３，型１５０５，変数名１５０６にそれぞれ登録する。
【００８８】
ステップ２４０６では、機能項目選択結果テーブル１１９から機能項目選択部１０３で選択した機能項目ＩＤを取得し、その機能項目ＩＤの数だけステップ２４０７を繰り返す。
【００８９】
ステップ２４０７では、最初にステップ２４０６で取得した機能項目ＩＤとパーツ実装情報テーブル１０９の機能項目ＩＤが合致するレコードを取得する。次に、取得したレコードに内部データＩＤが存在する場合、その内部データＩＤをデータ管理テーブル１２１のデータＩＤ１５０１に登録する。次に、取得した内部データＩＤによりデータ定義テーブル１１１からデータ種別コード，型，変数名を取得し、データ管理テーブル１２１のデータ種別コード１５０３，型１５０５，変数名１５０６にそれぞれ登録する。最後に、パーツ実装情報テーブル１０９で取得したレコードのパーツ挿入箇所とプロジェクト作成・機能選択部１０１から受け取った機能ＩＤにより、パーツ挿入箇所テーブル１１０からデータ宣言箇所を取得し、データ管理テーブル１２１のデータ宣言箇所１５０４に登録する。
【００９０】
（４）のプログラムの生成の処理を以下に説明する。
【００９１】
図２４は、プログラム生成部１０５の処理のフローチャートである。図２４は、機能項目選択部１０３で選択された機能項目と、パーツ接続部１０４で対応付けした情報からプログラムを生成する処理を示す。
【００９２】
ステップ２５０１では、プロジェクト作成・機能選択部１０１から受け取った機能ＩＤにより機能管理テーブル１０７からフレームワーク格納先を取得する。次にステップ２５０１では、取得したフレームワーク格納先を基に、フレームワークソースコード管理ディレクトリ１１５からフレームワークソースコード１１６を取得する。
【００９３】
ステップ２５０２では、データ管理テーブル１２１に登録されたデータを宣言するコードを生成し、ステップ２５０１で取得したフレームワークソースコード１１６に挿入する。
【００９４】
ステップ２５０３では、データ対応テーブル（パーツ対応テーブル）１２０に登録されたデータ対応付け結果とパーツ実装情報テーブル１０９のパーツの情報からパーツ接続のコードを生成し、ステップ２５０１で取得したフレームワークのソースコードに挿入する。
【００９５】
ステップ２５０４では、フレームワークのソースコードから生成した生成プログラム１２３に「“機能名”．“使用言語の拡張子”」の形式でファイル名を付け、生成プログラム管理ディレクトリ１２２階層下に「“プロジェクト名”／“機能名”」の形式でディレクトリを作成し、そこに生成プログラム１２３を格納する。
【００９６】
図２５は、ステップ２５０２データ宣言挿入の処理のフローチャートである。図２５のステップ２６０１からステップ２６０３では、フレームワークソースコード１１６のグローバル変数挿入行の下へ、データ宣言コードの挿入を行う。
【００９７】
ステップ２６０１では、フレームワークソースコード１１６からグローバル変数挿入箇所を示すコメント行「/*#global data declaration#*/」を検索する。
【００９８】
ステップ２６０２では、データ管理テーブル１２１でデータデータ種別コードが「１」に合致するレコードの数だけステップ２６０３を繰り返す。
【００９９】
ステップ２６０３では、データ管理テーブル１２１の型と変数名から、「“型”  “変数名”；」の形式でデータ宣言コードを作成し、ステップ２６０１で取得したフレームワークソースコード１１６の行の下に挿入する。
【０１００】
ステップ２６０４では、プロジェクト作成・機能選択部１０１から受け取った機能ＩＤによりパーツ挿入箇所テーブル１１０からデータ宣言箇所を取得する。
【０１０１】
ステップ２６０５では、ステップ２６０４で取得したデータ宣言箇所の数だけステップ２６０６からステップ２６０８を繰り返す。
【０１０２】
ステップ２６０６では、ステップ２６０４で取得したデータ宣言箇所と、フレームワークソースコード１１６のローカル変数挿入箇所を示すコメント行「/*#local data declaration:X#*/」の「Ｘ」が合致する行を検索する。
【０１０３】
ステップ２６０７では、ステップ２６０６で取得したデータ宣言箇所とデータ管理テーブル１２１のデータ宣言箇所が合致し、かつデータ管理テーブル１２１のデータ種別コードが「２」のレコードを取得する。
【０１０４】
ステップ２６０８では、ステップ２６０７で取得したレコードから「“型”  “変数名”；」の形式でデータ宣言コードを生成し、ステップ２６０６で取得したフレームワークソースコード１１６の行の下に挿入する。
【０１０５】
図２６から図２８は、ステップ２５０３パーツ挿入の処理のフローチャートである。図２６から図２８は、パーツ入力データを設定するコード，パーツ呼出しコード，パーツ出力データを受け取るコードを生成し、生成したコードとパーツソースコード１１４をフレームワークソースコード１１６に挿入する。
【０１０６】
図２６のステップ２７０１では、プロジェクト作成・機能選択部１０１から受け取った機能ＩＤによりパーツ挿入箇所テーブル１１０からパーツ挿入箇所を取得する。
【０１０７】
ステップ２７０２では、ステップ２７０１で取得したパーツ挿入箇所の数だけステップ２７０３からステップ２９０６を繰り返す。
【０１０８】
ステップ２７０３では、パーツ挿入箇所テーブル１１０のパーツ挿入箇所とフレームワークソースコード１１６のパーツ挿入箇所を示すコメント「/*#parts insert:X#/」の「Ｘ」が合致する行を検索する。
【０１０９】
ステップ２７０４では、ステップ２７０１で取得したパーツ挿入箇所とパーツ実装情報テーブル１０９のパーツ挿入箇所が合致するレコードを取得する。
【０１１０】
ステップ２７０５からステップ２７０８では、パーツ入力データを設定するコードを生成し、フレームワークソースコード１１６に挿入する。
【０１１１】
ステップ２７０５では、ステップ２７０４で取得した入力データＩＤの数だけステップ２７０６からステップ２７０８を繰り返す。
【０１１２】
ステップ２７０６では、ステップ２７０４で取得したレコードの入力データＩＤとデータ対応テーブル（パーツ対応テーブル）１２０のパーツデータＩＤが合致するレコードを取得する。
【０１１３】
ステップ２７０７では、ステップ２７０６で取得したレコードのパーツデータＩＤと対応データＩＤが、データ管理テーブル１２１のデータＩＤと合致するレコードを各々取得する。
【０１１４】
ステップ２７０８では、ステップ２７０７で取得した各レコードから変数名を取得し、「入力データＩＤの“変数名”＝対応先データＩＤの“変数名”；」の形式でパーツ入力コードを生成し、ステップ２７０３で検索したパーツ挿入行の下に挿入する。
【０１１５】
図２７のステップ２８０１からステップ２８０６では、パーツ呼出しコードを生成し、フレームワークソースコード１１６に挿入する。
【０１１６】
ステップ２８０１では、ステップ２７０４で取得したレコードから関数名，パーツ格納先，入力データＩＤ，出力データＩＤ，返値データＩＤを取得する。
【０１１７】
ステップ２８０２で関数名が存在し、ステップ２８０３で返値データＩＤが存在する場合、ステップ２８０４が行われる。ステップ２８０４では、ステップ２８０１で取得したレコードの入力データＩＤ，出力データＩＤ，返値データＩＤに合致するレコードをデータ定義テーブル１１１から各々取得する。次に、取得した変数名とステップ２８０１で取得した関数名を使用し「返値データＩＤの“変数名”＝“関数名”（［“入力データ変数名”］，［“出力データ変数名”］）；」の形式でパーツ呼出しコードを生成し、フレームワークソースコード１１６でステップ２７０８の出力行の下に挿入する。
【０１１８】
ステップ２８０２で関数名が存在し、ステップ２８０３で返値データＩＤが存在しない場合、ステップ２８０５が行われる。ステップ２８０５では、ステップ２８０１で取得したレコードの入力データＩＤ、出力データＩＤに合致するレコードをデータ定義テーブル１１１から取得する。取得した変数名とステップ２８０１で取得した関数名を使用し「“関数名”（［“入力データ変数名”］，［“出力データ変数名”］）；」の形式でパーツ呼出しコードを生成し、フレームワークソースコード１１６のステップ２７０８の出力行の下に挿入する。
【０１１９】
ステップ２８０２で関数名が存在しない場合、ステップ２８０６が行われる。ステップ２８０６では、ステップ２８０１で取得したパーツ格納先を基にプログラムＤＢ１１２から取得したパーツソースコード１１４を、フレームワークソースコード１１６のステップ２７０８の出力行の下に挿入する。
【０１２０】
図２８のステップ２９０１からステップ２９０４では、パーツの出力データを受け取るコードを生成し、フレームワークソースコード１１６に挿入する。
【０１２１】
ステップ２９０１では、ステップ２７０４で取得したパーツ実装情報テーブル１０９の出力データＩＤ，返値データＩＤの数だけステップ２９０２からステップ２９０４を繰り返す。
【０１２２】
ステップ２９０２では、ステップ２９０１で取得した出力データＩＤまたは返値データＩＤとデータ対応テーブル１２０のパーツデータＩＤが合致するレコードを取得する。
【０１２３】
ステップ２９０３では、ステップ２９０２で取得したレコードのパーツデータＩＤと対応データＩＤが、データ管理テーブル１２１のデータＩＤと合致するレコードを各々取得する。
【０１２４】
ステップ２９０４では、ステップ２９０３で取得したレコードから変数名を取得し、「対応先データＩＤの“変数名”＝出力データＩＤ／返値データＩＤの“変数名”；」の形式でパーツ出力コードを生成し、フレームワークソースコード１１６で直前のステップ２８０４または２８０５または２８０６の出力行の下へ挿入する。
【０１２５】
ステップ２９０５では、ステップ２７０４で取得したレコードからパーツ格納先と関数名を検索する。
【０１２６】
ステップ２９０６では、ステップ２９０５の結果関数名が存在するかチェックし、存在する場合はステップ２９０７を行う。
【０１２７】
ステップ２９０７では、ステップ２９０５で検索したパーツ格納場所を基に、プログラムＤＢ１１２からパーツソースコード１１４を取得し、フレームワークソースコード１１６の最後に挿入する。
【０１２８】
図２９と図３０は、生成プログラム１２３の例である。図２９はＰａｒｔｓＡ１とフレームワークのデータを対応付けた結果、生成されるプログラムである。３００４はデータ入力コード、３００５はパーツ呼出しコード、３００６はデータ出力コードである。３００４，３００５，３００６は、パーツ接続部１０４で生成され、プログラム３０００のパーツ挿入行「/*#parts insert:1#*/」の下３００２に出力される。ＰａｒｔｓＡ１のパーツソースコード３００７は、プログラム３０００の最後の部分３００３に挿入される。
【０１２９】
図３０はＰａｒｔｓＢ２の出力データとＰａｒｔｓＣの入力データを対応付けた結果、生成されるプログラムである。グローバル変数の挿入箇所「/*#global data declaration#*/」の下に、パーツ接続用データｆｗ１２のデータ宣言コード３１０１が挿入される。データ出力コード３１０６では、パーツ接続用データｆｗ１２にＰａｒｔｓＢ２の出力データｂ２３を代入する。データ入力コード３１０７では、データ出力コード３１０６で設定したデータｆｗ１２をＰａｒｔｓＣの入力データｃ１１に代入する。また、ＰａｒｔｓＣは関数ではないため、ＰａｒｔｓＣのパーツソースコード３１０８は、生成プログラム３１００のパーツ挿入箇所「/*#parts insert:3#*/」３１０４のデータ入力コード３１０７の下に挿入される。一方、ＰａｒｔｓＢ２は関数のため、生成プログラム３１００の最後の部分３１０５にパーツソースコード３１１０が挿入される。
【０１３０】
次に、従来技術によるプログラム生成方法と、本発明のプログラム生成装置を使用したプログラム生成方法によるプログラム生成について述べる。
【０１３１】
図３１に、比較参考例としてのプログラムを挙げる。流用元のシステムからコンポーネント（３２０１，３２０２，３２０３）を切り出し、開発者がこれらのコンポーネントを接続するためのコード（３２０４）を作成する。
【０１３２】
図３２は、開発する機能の機能項目を表示した、本発明の機能モデル画面（３３０１）である。開発者は、機能モデル画面の各グループ（３３０２，３３０３，３３０４）から、要求された機能を実現するための機能項目を一つずつ選択する。
【０１３３】
図３３と図３４は、開発者が機能モデル画面（３３０１）で機能項目を選択した結果、表示されるデータ対応先指定画面（３４０１）である。開発者は、この画面でパーツデータ（３４０２）とフレームワークデータ（３４０３）、またはパーツデータ（３４０２）同士のデータの対応付けを行い、データ対応先指定結果（３５０１）にその対応付け結果が表示される。
【０１３４】
図３５は、開発者がデータ対応先指定画面（３４０１）で対応付けを行った結果、生成されるプログラムである。データ対応先指定結果（３５０１）から生成したパーツ接続用のコード（３６０２，３６０３，３６０４，３６０５，３６０６）と、機能モデル画面（３４０１）で選択した機能項目に対応するパーツソースコード（３６０７，３６０８，３６０９）をフレームワーク（３６０１）に挿入し、プログラムを自動生成する。
【０１３５】
このように、開発者が流用元システムからコンポーネントを切り出し、コンポーネントを接続するためのアダプタを作成しプログラムを開発しなくても、開発者が機能モデル画面での機能項目の選択とデータ対応先指定画面でのデータの対応付けを行うことで、プログラムを自動生成することができる。
【図面の簡単な説明】
【０１３６】
【図１】本発明の装置構成図である。
【図２】本発明の一実施例の機能管理テーブルを示す図である。
【図３】本発明の一実施例の機能モデル管理テーブルを示す図である。
【図４】本発明の一実施例の機能モデル画面を示す図である。
【図５】本発明の一実施例のパーツ挿入箇所テーブルを示す図である。
【図６】本発明の一実施例のフレームワークソースコードを示す図である。
【図７】本発明の一実施例のパーツ実装情報テーブルを示す図である。
【図８】本発明の一実施例のパーツソースコードを示す図である。
【図９】本発明の一実施例のデータ定義テーブルを示す図である。
【図１０】本発明の一実施例のプロジェクト名管理テーブルを示す図である。
【図１１】本発明の一実施例のプロジェクト名登録・機能選択画面を示す図である。
【図１２】本発明の一実施例の機能項目選択結果テーブルを示す図である。
【図１３】本発明の一実施例のデータ対応付け指定画面を示す図である。
【図１４】本発明の一実施例のデータ対応テーブルを示す図である。
【図１５】本発明の一実施例のデータ管理テーブルを示す図である。
【図１６】図１のプロジェクト作成・機能選択部のフローチャート図である。
【図１７】図１の機能項目選択部のフローチャート図である。
【図１８】図１のパーツ接続部のフローチャート図である。
【図１９】図１８のデータ対応先指定画面表示のフローチャート図である。
【図２０】図１８のデータ対応テーブル作成のフローチャート図である。
【図２１】図２０の一部分のフローチャート図である。
【図２２】図２０の一部分のフローチャート図である。
【図２３】図１８のデータ管理テーブル作成のフローチャート図である。
【図２４】図１のプログラム生成部のフローチャート図である。
【図２５】図２４のデータ宣言コードを挿入するフローチャート図である。
【図２６】図２４のパーツ接続コードを挿入するフローチャート図である。
【図２７】図２６の次に実行されるフローチャート図である。
【図２８】図２７の次に実行されるフローチャート図である。
【図２９】本発明で生成されるプログラムの例を示す図である。
【図３０】本発明で生成されるプログラムの別の例を示す図である。
【図３１】参考例による計測機能のプログラムを示す図である。
【図３２】本発明による計測機能の機能モデル画面を示す図である。
【図３３】図３２で選択した機能項目のデータ対応先指定画面を示す図である。
【図３４】図３３のデータ対応先指定画面の下部を示す図である。
【図３５】図３２と図３３から生成されるプログラムを示す図である。
【符号の説明】
【０１３７】
１００  プログラム生成装置
１０１  プロジェクト作成・機能選択部
１０３  機能項目選択部
１０４  パーツ接続部
１０５  プログラム生成部
１０６  管理データＤＢ
１０７  機能管理テーブル
１０８  機能モデル管理テーブル
１０９  パーツ実装情報テーブル
１１０  パーツ挿入箇所テーブル
１１１  データ定義テーブル
１１２  プログラムＤＢ
１１３  パーツソースコード管理ディレクトリ
１１４  パーツソースコード
１１５  フレームワークソースコード管理ディレクトリ
１１６  フレームワークソースコード
１１７  プロジェクト情報ＤＢ
１１８  プロジェクト名管理テーブル
１１９  機能項目選択結果テーブル
１２０  データ対応テーブル
１２１  データ管理テーブル
１２２  生成プログラム管理ディレクトリ
【図１】
2009176076.tif 000003
【図２】
2009176076.tif 000004
【図３】
2009176076.tif 000005
【図４】
2009176076.tif 000006
【図５】
2009176076.tif 000007
【図６】
2009176076.tif 000008
【図７】
2009176076.tif 000009
【図８】
2009176076.tif 000010
【図９】
2009176076.tif 000011
【図１０】
2009176076.tif 000012
【図１１】
2009176076.tif 000013
【図１２】
2009176076.tif 000014
【図１３】
2009176076.tif 000015
【図１４】
2009176076.tif 000016
【図１５】
2009176076.tif 000017
【図１６】
2009176076.tif 000018
【図１７】
2009176076.tif 000019
【図１８】
2009176076.tif 000020
【図１９】
2009176076.tif 000021
【図２０】
2009176076.tif 000022
【図２１】
2009176076.tif 000023
【図２２】
2009176076.tif 000024
【図２３】
2009176076.tif 000025
【図２４】
2009176076.tif 000026
【図２５】
2009176076.tif 000027
【図２６】
2009176076.tif 000028
【図２７】
2009176076.tif 000029
【図２８】
2009176076.tif 000030
【図２９】
2009176076.tif 000031
【図３０】
2009176076.tif 000032
【図３１】
2009176076.tif 000033
【図３２】
2009176076.tif 000034
【図３３】
2009176076.tif 000035
【図３４】
2009176076.tif 000036
【図３５】
2009176076.tif 000037