(57)【特許請求の範囲】
【請求項１】
コンポーネントが使用されるソフトウェア環境に対して、当該コンポーネントの特徴を緩衝するためのプログラムを自動生成するプログラム自動生成装置であって、
前記緩衝プログラムの自動生成を実行するコントローラと、
前記緩衝プログラムの自動生成のための制御情報と処理プログラムとを有するメモリと、
前記コンポーネントの処理内容の入力装置と、
前記自動生成された緩衝プログラムを出力する出力装置と、
を備え、
前記メモリは、前記コンポーネントを緩衝するための複数の形態を前記制御情報として記録し、
前記コントローラは、前記処理プログラムに基づいて、
前記入力されたコンポ―ネントの処理内容に基づいて特徴情報を抽出して、当該抽出された特徴情報を前記制御情報として前記メモリに記録し、
前記メモリの制御情報から、前記抽出された特徴情報と前記複数の形態を読み込み、当該特徴情報に基づいて前記複数の形態から所定の形態を選択し、
前記選択された形態と前記特徴情報に基づいて前記緩衝プログラムを生成する、
プログラム自動生成装置。
【請求項２】
前記特徴情報は、
前記コンポーネントの処理の特性情報と、
前記コンポーネントのプログラムの参照情報と、
を含む、請求項１記載のプログラム自動生成装置。
【請求項３】
前記特性情報は、
前記コンポーネントの識別情報と、
前記コンポーネントが利用されるアーキテクチャの構成と、
当該アーキテクチャに利用されるコンポーネントの配置と、
を含む、請求項２記載のプログラム自動生成装置。
【請求項４】
前記参照情報は、
前記コンポーネントの呼び出し関数名と、
前記コンポーネントのハンドラ関数名と、
を含む、請求項２記載のプログラム自動生成装置。
【請求項５】
前記複数の形態は、前記緩衝プログラムの雛形となる複数のプログラムである、請求項１記載のプログラム自動生成装置。
【請求項６】
前記コントローラは、
前記特徴情報に基づいて、前記複数の雛形プログラムから特定の雛形プログラムを選択し、
当該選択した雛形プログラムに基づいて前記緩衝プログラムを生成する、請求項５記載のプログラム自動生成装置。
【請求項７】
前記コントローラは、
前記選択した雛形プログラムのプログラム片の緩衝対象領域を前記特徴情報に基づいて補完し、
当該補完されたプログラムを前記緩衝プログラムとして前記出力手段から出力する、請求項６記載のプログラム自動生成装置。
【請求項８】
前記プログラム片は、前記雛形プログラムが対応しているアプリケーションフレームワークごとのソースコードであり、その一部が前記緩衝対象領域である、請求項７記載のプログラム自動生成装置。
【請求項９】
前記コントローラは、前記緩衝対象領域に、前記コンポーネントの基本関数、呼び出し関数名、及び、ハンドラ関数名の少なくとも一つを補う、請求項８記載のプログラム自動生成装置。
【請求項１０】
前記緩衝対象領域は代替テキスト情報から構成され、前記コントローラは、前記代替テキスト情報を前記プログラム片のコード部分から判別する、請求項８記載のプログラム自動生成装置。
【請求項１１】
前記複数の雛形プログラムの夫々は、前記コンポーネントが使用されるアーキテクチャと前記コンポートの配置の複数の組み合せ毎に分類されている、請求項５記載のプログラム自動生成装置。
【請求項１２】
コンポーネントが使用されるソフトウェア環境に対して、当該コンポーネントの特徴を緩衝するためのプログラムを生成する方法であって、
コンポーネントの処理内容をコンピュータに入力する工程と、
前記入力されたコンポ―ネントの処理内容に基づいて、前記コンピュータが特徴情報を抽出する工程と、
前記コンピュータは、前記特徴情報に基づいて前記コンポーネントを緩衝するための複数の形態から所定の形態を選択する工程と、
前記選択された形態と前記特徴情報に基づいて前記緩衝プログラムを生成する工程と、
を備える、プログラム生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムを自動的に生成する装置、及び、そのための方法に関するものである。
【背景技術】
【０００２】
プログラムの自動生成装置の従来例として、例えば、特開２００５−４７７１号公報に記載のコンピューティングシステムが存在する。この従来システムは、コンポーネントの作者がスレッド化／同時処理などのアプリケーションフレームワーク特有の問題を考慮しなくとも、コンポーネントが多種多様なアプリケーションフレームワークの下で動作することを可能にするメカニズムを提供することを目的として、アプリケーションフレームワークの差異が非同期オペレーションの実装に対して与える影響を、処理を実現するためのコンポーネントから分離するためのメカニズムを提供するものである。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−４７７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
アプリケーションフレームワークの形態によっては、非同期オペレーションを実現できないケースがあるものの、既述の従来のシステムは、このようなケースに対応することを考慮していない。
【０００５】
このようなケースの一例として、サーバ／クライアント型のソフトウェアシステムにおいて、クライアント側システムをＡｄｏｂｅ  Ｆｌｅｘ（登録商標）で実現し、サーバ側システムをＪａｖａ（登録商標）で実現したアプリケーションフレームワークがある。サーバ側と通信する処理は非同期オペレーションとして実現可能であるものの、クライアント側だけで完結する処理は、非同期オペレーションとして実現されることは普通不可能である。
【０００６】
さらに、既述のシステムでは、アプリケーションフレームワークによるコンポーネントの実装の差異として、実行系列以外については考慮されていない。すなわち、オペレーションのインタフェースの制約やその他の差異をコンポーネントから取り除くことはできていない。
【０００７】
このような理由により、例えば、ソフトウェアを実現するためのアプリケーションフレームワークやその下でのソフトウェアキテクチャが変更されるシーンにおいて、また、複数のアプリケーションフレームワークやソフトウェアキテクチャ向けにソフトウェアを作成するシーンにおいて、コンポーネントやコンポーネントを利用するプログラムの再利用性が十分に確保できないという問題が発生している。この問題は、あるコンポーネントを同等の機能を持つコンポーネントで置き換えたり、コンポーネント内での処理フローの変更を強要されることにもつながる。
【０００８】
そこで、本発明は、コンポーネントの利用者のために、アーキテクチャやフレームワークなどコンポーネントが利用されるソフトウェア環境の違いに基づく、コンポーネントの特徴に基づく差異を緩衝するためのプログラムを自動的に生成する装置及びその方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
既述の目的を達成するために、本発明に係るプログラムの自動生成装置は、コンポーネントが使用されるソフトウェア環境に合うように、コンポーネントの特徴点をソフトウェアの環境に応じて緩衝することを特徴とする。
【００１０】
本発明の形態は、コンポーネントが使用されるソフトウェア環境に対して、当該コンポーネントの特徴を緩衝するためのプログラムを自動生成するプログラム自動生成装置であって、前記緩衝プログラムの自動生成を実行するコントローラと、前記緩衝プログラムの自動生成のための制御情報と処理プログラムとを有するメモリと、前記コンポーネントの処理内容の入力装置と、前記自動生成された緩衝プログラムを出力する出力装置と、を備え、前記メモリは、前記コンポーネントを緩衝するための複数の形態を前記制御情報として記録し、前記コントローラは、前記処理プログラムに基づいて、前記入力されたコンポ―ネントの処理内容に基づいて特徴情報を抽出して、当該抽出された特徴情報を前記制御情報として前記メモリに記録し、前記メモリの制御情報から、前記抽出された特徴情報と前記複数の形態を読み込み、当該特徴情報に基づいて前記複数の形態から所定の形態を選択し、前記選択された形態と前記特徴情報に基づいて前記緩衝プログラムを生成する、ことを特徴とする。
【発明の効果】
【００１１】
本発明によれば、コンポーネントの利用者のために、アーキテクチャやフレームワークなどコンポーネントが利用されるソフトウェア環境の違いに基づく、コンポーネントの特徴に基づく差異を緩衝するためのプログラムを自動的に生成する装置及びその方法を提供することができる。
【図面の簡単な説明】
【００１２】
【図１】プログラム自動生成装置の一つの実施形態のブロック構成図ある。
【図２】プログラム自動生成装置のプログラム自動生成を説明するフローチャートである。
【図３】コンポーネント処理内容の実施形態に係る論理ブロック図である。
【図４】コンポーネント処理内容の特徴情報の論理ブロック図である。
【図５】コンポーネント処理内容からコンポーネント特徴情報を抽出する動作を説明する論理ブロック図である。
【図６】コンポーネントに対する処理特性緩衝規則の実施形態のブロック図である。
【図７】コンポーネント特徴情報に基づいて緩衝プログラムの雛形種別を決定する動作を説明する論理ブロック図である。
【図８】緩衝プログラムの雛形の構成を示す論理ブロック図である。
【図９】コンポーネントの処理特性を緩衝するための処理特性緩衝プログラムイメージの論理ブロック図である。
【図１０】コンポーネント特徴情報と緩衝プログラムの雛形から特定情報を処理特性緩衝プログラムに抽出する動作を説明する論理ブロック図である。
【図１１】処理特性緩衝プログラムの不足情報を、コンポーネント特徴情報に基づいて補完する動作を説明する論理ブロック図である。
【図１２】プログラム自動生成装置の第２の実施形態を示す論理ブロック図である。
【図１３】その動作を示すフローチャートである。
【発明を実施するための形態】
【００１３】
次に本発明の実施形態を図面に基づいて説明する。プログラム自動生成装置は、プログラム自動生成のための実施形態として、コンポーネントの実装の差異を緩衝するプログラムを生成する。図１は、プログラム自動生成装置の一形態のハードウエア構成及び論理構成を示すブロック図である。プログラム自動生成装置１００は、ＣＰＵ１０１、メモリ１０２、入力装置１０３、出力装置１０４、外部記憶装置１０５を有する。
【００１４】
外部記憶装置１０５は、コンポーネント処理内容記憶部（領域）１０６と、コンポーネント特徴情報記憶部（領域）１０７、処理特性緩衝規則記憶部（領域）１０８、緩衝プログラム雛形記憶部（領域）１０９、処理特性緩衝プログラム記憶部（領域）１１０と、を保持しており、さらに処理プログラム１１１を有している。
【００１５】
処理プログラム１１１は、コンポーネント特徴情報抽出（処理）部１１２と、処理特性緩衝方式判定（処理）部１１３と、処理特性緩衝プログラム生成（処理）部１１４と、を実行する。処理プログラム１１１は実行時にメモリ１０２に読み込まれ、ＣＰＵ１０１によって実行される。
【００１６】
処理特性緩衝規則記憶部１０８と緩衝プログラム雛形記憶部１０９との夫々に、予め、ユーザによって、処理特性緩衝規則、緩衝プログラム雛形が入力されている。処理特性緩衝規則、緩衝プログラム雛形の詳細については、後述する。
【００１７】
入力装置１０３を介して、外部から入力されたコンポーネントの処理内容は、コンポーネント処理内容記憶部１０６に書き込まれる。コンポーネント特徴情報抽出部１１２は、コンポーネント処理内容記憶部１０６から読み出したコンポーネントの処理内容から、その特徴を抽出し、コンポーネント特徴情報記憶部１０７に書き込む。
【００１８】
処理特性緩衝方式判定部１１３は、処理特性緩衝規則記憶部１０８から読み出した処理特性緩衝規則を参照しながら、コンポーネント特徴情報記憶部１０７から読み出したコンポーネント特徴情報に対応する処理特性緩衝方式を選択することにより、コンポーネント特徴情報を補完する。
【００１９】
コンポーネント緩衝プログラム生成部１１４は、コンポーネント特徴情報記憶部１０７から読み出したコンポーネント特徴情報を参照し、選択した緩衝方式に対応した緩衝プログラム雛形を雛形プログラム雛形記憶部１０９から読み出し、これを処理特性緩衝プログラムとして処理特性緩衝プログラム記憶部１１０に書き込む。さらに、コンポーネント緩衝プログラム生成部１１４は、コンポーネント特徴情報を参照し、処理特性緩衝プログラムを補完することにより、処理特性緩衝プログラムを完成させる。
【００２０】
図２は、プログラム自動生成装置の処理を説明するフローチャートの一例である。図２のフローチャートに基づいて、図１の各部の動作を説明する。ステップ２００は、プログラム自動生成ツールに対する設計情報の入力として、コンポーネントの処理内容を入力するステップである。入力操作は、開発者が実施する。ステップ２００では、入力装置１０３から入力されたコンポーネントの処理内容を、コンポーネント処理内容記憶部１０６に書き込む。
【００２１】
コンポーネントの処理内容とは、業務データや画面表示に関する操作など、所定の具体的処理を実現するための手段を定義した情報、または、手段を実現するためのプログラムである。アプリケーションの実行中で当該処理が呼ばれるタイミングなど、呼び出しに関する情報は保持されなくてもよい。コンポーネントの処理内容の具体例を図３に示す。
【００２２】
コンポーネント処理内容３００は、コンポーネント名３０１、コンポーネントが利用されるアーキテクチャの構成３０２、アーキテクチャにおけるコンポーネントの配置３０３の他、コンポーネントの処理の実体としての呼び出し処理名３０４及び呼び出し処理内容３０５、そして、ハンドラ処理名３０６及びハンドラ処理内容３０７を保持している。
【００２３】
図３においてコンポーネント処理内容３００は定義情報であるが、プログラムであってもよい。後者の場合は、３０１〜３０６の情報はメタ情報になるか、又は、プログラムを静的に解析して判別できる形式になる。これらの情報は、後述のように、機械的な手段によって抽出できるように構成しておく。
【００２４】
図２のステップ２０１から２０４までは、入力情報をもとにした機械的な処理の例であり、人手を介することなくプログラム自動生成装置のみで実現できる処理である。ステップ２０１では、コンポーネント特徴情報抽出部１１２が、コンポーネント処理内容記憶部１０６からコンポーネント処理内容を読み出し、コンポーネント特徴情報を抽出する。抽出したコンポーネント特徴情報は、コンポーネント特徴情報記憶部１０７に書き込まれる。
【００２５】
ここで、コンポーネント特徴情報とは、コンポーネントを備えるプログラムが実行される際のコンポーネントの振る舞い方や、コンポーネントの呼び出し方法に影響を与える情報を含む、コンポーネントの実装に関する情報である。影響を与える情報の種類は、アプリケーションフレームワークによって異なる。また、コンポーネントの振舞いの差異を緩衝する観点によっても異なってくる。この実施形態では、コンポーネントの同期処理／非同期処理の違いを含む、実行系列の違いを緩衝する観点からの特徴であるとする。コンポーネント特徴情報のスキーマの具体例を図４に示す。
【００２６】
図４はコンポーネント特徴情報の例である。コンポーネント特徴情報４００は、対応するコンポーネント処理内容を特定するための情報であるコンポーネント名４０１、対応する緩衝プログラムを特定するための情報である基本関数名４０２、アプリケーションフレームワーク内でコンポーネントを特定するためのプログラム参照情報４０３、振舞い方や呼び出し方法を特徴付ける情報である処理特性情報４０４、および、コンポーネントの特性を緩衝するプログラムの雛形を特定する情報である雛形種別４０５を持つ。これらの特徴情報は一例である。
【００２７】
プログラム参照情報４０３は、呼び出し関数名４０６とハンドラ関数名４０７とから構成され、また、処理特性情報４０４は、アーキテクチャ構成情報４０８とコンポーネント配置情報４０９とから構成される。
【００２８】
コンポーネント特徴情報が抽出される際、コンポーネント特徴情報抽出部１１２は、先ず、コンポーネント処理内容記憶部１０６が保持しているコンポーネント処理内容のうち、一つを選択する。
【００２９】
次に、コンポーネント特徴情報抽出部１１２は、選択したコンポーネント処理内容から、必要な情報を抜き出し、コンポーネント特徴情報記憶部１０７が保持するコンポーネント特徴情報のうちの対応する箇所に入力する。コンポーネント特徴情報抽出部１１２は、コンポーネント処理内容記憶部１０６が保持する全てのコンポーネント処理内容について、コンポーネント特徴情報の抽出操作を行うことにより、ステップ２０２を完了する。コンポーネント処理内容からコンポーネント特徴情報を抽出する方法の具体例を、図５に示す。
【００３０】
図５は、コンポーネント特徴情報のうち基本的な情報を抽出するための処理のイメージを示す。コンポーネント特徴情報抽出部１１２は、選択したコンポーネント処理内容３００が保持するコンポーネント名３０１からコンポーネント名４０１を、アーキテクチャ構成情報３０２からアーキテクチャ構成情報４０８を、コンポーネント配置情報３０３からコンポーネント配置情報４０９を、呼び出し処理名３０４から呼び出し関数名４０６を、さらに、ハンドラ処理名３０６からハンドラ関数名４０７を、それぞれ取得し、これをコンポーネント特徴情報記憶部１０７に書き込む。基本関数名４０２には呼び出し処理名３０４の情報が書き込まれる。なお、ステップ２０１の時点では、雛形種別４０５には何も情報が入力されていなくてよい。
【００３１】
ステップ２０２では、処理特性緩衝方式判定部１１３が、処理特性緩衝規則記憶部１０８から読み出した処理特性緩衝規則を参照し、コンポーネント特徴情報記憶部１０７から読み出したコンポーネント特徴情報に対応する雛形種別を探し出すことにより、コンポーネント特徴情報に対応する処理特性緩衝方式を判定する。探し出された雛形種別の情報は、コンポーネント特徴情報の一部として、コンポーネント特徴情報記憶部１０７に書き込まれる。
【００３２】
処理特性緩衝規則とは、コンポーネントの処理特性情報ごとに、コンポーネントの振舞い方や呼び出し方法の差異などを緩衝する方法を分類した情報である。処理特性緩衝規則の具体例を、図６に示す。
【００３３】
処理特性緩衝規則６００は、プログラムの振舞い方や呼び出し方法を特徴付ける情報である処理特性情報６０１と、その特徴を緩衝する方法の分類を示す情報である雛形種別６０４との組み合わせによって構成されている。処理特性情報６０１は、例えば、アーキテクチャ構成情報６０２とコンポーネント配置情報６０３とから構成されており、コンポーネント特徴情報が保持する処理特性情報４０４と対応付けられる形式になっている。
【００３４】
処理特性緩衝方式の判定において、処理特性緩衝方式判定部１１３は、まず、コンポーネント特徴情報記憶部１０７が保持するコンポーネント特徴情報のうち、一つを選択する。次に、選択したコンポーネント特徴情報に対応する処理特性緩衝方式を、処理特性緩衝規則記憶部１０８が保持する処理特性緩衝規則を参照し、探し出す。
【００３５】
次に、探し出されたコンポーネント緩衝方式の情報は、選択しているコンポーネント特徴情報の一部として記録される。コンポーネント特徴情報記憶部１０７が保持するすべてのコンポーネント特徴情報について、処理特性緩衝方式判定部１１３が処理特性緩衝方式を探し出し、これを記録することにより、ステップ２０２は終了する。
【００３６】
処理特性緩衝方式判定部１１３が処理特性緩衝方式を探し出し、記録する方法の具体例を図７に示す。図７は、コンポーネント特徴情報のうち雛形種別の情報を抽出する処理のイメージを示す。
【００３７】
先ず、処理特性緩衝方式判定部１１３は、選択されたコンポーネント特徴情報４００に対応する処理特性緩衝規則６００を、処理特性緩衝規則記憶部１０８から探し出す。対応関係は、コンポーネント特徴情報４００の処理特性情報４０４と処理特性緩衝規則６００の処理特性情報６０１との比較、例えば、夫々の値の関連度、あるいは値の同値によって、処理特性緩衝方式判定部１１３によって判定される。この実施形態では、アーキテクチャ構成とコンポーネント配置が共に同一であるものを対応するものと判定される。次いで、処理特性緩衝方式判定部１１３は、処理特性緩衝規則６００の雛形種別６０４の情報を、選択中のコンポーネント特徴情報４００の雛形種別４０５に書き込む。
【００３８】
ステップ２０３では、処理特性緩衝プログラム生成部１１４が、コンポーネント特徴情報記憶部１０７から読み出したコンポーネント特徴情報を参照し、対応する緩衝プログラム雛形を緩衝プログラム雛形記憶部１０９から読み出し、処理特性緩衝プログラムとして処理特性緩衝プログラム記憶部１１０に書き込む。処理特性緩衝プログラム生成部１１４が、コンポーネント特徴情報記憶部１０７が保持するすべてのコンポーネント特徴情報について、緩衝プログラム雛形の読み出し及びそれを処理特性緩衝プログラム記録部１１０に記録することにより、ステップ２０３を完了する。
【００３９】
緩衝プログラム雛形とは、あるコンポーネントやプログラムの振舞い方や呼び出し方法の特性毎に用意された、その特性を隠蔽あるいは減縮、又は緩衝するためのラッパープログラムのフォーマットのことである。処理特性緩衝プログラムとは、あるコンポーネントやプログラムの振舞い方や呼び出し方法の特徴を隠蔽あるいは減縮、又は緩衝するためのラッパープログラムのことである。処理特性緩衝プログラム生成部１１４は、両者の差を緩衝する。
【００４０】
緩衝プログラム雛形の具体例を図８に、処理特性緩衝プログラムの具体例を図９に、それぞれ示す。緩衝プログラム雛形８００として、緩衝規則記憶部１０８に記録された全ての処理特性緩衝規則の雛形種別６０４に対応するものが予め用意され、緩衝プログラム雛形記憶部１０９に入力されている。緩衝プログラム雛形８００は、処理特性緩衝規則の雛形種別６０４と対応付けるための情報である雛形種別８０１と、プログラム片８０２を保持している。
【００４１】
プログラム片８０２は、雛形種別８０１が対応しているアプリケーションフレームワークごとのプログラミング言語のソースコードである。その一部が代替テキスト８０３など緩衝対象領域となっている。代替テキスト８０３は、機械的な構文解析処理によってプログラム片８０２から容易に区別できる形式の文字列になっている。図９にあるように、処理特性緩衝プログラム９００は、対応するコンポーネントを特定する情報であるコンポーネント名９０１、および、プログラム片９０２を保持する。
【００４２】
処理特性緩衝プログラム雛形の特定、即ち、緩衝プログラム雛形記憶部１０９からの読み出し、及び、処理特性緩衝プログラム記憶部１１０への書き込みについて、処理特性緩衝プログラム生成部１１４は、先ず、コンポーネント特徴情報記憶部１０７が保持するコンポーネント特徴情報のうち、一つを選択する。
【００４３】
処理特性緩衝プログラム生成部１１４は、選択されたコンポーネント特徴情報に対応する処理特性緩衝プログラム９００を作成し、これを処理特性緩衝プログラム記憶部１１０に書き込む。次いで、処理特性緩衝プログラム生成部１１４は、選択中のコンポーネント特徴情報に対応する緩衝プログラム雛形を緩衝プログラム雛形記憶部１０９から探し出し、そのプログラム片の情報をコピーし、作成した処理特性緩衝プログラム９００のプログラム片９０２に書き込む。コンポーネント特徴情報記憶部１０７が保持する全てのコンポーネント特徴情報について、処理特性緩衝プログラム生成部１１４による処理特性緩衝プログラムの作成およびプログラム片の情報の書き込みが行われることにより、ステップ２０３が終了される。
【００４４】
処理特性緩衝プログラムの作成及び書き込みの具体例が図１０に示されている。図１０は、処理特性緩衝プログラム９００の基本的な情報をコンポーネント特徴情報記憶部１０７と緩衝プログラム雛形記憶部１０９から抽出するイメージを示す。先ず、処理特性緩衝プログラム生成部１１４は、選択されたコンポーネント特徴情報４００のコンポーネント名４０１をコンポーネント名９０１として、処理特性緩衝プログラム９００を作成し、処理特性緩衝プログラム記憶部１１０に書き込む。
【００４５】
次いで、処理特性緩衝プログラム生成部１１４は、選択中のコンポーネント特徴情報４００の雛形種別４０５を参照し、これと同じ雛形種別８０１の情報を持つ緩衝プログラム雛形８００を、緩衝プログラム雛形記憶部１０９から選択する。そして、処理特性緩衝プログラム生成部１１４は、選択した緩衝プログラム雛形８００のプログラム片８０２の情報をコピーし、既述のように作成された処理特性緩衝プログラム９００のプログラム片９０２として処理特性緩衝プログラム記憶１１０に書き込む。
【００４６】
ステップ２０４では、処理特性緩衝プログラム生成部１１４は、コンポーネント特徴情報記憶部１０７からコンポーネント特徴情報を一つ読み出し、これと対応する処理特性緩衝プログラムを処理特性緩衝プログラム記憶部１１０から探し出す。
【００４７】
処理特性緩衝プログラム生成部１１４は、さらに、コンポーネント特徴情報４００の情報を参照しながら、処理特性緩衝プログラムの情報を補完することにより、処理特性緩衝プログラムを完成させる。コンポーネント特徴情報記憶部１０７が保持するすべてのコンポーネント特徴情報について、処理特性緩衝プログラム生成部１１４が処理特性緩衝プログラムの補完をおこなうことにより、ステップ２０４を完了する。
【００４８】
図１１は、処理特性緩衝プログラムの不足情報を補完する処理のイメージを説明する。処理特性緩衝プログラム生成部１１４は、先ず、選択された、コンポーネント特徴情報４００のコンポ名４０１と同一のコンポ名９０１を持つ処理特性緩衝プログラム９００を、処理特性緩衝プログラム記憶部１１０から探し出し、これを読み込む。
【００４９】
次いで、処理特性緩衝プログラム生成部１１４は、読み込んだ処理特性緩衝プログラム９００が持つプログラム片９０２のうち、代替テキスト１１００を、選択中のコンポーネント特徴情報４００を用いて置き換える。代替テキスト１１００は、ステップ２０３におけるコピー元のプログラム片８０２で代替テキスト８０３であった部分であり、プログラム片９０２の他の箇所と明確に区別できるように記述されている。
【００５０】
処理特性緩衝プログラム生成部１１４は、暫定テキスト１１００のうち、[BASE]というテキストを基本関数名４０２によって、[CALLER]というテキストを呼び出し関数名４０６によって、また、[HANDLER]と書かれているテキストをハンドラ関数名４０７によって、それぞれ置き換えることによって、暫定テキスト１１００であった箇所が全て確定されることによって、プログラム片が完成される。
【００５１】
ステップ２０５は、開発者が、プログラム自動生成装置１００によって生成された処理特性緩衝プログラムを、出力装置１０４を通じて取得するステップである。プログラム自動生成装置１００は、開発者の指示に従い、処理特性緩衝プログラム記憶部１１０から処理特性緩衝プログラムを読み出し、出力装置１０４に出力する。また、入力の不備などにより、プログラム自動生成装置１００が処理特性緩衝プログラムを生成することができなかった場合は、その旨を開発者に通知するための情報を出力してもよい。なお、出力は、計算機で扱えるようテキストデータ又はバイナリデータとして出力してもよいし、開発者が閲覧できるようモニタに文字又はグラフィックによって表示されてもよい。
【００５２】
次に、第２の実施形態について説明する。この実施形態に係るプログラム自動生成装置は、コンポーネントの実装の差異を緩衝するプログラムだけでなく、コンポーネント自体のプログラムを生成する。図１２に、このプログラム自動生成装置のブロック構成図を示す。プログラム自動生成装置１２００は、第１の実施形態におけるプログラム自動生成装置１００の構成要素に加え、コンポーネントプログラム記憶部１２０１を保持する。そして、処理プログラム１２０２は、第１の実施形態における処理プログラム１１１の構成要素に加え、コンポーネントプログラム生成部１２０３を保持する。処理プログラム１２０２は実行時にメモリ１０２に読み込まれ、ＣＰＵ１０１によって実行される。
【００５３】
処理特性緩衝規則記憶部１０８、緩衝プログラム雛形記憶部１０９には、それぞれ予め処理特性緩衝規則、緩衝プログラム雛形が入力されている。処理特性緩衝規則、緩衝プログラム雛形の詳細は、第１の実施形態と同様であっても、また、異なるものであってもよい。
【００５４】
入力装置１０３を介して外部から入力されたコンポーネント処理内容は、コンポーネント処理内容記憶部１０６に書き込まれる。コンポーネント特徴情報抽出部１１２は、コンポーネント処理内容記憶部１０６から読み出したコンポーネント処理内容から、処理内容の特徴を抽出し、コンポーネント特徴情報記憶部１０７に書き込む。処理特性緩衝方式判定部１１３は、処理特性緩衝規則記憶部１０８から読み出した処理特性緩衝規則を参照しながら、コンポーネント特徴情報記憶部１０７から読み出したコンポーネント特徴情報に対応する処理特性緩衝方式を選択することにより、コンポーネント特徴情報を補完する。
【００５５】
コンポーネント緩衝プログラム生成部１１４は、コンポーネント特徴情報記憶部１０７から読み出したコンポーネント特徴情報を参照し、選択された緩衝方式に対応した緩衝プログラム雛形を、雛形プログラム雛形記憶部１０９から読み出し、処理特性緩衝プログラムとして処理特性緩衝プログラム記憶部１１０に書き込む。さらに、コンポーネント特徴情報を参照し、処理特性緩衝プログラムを補完することにより、処理特性緩衝プログラムを完成させる。
【００５６】
コンポーネントプログラム生成部１２０３は、コンポーネント処理内容記憶部１０６からコンポーネント処理内容を読み出し、コンポーネントプログラムを作成した後、コンポーネントプログラム記憶部１２０１に書き込む。
【００５７】
図１３は、本実施例のプログラム自動生成装置の処理を説明するフローチャートの例である。ステップ２００から２０５は、既述の第１の実施形態と同様である。ステップ１３０１では、コンポーネントプログラム生成部１２０３が、コンポーネント処理内容記憶部１０６からコンポーネント処理内容を読み出し、その情報に基づいてコンポーネントプログラムを作成し、コンポーネントプログラム記憶部１２０１に書き込む。コンポーネント処理内容記憶部１０６が保持するすべてのコンポーネント処理内容について、コンポーネントプログラムの作成および書き込みをすることにより、ステップ１３０１を完了する。
【００５８】
コンポーネント処理内容は、第１の実施形態と同様に、図３の形式の情報であるものとする。コンポーネントプログラム生成部１２０３は、コンポーネント処理内容３００の呼び出し処理名３０４やハンドラ処理名３０６からコンポーネントのインタフェースを作成し、また、呼び出し処理内容３０５やハンドラ処理内容３０７から、プログラムの実体を作成する。呼び出し処理内容３０５やハンドラ処理内容３０７が、プログラムを生成するために十分な情報量を持っていない場合については、コンポーネントプログラム生成部１２０３は、コンポーネントプログラムのインタフェースのみを作成することにより、コンポーネントプログラムの作成を完了してもよい。
【００５９】
ステップ１３０２は、開発者が、プログラム自動生成装置１００によって生成されたコンポーネントプログラムを、出力装置１０４を通じて取得するステップである。プログラム自動生成装置１００は、開発者の指示に従い、コンポーネントプログラム記憶部１２０１からコンポーネントプログラムを読み出し、出力装置１０４に出力する。また、入力の不備などにより、プログラム自動生成装置１００がコンポーネントプログラムを生成することができなかった場合は、その旨を開発者に通知するための情報を出力してもよい。なお、出力は、計算機で扱えるようテキストデータ又はバイナリデータとして出力しても良いし、開発者が閲覧できるようモニタに文字又はグラフィックを表示してもよい。
【００６０】
この実施形態において、コンポーネントプログラム生成部１３００が、コンポーネントの特徴情報を参照することによってコンポーネントのインタフェース情報を取得し、インタフェース情報から、コンポーネントのスケルトンプログラムを生成するようにしてもよい。
【００６１】
また、コンポーネント特徴情報抽出部１１２は、コンポーネントの処理の特徴情報に合わせて、コンポーネントの処理実体の情報も取得し、コンポーネントプログラム生成部１３００は、コンポーネントの処理実体の情報を参照することにより、コンポーネントのプログラムを生成するようにしてもよい。
またさらに、コンポーネントプログラム生成部１３００は、コンポーネントが既に存在するか否かをプログラム生成の際に判定し、既に存在する場合には、コンポーネントのプログラムのマージや生成の取りやめなど、予め指定された代替処理を実行するにしてもよい。
【００６２】
以上説明したプログラム自動生成の実施形態によれば、コンポーネントの利用者のために、アーキテクチャやフレームワークなどコンポーネントが利用されるソフトウェア環境の違いに基づく、コンポーネントの特徴に基づく差異を緩衝することができる。またさらに、コンポーネントの利用者に対し、コンポーネントを活用する上でのコンポーネントの特徴がソフトウェア環境の違いによって異ならないインタフェースを提供するためのプログラムの自動生成装置及びその方法を提供することができる。これにより、アプリケーションフレームワークやソフトウェアキテクチャに変更がある場合でも、変更が利用側のプログラムに影響しないため、修正箇所を局所化することが可能となり、テストを含む修正作業のコストを削減することができる。
【符号の説明】
【００６３】
１００    プログラム自動生成装置
１０１    ＣＰＵ
１０２    メモリ
１０３    入力装置
１０４    出力装置
１０５    外部記憶装置
１０６    コンポーネント処理内容記憶部
１０７    コンポーネント特徴情報記憶部
１０８    処理特性緩衝規則記憶部
１０９    緩衝プログラム雛形記憶部
１１０    処理特性緩衝プログラム記憶部
１１１    処理プログラム
１１２    コンポーネント特徴情報抽出部
１１３    処理特性緩衝方式判定部
１１４    処理特性緩衝プログラム生成部
１２００    プログラム自動生成装置
１２０１    コンポーネントプログラム記憶部
１２０２    処理プログラム
１２０３    コンポーネントプログラム生成部
【図１】
0005702265.tif 000002
【図２】
0005702265.tif 000003
【図３】
0005702265.tif 000004
【図４】
0005702265.tif 000005
【図５】
0005702265.tif 000006
【図６】
0005702265.tif 000007
【図７】
0005702265.tif 000008
【図８】
0005702265.tif 000009
【図９】
0005702265.tif 000010
【図１０】
0005702265.tif 000011
【図１１】
0005702265.tif 000012
【図１２】
0005702265.tif 000013
【図１３】
0005702265.tif 000014