説明

プログラム自動生成装置およびプログラム自動生成方法

【課題】コンポーネントの特徴に基づく差異を緩衝するためのプログラムを自動的に生成する装置及びその方法を提供する。
【解決手段】本発明は、コンポーネントが使用されるソフトウェア環境に対する、コンポーネントの特徴を緩衝する緩衝プログラムを自動生成する。当該装置は、緩衝プログラムの自動生成を実行するコントローラ101と、緩衝プログラムの自動生成のための制御情報と処理プログラムとを有するメモリ102と、コンポーネントの処理内容の入力装置103と、自動生成された緩衝プログラムを出力する出力装置104と、を備える。メモリは、コンポーネントを緩衝するための複数の形態を制御情報として記録し、コントローラは、処理プログラムに基づいて、入力されたコンポ―ネントの処理内容に基づいて特徴情報を抽出して、当該抽出された特徴情報を前記制御情報としてメモリに記録し、特徴情報に基づいて所定の形態を選択し、選択された形態と特徴情報に基づいて緩衝プログラムを生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラムを自動的に生成する装置、及び、そのための方法に関するものである。
【背景技術】
【0002】
プログラムの自動生成装置の従来例として、例えば、特開2005−4771号公報に記載のコンピューティングシステムが存在する。この従来システムは、コンポーネントの作者がスレッド化/同時処理などのアプリケーションフレームワーク特有の問題を考慮しなくとも、コンポーネントが多種多様なアプリケーションフレームワークの下で動作することを可能にするメカニズムを提供することを目的として、アプリケーションフレームワークの差異が非同期オペレーションの実装に対して与える影響を、処理を実現するためのコンポーネントから分離するためのメカニズムを提供するものである。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2005−4771号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
アプリケーションフレームワークの形態によっては、非同期オペレーションを実現できないケースがあるものの、既述の従来のシステムは、このようなケースに対応することを考慮していない。
【0005】
このようなケースの一例として、サーバ/クライアント型のソフトウェアシステムにおいて、クライアント側システムをAdobe Flex(登録商標)で実現し、サーバ側システムをJava(登録商標)で実現したアプリケーションフレームワークがある。サーバ側と通信する処理は非同期オペレーションとして実現可能であるものの、クライアント側だけで完結する処理は、非同期オペレーションとして実現されることは普通不可能である。
【0006】
さらに、既述のシステムでは、アプリケーションフレームワークによるコンポーネントの実装の差異として、実行系列以外については考慮されていない。すなわち、オペレーションのインタフェースの制約やその他の差異をコンポーネントから取り除くことはできていない。
【0007】
このような理由により、例えば、ソフトウェアを実現するためのアプリケーションフレームワークやその下でのソフトウェアキテクチャが変更されるシーンにおいて、また、複数のアプリケーションフレームワークやソフトウェアキテクチャ向けにソフトウェアを作成するシーンにおいて、コンポーネントやコンポーネントを利用するプログラムの再利用性が十分に確保できないという問題が発生している。この問題は、あるコンポーネントを同等の機能を持つコンポーネントで置き換えたり、コンポーネント内での処理フローの変更を強要されることにもつながる。
【0008】
そこで、本発明は、コンポーネントの利用者のために、アーキテクチャやフレームワークなどコンポーネントが利用されるソフトウェア環境の違いに基づく、コンポーネントの特徴に基づく差異を緩衝するためのプログラムを自動的に生成する装置及びその方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
既述の目的を達成するために、本発明に係るプログラムの自動生成装置は、コンポーネントが使用されるソフトウェア環境に合うように、コンポーネントの特徴点をソフトウェアの環境に応じて緩衝することを特徴とする。
【0010】
本発明の形態は、コンポーネントが使用されるソフトウェア環境に対して、当該コンポーネントの特徴を緩衝するためのプログラムを自動生成するプログラム自動生成装置であって、前記緩衝プログラムの自動生成を実行するコントローラと、前記緩衝プログラムの自動生成のための制御情報と処理プログラムとを有するメモリと、前記コンポーネントの処理内容の入力装置と、前記自動生成された緩衝プログラムを出力する出力装置と、を備え、前記メモリは、前記コンポーネントを緩衝するための複数の形態を前記制御情報として記録し、前記コントローラは、前記処理プログラムに基づいて、前記入力されたコンポ―ネントの処理内容に基づいて特徴情報を抽出して、当該抽出された特徴情報を前記制御情報として前記メモリに記録し、前記メモリの制御情報から、前記抽出された特徴情報と前記複数の形態を読み込み、当該特徴情報に基づいて前記複数の形態から所定の形態を選択し、前記選択された形態と前記特徴情報に基づいて前記緩衝プログラムを生成する、ことを特徴とする。
【発明の効果】
【0011】
本発明によれば、コンポーネントの利用者のために、アーキテクチャやフレームワークなどコンポーネントが利用されるソフトウェア環境の違いに基づく、コンポーネントの特徴に基づく差異を緩衝するためのプログラムを自動的に生成する装置及びその方法を提供することができる。
【図面の簡単な説明】
【0012】
【図1】プログラム自動生成装置の一つの実施形態のブロック構成図ある。
【図2】プログラム自動生成装置のプログラム自動生成を説明するフローチャートである。
【図3】コンポーネント処理内容の実施形態に係る論理ブロック図である。
【図4】コンポーネント処理内容の特徴情報の論理ブロック図である。
【図5】コンポーネント処理内容からコンポーネント特徴情報を抽出する動作を説明する論理ブロック図である。
【図6】コンポーネントに対する処理特性緩衝規則の実施形態のブロック図である。
【図7】コンポーネント特徴情報に基づいて緩衝プログラムの雛形種別を決定する動作を説明する論理ブロック図である。
【図8】緩衝プログラムの雛形の構成を示す論理ブロック図である。
【図9】コンポーネントの処理特性を緩衝するための処理特性緩衝プログラムイメージの論理ブロック図である。
【図10】コンポーネント特徴情報と緩衝プログラムの雛形から特定情報を処理特性緩衝プログラムに抽出する動作を説明する論理ブロック図である。
【図11】処理特性緩衝プログラムの不足情報を、コンポーネント特徴情報に基づいて補完する動作を説明する論理ブロック図である。
【図12】プログラム自動生成装置の第2の実施形態を示す論理ブロック図である。
【図13】その動作を示すフローチャートである。
【発明を実施するための形態】
【0013】
次に本発明の実施形態を図面に基づいて説明する。プログラム自動生成装置は、プログラム自動生成のための実施形態として、コンポーネントの実装の差異を緩衝するプログラムを生成する。図1は、プログラム自動生成装置の一形態のハードウエア構成及び論理構成を示すブロック図である。プログラム自動生成装置100は、CPU101、メモリ102、入力装置103、出力装置104、外部記憶装置105を有する。
【0014】
外部記憶装置105は、コンポーネント処理内容記憶部(領域)106と、コンポーネント特徴情報記憶部(領域)107、処理特性緩衝規則記憶部(領域)108、緩衝プログラム雛形記憶部(領域)109、処理特性緩衝プログラム記憶部(領域)110と、を保持しており、さらに処理プログラム111を有している。
【0015】
処理プログラム111は、コンポーネント特徴情報抽出(処理)部112と、処理特性緩衝方式判定(処理)部113と、処理特性緩衝プログラム生成(処理)部114と、を実行する。処理プログラム111は実行時にメモリ102に読み込まれ、CPU101によって実行される。
【0016】
処理特性緩衝規則記憶部108と緩衝プログラム雛形記憶部109との夫々に、予め、ユーザによって、処理特性緩衝規則、緩衝プログラム雛形が入力されている。処理特性緩衝規則、緩衝プログラム雛形の詳細については、後述する。
【0017】
入力装置103を介して、外部から入力されたコンポーネントの処理内容は、コンポーネント処理内容記憶部106に書き込まれる。コンポーネント特徴情報抽出部112は、コンポーネント処理内容記憶部106から読み出したコンポーネントの処理内容から、その特徴を抽出し、コンポーネント特徴情報記憶部107に書き込む。
【0018】
処理特性緩衝方式判定部113は、処理特性緩衝規則記憶部108から読み出した処理特性緩衝規則を参照しながら、コンポーネント特徴情報記憶部107から読み出したコンポーネント特徴情報に対応する処理特性緩衝方式を選択することにより、コンポーネント特徴情報を補完する。
【0019】
コンポーネント緩衝プログラム生成部114は、コンポーネント特徴情報記憶部107から読み出したコンポーネント特徴情報を参照し、選択した緩衝方式に対応した緩衝プログラム雛形を雛形プログラム雛形記憶部109から読み出し、これを処理特性緩衝プログラムとして処理特性緩衝プログラム記憶部110に書き込む。さらに、コンポーネント緩衝プログラム生成部114は、コンポーネント特徴情報を参照し、処理特性緩衝プログラムを補完することにより、処理特性緩衝プログラムを完成させる。
【0020】
図2は、プログラム自動生成装置の処理を説明するフローチャートの一例である。図2のフローチャートに基づいて、図1の各部の動作を説明する。ステップ200は、プログラム自動生成ツールに対する設計情報の入力として、コンポーネントの処理内容を入力するステップである。入力操作は、開発者が実施する。ステップ200では、入力装置103から入力されたコンポーネントの処理内容を、コンポーネント処理内容記憶部106に書き込む。
【0021】
コンポーネントの処理内容とは、業務データや画面表示に関する操作など、所定の具体的処理を実現するための手段を定義した情報、または、手段を実現するためのプログラムである。アプリケーションの実行中で当該処理が呼ばれるタイミングなど、呼び出しに関する情報は保持されなくてもよい。コンポーネントの処理内容の具体例を図3に示す。
【0022】
コンポーネント処理内容300は、コンポーネント名301、コンポーネントが利用されるアーキテクチャの構成302、アーキテクチャにおけるコンポーネントの配置303の他、コンポーネントの処理の実体としての呼び出し処理名304及び呼び出し処理内容305、そして、ハンドラ処理名306及びハンドラ処理内容307を保持している。
【0023】
図3においてコンポーネント処理内容300は定義情報であるが、プログラムであってもよい。後者の場合は、301〜306の情報はメタ情報になるか、又は、プログラムを静的に解析して判別できる形式になる。これらの情報は、後述のように、機械的な手段によって抽出できるように構成しておく。
【0024】
図2のステップ201から204までは、入力情報をもとにした機械的な処理の例であり、人手を介することなくプログラム自動生成装置のみで実現できる処理である。ステップ201では、コンポーネント特徴情報抽出部112が、コンポーネント処理内容記憶部106からコンポーネント処理内容を読み出し、コンポーネント特徴情報を抽出する。抽出したコンポーネント特徴情報は、コンポーネント特徴情報記憶部107に書き込まれる。
【0025】
ここで、コンポーネント特徴情報とは、コンポーネントを備えるプログラムが実行される際のコンポーネントの振る舞い方や、コンポーネントの呼び出し方法に影響を与える情報を含む、コンポーネントの実装に関する情報である。影響を与える情報の種類は、アプリケーションフレームワークによって異なる。また、コンポーネントの振舞いの差異を緩衝する観点によっても異なってくる。この実施形態では、コンポーネントの同期処理/非同期処理の違いを含む、実行系列の違いを緩衝する観点からの特徴であるとする。コンポーネント特徴情報のスキーマの具体例を図4に示す。
【0026】
図4はコンポーネント特徴情報の例である。コンポーネント特徴情報400は、対応するコンポーネント処理内容を特定するための情報であるコンポーネント名401、対応する緩衝プログラムを特定するための情報である基本関数名402、アプリケーションフレームワーク内でコンポーネントを特定するためのプログラム参照情報403、振舞い方や呼び出し方法を特徴付ける情報である処理特性情報404、および、コンポーネントの特性を緩衝するプログラムの雛形を特定する情報である雛形種別405を持つ。これらの特徴情報は一例である。
【0027】
プログラム参照情報403は、呼び出し関数名406とハンドラ関数名407とから構成され、また、処理特性情報404は、アーキテクチャ構成情報408とコンポーネント配置情報409とから構成される。
【0028】
コンポーネント特徴情報が抽出される際、コンポーネント特徴情報抽出部112は、先ず、コンポーネント処理内容記憶部106が保持しているコンポーネント処理内容のうち、一つを選択する。
【0029】
次に、コンポーネント特徴情報抽出部112は、選択したコンポーネント処理内容から、必要な情報を抜き出し、コンポーネント特徴情報記憶部107が保持するコンポーネント特徴情報のうちの対応する箇所に入力する。コンポーネント特徴情報抽出部112は、コンポーネント処理内容記憶部106が保持する全てのコンポーネント処理内容について、コンポーネント特徴情報の抽出操作を行うことにより、ステップ202を完了する。コンポーネント処理内容からコンポーネント特徴情報を抽出する方法の具体例を、図5に示す。
【0030】
図5は、コンポーネント特徴情報のうち基本的な情報を抽出するための処理のイメージを示す。コンポーネント特徴情報抽出部112は、選択したコンポーネント処理内容300が保持するコンポーネント名301からコンポーネント名401を、アーキテクチャ構成情報302からアーキテクチャ構成情報408を、コンポーネント配置情報303からコンポーネント配置情報409を、呼び出し処理名304から呼び出し関数名406を、さらに、ハンドラ処理名306からハンドラ関数名407を、それぞれ取得し、これをコンポーネント特徴情報記憶部107に書き込む。基本関数名402には呼び出し処理名304の情報が書き込まれる。なお、ステップ201の時点では、雛形種別405には何も情報が入力されていなくてよい。
【0031】
ステップ202では、処理特性緩衝方式判定部113が、処理特性緩衝規則記憶部108から読み出した処理特性緩衝規則を参照し、コンポーネント特徴情報記憶部107から読み出したコンポーネント特徴情報に対応する雛形種別を探し出すことにより、コンポーネント特徴情報に対応する処理特性緩衝方式を判定する。探し出された雛形種別の情報は、コンポーネント特徴情報の一部として、コンポーネント特徴情報記憶部107に書き込まれる。
【0032】
処理特性緩衝規則とは、コンポーネントの処理特性情報ごとに、コンポーネントの振舞い方や呼び出し方法の差異などを緩衝する方法を分類した情報である。処理特性緩衝規則の具体例を、図6に示す。
【0033】
処理特性緩衝規則600は、プログラムの振舞い方や呼び出し方法を特徴付ける情報である処理特性情報601と、その特徴を緩衝する方法の分類を示す情報である雛形種別604との組み合わせによって構成されている。処理特性情報601は、例えば、アーキテクチャ構成情報602とコンポーネント配置情報603とから構成されており、コンポーネント特徴情報が保持する処理特性情報404と対応付けられる形式になっている。
【0034】
処理特性緩衝方式の判定において、処理特性緩衝方式判定部113は、まず、コンポーネント特徴情報記憶部107が保持するコンポーネント特徴情報のうち、一つを選択する。次に、選択したコンポーネント特徴情報に対応する処理特性緩衝方式を、処理特性緩衝規則記憶部108が保持する処理特性緩衝規則を参照し、探し出す。
【0035】
次に、探し出されたコンポーネント緩衝方式の情報は、選択しているコンポーネント特徴情報の一部として記録される。コンポーネント特徴情報記憶部107が保持するすべてのコンポーネント特徴情報について、処理特性緩衝方式判定部113が処理特性緩衝方式を探し出し、これを記録することにより、ステップ202は終了する。
【0036】
処理特性緩衝方式判定部113が処理特性緩衝方式を探し出し、記録する方法の具体例を図7に示す。図7は、コンポーネント特徴情報のうち雛形種別の情報を抽出する処理のイメージを示す。
【0037】
先ず、処理特性緩衝方式判定部113は、選択されたコンポーネント特徴情報400に対応する処理特性緩衝規則600を、処理特性緩衝規則記憶部108から探し出す。対応関係は、コンポーネント特徴情報400の処理特性情報404と処理特性緩衝規則600の処理特性情報601との比較、例えば、夫々の値の関連度、あるいは値の同値によって、処理特性緩衝方式判定部113によって判定される。この実施形態では、アーキテクチャ構成とコンポーネント配置が共に同一であるものを対応するものと判定される。次いで、処理特性緩衝方式判定部113は、処理特性緩衝規則600の雛形種別604の情報を、選択中のコンポーネント特徴情報400の雛形種別405に書き込む。
【0038】
ステップ203では、処理特性緩衝プログラム生成部114が、コンポーネント特徴情報記憶部107から読み出したコンポーネント特徴情報を参照し、対応する緩衝プログラム雛形を緩衝プログラム雛形記憶部109から読み出し、処理特性緩衝プログラムとして処理特性緩衝プログラム記憶部110に書き込む。処理特性緩衝プログラム生成部114が、コンポーネント特徴情報記憶部107が保持するすべてのコンポーネント特徴情報について、緩衝プログラム雛形の読み出し及びそれを処理特性緩衝プログラム記録部110に記録することにより、ステップ203を完了する。
【0039】
緩衝プログラム雛形とは、あるコンポーネントやプログラムの振舞い方や呼び出し方法の特性毎に用意された、その特性を隠蔽あるいは減縮、又は緩衝するためのラッパープログラムのフォーマットのことである。処理特性緩衝プログラムとは、あるコンポーネントやプログラムの振舞い方や呼び出し方法の特徴を隠蔽あるいは減縮、又は緩衝するためのラッパープログラムのことである。処理特性緩衝プログラム生成部114は、両者の差を緩衝する。
【0040】
緩衝プログラム雛形の具体例を図8に、処理特性緩衝プログラムの具体例を図9に、それぞれ示す。緩衝プログラム雛形800として、緩衝規則記憶部108に記録された全ての処理特性緩衝規則の雛形種別604に対応するものが予め用意され、緩衝プログラム雛形記憶部109に入力されている。緩衝プログラム雛形800は、処理特性緩衝規則の雛形種別604と対応付けるための情報である雛形種別801と、プログラム片802を保持している。
【0041】
プログラム片802は、雛形種別801が対応しているアプリケーションフレームワークごとのプログラミング言語のソースコードである。その一部が代替テキスト803など緩衝対象領域となっている。代替テキスト803は、機械的な構文解析処理によってプログラム片802から容易に区別できる形式の文字列になっている。図9にあるように、処理特性緩衝プログラム900は、対応するコンポーネントを特定する情報であるコンポーネント名901、および、プログラム片902を保持する。
【0042】
処理特性緩衝プログラム雛形の特定、即ち、緩衝プログラム雛形記憶部109からの読み出し、及び、処理特性緩衝プログラム記憶部110への書き込みについて、処理特性緩衝プログラム生成部114は、先ず、コンポーネント特徴情報記憶部107が保持するコンポーネント特徴情報のうち、一つを選択する。
【0043】
処理特性緩衝プログラム生成部114は、選択されたコンポーネント特徴情報に対応する処理特性緩衝プログラム900を作成し、これを処理特性緩衝プログラム記憶部110に書き込む。次いで、処理特性緩衝プログラム生成部114は、選択中のコンポーネント特徴情報に対応する緩衝プログラム雛形を緩衝プログラム雛形記憶部109から探し出し、そのプログラム片の情報をコピーし、作成した処理特性緩衝プログラム900のプログラム片902に書き込む。コンポーネント特徴情報記憶部107が保持する全てのコンポーネント特徴情報について、処理特性緩衝プログラム生成部114による処理特性緩衝プログラムの作成およびプログラム片の情報の書き込みが行われることにより、ステップ203が終了される。
【0044】
処理特性緩衝プログラムの作成及び書き込みの具体例が図10に示されている。図10は、処理特性緩衝プログラム900の基本的な情報をコンポーネント特徴情報記憶部107と緩衝プログラム雛形記憶部109から抽出するイメージを示す。先ず、処理特性緩衝プログラム生成部114は、選択されたコンポーネント特徴情報400のコンポーネント名401をコンポーネント名901として、処理特性緩衝プログラム900を作成し、処理特性緩衝プログラム記憶部110に書き込む。
【0045】
次いで、処理特性緩衝プログラム生成部114は、選択中のコンポーネント特徴情報400の雛形種別405を参照し、これと同じ雛形種別801の情報を持つ緩衝プログラム雛形800を、緩衝プログラム雛形記憶部109から選択する。そして、処理特性緩衝プログラム生成部114は、選択した緩衝プログラム雛形800のプログラム片802の情報をコピーし、既述のように作成された処理特性緩衝プログラム900のプログラム片902として処理特性緩衝プログラム記憶110に書き込む。
【0046】
ステップ204では、処理特性緩衝プログラム生成部114は、コンポーネント特徴情報記憶部107からコンポーネント特徴情報を一つ読み出し、これと対応する処理特性緩衝プログラムを処理特性緩衝プログラム記憶部110から探し出す。
【0047】
処理特性緩衝プログラム生成部114は、さらに、コンポーネント特徴情報400の情報を参照しながら、処理特性緩衝プログラムの情報を補完することにより、処理特性緩衝プログラムを完成させる。コンポーネント特徴情報記憶部107が保持するすべてのコンポーネント特徴情報について、処理特性緩衝プログラム生成部114が処理特性緩衝プログラムの補完をおこなうことにより、ステップ204を完了する。
【0048】
図11は、処理特性緩衝プログラムの不足情報を補完する処理のイメージを説明する。処理特性緩衝プログラム生成部114は、先ず、選択された、コンポーネント特徴情報400のコンポ名401と同一のコンポ名901を持つ処理特性緩衝プログラム900を、処理特性緩衝プログラム記憶部110から探し出し、これを読み込む。
【0049】
次いで、処理特性緩衝プログラム生成部114は、読み込んだ処理特性緩衝プログラム900が持つプログラム片902のうち、代替テキスト1100を、選択中のコンポーネント特徴情報400を用いて置き換える。代替テキスト1100は、ステップ203におけるコピー元のプログラム片802で代替テキスト803であった部分であり、プログラム片902の他の箇所と明確に区別できるように記述されている。
【0050】
処理特性緩衝プログラム生成部114は、暫定テキスト1100のうち、[BASE]というテキストを基本関数名402によって、[CALLER]というテキストを呼び出し関数名406によって、また、[HANDLER]と書かれているテキストをハンドラ関数名407によって、それぞれ置き換えることによって、暫定テキスト1100であった箇所が全て確定されることによって、プログラム片が完成される。
【0051】
ステップ205は、開発者が、プログラム自動生成装置100によって生成された処理特性緩衝プログラムを、出力装置104を通じて取得するステップである。プログラム自動生成装置100は、開発者の指示に従い、処理特性緩衝プログラム記憶部110から処理特性緩衝プログラムを読み出し、出力装置104に出力する。また、入力の不備などにより、プログラム自動生成装置100が処理特性緩衝プログラムを生成することができなかった場合は、その旨を開発者に通知するための情報を出力してもよい。なお、出力は、計算機で扱えるようテキストデータ又はバイナリデータとして出力してもよいし、開発者が閲覧できるようモニタに文字又はグラフィックによって表示されてもよい。
【0052】
次に、第2の実施形態について説明する。この実施形態に係るプログラム自動生成装置は、コンポーネントの実装の差異を緩衝するプログラムだけでなく、コンポーネント自体のプログラムを生成する。図12に、このプログラム自動生成装置のブロック構成図を示す。プログラム自動生成装置1200は、第1の実施形態におけるプログラム自動生成装置100の構成要素に加え、コンポーネントプログラム記憶部1201を保持する。そして、処理プログラム1202は、第1の実施形態における処理プログラム111の構成要素に加え、コンポーネントプログラム生成部1203を保持する。処理プログラム1202は実行時にメモリ102に読み込まれ、CPU101によって実行される。
【0053】
処理特性緩衝規則記憶部108、緩衝プログラム雛形記憶部109には、それぞれ予め処理特性緩衝規則、緩衝プログラム雛形が入力されている。処理特性緩衝規則、緩衝プログラム雛形の詳細は、第1の実施形態と同様であっても、また、異なるものであってもよい。
【0054】
入力装置103を介して外部から入力されたコンポーネント処理内容は、コンポーネント処理内容記憶部106に書き込まれる。コンポーネント特徴情報抽出部112は、コンポーネント処理内容記憶部106から読み出したコンポーネント処理内容から、処理内容の特徴を抽出し、コンポーネント特徴情報記憶部107に書き込む。処理特性緩衝方式判定部113は、処理特性緩衝規則記憶部108から読み出した処理特性緩衝規則を参照しながら、コンポーネント特徴情報記憶部107から読み出したコンポーネント特徴情報に対応する処理特性緩衝方式を選択することにより、コンポーネント特徴情報を補完する。
【0055】
コンポーネント緩衝プログラム生成部114は、コンポーネント特徴情報記憶部107から読み出したコンポーネント特徴情報を参照し、選択された緩衝方式に対応した緩衝プログラム雛形を、雛形プログラム雛形記憶部109から読み出し、処理特性緩衝プログラムとして処理特性緩衝プログラム記憶部110に書き込む。さらに、コンポーネント特徴情報を参照し、処理特性緩衝プログラムを補完することにより、処理特性緩衝プログラムを完成させる。
【0056】
コンポーネントプログラム生成部1203は、コンポーネント処理内容記憶部106からコンポーネント処理内容を読み出し、コンポーネントプログラムを作成した後、コンポーネントプログラム記憶部1201に書き込む。
【0057】
図13は、本実施例のプログラム自動生成装置の処理を説明するフローチャートの例である。ステップ200から205は、既述の第1の実施形態と同様である。ステップ1301では、コンポーネントプログラム生成部1203が、コンポーネント処理内容記憶部106からコンポーネント処理内容を読み出し、その情報に基づいてコンポーネントプログラムを作成し、コンポーネントプログラム記憶部1201に書き込む。コンポーネント処理内容記憶部106が保持するすべてのコンポーネント処理内容について、コンポーネントプログラムの作成および書き込みをすることにより、ステップ1301を完了する。
【0058】
コンポーネント処理内容は、第1の実施形態と同様に、図3の形式の情報であるものとする。コンポーネントプログラム生成部1203は、コンポーネント処理内容300の呼び出し処理名304やハンドラ処理名306からコンポーネントのインタフェースを作成し、また、呼び出し処理内容305やハンドラ処理内容307から、プログラムの実体を作成する。呼び出し処理内容305やハンドラ処理内容307が、プログラムを生成するために十分な情報量を持っていない場合については、コンポーネントプログラム生成部1203は、コンポーネントプログラムのインタフェースのみを作成することにより、コンポーネントプログラムの作成を完了してもよい。
【0059】
ステップ1302は、開発者が、プログラム自動生成装置100によって生成されたコンポーネントプログラムを、出力装置104を通じて取得するステップである。プログラム自動生成装置100は、開発者の指示に従い、コンポーネントプログラム記憶部1201からコンポーネントプログラムを読み出し、出力装置104に出力する。また、入力の不備などにより、プログラム自動生成装置100がコンポーネントプログラムを生成することができなかった場合は、その旨を開発者に通知するための情報を出力してもよい。なお、出力は、計算機で扱えるようテキストデータ又はバイナリデータとして出力しても良いし、開発者が閲覧できるようモニタに文字又はグラフィックを表示してもよい。
【0060】
この実施形態において、コンポーネントプログラム生成部1300が、コンポーネントの特徴情報を参照することによってコンポーネントのインタフェース情報を取得し、インタフェース情報から、コンポーネントのスケルトンプログラムを生成するようにしてもよい。
【0061】
また、コンポーネント特徴情報抽出部112は、コンポーネントの処理の特徴情報に合わせて、コンポーネントの処理実体の情報も取得し、コンポーネントプログラム生成部1300は、コンポーネントの処理実体の情報を参照することにより、コンポーネントのプログラムを生成するようにしてもよい。
またさらに、コンポーネントプログラム生成部1300は、コンポーネントが既に存在するか否かをプログラム生成の際に判定し、既に存在する場合には、コンポーネントのプログラムのマージや生成の取りやめなど、予め指定された代替処理を実行するにしてもよい。
【0062】
以上説明したプログラム自動生成の実施形態によれば、コンポーネントの利用者のために、アーキテクチャやフレームワークなどコンポーネントが利用されるソフトウェア環境の違いに基づく、コンポーネントの特徴に基づく差異を緩衝することができる。またさらに、コンポーネントの利用者に対し、コンポーネントを活用する上でのコンポーネントの特徴がソフトウェア環境の違いによって異ならないインタフェースを提供するためのプログラムの自動生成装置及びその方法を提供することができる。これにより、アプリケーションフレームワークやソフトウェアキテクチャに変更がある場合でも、変更が利用側のプログラムに影響しないため、修正箇所を局所化することが可能となり、テストを含む修正作業のコストを削減することができる。
【符号の説明】
【0063】
100 プログラム自動生成装置
101 CPU
102 メモリ
103 入力装置
104 出力装置
105 外部記憶装置
106 コンポーネント処理内容記憶部
107 コンポーネント特徴情報記憶部
108 処理特性緩衝規則記憶部
109 緩衝プログラム雛形記憶部
110 処理特性緩衝プログラム記憶部
111 処理プログラム
112 コンポーネント特徴情報抽出部
113 処理特性緩衝方式判定部
114 処理特性緩衝プログラム生成部
1200 プログラム自動生成装置
1201 コンポーネントプログラム記憶部
1202 処理プログラム
1203 コンポーネントプログラム生成部

