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

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

Info

Publication number
JP5702265B2
JP5702265B2 JP2011248099A JP2011248099A JP5702265B2 JP 5702265 B2 JP5702265 B2 JP 5702265B2 JP 2011248099 A JP2011248099 A JP 2011248099A JP 2011248099 A JP2011248099 A JP 2011248099A JP 5702265 B2 JP5702265 B2 JP 5702265B2
Authority
JP
Japan
Prior art keywords
program
component
buffer
information
processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2011248099A
Other languages
English (en)
Other versions
JP2013105286A (ja
Inventor
康範 橋本
康範 橋本
三部 良太
良太 三部
周平 野尻
周平 野尻
貞裕 石川
貞裕 石川
山口 潔
潔 山口
吉村 健太郎
健太郎 吉村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2011248099A priority Critical patent/JP5702265B2/ja
Priority to CN201210325608.2A priority patent/CN103106119B/zh
Priority to US13/607,087 priority patent/US9015658B2/en
Publication of JP2013105286A publication Critical patent/JP2013105286A/ja
Application granted granted Critical
Publication of JP5702265B2 publication Critical patent/JP5702265B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Description

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

Claims (12)

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

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2011248099A JP5702265B2 (ja) 2011-11-11 2011-11-11 プログラム自動生成装置およびプログラム自動生成方法
CN201210325608.2A CN103106119B (zh) 2011-11-11 2012-09-05 程序自动生成装置和程序自动生成方法
US13/607,087 US9015658B2 (en) 2011-11-11 2012-09-07 Automatic program generation device and automatic program generation method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011248099A JP5702265B2 (ja) 2011-11-11 2011-11-11 プログラム自動生成装置およびプログラム自動生成方法

Publications (2)

Publication Number Publication Date
JP2013105286A JP2013105286A (ja) 2013-05-30
JP5702265B2 true JP5702265B2 (ja) 2015-04-15

Family

ID=48281916

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011248099A Expired - Fee Related JP5702265B2 (ja) 2011-11-11 2011-11-11 プログラム自動生成装置およびプログラム自動生成方法

Country Status (3)

Country Link
US (1) US9015658B2 (ja)
JP (1) JP5702265B2 (ja)
CN (1) CN103106119B (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6151729B2 (ja) * 2015-01-16 2017-06-21 ファナック株式会社 加工プログラムに応じて数値制御装置のコントロールソフトウェアを最適化する機能を備えた制御システム
US9886245B2 (en) 2016-02-24 2018-02-06 Helix Data Solutions LLC Software development tool using a workflow pattern that describes software applications
WO2021144911A1 (ja) * 2020-01-16 2021-07-22 オムロン株式会社 プログラム生成装置、プログラム生成方法、及び生成プログラム

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5875331A (en) * 1994-09-30 1999-02-23 International Business Machines Corp. System and method for generating target language code utilizing an object oriented code generator
JPH1055339A (ja) * 1996-08-13 1998-02-24 Hitachi Ltd オンライン型業務処理システム
US8479109B2 (en) * 1999-08-19 2013-07-02 National Instruments Corporation Programmatically generating a graphical program in response to user input
US8302072B2 (en) * 2000-06-05 2012-10-30 National Instruments Corporation System and method for programmatically generating a graphical program based on a sequence of motion control, machine vision, and data acquisition (DAQ) operations
JP3736308B2 (ja) * 2000-07-14 2006-01-18 日本電気株式会社 ソフトウェアコンポーネント自動生成システム
US7689917B2 (en) * 2000-12-20 2010-03-30 National Instruments Corporation Automatically generating a sub-graphical program in response to user input configuring a graphical program node
US7343606B2 (en) 2003-06-13 2008-03-11 Microsoft Corporation Mechanism for asynchronous components to be application framework agnostic
US8291375B2 (en) * 2004-03-29 2012-10-16 Sybase, Inc. Attribute-based component programming system and methodology for object-oriented languages
US7917889B2 (en) * 2006-06-19 2011-03-29 International Business Machines Corporation Data locations template based application-data association and its use for policy based management
JP2009230606A (ja) * 2008-03-25 2009-10-08 Hitachi Software Eng Co Ltd ソースコードテンプレート生成装置
US8438304B2 (en) * 2008-09-22 2013-05-07 Oracle America, Inc. Method and system for automatically generating software and configuring application installation
US8060857B2 (en) * 2009-01-31 2011-11-15 Ted J. Biggerstaff Automated partitioning of a computation for parallel or other high capability architecture
JP2010237895A (ja) * 2009-03-31 2010-10-21 Hitachi Automotive Systems Ltd 車載電子制御装置,制御ソフトウェアおよび制御ソフトウェアの開発ツール
JP2010277572A (ja) * 2009-04-28 2010-12-09 Sharp Corp コード生成プログラム、それを記録したコンピュータ読み取り可能な記録媒体、コード生成装置、およびコード生成方法
JP5418135B2 (ja) * 2009-10-16 2014-02-19 富士通株式会社 テストプログラム実行プログラム、テストプログラム実行方法、およびテストプログラム実行装置

Also Published As

Publication number Publication date
US20130125091A1 (en) 2013-05-16
JP2013105286A (ja) 2013-05-30
CN103106119B (zh) 2016-02-17
CN103106119A (zh) 2013-05-15
US9015658B2 (en) 2015-04-21

Similar Documents

Publication Publication Date Title
JP4396994B2 (ja) リソース・ファイルの翻訳検証方法、装置、およびプログラム
CN108762743B (zh) 一种数据表操作代码生成方法及装置
CN108351764B (zh) 数据处理方法和系统
US20120266131A1 (en) Automatic program generation device, method, and computer program
US20170054790A1 (en) System and Method for Object Compression and State Synchronization
JP5702265B2 (ja) プログラム自動生成装置およびプログラム自動生成方法
US11726781B2 (en) Code reading supporting device, code reading supporting method, and storage medium
JP2014123249A (ja) 情報処理装置、プログラム、及び情報処理方法
JP4888790B2 (ja) 契約定義関数検証装置、その方法及びそのプログラム
JP4867864B2 (ja) 性能データ収集・表示システム、性能データ表示装置、そのプログラム
JP7260150B2 (ja) Webサイト設計支援装置、Webサイト設計支援方法、及びプログラム
KR100846203B1 (ko) 모바일 어플리케이션의 생성 방법 및 이를 구현하기 위한프로그램을 기록한 기록매체
JP2009251666A (ja) 変更履歴作成装置、方法及びプログラム
JP2009053767A (ja) プログラム解析装置、および、プログラム解析方法
JP2015148925A (ja) プログラム生成装置および方法
JP2015069332A (ja) 静的検証装置に静的検証を実行させる対象範囲を抽出する、対象範囲抽出装置、静的検証システム、対象範囲抽出方法、及び対象範囲抽出プログラム
JP2007094453A (ja) プログラム開発支援システム、プログラム開発支援方法およびプログラム
WO2021149368A1 (ja) 処理ユニット及び処理システム
JP6639238B2 (ja) プログラムおよびコンピュータ
JP6475288B2 (ja) プログラム比較方法、プログラム比較装置およびプログラム比較プログラム
JP2009042951A (ja) プログラム中のデータ抽出方法及び装置
KR101629394B1 (ko) 대용량 데이터 분석을 위한 r의 연계방법, 시각화 방법 및 프로그램을 저장한 저장매체
JP6565287B2 (ja) 表示位置取得プログラム、表示位置取得装置、及び表示位置取得方法
JP2010205162A (ja) モジュール情報作成装置、モジュール情報作成装置のモジュール情報作成方法及びプログラム
JP2000089945A (ja) 統合型ソフトウエア開発支援システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140130

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140730

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140805

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140919

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150120

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150219

R150 Certificate of patent or registration of utility model

Ref document number: 5702265

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees