(57)【要約】【課題】  ソフトウェア開発の素人でも、カスタムメイドのソフトウェアを生成できる手段を提供する。【解決手段】  ソフトウェアの要素を、種類・画面構成・メタデータ・機能・実行環境の五つの要素で切り分けて、個々の要素を具体化することにより、ソフトウェアの自動化を実現する。従って、GUIなどの方法で素人である利用者と、対話的に個々の要素を決定することかが可能となり、ソフトウェアを素人が専門家を介さずに、直接生成することが実現できる。【選択図】 図３
2007011603.tif 000002
【特許請求の範囲】
【請求項１】
要求されたソフトウェアの五つの要素（種類・画面構成・メタデータ・機能・実行環境）に基づきソフトウェアを自動生成する装置であって、ソフトウェアの五つの要素（種類・画面構成・メタデータ・機能・実行環境）を入力する為の入力部と、自動生成されたソフトウェアや自動生成状況を表示する為の表示部と、自動生成命令を受けて、ソフトウェアの五つの要素（種類・画面構成・メタデータ・機能・実行環境）の解析を行い出力するプログラムを決定し、そのプログラム生成しコンパイルを行う制御部を備えたソフトウェア自動生成装置。
【請求項２】
要求されたソフトウェアの五つの要素（種類・画面構成・メタデータ・機能・実行環境）に基づきソフトウェアを自動生成するプログラムであって、自動生成命令を受けて、ソフトウェアの五つの要素（種類・画面構成・メタデータ・機能・実行環境）の解析を行い出力するプログラムを決定し、そのプログラムをコンパイルする処理をコンピューターに行わせるためのソフトウェア自動生成プログラム。
【請求項３】
ネットワークを介して端末装置と通信可能であり、端末装置から送られてくるソフトウェアの五つの要素（種類・画面構成・メタデータ・機能・実行環境）を受信するソフトウェア自動生成サーバ装置であって、送信されてきたソフトウェアの五つの要素（種類・画面構成・メタデータ・機能・実行環境）と、解析結果に基づいて生成するプログラムを決定し、そのプログラムをコンパイルするソフトウェア自動生産部を備えたサーバ装置。
【請求項４】
ネットワークを介して端末装置と通信可能であり、端末装置から送られてくるソフトウェアの五つの要素（種類・画面構成・メタデータ・機能・実行環境）を受信するソフトウェア自動生成サービスプログラム（デーモンプログラム）であって、自動生産命令を受けてソフトウェアの五つの要素（種類・画面構成・メタデータ・機能・実行環境）の解析を行い出力するプログラムを決定し、そのプログラムをコンパイルする処理をコンピューターに行わせるためのソフトウェア自動生成サービスプログラム。
【請求項５】
請求項１〜4において、コンパイル処理まで行わず、プログラムを直接出力する事を特徴とするもの。
【請求項６】
他の請求項の内容に加えて、データベース管理システムなどを用いて要求履歴やソフトウェアの要素に関する情報を記録しておき、その情報に基づいてヴァージョンアップや修正に対応出来るセットアップ用ソフトや、インストールソフトを自動生成できる機能を付け加えたもの。
【請求項７】
他の請求項の内容に加えて、データベース管理システムなどに、システムを実現する為に必要なソフトウェアとその関連を管理することによって、複数のソフトウェアを要するシステムを自動生成できることを特徴とするもの。
【請求項８】
他の請求項に加えて、データベース管理システムを用いてソフトウェアの５要素に関するオブジェクトを管理し、自動生成システムを動的プログラミングできることを特徴としたもの。
【請求項９】
他の請求項に加えて、ソフトウェア要素をXMLファイルとして出力し、同じプログラムまたはソフトウェアを、何度でも自動生成処理できるもの。
【請求項１０】
他の請求項または請求項の組み合わせを使用したビジネスモデル。
【請求項１１】
請求項９に加えて、利用者情報とプログラムもしくはソフトウェアの購入履歴を用いて、よりきめ細かいサービスを提供するビジネスモデル。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ソフトウェアのメタ情報である、ソフトウェアの種類・画面構成・メタデータ・機能・実行環境を利用し、専門家以外でもソフトウェアを作成可能にする為の技術に関するものである。
【背景技術】
【０００２】
ソフトウェアの生産性を高める為に、ソフトウェアの要求書や特殊な図面などを指定すれば、これに対応するプログラムを自動生成するシステムが広く知られている。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、従来の技術は基本的に専門家を利用対象とするものであり、専門家以外は利用できず、素人がソフトウェアを手に入れる方法は、市販ソフトを購入するか、ベンダに依頼しなくてはならないという問題点があった。
【０００４】
従って素人は望む機能だけを持つカスタムソフトウェアを、安価かつ迅速に入手することは不可能であった。
【０００５】
また、今日のソフトウェア開発は、ベンダだけではなくソフトウェア開発の素人である発注者が共同で作る必要性が高まってきており、この事柄はソフトウェア開発の困難性を高める要因となっている。
【課題を解決するための手段】
【０００６】
そこでこの発明は、専門家以外でもソフトウェアを容易に作成出来る技術を提供し、専門家以外でもソフトウェアを作成可能にする事と、より円滑に素人と専門家が協力してソフトウェア開発作業を行える事を目的としている。
【０００７】
（１）この発明に係るソフトウェア自動生産装置およびソフトウェア自動生産プログラムは、ソフトウェアを種類・画面構成・メタデータ・機能・実行環境の五つの要素で切り分けて、ソフトウェアの自動生成化を実現するものであって、ソフトウェアの種類・画面構成・メタデータ・機能・実行環境を入力する為の入力部と、自動生成されたソフトウェアや、ソフトウェアを種類・画面構成・メタデータ・機能・実行環境を表示する為の表示部と、ソフトウェアの種類・画面構成・メタデータ・機能・実行環境からプログラムを自動生成し必要な場合コンパイルを行う為の制御部とを備えている。
【０００８】
この発明がソフトウェアを五つの要素で切り分けている目的は、「利用者の理解度の向上」と、「この発明の実現容易化」を図ることである。
【０００９】
なお、一般的にソフトウェアはコンピューターにインストールするプログラムが必要であり、これらインストールプログラム、セットアッププログラム等も自動生成する範囲に含まれる。
【００１０】
請求項１および請求項２におけるソフトウェア自動生成処理は、ソフトウェアを種類・画面構成・メタデータ・機能・実行環境の五つの要素を分析し、ソフトウェアもしくはシステムに必要な全てのプログラムを自動生成とともに、コンパイルまで行い、ソフトウェアを自動で生産できることを特徴とするものである。
【００１１】
請求項3におけるソフトウェア自動生成サーバ装置は、ネットワークを介して端末装置と通信可能であり、端末装置から送られてくる自動生成命令とソフトウェア要素（ソフトウェアの種類・画面構成・メタデータ・機能・実行環境）を受信するソフトウェア自動生成装置であって、送信されてきた要求内容（ソフトウェアの種類・画面構成・メタデータ・機能・実行環境）を解析する解析部と、要求内容および解析結果を保持するデータ記録部と、その解析結果に基づきプログラムを出力し、それをコンパイルする事によりソフトウェアを自動生成する自動生成部を備えている。
【００１２】
請求項５におけるソフトウェア自動生成処理は、コンパイルを行わないことを特徴としている。この方式は、予期しない部類のソフトウェアの開発支援に使用する場合や、ソフトウェアの自動生成処理を実装出来ていないソフトウェアを生産する場合や、プログラム自体を必要としている場合などに対応する為の方式である。
【００１３】
請求項6におけるソフトウェア自動生成処理、もしくはプログラム自動生成処理は、ソフトウェアに必ず起こるソフトウェアのヴァージョンアップや更新を容易に行うために、自動生成履歴情報を元に、セットアッププログラム、または、セットアップソフトウェアを作成するものであり、これに類似する一連のものである移行ツールや、パッチプログラムなどもこれに含む。
【００１４】
請求項7におけるソフトウェア自動生成処理、もしくはプログラム自動生成処理は、複数のソフトウェアを必要とするシステムに必要なソフトウェアと、その関連をデータベースなどで管理し、その情報を解析して、その解析結果に基づきシステムを自動生成するものである。
【００１５】
本発明の自動生成処理を実現するには、数々のオブジェクトを作成する必要がある。しかしながら、新しいオブジェクトを作成する為に、頻繁に自動生成処理プログラムを編集するのは効率が悪い。
【００１６】
この問題点を改良する為に、ソフトウェアの５つの要素に関係するオブジェクトをデータベースで管理し、自動生成処理プログラムを、動的プログラミング可能なものとするのが、請求項8である。
【００１７】
請求項９におけるXMLファイル生成機能は、ある時点でのソフトウェア要素をXMLファイルとして記録しておくことにより、他の利用者が同じソフトウェアまたはプログラムの取得を支援したり、複数のヴァージョンのソフトウェアまたはプログラムを再現することを可能とするものである。
【００１８】
請求項１０における本発明を用いたビジネスモデルは、GUI画面により利用者と対話的にソフトウェアの五つの要素（種類・画面構成・メタデータ・機能・実行環境）を決定しソフトウェアを自動生成し、そのソフトウェアを提供するものである。
【００１９】
また、プログラムの自動生成を行い、そのプログラムを提供することもこのビジネスモデルに含める。
【００２０】
請求項１１における本発明を用いたビジネスモデルは、購入履歴を元に作成した、利用者に適したGUI画面により、利用者と対話的にソフトウェアの五つの要素（種類・画面構成・メタデータ・機能・実行環境）を決定し、今までの購入履歴と利用者情報を考慮してソフトウェアを自動生成し、そのソフトウェアを提供するものである。
【００２１】
また、プログラムの自動生成を行い、そのプログラムを提供することもこのビジネスモデルに含める。
【発明の効果】
【００２２】
本発明を使用した効果は、利用するものの役割により２つの視点がある。まず一つ目に、ソフトウェア開発の素人が本発明を使用した場合、カスタマメイドソフトウェアを、他者を介さずにすばやく入手できる。二つ目に、ソフトウェア開発の専門家が本発明を使用した場合、お客であるソフトウェアの素人との円滑な意思疎通が行える上に、すばやく開発が出来るので，お客の満足度向上、および、ソフトウェア品質の向上が図れる。
【発明を実施するための最良の形態】
【００２３】
この発明において、「ソフトウェアの画面構成」とは、ソフトウェア自動生成処理において、GUIオブジェクトの決定、および、GUIオブジェクトの配置方法を示すものであり、利用者が視覚的にソフトウェアを捉えるためのものである。
【００２４】
この発明において、「ソフトウェアのメタデータ」とは、データベースなどを用いて、ソフトウェアがなんらかのデータを管理する場合に必要となる「データベース名」、「テーブル名」、「列名」、「データの型」、「タグ名」・・・などのデータを定義するデータである。
【００２５】
この発明において、「ソフトウェアの機能」とは、「データの登録機能」、「データの更新機能」、「データの削除機能」、「印刷機能」、「ファイル保存機能」・・・などのソフトウェアの動作を指し示すものである。
【００２６】
この発明において、「ソフトウェアの種類」とは、他の要素である画面構成・メタデータ・機能を絞る為の情報であり、利用者の利便性を高める為のものである。またより生産際を高める為に、画面構成・メタデータ・機能をまとめた集合の識別子としての役割も果たすものである。
【００２７】
この発明において、「ソフトウェアの実行環境」とは、自動生成したソフトウェアを実際に実行する環境、すなわち、OS、ハードウェア構成、システム構成（イントラネット、インターネット、スタンドアロン・・・）などの事柄を示している。ソフトウェアの自動生成時に実行環境を考慮することにより、より最適化されたソフトウェアを自動生成できるものであり、ソフトウェアの実行環境は、自動生成処理によって生成するプログラムの言語を特定する役割も果たしている。
【００２８】
また、後に実行環境だけを変更して新しい環境のプログラムまたはソフトウェアを自動生成するので、クロスコンパイラの役割を果たすことも出来る。
【００２９】
本発明の「プログラム」とは、コンピューターによって直接可能なものだけなく、ハードディスクなどにインストールすることによって実行可能となるものを含む概念である。また、圧縮されたり、暗号化されたりしたものも含む概念である。
【００３０】
本発明の「動的プログラミング」もしくは「動的プログラム」とは、あらかじめコーディングしたオブジェクトのメソッドを呼び出すのではなく、プログラム実行時に適切なオブジェクトを生成し、そのオブジェクトを利用することを示している。
【００３１】
―  目次  ―
１  第一の実施形態
（１） 装置の全体構成と動作概要
（２） ハードウェア構成
（３） ソフトウェア自動生成処理
（４） セットアッププログラム作成処理
（５） データオブジェクトコード作成処理
（６） オブジェクトコード作成処理
（７） 請求項６を適用した場合の改良案
（８） 請求項７を適用した場合の改良案
（９） 請求項８を加えた場合の改良案
（１０）ソフトウェアメタデータ確定処理
２  第二の実施形態
（１） システムの全体構成
（２） 全体的な処理の流れ
【００３２】
１． 第一の実施形態
（１）装置の全体構成と動作概要
図１にこの発明の一実施形態によるソフトウェア自動生成装置の全体構成を示す。入力部１０は、ソフトウェア要素選択、ソフトウェア要素決定、ソフトウェア要素の値入力、ソフトウェア自動生成開始命令などを入力する為のものである。
【００３３】
ソフトウェア自動生成装置が起動されると、ソフトウェア要素を対話的に決定する為にGUI画面が表示部１６に表示される。
【００３４】
入力部１０を使用して、「ソフトウェアの種類」をGUI画面で選択する。すると、制御部１２は選択したソフトウェアの種類に該当する他のソフトウェア要素を選別し、表示部１６に選択できるソフトウェア要素を表示する。
【００３５】
入力部１０でソフトウェア要素を選択すると、制御部１２は選択されたソフトウェア要素の詳細を選別する。そして、表示部１６に決定するべき詳細をGUI画面で表示する。利用者は表示されたソフトウェアの詳細情報を、入力部１０を用いて決定する。
【００３６】
上記処理段落番号００３３〜００３６を利用者が望む回数繰返す。
【００３７】
処理が終わったら、利用者は繰り返し処理を終了し、ソフトウェア自動生成処理を実行することを制御部１２指示する為に、入力部１０を用いてソフトウェア自動生成命令を制御部１２に送る。
【００３８】
制御部１２は記憶部１４に格納されている、ソフトウェア自動生成プログラムの自動生成命令を実行する。
【００３９】
そして自動生成処理が完了すると、制御部１２は表示部１６で処理が完了した事を表示する。
【００４０】
（２）ハードウェア構成
図１の制御部１２を、CPU２０を用いて実現した場合のハードウェア構成を図２に示す。図２において、CPU２０には、メモリ２２、表示部であるディスプレイ１６、入力部であるキーボード１０、もうひとつの入力部であるマウス２４、記憶部であるハードディスク１４、CD-ROMドライブ２６が接続されている。ハードディスク１４には、ソフトウェア自動生成プログラム３０、オペレーティングシステム（OS）３２が記憶されている。ソフトウェア自動生成プログラム３０は、CD-ROMドライブ２６を介して、CD-２８からインストールされたものである。
【００４１】
（３）ソフトウェア自動生成処理
図３に自動生成処理の全体をフローチャートにて示す。自動生成処理プログラム３０は、オペレーティングシステム３２と協働して、図３の処理を行う。ただし、その一部または全部の処理を、自動生成処理プログラム３０単独で行うようにしても良い。
【００４２】
なおエラー処理については、説明をいたずらに複雑化させないために割愛する。
【００４３】
GUI画面を用いて対話的にソフトウェア要素の詳細を決定後、そのデータを渡されて始めて、自動生成処理プログラム３０が開始する（ステップS1）
【００４４】
ソフトウェア要素に基づき、自動生成されたソフトウェアをインストールする為のプログラム（ここではセットアッププログラムと呼ぶ）を自動生成する処理を実行する（ステップS２。
【００４５】
ただし、この処理はステップS１３の直前に行ってもよい）。このセットアッププログラムの詳細については、（４）のセットアッププログラム作成処理で示す。
【００４６】
次のステップS3では、自動生成するソフトウェアがデータベースを必要とするかをソフトウェアメタデータに基づき判定する。
【００４７】
自動生成するソフトウェアにデータベースが必要なら、データのプログラムを生成するデータオブジェクトコード作成処理を行う（ステップS4）この処理の詳細については、（５）のデータオブジェクトコード作成処理で示す。
【００４８】
自動生成するソフトウェアに必要なオブジェクトを導出し、後で必要オブジェクトを判定できるように配列に保持する。
【００４９】
ステップS５で導出したオブジェクトの必要数を算出し、変数に代入する（ステップS６）。
【００５０】
実行済みオブジェクト数を把握する為の変数を初期化する（ステップS７）
【００５１】
全ての作成するべきコードが生成されたかを判定する為に、必要オブジェクトが実行済みオブジェクトの数より多いかどうかを判定する。判定した結果、必要オブジェクトが実行済みオブジェクトの数より多い場合ステップS９へ、そうでない場合ステップS１２へ進む（ステップS8）
【００５２】
配列から初期化するべきオブジェクトを取り出し、オブジェクトを初期化する処理を判断する。（ステップS９）。
【００５３】
実行済みオブジェクト数をカウントする（ステップS１０）。
【００５４】
生成したオブジェクトのコード作成処理用メソッドを呼び出す。コード生成処理については（６）で詳しく説明する（ステップS１１）。
【００５５】
作成されたプログラムをコンパイルし、ソフトウェアを生成する（ステップS１２）。
【００５６】
ソフトウェア自動生成処理を終了する（S１３）。
【００５７】
（４）セットアッププログラム作成処理
図４にセットアッププログラム作製処理（上）、図５にセットアッププログラム作成処理（下）を示す。セットアッププログラム作成処理は、自動生成されたソフトウェアをインストールする為に必要な、プログラムまたはソフトウェアを作成するものであり、自動生成処理プログラム３０と、オペレーティングシステム３２と協働して、図４および図の処理を行う。ただし、その一部または全部の処理を、セットアッププログラム作成処理と自動生成処理プログラム３０の組み合わせで行うようにしても良い。
【００５８】
自動生成処理プログラム３０で呼び出すと、セットアッププログラム作成処理を開始する（ステップS１）
【００５９】
後でコンパイルする為にセットアッププログラムのファイルを作成する（ステップS２）。
【００６０】
ソフトウェア環境の分析結果、特にソフトウェアが実行するオペレーティングシステムの情報を考慮し、そのオペレーティングシステムにインストールする為の基本処理プログラムをプログラムファイルに書き込む（ステップS３）。
【００６１】
自動生成するソフトウェアがデータを必要とするかを、指定されたソフトウェア要素から判別する。そして、必要でない場合は、ステップS５へ進み、必要な場合はステップS６へ進む（ステップS４）。※この実施例では、データをデータベースで扱う場合を想定している。
【００６２】
ステップS１１へ処理を移す（ステップ５）
【００６３】
データベースに書き込む場合は、一連の処理が失敗した場合に、処理をロールバックする必要があるので、トランザクションを開始するSQL文を実行するコードをプログラムファイルへ書き込む（ステップS６）
【００６４】
データベースを作成する為に「CREATE DATABASE」SQL文を実行するコードをプログラムファイルへ書き込む（ステップS７）
【００６５】
処理済テーブルをカウントする為の変数を初期化する（ステップS8）
【００６６】
自動生成するソフトウェアが必要とするテーブル数を分析し、その数を変数へセットする（ステップS９）。
【００６７】
処理済カウント数よりも処理するべきテーブル数が多い場合、ステップS１４へ、そうでない場合はステップS１１へ進む。
【００６８】
一連のSQL文の実行結果を確定する為に、トランザクション確定用SQL文発行コードをプログラムファイルへ書き込む（ステップS１１）。
【００６９】
インストールプログラムがまだ必要な場合、インストールプログラムをプログラムファイルへ書き込む（ステップS１２）
【００７０】
ソフトウェア自動生成処理図３のステップS３へ進む（ステップS１３）。
【００７１】
処理するするテーブルに対応する「CREATE TABEL」文を発行するコードをプログラムファイへ書き込む（ステップS１４）。
【００７２】
処理済カラムをカウントする為の変数を初期化する（ステップS１５）。
【００７３】
現在処理対象となっているテーブルに必要なカラム数を分析し、その数を変数へセットする（ステップS１６）。
【００７４】
処理済カラムのカウント数よりも処理対象カラム数が多い場合、ステップS1９の処理を行い、そうでない場合ステップ１８の処理を行う（ステップS１７）。
【００７５】
処理済テーブル数をカウントする（ステップS１８）。
【００７６】
処理済カラム数をカウントする（ステップS２０）。
【００７７】
（５）データオブジェクトコード作成処理
図７にデータオブジェクトコード作成処理を示す。この処理は、ソフトウェアのメタデータに対応するプログラムを作成する為のものである。
【００７８】
なお、この処理は使用する言語によって異なるのであくまでも参考例であり、使用する言語がプリコンパイラ、プロパティなどのサポートしない機能がある場合は、処理ステップを無視する。それに加えて、データ管理用としてはもっとも一般的である、リレーショナル・データベース・マネージメント・システムを用いて、データ中心アプローチの考え方に基づいて処理を記述しているので、RDBMSを利用しない場合、処理を調節する必要がある。
【００７９】
自動生成処理プログラム３０で呼び出すと、データオブジェクトコード作成処理を開始する（ステップS１）
【００８０】
データオブジェクトをコンパイルする為のファイルを作成する（ステップS２）。
【００８１】
例えばC言語でのプリコンパイラなどの、コンパイラ処理を制御する為のコード、または、名前空間の前に必要とするコードをプログラムファイルへ書き込む。（ステップS３）
【００８２】
作成するオブジェクトが属する名前空間を宣言するコードを、プログラムファイルへ書き込む（ステップS４）。
【００８３】
オブジェクトを宣言する為のコードを、プログラムファイルへ書き込む（ステップS５）。
【００８４】
必要とする変数を宣言する為のコードを、プログラムファイルへ書き込む（ステップS６）。
【００８５】
データオブジェクトがもつプロパティ宣言コード、および処理内容コードを、プログラムファイルへ書き込む（ステップS７）
【００８６】
データオブジェクトがもつコンストラクタ宣言コード、および処理内容コードを、プログラムファイルへ書き込む（ステップS８）
【００８７】
データオブジェクトがもつメタデータ設定メソッド宣言コード、および処理内容コードを、プログラムファイルへ書き込む（ステップS９）。このメタデータ設定メソッドとは、テーブルの列や型などのデータそのものの情報を表現する為のコードである。
【００８８】
データオブジェクトがもつ、データを生成する為のINSERTメソッド宣言コード、および処理内容コードを、プログラムファイルへ書き込む（ステップS１０）。
【００８９】
データオブジェクトがもつ、データ更新処理を行うためのUPDATEメソッド宣言コード、および処理内容コードを、プログラムファイルへ書き込む（ステップS１１）。
【００９０】
データオブジェクトがもつ、データ消滅処理を行うためのDELETEメソッド宣言コード、および処理内容コードを、プログラムファイルへ書き込む（ステップS１２）。
【００９１】
使用するリレーショナル・データベース・マネージメント・システムによって、必要となる処理は異なる。一般的な操作であるデータの発生、更新、消滅以外に必要な処理がある場合は、さらにメソッドのコードをプログラムファイルへ書き込む（ステップS１３）。
【００９２】
プログラムファイルを閉じて、書き込んだコードを確定する（ステップS１４）。
【００９３】
ソフトウェア自動生成処理図３のステップS５へ進む（ステップS１５）。
【００９４】
（６）オブジェクトコード作成処理
図７にオブジェクトコード作成処理コード作成処理の全体図を示す。オブジェクトコード作成処理コード作成処理は、自動生成処理プログラム３０と、オペレーティングシステム３２と協働して、図６の処理を行う。ただし、その一部または全部の処理を、オブジェクトコード作成処理自動生成処理プログラム３０の組み合わせで行うようにしても良い。
【００９５】
なお、この処理は使用する言語によって異なるのであくまでも参考例であり、使用する言語がプリコンパイラ、プロパティなどのサポートしない機能がある場合は、処理ステップを無視する。
【００９６】
自動生成処理プログラム３０で呼び出すと、オブジェクトコード作成処理を開始する（ステップS１）
【００９７】
任意のオブジェクトをコンパイルする為のファイルを作成する（ステップS２）。
【００９８】
例えばC言語でのプリコンパイラなどの、コンパイラ処理を制御する為のコード、または、名前空間の前に書く必要があるコードをプログラムファイルへ書き込む（ステップS３）
【００９９】
作成するオブジェクトが属する名前空間を宣言するコードを、プログラムファイルへ書き込む（ステップS４）。
【０１００】
オブジェクトを宣言する為のコードを、プログラムファイルへ書き込む（ステップS５）。
【０１０１】
必要とする変数を宣言する為のコードを、プログラムファイルへ書き込む（ステップS６）。
【０１０２】
オブジェクトがもつプロパティ宣言コード、および処理内容コードを、プログラムファイルへ書き込む（ステップS７）
【０１０３】
オブジェクトがもつコンストラクタ宣言コード、および処理内容コードを、プログラムファイルへ書き込む（ステップS８）
【０１０４】
ソフトウェア機能を分析し、オブジェクトが持つべきメソッドの数を算出する（ステップS９）。
【０１０５】
変数を初期化して必要メソッドを格納する（ステップS１０）。
【０１０６】
処理済メソッド数を保持する変数を初期化する（ステップS１１）。
【０１０７】
処理済メソッド数よりも必要メソッド数が多い場合、ステップS１３へ、そうでない場合、ステップS１５へ処理を進める（ステップS１２）。
【０１０８】
メソッドのコードを作成する（ステップS１３）。
【０１０９】
処理済メソッド数をカウントする（ステップS１４）。
【０１１０】
プログラムファイルを閉じる（ステップS１５）。
【０１１１】
処理を終了して、図3のS８へ処理を進める（ステップS１６）。
【０１１２】
（７）請求項６を適用した場合の改良案
請求項６を適用したセットアッププログラムの処理について図８・図９・図１０に示す。セットアッププログラム作成処理は、自動生成処理プログラム３０と、オペレーティングシステム３２と協働して、図８・図９・図１０の処理を行う。ただし、その一部または全部の処理を、セットアッププログラム作成処理と自動生成処理プログラム３０の組み合わせで行うようにしても良い。
【０１１３】
なお、エラー処理については、使用するプログラム言語により異なるので割愛する。また、図４の全体を加えて解説すると説明が冗長になり、理解の妨げにもなるので、改良された点だけを説明する。
【０１１４】
改良されたセットアッププログラム作成処理では、すでにデータベースが存在している場合も考慮し、データベースを既に作成しているかを判定し、存在していない場合のみデータベース作成処理を行う（ステップN１）。
【０１１５】
改良されたセットアッププログラム作成処理では、すでにテーブルが存在している場合も考慮し、テーブルの存在チェックを行い、存在している場合は大幅に処理内容が異なり、図７Cに示している処理を行うことになる（ステップN２）。
【０１１６】
なお、ステップS１０の必要テーブル数の算出処理は、既存テーブル数＋新規必要テーブル数を合計したものに変更する必要がある。
【０１１７】
処理対象となるテーブルが、削除対象かどうかを判定する。この判定処理は、要求されたソフトウェアのメタデータに、処理対象となるテーブルの存在有無をチェックする事で行う。そして、判定の結果、削除の必要性がある場合はステップN４へ、必要性がない場合はステップN５へ処理を進める（ステップN３）。
【０１１８】
「DROP TABELE」SQL文を発行するコードを作成し、プログラムファイルへ書き込む（ステップN４）。
【０１１９】
「ALTER TABELE」SQL文を発行するコードを作成し、プログラムファイルへ書き込む（ステップN５）。
【０１２０】
処理済カラム数をカウントする変数を初期化する（ステップN６）。
【０１２１】
要求されたソフトウェアのメタデータから必要カラム数を算出し、変数に格納する（ステップN７）。
【０１２２】
処理済カラムのカウント数よりも処理対象カラム数が多い場合、ステップN９の処理を行い、そうでない場合ステップ１８の処理を行う（ステップS１７）。
【０１２３】
要求されたソフトウェアのメタデータから、処理対象カラムが更新対象となっているかを判定する。判定の結果、更新列ならステップN１０へ、そうでない場合ステップN１１へ処理を進める（ステップN９）
【０１２４】
「ALTER COLUMN」SQL文を発行するコードを作成し、プログラムファイルへ書き込む（ステップN１０）。
【０１２５】
要求されたソフトウェアのメタデータから、処理対象カラムが削除対象となっているかを判定する。判定の結果、削除列ならステップN１３へ、そうでない場合ステップN１２へ処理を進める（ステップN１１）
【０１２６】
「ALTER  COLUMN」SQL文を発行するコードを作成し、プログラムファイルへ書き込む（ステップN１２）。
【０１２７】
「DROP  COLUMN」SQL文を発行するコードを作成し、プログラムファイルへ書き込む（ステップN１３）。
【０１２８】
処理済テーブル数をカウントする（ステップN１４）。
【０１２９】
（８）請求項７を適用した場合の改良案
請求項７を適用した場合の改良案を解説する。この改良案を適用すると、GIUにより対話的に、ソフトウェア要素を決定する処理の際に、まず始めにシステムを選択する手順が増える。すなわち、全体的な模範的処理の流れは、システム決定→ソフトウェアの種類決定→ソフトウェアの実行環境決定→ソフトウェアのメタデータ決定→ソフトウェアの画面構成を決定→ソフトウェアの機能決定となる。
※GUIで決定できる要素が選択できるため、実際は一方向の流れではなく、利用者が任意の順できめられるが、解説を簡易にする為、模範的な流れを示している。
【０１３０】
（９）請求項８を加えた場合の改良案
請求項８を（３）で示した、ソフトウェア自動生成処理に請求項７の内容を加えたものに、適用する場合の改良実施案を説明する。請求項８を適用する場合、要点は二つである。まず一つ目は、ソフトウェア要素をデータベース化する場合の、GIUによる対話的ソフトウェア要素決定処理であり、この処理を図１０・図１１・図１２に、ソフトウェア要素決定処理中の、ソフトウェアのメタデータ確定処理を図１４と図１５に示す。そして必要となるテーブルの構造を図１６に示す。
【０１３１】
なお、このテーブル構成は、理解が容易になるように、処理効率を考えずに、単純に第三正規化まで正規化を行っている。
【０１３２】
それに加えて、この改良実施案を適用する際には既存処理を変更点する必要がある。図３ステップS５の最適オブジェクト導出処理であり、この処理は、ソフトウェア要素をデータベースで管理し、SQL文を発行するように変更する必要がある。
【０１３３】
まずは図８と図９のGIUにより対話的にソフトウェア要素を決定する処理（これからはソフトウェア要素決定処理と呼ぶ）を説明する。
【０１３４】
なお、この処理の流れは、GUIで決定できる要素が選択できるため、実際は一方向の流れではなく、利用者が任意の順できめられるが、解説を簡易にする為に、システム決定→ソフトウェアの種類決定→ソフトウェアの実行環境決定→ソフトウェアのメタデータ決定→ソフトウェアの画面構成を決定→ソフトウェアの機能決定の流れで処理を行うと仮定する。
【０１３５】
また、この実施案改良案は、ソフトウェアの画面構成を追加などの柔軟性を高め、より高度化することは可能だが、基本的にこの発明は専門家以外の者を対象としているので、ここでは処理は、列の追加だけに限定している。
【０１３６】
ソフトウェア要素決定処理は、利用者にシステムを表示することからはじめる。そのために、まずはシステムテーブル（T１）を使用して、SQL文「SELECT システム名, システム説明 FROM システム」を発行する（ステップＳ１）。
【０１３７】
ステップＳ１で取り出したシステム名を、GUI画面のリストボックスなどのGUI部品に全て表示する（ステップＳ２）。
【０１３８】
利用者は選択すると表示される説明を参考にし、キーボード（入力部１０）とマウス（入力部２４）を使用して、自動生成するソフトウェアシステムを選択する（ステップＳ３）。
【０１３９】
利用者が選択を確定すると、システムテーブル（Ｔ１）と、ソフトウェア種類テーブル（Ｔ２）、システム構成テーブル（Ｔ３）を使用して、SQL文
「SELECT ソフトウェア種類.種類名, ソフトウェア種類. 種類説明 FROM システムINNER JOIN システム構成 ON システム.システムID = ソフトウェア種類.システムID INNER JOIN システム構成ON システム構成.種類ID = ソフトウェア種類.種類ID WHERE システム.システムID = (利用者が選択したシステムのID)」を発行して、選択したシステムが必要とするソフトウェアをテーブルから抽出する。
【０１４０】
なお、ここでのソフトウェアの種類とは、ソフトウェアそのものをデータ化したものを示している（ステップＳ４）。
【０１４１】
抽出したソフトウェアの種類名を、GUI画面のリストボックスなどのGUI部品に全て表示する（ステップＳ５）。
【０１４２】
表示されたデータの数が０個であるかを判定し、0個でない場合はステップＳ８へ、０個の場合ステップＳ７へ処理を進める（ステップＳ６）。
【０１４３】
利用者にソフトウェア要素決定処理が終了しても良いか問いかけ、利用者はキーボード（入力部１０）とマウス（入力部２４）を使用して終了有無を指示する。そして、終了する場合は処理を終了し、そうでない場合はステップS８へ処理を進める（ステップＳ７）。
【０１４４】
利用者は選択すると表示される説明を参考にし、キーボード（入力部１０）とマウス（入力部２４）を使用して、自動生成するソフトウェアの種類を選択する（ステップＳ８）。
【０１４５】
利用者が選択を確定すると、ソフトウェア種類テーブル（Ｔ２）と、実行環境テーブル（Ｔ４）と、稼動可能環境テーブル（Ｔ５）を使用して、SQL文
「SELECT実行環境.実行環境名, 実行環境.実行環説明FROM ソフトウェア種類 INNER JOIN稼働可能環境 ON ソフトウェア種類.種類ID = 稼働可能環境.種類ID INNER JOIN 実行環境 ON 稼働可能環境.実行環ID = 実行環境.実行環境ID WHERE ソフトウェア種類. 種類ID = (利用者が選択したソフトウェア種類のID)」を発行して、選択したソフトウェアが稼動可能な環境をテーブルから抽出する（ステップＳ９）。  
【０１４６】
抽出したソフトウェアの実行環境を、GUI画面のリストボックスなどのGUI部品に全て表示する（ステップＳ１０）。
【０１４７】
利用者が実行環境選択すると、実行環境テーブル（Ｔ４）と、OSテーブルと（Ｔ６）と、ハードウェア構成（Ｔ７）を使用し、
SQL文「SELECT OS.OS名, OS.OS説明, ハードウェア構成.ハードウェア構成説明ハードウェア構成.ハードウェア名FROM 実行環境 INNER JOIN OS環境 ON実行環境.実行環境ID = OS環境.実行環境ID INNER JOIN OS ON OS環境.OSID = OS.OSID INNSER JOIN ハードウェア環境 ON 実行環境. 実行環境ID = ハードウェア環境. 実行環境ID INNER JOIN ハードウェア構成 ON ハードウェア環境. ハードウェアID = ハードウェア構成.ハードウェアID WHERE 実行環境.実行環境ID = (利用者が選択したソフトウェア実行環境のID)」を実行し、取り出したOS情報とハードウェア構成情報を、GUI部品に表示する。利用者はその情報を元に、キーボード（入力部１０）とマウス（入力部２４）を使用して、自動生成するソフトウェアの実行環境を選択する（ステップＳ１１）
【０１４８】
利用者が選択を確定すると、ソフトウェアのメタデータを確定する処理を行う（ステップＳ１２）。詳しい処理内容については後で説明する。
【０１４９】
利用者が選択を確定すると、実行環境テーブル（Ｔ４）と、ソフトウェア画面構成テーブル（Ｔ１０）と、実現可能画面構成テーブル（Ｔ１１）を使用して、SQL文「SELECT ソフトウェア画面構成.画面構成名, ソフトウェア画面構成.画面構成説明FROM 実行環境 INNER JOIN 実現可能画面構成 ON 実行環境.実行環境ID = 実現可能画面構成.実行環境ID INNER JOIN ソフトウェア画面構成 ON 実現可能画面構成.画面構成ID = ソフトウェア画面構成. 画面構成ID WHERE 実行環境. 実行環境ID = (利用者が選択したソフトウェア実行環境のID)」を発行して、選択した実装環境が実現可能な画面構成をテーブルから抽出する（ステップＳ１３）。  
【０１５０】
抽出したソフトウェアの画面構成を、GUI画面のリストボックスなどのGUI部品に全て表示する（ステップＳ１４）。
【０１５１】
利用者はソフトウェアの画面構成の説明を参考にし（画面構成を実際に表示するのが望ましい）、キーボード（入力部１０）とマウス（入力部２４）を使用して、自動生成するソフトウェアの画面構成を選択する（ステップＳ１５）
【０１５２】
利用者が選択を確定すると、ソフトウェア画面構成テーブル（Ｔ１０）と、ソフトウェア機能テーブル（Ｔ１２）と、作動可能機能テーブル（Ｔ１３）を使用して、SQL文「SELECT ソフトウェア機能.機能名, ソフトウェア機能.対象有無フラグ, ソフトウェア機能.機能説明FROM ソフトウェア画面構成 INNER  JOIN 作動可能機能 ON ソフトウェア画面構成.画面構成ID =  作動可能機能.画面構成ID INNER JOIN ソフトウェア機能 ON 作動可能機能.機能ID = ソフトウェア機能.機能ID WHEREソフトウェア画面構成.画面構成ID = (利用者が選択したソフトウェア画面構成のID)」を発行して、選択した画面構成が作動可能な機能をテーブルから抽出する（ステップＳ１６）。  
【０１５３】
抽出したソフトウェアの機能を、GUI画面のリストボックスなどのGUI部品に全て表示する（ステップＳ１７）。
【０１５４】
利用者はソフトウェアの機能の説明を参考にし、キーボード（入力部１０）とマウス（入力部２４）を使用して、自動生成するソフトウェアの機能を選択する（ステップＳ１８）
【０１５５】
利用者が選択した機能のデータの対象有無フラグを調べ、TRUE（必要）になっていたらステップＳ２０へ、そうでないならステップ２３へ処理を進める（ステップＳ１９）。
【０１５６】
ソフトウェア画面構成テーブル（T１０）と、構成部品テーブル（T１５）、コントロールテーブル（T１４）と、対象可能コントロールテーブル（T１６）と、ソフトウェア機能テーブル（T１２）を使用し、SQL文「SELECT コントロール.コントロール名, 構成部品.部品説明 FROM ソフトウェア画面構成 INNER JOIN 構成部品 ON ソフトウェア画面構成.画面構成ID = 構成部品.画面構成ID INNER JOIN コントロール ON 構成部品.コントロールID コントロール.コントロールID INNSER JOIN 対象可能コントロール ON 可能コントロール.コントロールID コントロール.コントロールID  INNER JOIN ソフトウェア機能ON 対象可能コントロール.機能ID = ソフトウェア機能.機能ID WHERE ソフトウェア画面構成.画面構成ID = (利用者が選択したソフトウェア画面構成のID)  AND ソフトウェア機能. 機能ID = (利用者が選択したソフトウェア機能のID)」を発行し、現在選択している画面構成が持つコントロールのデータを抽出する（ステップＳ２０）。
【０１５７】
抽出したソフトウェアの機能を、GUI画面のリストボックスなどのGUI部品に全て表示する（ステップＳ１７）。
【０１５８】
利用者はコントロールの説明を参考にし、キーボード（入力部１０）とマウス（入力部２４）を使用して、対象とするコントロールを選択する（ステップＳ２２）
【０１５９】
利用者がキーボード（入力部１０）とマウス（入力部２４）を使用して、機能追加終了を指示した場合ステップＳ２４へ、そうでない場合ステップＳ１６へ処理を進める（ステップＳ２３）
【０１６０】
利用者がキーボード（入力部１０）とマウス（入力部２４）を使用し、GUI画面を介して望む画面へ進み、処理を継続する（ステップＳ２４）、
【０１６１】
（１０）ソフトウェアメタデータ確定処理
ソフトウェア要素決定処理中の、ソフトウェアメタデータ確定処理を図９に示し、処理に必要なテーブルを図１０に示す。この処理は、ソフトウェアが必要とするデータを管理する為のメタデータを決定する処理であり、先に述べたように、あらかじめ用意されたメタデータ構造に加えて、利用者が列（カラム）を追加できるようにしている。ソフトウェアメタデータ確定処理は、自動生成処理プログラム３０と、オペレーティングシステム３２と協働して、図９の処理を行う。ただし、その一部または全部の処理を、オブジェクトコード作成処理自動生成処理プログラム３０の組み合わせで行うようにしても良い。
【０１６２】
なお、この実施例ではもっとも一般的なデータベースマネージメントシステムである、リレーションデータベースマネージメントシステムを利用することを仮定している。
【０１６３】
実行環境（Ｔ４）と、RDMSテーブル（Ｔ１７）と、利用可能RDMSテーブル（Ｔ１８）を使用して、SQL文「SELECT RDMS. RDMS名, RDMS. RDMS説明FROM 実行環境 INNER JOIN 利用可能RDMS ON 実行環境.実行環境ID = 利用可能RDMS.実行環境ID INNER JOIN RDMS ON RDMS.RDMS ID = 利用可能RDMS.RDMS ID WHERE 実行環境. 実行環境ID = (利用者が選択したソフトウェア実行環境のID)」を発行して、選択した実装環境が利用可能なRDMSをテーブルから抽出する（ステップＳ１）。
【０１６４】
抽出したRDMS名を、GUI画面のリストボックスなどのGUI部品に全て表示する（ステップＳ２）。
【０１６５】
利用者はRDMSの説明を参考にし、キーボード（入力部１０）とマウス（入力部２４）を使用して、自動生成するソフトウェアが使用するRDMSを選択する（ステップＳ３）
【０１６６】
利用者が選択を確定すると、実行環境（Ｔ４）と、RDMSテーブル（Ｔ１７）と、データベーステーブル（Ｔ１９）と、使用データベーステーブル（Ｔ２０）を使用して、SQL文「SELECT データベース. データベース名, データベース. データベース説明FROM 実行環境 INNER JOIN 使用データベース ON 実行環境.実行環境ID = 使用データベース.実行環境ID INNER JOIN RDMS ON RDMS.RDMS ID = 使用データベースRDMSID INNSER JOIN データベース ON使用データベース.データベースID = データベース.データベースID WHERE 実行環境. 実行環境ID = (利用者が選択したソフトウェア実行環境のID) AND RDMS.RDMSID = (利用者が選択したRDMSのID)」を発行して、選択した使用するデータベースのデータをテーブルから抽出する（ステップＳ４）。
【０１６７】
抽出したデータベース名を、GUI画面のリストボックスなどのGUI部品に全て表示する（ステップＳ５）。
【０１６８】
利用者はデータベースの説明を参考にし、キーボード（入力部１０）とマウス（入力部２４）を使用して、自動生成するソフトウェアが使用するデータベースを選択する（ステップＳ６）
【０１６９】
利用者が選択を確定すると、実行環境（Ｔ４）と、RDMSテーブル（Ｔ１７）と、データベーステーブル（Ｔ１９）と、テーブルテーブル（Ｔ２１）と、データベース構成（Ｔ２２）を使用して、SQL文「SELECT テーブル. テーブル名, テーブル. テーブル説明FROM 実行環境 INNER JOIN データベース構成ON 実行環境.実行環境ID = データベース構成.環境ID INNER JOIN RDMS ON RDMS.RDMS ID = データベース構成RDMSID INNSER JOIN データベース ON データベース構成.データベースID = データベース.データベースID INNSER JOIN テーブル ON データベース構成.テーブルID = テーブル.テーブルID  WHERE 実行環境. 実行環境ID = (利用者が選択したソフトウェア実行環境のID) AND RDMS.RDMSID = (利用者が選択したRDMSのID) AND DBID = (利用者が選択したデータベースのID)」を発行して、選択した使用するデータベースを構成するテーブルのデータを、テーブルから抽出する（ステップＳ７）。
【０１７０】
抽出したテーブル名を、GUI画面のリストボックスなどのGUI部品に全て表示する（ステップＳ８）。
【０１７１】
利用者はテーブルの説明を参考にし、キーボード（入力部１０）とマウス（入力部２４）を使用して、自動生成するソフトウェアが使用するテーブルを選択する（ステップＳ９）
【０１７２】
利用者が選択を確定すると、実行環境（Ｔ４）と、RDMSテーブル（Ｔ１７）と、データベーステーブル（Ｔ１９）と、テーブルテーブル（Ｔ２１）と、列テーブル（Ｔ２３）と、テーブル構成（Ｔ２４）を使用して、SQL文「SELECT 列.列名, 列.列名説明FROM 実行環境 INNER JOIN テーブル構成ON 実行環境.実行環境ID = テーブル構成.環境ID INNER JOIN RDMS ONRDMS.RDMS ID = テーブル構成RDMSID INNSER JOIN データベース ON テーブル構成.データベースID = データベース.データベースID INNSER JOIN テーブル ON テーブル構成.テーブルID = テーブル.テーブルID INNSER JOIN 列ON テーブル構成.列ID = 列.列ID WHERE 実行環境. 実行環境ID = (利用者が選択したソフトウェア実行環境のID) AND RDMS.RDMSID = (利用者が選択したRDMSのID) AND DBID = (利用者が選択したデータベースのID)  AND テーブルID = (利用者が選択したテーブルのID)」を発行して、選択した使用するテーブルを構成する列のデータを、テーブルから抽出する（ステップＳ１０）。
【０１７３】
抽出した列名を、GUI画面のリストボックスなどのGUI部品に全て表示する（ステップＳ１０）。
【０１７４】
利用者がキーボード（入力部１０）とマウス（入力部２４）を使用して、列を追加することを指示した場合ステップＳ１３へ、そうでない場合ステップＳ１４へ処理を進める（ステップＳ１２）
【０１７５】
GUI部品を利用して、新規作成するカラム（列）の名称を利用者に決定させる。そして、追加列は利用者テーブル（Ｔ２５）と、追加列テーブル（Ｔ２６）を使用して、後から自動作成処理で参照できるようにデータとして保存する（ステップＳ１３）。
【０１７６】
利用者は列の説明を参考にし、キーボード（入力部１０）とマウス（入力部２４）を使用して、自動生成するソフトウェアが使用する列を選択する。そして、GUI部品を用いて、列の型、列の最大文字数・・・などのメタ情報を編集して確定する（ステップＳ１４）
【０１７７】
利用者が、キーボード（入力部１０）とマウス（入力部２４）と、画面上のボタンなどのGUI部品を使用して、列の編集作業を終了させる旨を指示した場合ソフトウェアのメタデータ確定処理を終了させる。そうでない場合は、ステップ１６へ処理を進める（ステップＳ１５）。
【０１７８】
利用者に列を編集するか、テーブルを選びなおすかを選択させる。その結果、利用者が列の編集を選んだ場合ステップＳ１１へ、そうでない場合はステップＳ７へ処理を進める（ステップＳ１６）。
【０１７９】
２．第二の実施形態
請求項１１の実施形態を説明する。この実施形態は、他の実施形態に加えて、インターネットを通じて利用者がカスタムメイドソフトウェアを購入出来るものとする。
【０１８０】
（１） システムの全体構成
これからは、この実施形態を「カスタムソフトウェア自動生成配信サービス」と呼ぶ。セキュリティやLANの運用管理などの説明を除いた、カスタムソフトウェア自動生成配信サービスの全体的な概略図を図１７に示す。カスタムソフトウェア自動生成配信サービスシステムは、本発明を使用した生成サーバー（S１）と、利用者と対話処理を行うためのWebサーバー（S２）と、請求項８の内容を実現する為のデータベースサーバー（S３）からなり、インターネットを通じて、複数の利用者が同時にシステムに接続できるものとする。
【０１８１】
（２） 全体的な処理の流れ
カスタムソフトウェア自動生成配信サービスシステムの処理の流れを図１８に示し、以下に説明を記述する。
【０１８２】
まずは、Webサーバーが接続してきた利用者に対して、初期の画面（サービス説明や会社説明・・・などを表示したポータルサイト）を表示する（ステップS１）。
【０１８３】
次に利用者はログイン処理を行う。※ここではユーザー登録はあらかじめおこなっているものと仮定している（ステップS２）
【０１８４】
ログインをされたWebサーバーは、ログインを行った利用者の情報と、購入情報をデータベースサーバーに問い合わせる（ステップS３）。
【０１８５】
問い合わせられたデータベースサーバーは、ユーザー情報と購入履歴情報をWebサーバーに送信する（ステップS４）。
【０１８６】
利用者にカスタムソフトウェア自動生成配信サービスを、提供する為の準備が整ったので、利用者の購入履歴情報に基づき画面を生成して送信する（ステップS５）。
【０１８７】
利用者とWebサーバーの間で、カスタムソフトウェアの仕様を決定する為のやり取りを行い、決定後利用者が発注処理を行う。カスタムソフトウェアの仕様を決定する為の処理については、図９と実施形態１とほぼ同じである。また、発注処理については一般的なものなので説明を省略する。
（ステップS６）
【０１８８】
利用者とWebサーバーの間で、決済処理を行う（ステップS７）。
【０１８９】
受注したWebサーバーは、データベースサーバーへ、受注したソフトウェアの構成の情報と、注文した利用者を特定する為の情報を送信する（ステップS８）
【０１９０】
Webサーバーは生成サーバーに、受注したソフトウェアを自動生成するための命令を送信する（ステップS９）。自動生成処理については、図３で示している処理とほぼ同じである。
【０１９１】
最後にソフトウェアを配信して処理が完了する。ただし、この処理はWebサーバーが行うのではなく、受注された提供会社が行うものである（ステップS１０）。
【図面の簡単な説明】
【０１９２】
【図１】この発明の第一実施形態における装置の全体構成である。
【図２】図１の装置を、CPUを用いた場合のハードウェア構成
【図３】この発明の第一実施形態における、ソフトウェア自動生成処理の全体を示したフローチャート図である。
【図４】この発明の第一実施形態における、セットアッププログラム作成処理の全体を示したフローチャート図の前半である。
【図５】この発明の第一実施形態における、セットアッププログラム作成処理の全体を示したフローチャート図の後半である。
【図６】この発明の第一実施形態における、データオブジェクトコード作成処理の全体を示したフローチャート図である。
【図７】この発明の第一実施形態における、オブジェクトコード作成処理の全体を示したフローチャート図である。
【図８】この発明の第一実施形態に請求項７の内容を受け加えた、セットアッププログラム作成処理の全体を示したフローチャート図（上）である。
【図９】この発明の第一実施形態に請求項７の内容を受け加えた、セットアッププログラム作成処理の全体を示したフローチャート図（中）である。
【図１０】この発明の第一実施形態に請求項７の内容を受け加えた、セットアッププログラム作成処理の全体を示したフローチャート図（下）である。
【図１１】この発明の第一実施形態に請求項８の内容を受け加えた、ソフトウェア要素決定処理の全体を示したフローチャート図（上）である。
【図１２】この発明の第一実施形態に請求項８の内容を受け加えた、ソフトウェア要素決定処理の全体を示したフローチャート図（中）である。
【図１３】この発明の第一実施形態に請求項８の内容を受け加えた、ソフトウェア要素決定処理の全体を示したフローチャート図（下）である。
【図１４】この発明の第一実施形態に請求項８の内容を受け加えた、ソフトウェアのメタデータ確定処理の全体を示したフローチャート図の前半である。
【図１５】この発明の第一実施形態に請求項８の内容を受け加えた、ソフトウェアのメタデータ確定処理の全体を示したフローチャート図の後半である。
【図１６】この発明の第一実施形態に、請求項８の内容を受け加えるのに必要なテーブルを表記したものである。
【図１７】第二実施形態における、カスタムソフトウェア自動生成配信サービスの全体概略図である。
【図１８】第二実施形態における、カスタムソフトウェア自動生成配信サービスの処理手順を示した図である。
【図１】
2007011603.tif 000003
【図２】
2007011603.tif 000004
【図３】
2007011603.tif 000005
【図４】
2007011603.tif 000006
【図５】
2007011603.tif 000007
【図６】
2007011603.tif 000008
【図７】
2007011603.tif 000009
【図８】
2007011603.tif 000010
【図９】
2007011603.tif 000011
【図１０】
2007011603.tif 000012
【図１１】
2007011603.tif 000013
【図１２】
2007011603.tif 000014
【図１３】
2007011603.tif 000015
【図１４】
2007011603.tif 000016
【図１５】
2007011603.tif 000017
【図１６】
2007011603.tif 000018
【図１７】
2007011603.tif 000019
【図１８】
2007011603.tif 000020