【特許請求の範囲】
【請求項1】
コンポーネントが使用されるソフトウェア環境に対して、当該コンポーネントの特徴を緩衝するためのプログラムを自動生成するプログラム自動生成装置であって、
前記緩衝プログラムの自動生成を実行するコントローラと、
前記緩衝プログラムの自動生成のための制御情報と処理プログラムとを有するメモリと、
前記コンポーネントの処理内容の入力装置と、
前記自動生成された緩衝プログラムを出力する出力装置と、
を備え、
前記メモリは、前記コンポーネントを緩衝するための複数の形態を前記制御情報として記録し、
前記コントローラは、前記処理プログラムに基づいて、
前記入力されたコンポ―ネントの処理内容に基づいて特徴情報を抽出して、当該抽出された特徴情報を前記制御情報として前記メモリに記録し、
前記メモリの制御情報から、前記抽出された特徴情報と前記複数の形態を読み込み、当該特徴情報に基づいて前記複数の形態から所定の形態を選択し、
前記選択された形態と前記特徴情報に基づいて前記緩衝プログラムを生成する、
プログラム自動生成装置。
【請求項2】
前記特徴情報は、
前記コンポーネントの処理の特性情報と、
前記コンポーネントのプログラムの参照情報と、
を含む、請求項1記載のプログラム自動生成装置。
【請求項3】
前記特性情報は、
前記コンポーネントの識別情報と、
前記コンポーネントが利用されるアーキテクスチャの構成と、
当該アーキテクスチャに利用されるコンポーネントの配置と、
を含む、請求項2記載のプログラム自動生成装置。
【請求項4】
前記参照情報は、
前記コンポーネントの呼び出し関数名と、
前記コンポーネントのハンドラ関数名と、
を含む、請求項2記載のプログラム自動生成装置。
【請求項5】
前記複数の形態は、前記緩衝プログラムの雛形となる複数のプログラムである、請求項1記載のプログラム自動生成装置。
【請求項6】
前記コントローラは、
前記特徴情報に基づいて、前記複数の雛形プログラムから特定の雛形プログラムを選択し、
当該選択した雛形プログラムに基づいて前記緩衝プログラムを生成する、請求5記載のプログラム自動生成装置。
【請求項7】
前記コントローラは、
前記選択した雛形プログラムのプログラム片の緩衝対象領域を前記特徴情報に基づいて補完し、
当該補完されたプログラムを前記緩衝プログラムとして前記出力手段から出力する、請求項6記載のプログラム自動生成装置。
【請求項8】
前記プログラム片は、前記雛形プログラムが対応しているアプリケーションフレームワークごとのソースコードであり、その一部が前記緩衝対象領域である、請求項7記載のプログラム自動生成装置。
【請求項9】
前記コントローラは、前記緩衝対象領域に、前記コンポーネントの基本関数、呼び出し関数名、及び、ハンドラ関数名の少なくとも一つを補う、請求項8記載のプログラム自動生成装置。
【請求項10】
前記緩衝対象領域は代替テキスト情報から構成され、前記コントローラは、前記代替テキスト情報を前記プログラム片のコード部分から判別する、請求項8記載のプログラム自動生成装置。
【請求項11】
前記複数の雛形プログラムの夫々は、前記コンポーネントが使用されるアーキテクスチャと前記コンポートの配置の複数の組み合せ毎に分類されている、請求項5記載のプログラム自動生成装置。
【請求項12】
コンポーネントが使用されるソフトウェア環境に対して、当該コンポーネントの特徴を緩衝するためのプログラムを生成する方法であって、
コンポーネントの処理内容をコンピュータに入力する工程と、
前記入力されたコンポ―ネントの処理内容に基づいて、前記コンピュータが特徴情報を抽出する工程と、
前記コンピュータは、前記特徴情報に基づいて前記コンポーネントを緩衝するための複数の形態から所定の形態を選択する工程と、
前記選択された形態と前記特徴情報に基づいて前記緩衝プログラムを生成する工程と、
を備える、プログラム生成方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate


【公開番号】特開2013−105286(P2013−105286A)
【公開日】平成25年5月30日(2013.5.30)
【国際特許分類】
【出願番号】特願2011−248099(P2011−248099)
【出願日】平成23年11月11日(2011.11.11)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】