JP4855710B2 - ソフトウェアのプラグイン方法、および、アプリケーションプログラム - Google Patents

ソフトウェアのプラグイン方法、および、アプリケーションプログラム Download PDF

Info

Publication number
JP4855710B2
JP4855710B2 JP2005133581A JP2005133581A JP4855710B2 JP 4855710 B2 JP4855710 B2 JP 4855710B2 JP 2005133581 A JP2005133581 A JP 2005133581A JP 2005133581 A JP2005133581 A JP 2005133581A JP 4855710 B2 JP4855710 B2 JP 4855710B2
Authority
JP
Japan
Prior art keywords
module
interface
framework
software
entry
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
JP2005133581A
Other languages
English (en)
Other versions
JP2006309621A (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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2005133581A priority Critical patent/JP4855710B2/ja
Priority to US11/411,944 priority patent/US7770149B2/en
Publication of JP2006309621A publication Critical patent/JP2006309621A/ja
Application granted granted Critical
Publication of JP4855710B2 publication Critical patent/JP4855710B2/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S715/00Data processing: presentation processing of document, operator interface processing, and screen saver display processing
    • Y10S715/961Operator interface with visual structure or function dictated by intended use
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S715/00Data processing: presentation processing of document, operator interface processing, and screen saver display processing
    • Y10S715/961Operator interface with visual structure or function dictated by intended use
    • Y10S715/965Operator interface with visual structure or function dictated by intended use for process control and configuration
    • Y10S715/966Computer process, e.g. operation of computer

Description

本発明は、ソフトウェアのプラグイン方法、および、プラグインされたソフトウェアを有するアプリケーションシステムに関する。
従来、アプリケーションシステムにソフトウェアをプラグインする場合、プラグインするソフトウェアをモジュール化し、このモジュールをインタフェースを介してアプリケーションシステムに接続していた(例えば、特許文献1参照。)。インタフェースは、それぞれのモジュールで個別に定義するか、モジュールの機能に応じて共通化していた。しかし、共通化したとしても、モジュールの大型化、多機能化により、個々のモジュールでも複数のインタフェースが必要となっている。このことにより、複数のモジュールで一つの共通化したインタフェースに接続することが可能になるので、複数のモジュールそれぞれの接続可能なポインタに、モジュールの区別とインタフェースの区別の両方が可能な固有名称を付けている。固有名称を付けることにより、モジュールに必要なインタフェースを接続できるが、固有名称の個数は多くなり煩雑になっている。
特開2003−108370号公報
本発明は、モジュールのインタフェースを接続可能なポインタの固有名称が煩雑にならないソフトウェアのプラグイン方法を提供する。
また、本発明は、モジュールのインタフェースを接続可能なポインタの固有名称が煩雑にならないアプリケーションプログラムを提供する。
本願発明の一態様によれば、登録部、取得部、処理部及びモジュールライブラリを備えるアプリケーションプログラムをコンピュータに実行させることにより実現されるソフトウェアのプラグイン方法であって、コンピュータに、登録部、取得部、処理部及びモジュールライブラリが、ソフトウェアがプラグインされるフレームワークを構成する手順、ソフトウェアのモジュールが有するエントリインタフェースのエントリ名を登録部がモジュールライブラリに登録する手順、取得部が登録されたエントリ名に基づいてエントリインタフェースを呼び出すことにより、モジュールが有するオペレーションインタフェースのオペレーション名を取得する手順、取得部がオペレーション名に基づいてオペレーションインタフェースを呼び出すことにより、オペレーションインタフェースをフレームワークに接続する手順、処理部が、モジュールに、接続されたオペレーションインタフェースを用いて、フレームワークに接続する自身の生成、モジュールの固有の処理と、フレームワークに接続する自身の削除を実施させる手順を実行させることを特徴とするソフトウェアのプラグイン方法が提供される。
また、本願発明の一態様によれば、登録部、取得部、処理部及びモジュールライブラリを備えるアプリケーションプログラムであって、コンピュータに、登録部、取得部、処理部及びモジュールライブラリが、ソフトウェアがプラグインされるフレームワークを構成する手順、登録部が、ソフトウェアのモジュールが有するエントリインタフェースのエントリ名をモジュールライブラリに登録する手順、取得部が、登録されたエントリ名に基づいてエントリインタフェースを呼び出すことにより、モジュールが有するオペレーションインタフェースのオペレーション名を取得する手順、取得部が、オペレーション名に基づいてオペレーションインタフェースを呼び出すことにより、オペレーションインタフェースをフレームワークに接続する手順、処理部が、モジュールに、接続されたオペレーションインタフェースを用いて、フレームワークに接続する自身の生成、モジュールの固有の処理と、フレームワークに接続する自身の削除を実施させる手順を実行させることを特徴とするアプリケーションプログラムが提供される。
本発明の一態様に係るソフトウェアのプラグイン方法およびアプリケーションプログラムによれば、モジュールのインタフェースを接続可能なポインタの固有名称が煩雑にならないソフトウェアのプラグイン方法を提供できる。また、モジュールのインタフェースを接続可能なポインタの固有名称が煩雑にならないアプリケーションプログラムを提供できる。
次に、図面を参照して、本発明の実施の形態について説明する。なお、以下では本発明の実施形態を図面に基づいて説明するが、図解のためだけであり、本発明はそれらの図面に限定されるものではない。以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付している。また、図面は模式的なものであり、厚みと平面寸法との関係、各層の厚みの比率等は現実のものとは異なることに留意すべきである。
図1に示すように、アプリケーションシステム1は、フレームワーク2と、複数のソフトウェアのモジュールM1乃至M4を有している。フレームワーク2は、登録部14、宣言部3、取得部4、処理部5とモジュールライブラリ10を有している。処理部5は、生成部6、削除部7、シーケンス部8と設定部9を有している。
モジュールM1乃至M4は、オープンインタフェースIo、クローズインタフェースIc、エントリインタフェースIe1乃至Ie4、プロパティインタフェースIpとトランスレイトデータインタフェースItを有している。
図2に示すように、モジュールM1は、インタフェース層11とコア層12配置された階層構造を有している。インタフェース層11は、階層構造の最上層でコア層12の上層に配置されている。インタフェース層11には、オープンインタフェースIo、クローズインタフェースIc、エントリインタフェースIe1、プロパティインタフェースIpとトランスレイトデータインタフェースItが配置されている。コア層12には、モジュールM1として機能するソフトウェアであるミドルウェアコア13が配置されている。エントリインタフェースIe1は、フレームワーク2がエントリインタフェースIe1を識別するための固有名称である関数ポインタM1_QueryInterface()を有している。オープンインタフェースIoは、エントリインタフェースIe1がモジュールM1に接続可能なオペレーションインタフェースの中からオープンインタフェースIoを識別するための関数ポインタOpen()を有している。プロパティインタフェースIpは、エントリインタフェースIe1がモジュールM1に接続可能なオペレーションインタフェースの中からプロパティインタフェースIpを識別するための関数ポインタProperty()を有している。トランスレイトデータインタフェースItは、エントリインタフェースIe1がモジュールM1に接続可能なオペレーションインタフェースの中からトランスレイトデータインタフェースItを識別するための関数ポインタTranslateData()を有している。クローズインタフェースIcは、エントリインタフェースIe1がモジュールM1に接続可能なオペレーションインタフェースの中からクローズインタフェースIcを識別するための関数ポインタClose()を有している。
モジュールM2乃至M4もモジュールM1と同様の階層構造を有しているが、エントリインタフェースIe2乃至Ie4のエントリ名である関数ポインタM2_QueryInterface()乃至M4_QueryInterface()が、エントリインタフェースIe1の関数ポインタM1_QueryInterface()とは異なっている。なお、モジュールM1乃至M4が換わっても、関数ポインタProperty()、Open()、Close()、TranslateData()は換わらず、同じ関数ポインタProperty()、Open()、Close()、TranslateData()を設定する。
図3に示すように、エントリインタフェースIe1乃至Ie4の関数ポインタM1_QueryInterface()乃至M4_QueryInterface()は、MXXX_QueryInterface()のように、MXXXにおいてモジュールM1乃至M4が識別可能である。このことにより、フレームワーク2は、個々のモジュールM1乃至M4を選択できるモジュールエントリアドレスとして、関数ポインタMXXX_QueryInterface()を用いることができる。そして、エントリインタフェースIe1乃至Ie4は、エントリインタフェースIe1乃至Ie4が属するモジュールM1乃至M4が有するオペレーションインタフェースIo、Ic、Ip、Itをフレームワーク2に取得させることができる。エントリインタフェースIe1乃至Ie4を経由してのオペレーションインタフェースIo、Ic、Ip、Itを取得するためには、フレームワーク2は個々のモジュールM1乃至M4でオペレーションインタフェースIo、Ic、Ip、Itを識別できればよく、モジュールM1乃至M4間で共通の関数ポインタOpen()、Close()、Property()、TranslateData()を用いることができる。
図4に示すように、モジュールM1等は、ブロック図により把握することもできる。図3と図4より、オペレーションインタフェースであるプロパティインタフェースIpにより、フレームワーク2は、モジュールM1乃至M4からプロパティと各種情報(Parameter)を取得できる。また、プロパティインタフェースIpにより、フレームワーク2は、モジュールM1乃至M4にプロパティと各種情報を設定できる。オペレーションインタフェースであるオープンインタフェースIoにより、フレームワーク2はモジュールM1乃至M4を初期化(Initialization)できる。さらに、モジュールM1乃至M4をフレームワーク2にオープンさせることができる。このことにより、モジュールM1乃至M4の実体をフレームワーク2に生成することができる。
オペレーションインタフェースであるトランスレイトデータインタフェースItにより、フレームワーク2は、モジュールM1乃至M4にデータ変換をさせることができる。図4に示すように、フレームワーク2がモジュールM1に入力データInput dataを入力する。モジュールM1は入力データInput dataをデータ変換して出力データOutput dataを生成する。フレームワーク2がモジュールM1から出力データOutput dataを出力する。このように、モジュールM1等は、図5に示すような各種情報(Parameter)に基づいて入力データInput dataをデータ変換した出力データOutput dataを出力する一般的なデータ変換モジュールの機能を備えていると考えられる。
図3と図4より、オペレーションインタフェースであるクローズインタフェースIcにより、フレームワーク2はいわゆるプラグインの終了処理(End)として、モジュールM1乃至M4をフレームワーク2に対してクローズさせることができる。このことにより、モジュールM1乃至M4の実体をフレームワーク2から削除することができる。
次に、図1のアプリケーションシステム1によるソフトウェアのプラグイン方法について説明する。例として、モジュールM1に組まれたソフトウェアをフレームワーク2にプラグインし、次に、モジュールM2に組まれたソフトウェアをフレームワーク2にプラグインする場合について説明する。図6に示すように、ソフトウェアのプラグイン方法では、まず、ステップS1で、図1の登録部14が、モジュールライブラリ10に基づいて、ソフトウェアのモジュールM1が有するエントリインタフェースIe1のエントリ名である関数ポインタM1_QueryInterface()をフレームワーク2が登録する。フレームワーク2は関数ポインタM1_QueryInterface()から関数で表現されたエントリインタフェースIe1を呼び出しオペレーションインタフェースIo、Ic、Ip、Itの取得が可能になる。
ステップS2で、宣言部3が、モジュールM1のオペレーションインタフェースIo、Ic、Ip、Itの関数ポインタ型を図6のCによる関数ポインタ型宣言例に示すように宣言する。なお、オペレーションインタフェースIo、Ic、Ip、Itそれぞれが行う入出力の処理もいわゆる関数であると考えられるので、オペレーションインタフェースIo、Ic、Ip、Itそれぞれが対応する関数CodecOpen、CodecClose、CodecProperty、CodecTranslateDataを宣言し定義している。これらの宣言により、オペレーションインタフェースIo、Ic、Ip、It毎に、フレームワーク2がどのような出力データを出力し、どのような入力データを入力するか明確になり、図7に示すように、フレームワーク2にインタフェースIe1、Io、Ic、Ip、Itの接続準備ができたことになる。
ステップS3で、取得部4が、エントリインタフェースIe1の関数ポインタM1_QueryInterface()に基づいてエントリインタフェースIe1を呼び出す。この呼び出しにより、モジュールM1が有するオペレーションインタフェースIo、Ic、Ip、Itのオペレーション名である関数ポインタOpen()、Close()、Property()、TranslateData()をフレームワーク2が取得する。この取得により、フレームワーク2が関数ポインタOpen()、Close()、Property()、TranslateData()に基づいてオペレーションインタフェースIo、Ic、Ip、Itを呼び出す。図8に示すように、オペレーションインタフェースIo、Ic、Ip、Itがフレームワーク2に接続することにより、モジュールM1とフレームワーク2は接続され、フレームワーク2の制御により、モジュールM1のソフトウェアを実施することができるようになる。なお、図6のCによるオペレーションインタフェースの関数ポインタの取得例によれば、エントリインタフェースの関数query_interface()にオペレーション名である引数Open、Close、Property、TranslateDataを格納すれば、関数CodecOpen、CodecClose、CodecProperty、CodecTranslateDataをフレームワーク2は取得することができる。
ステップS4で、オペレーションインタフェースIo、Ic、Ip、Itを用いて、処理部5がモジュールM1のソフトウェアを実行処理する。処理部5からの制御により、モジュールM1はフレームワーク2に接続するモジュールM1自身の生成、モジュールM1の固有の処理と、フレームワーク2に接続するモジュールM1自身の削除を実施する。ステップS4をより詳細に説明する。
図5に示すように、まず、ステップS11で、図1のシーケンス部8がパラメータとステータスの受け渡しを行うか判定する。受け渡しを行わない場合はステップS13に進む。受け渡しを行う場合はステップS12に進む。
ステップS12で、図1の設定部9がオープンインタフェースIoによる実行処理に先立って、プロパティインタフェースIpを制御して、設定部9はモジュールM1のソフトウェアのパラメータとステータスを取得し設定することにより、後に行われるオープンの処理を可能にする。設定部9は関数ポインタProperty()に基づいて呼び出された関数、例えば図6のオペレーションインタフェースを用いた処理の例の関数CodecProperty(NULL,“C3”,str)・・・を実施する。
ステップS13で、図1の生成部6が関数ポインタOpen()によって関数CodecOpenを呼び出し、モジュールM1をオープンインタフェースIoによって、初期化し、フレームワーク2に対してオープンし実体化させる。この実体化によってモジュールM1がフレームワーク2にいわゆるプラグインされた状態、すなわち、モジュールM1内のソフトウェアがフレームワーク2によって制御可能な状態になる。
ステップS14で、シーケンス部8がパラメータとステータスの受け渡しを行うか判定する。受け渡しを行わない場合はステップS16に進む。受け渡しを行う場合はステップS15に進む。
ステップS15で、設定部9がオープンインタフェースIoによる実行処理に先立って、プロパティインタフェースIpを制御して、設定部9はモジュールM1のソフトウェアのパラメータを取得し、設定することにより、後に行われるトランスレイトデータの処理を可能にする。なお、図6のオペレーションインタフェースを用いた処理の例では、関数CodecOpenと関数CodecTranslateDataの実施の間には、関数CodecPropertyは実行されていない。
ステップS16で、処理部5が関数ポインタTranslateData()によって関数CodecTranslateDataを呼び出し、モジュールM1にトランスレイトデータインタフェースを介してモジュールM1のソフトウェアの固有の処理、例えば、入力されたデータを変換して出力させる。
ステップS17で、シーケンス部8が、モジュールM1のソフトウェアで処理すべきデータがフレームワーク2に残っているか判定する。残っていればステップS16に戻り、残っていなければステップS18に進む。
ステップS18で、シーケンス部8がパラメータとステータスの受け渡しを行うか判定する。受け渡しを行わない場合はステップS20に進む。受け渡しを行う場合はステップS19に進む。
ステップS19で、設定部9がクローズインタフェースIoによる実行処理に先立って、プロパティインタフェースIpを制御して、設定部9はモジュールM1のソフトウェアのパラメータとステータスを取得し設定することにより、後に行われるクローズの処理を可能にする。なお、図6のオペレーションインタフェースを用いた処理の例では、関数CodecTranslateDataと関数CodecCloseの実施の間には、関数CodecProperty(handle,“C300”,str)・・・が実行されている。なお、ステップS12、S15、S19に限らず、必要なパラメータの設定やステータスの取得(Property())はいつ行ってもよい。
ステップS20で、削除部7が終了処理として、関数ポインタClose()によって関数CodecCloseを呼び出し、モジュールM1をクローズインタフェースIcによって、フレームワーク2との接続を解消し、モジュールM1をフレームワーク2に対してクローズし、フレームワーク2に対して実体化したモジュールM1を図8に対して図1に示すように削除する。この削除によってモジュールM1がフレームワーク2のプラグインされた状態が解消される。以上で、図6のステップS4が終了する。
図6のステップS5で、シーケンス部8が、図1のアプリケーションシステム1としての機能を達成するためのシーケンスを終了したか否か判定する。終了していなければステップS1に戻り、終了していればプラグイン方法を終了する。ここで、図1のアプリケーションシステム1としての機能を達成するためのシーケンスが、モジュールM1のソフトウェアの次に、モジュールM2のソフトウェアを実行するシーケンスであるとする。
図10に示すように、図7のモジュールM1の場合と同様にフレームワーク2にインタフェースIe2、Io、Ic、Ip、Itの接続準備がされることになる。
図6のステップS1で、モジュールライブラリ10に基づいて、ソフトウェアのモジュールM2が有するエントリインタフェースIe2のエントリ名である関数ポインタM2_QueryInterface()をフレームワーク2が登録する。フレームワーク2は関数ポインタM2_QueryInterface()から関数で表現されたエントリインタフェースIe2を呼び出しモジュールM2のオペレーションインタフェースIo、Ic、Ip、Itの取得が可能になる。
ステップS2で、モジュールM2のオペレーションインタフェースIo、Ic、Ip、Itの関数ポインタ型を宣言する。オペレーションインタフェースIo、Ic、Ip、Itそれぞれが対応する関数CodecOpen、CodecClose、CodecProperty、CodecTranslateDataを宣言し定義している。
さらに、図11に示すように、図8のモジュールM1の場合と同様にフレームワーク2にインタフェースIe2、Io、Ic、Ip、Itの接続されることになる。
図6のステップS3で、エントリインタフェースIe2の関数ポインタM2_QueryInterface()に基づいてエントリインタフェースIe2を呼び出す。この呼び出しにより、モジュールM2が有するオペレーションインタフェースIo、Ic、Ip、Itのオペレーション名である関数ポインタOpen()、Close()、Property()、TranslateData()をフレームワーク2が取得する。この取得により、フレームワーク2が関数ポインタOpen()、Close()、Property()、TranslateData()に基づいてモジュールM2のオペレーションインタフェースIo、Ic、Ip、Itを呼び出す。オペレーションインタフェースIo、Ic、Ip、Itがフレームワーク2に接続することにより、モジュールM2とフレームワーク2は接続され、フレームワーク2の制御により、モジュールM2のソフトウェアを実施することができるようになる。
ステップS4で、モジュールM2のオペレーションインタフェースIo、Ic、Ip、Itを用いて、モジュールM2のソフトウェアを実行処理する。モジュールM2はフレームワーク2に接続するモジュールM2自身の生成、モジュールM2の固有の処理と、フレームワーク2に接続するモジュールM2自身の削除を実施する。
このように、図1のアプリケーションシステム1としての機能を達成するためのシーケンスとしての、モジュールM1のソフトウェアの次にモジュールM2のソフトウェアを実行するというシーケンスをフレームワーク2は実行することができる。このことから、図1のアプリケーションシステム1としての機能を達成するために必要なソフトウェアのモジュールM1乃至M4と、それらのモジュールM1乃至M4のソフトウェアの処理の順番とソフトウェア間のデータの受け渡しの取り決めであるシーケンスを用意することにより、図12に示すように、フレームワーク2は、シーケンスのモジュールM1乃至M4のソフトウェアの処理の順番に、モジュールM1乃至M4に対して一連の実体化、固有の処理と削除を動的に実行することができる。すなわち、シーケンスに応じて、モジュールM1乃至M4を順次変更して、一連の実体化、固有の処理と削除を繰り返し実行できる。このことにより、アプリケーションシステム1は、アプリケーションシステム1としての機能を達成することができる。なお、モジュールM1乃至M4は順次呼び出されて、実体化、固有の処理と削除が実施されるので、シーケンスによる処理順が前のモジュールの削除の後に、次のモジュールのエントリインタフェースが呼び出され実体化されることになる。
そして、モジュールM1乃至M4のエントリインタフェースIe1乃至Ie4の識別名M1_QueryInterface()乃至M4_QueryInterface()は、モジュールM1乃至M4毎に異なる。しかし、モジュールM1乃至M4のオペレーションインタフェースIo、Ic、Ip、Itの識別名Open()、Close()、Property()、TranslateData()は、モジュールM1乃至M4毎に異ならず、同一である。このようにオペレーションインタフェースの識別名を統一することで、モジュールライブラリ10はオペレーションインタフェースによって煩雑になることがない。また、インタフェースの取得も図6と図9のフローチャートのように共通化でき、理解しやすく使用しやすいものになる。これは、4個のオペレーションインタフェースIo、Ic、Ip、Itに対して1つのエントリインタフェースIe1乃至Ie4で対応が可能だからである。1つのモジュールM1乃至M4で1つのエントリインタフェースIe1乃至Ie4を持つのみなので、モジュールM1乃至M4として明確化し扱いやすい。また、オペレーションインタフェースIo、Ic、Ip、ItをモジュールM1乃至M4間で共通化しているので、全く同じインタフェース名Open()、Close()、Property()、TranslateData()でライブラリ10に登録しておくことができるため、理解しやすく使用しやすい。エントリインタフェースIe1乃至Ie4とオペレーションインタフェースIo、Ic、Ip、Itは、モジュールM1乃至M4単位で任意に定義することが可能である。エントリインタフェースIe1乃至Ie4とオペレーションインタフェースIo、Ic、Ip、Itは、動的に取得することができるため、必要なインタフェースIe1乃至Ie4とIo、Ic、Ip、Itのみを取得することができ、モジュールM1乃至M4の切り替えを容易に行うことができる。
図13と図14に示すように、実施例2に係るソフトウェアのプラグイン方法は、図7と図8の実施例1のプラグイン方法と比較して、複数のモジュールM1乃至M4が同時にフレームワーク2に接続する点が異なっている。言い方を換えると、モジュールM1乃至M4とフレームワーク2との接続に関して、実施例1のプラグイン方法では、モジュールM1乃至M4同士が置き換わったり切り替わったりしてモジュールM1乃至M4とフレームワーク2との間の接続が動的であるのに対して、実施例2のプラグイン方法では、モジュールM1乃至M4同士が置き換わる必要がなくモジュールM1乃至M4とフレームワーク2との間の接続が静的である点が異なっている。
図6のステップS1で、図1のモジュールライブラリ10とシーケンス部8の有するシーケンスに基づいて、アプリケーションシステム1の機能を実現するために必要な複数のソフトウェアのそれぞれのモジュールM1乃至M4が有するエントリインタフェースIe1乃至Ie4のエントリ名である関数ポインタM1_QueryInterface()乃至M4_QueryInterface()をフレームワーク2が登録する。図13に示すように、フレームワーク2は関数ポインタM1_QueryInterface()乃至M4_QueryInterface()から関数で表現されたエントリインタフェースIe1乃至Ie4を呼び出しモジュールM1乃至M4それぞれのオペレーションインタフェースIo、Ic、Ip、Itの取得が可能になる。
ステップS2で、モジュールM1乃至M4それぞれのオペレーションインタフェースIo、Ic、Ip、Itの関数ポインタ型を宣言する。モジュールM1乃至M4毎に、オペレーションインタフェースIo、Ic、Ip、Itそれぞれが対応する関数CodecOpen、CodecClose、CodecProperty、CodecTranslateDataを宣言し定義する。
ステップS3で、エントリインタフェースIe1乃至Ie4の関数ポインタM1_QueryInterface()乃至M4_QueryInterface()に基づいてエントリインタフェースIe1乃至Ie4を呼び出す。この呼び出しにより、モジュールM1乃至M4それぞれが有するオペレーションインタフェースIo、Ic、Ip、Itのオペレーション名である関数ポインタOpen()、Close()、Property()、TranslateData()をフレームワーク2が取得する。この取得により、フレームワーク2が関数ポインタOpen()、Close()、Property()、TranslateData()に基づいてモジュールM2のオペレーションインタフェースIo、Ic、Ip、Itを呼び出す。図14に示すように、モジュールM1乃至M4それぞれのオペレーションインタフェースIo、Ic、Ip、Itがフレームワーク2に接続することにより、モジュールM1乃至M4それぞれとフレームワーク2は接続され、フレームワーク2の制御により、モジュールM1乃至M4それぞれのソフトウェアを実施することができるようになる。
ステップS4で、モジュールM1乃至M4それぞれのオペレーションインタフェースIo、Ic、Ip、Itを用いて、シーケンス部のシーケンスにしたがいモジュールM1乃至M4それぞれのソフトウェアを実行処理する。モジュールM1乃至M4それぞれはフレームワーク2に接続するモジュールM1乃至M4自身の生成、モジュールM1乃至M4の固有の処理と、フレームワーク2に接続するモジュールM1乃至M4自身の削除を実施する。なお、シーケンスによっては、フレームワーク2に接続するモジュールM1乃至M4自身の削除の実施は省略することができる。これは、実施例1のようにモジュールM1乃至M4間でフレームワーク2との接続を切り換える必要が無いからである。
このように、実施例2のプラグイン方法でも、図1のアプリケーションシステム1としての機能を達成するように、シーケンスにしたがい、モジュールM1乃至M4のソフトウェアを実行することができる。
そして、実施例2においても、実施例1と同様に、モジュールM1乃至M4それぞれのエントリインタフェースIe1乃至Ie4の識別名M1_QueryInterface()乃至M4_QueryInterface()は、モジュールM1乃至M4毎に異なる。また、モジュールM1乃至M4それぞれのオペレーションインタフェースIo、Ic、Ip、Itの識別名Open()、Close()、Property()、TranslateData()は、モジュールM1乃至M4毎に異ならず、同一である。このようにオペレーションインタフェースの識別名を統一することで、モジュールライブラリ10はオペレーションインタフェースによって煩雑になることがない。
図15に示すように、実施例3は、実施例1と2のアプリケーションシステム1を、音再生装置に適用した場合である。プレーヤ2は実施例1と2のフレームワーク2に対応する。デマルチプレクサM1は実施例1と2のソフトウェアのモジュールM1に対応する。WMAデコーダM2は実施例1と2のソフトウェアのモジュールM2に対応する。オーディオドライバM3は実施例1と2のソフトウェアのモジュールM3に対応する。AACデコーダM4は実施例1と2のソフトウェアのモジュールM4に対応する。
デマルチプレクサM1、WMAデコーダM2、オーディオドライバM3とAACデコーダM4はそれぞれ、オープンインタフェースIo、クローズインタフェースIc、エントリインタフェースIe1乃至Ie4、プロパティインタフェースIpとトランスレイトデータインタフェースItを有している。
図16に示すように、デマルチプレクサM1は、図2の実施例1と同様にインタフェース層11とコア層12配置された階層構造を有している。インタフェース層11は、階層構造の最上層でコア層12の上層に配置されている。インタフェース層11には、オープンインタフェースIo、クローズインタフェースIc、エントリインタフェースIe1、プロパティインタフェースIpとトランスレイトデータインタフェースItが配置されている。コア層12には、デマルチプレクサM1として機能するソフトウェアである取得した音楽コンテンツの情報解析と圧縮データの分離を行うコアIP(13)が配置されている。エントリインタフェースIe1は、フレームワーク2がエントリインタフェースIe1を識別するための固有名称である関数ポインタDemulti_QueryInterface()を有している。オープンインタフェースIoは、エントリインタフェースIe1がデマルチプレクサM1に接続可能なオペレーションインタフェースの中からオープンインタフェースIoを識別するための関数ポインタOpen()を有している。プロパティインタフェースIpは、エントリインタフェースIe1がデマルチプレクサM1に接続可能なオペレーションインタフェースの中からプロパティインタフェースIpを識別するための関数ポインタProperty()を有している。トランスレイトデータインタフェースItは、エントリインタフェースIe1がデマルチプレクサM1に接続可能なオペレーションインタフェースの中からトランスレイトデータインタフェースItを識別するための関数ポインタTranslateData()を有している。クローズインタフェースIcは、エントリインタフェースIe1がデマルチプレクサM1に接続可能なオペレーションインタフェースの中からクローズインタフェースIcを識別するための関数ポインタClose()を有している。
図17に示すように、WMAデコーダM2もデマルチプレクサM1と同様の階層構造を有しているが、エントリインタフェースIe2のエントリ名である関数ポインタWMADecoder_QueryInterface()が、エントリインタフェースIe1の関数ポインタDemulti_QueryInterface()とは異なっている。コア層12には、WMAデコーダM2として機能するソフトウェアであるAAC圧縮データをPCMデータに伸張するコアIP(13)が配置されている。
図18に示すように、オーディオドライバM3もデマルチプレクサM1と同様の階層構造を有しているが、エントリインタフェースIe3のエントリ名である関数ポインタDriver_QueryInterface()が、エントリインタフェースIe1の関数ポインタDemulti_QueryInterface()とは異なっている。コア層12には、オーディオドライバM3として機能するソフトウェアであるPMCデータをスピーカに出力するコアIP(13)が配置されている。
図19に示すように、AACデコーダM4もデマルチプレクサM1と同様の階層構造を有しているが、エントリインタフェースIe4のエントリ名である関数ポインタAACDecoder_QueryInterface()が、エントリインタフェースIe1の関数ポインタDemulti_QueryInterface()とは異なっている。コア層12には、AACデコーダM4として機能するソフトウェアであるAAC圧縮データをPCMデータに伸張するコアIP(13)が配置されている。
なお、図16乃至図19のモジュールM1乃至M4が換わっても、関数ポインタProperty()、Open()、Close()、TranslateData()は換わらず、同じ関数ポインタProperty()、Open()、Close()、TranslateData()を設定する。
実施例3のアプリケーションシステム1でも、実施例2で説明したのと同様に、複数のモジュールM1乃至M3が同時にフレームワーク2に接続している。この実施例3のアプリケーションシステム1を用いて、実施例3のプラグイン方法でも、実施例2で説明したのと同様に、図15のアプリケーションシステム1としての音再生機能を達成するように、デマルチプレクサM1、WMAデコーダM2、オーディオドライバM3の順番になるシーケンスにしたがい、デマルチプレクサM1、WMAデコーダM2、オーディオドライバM3のソフトウェアを実行することができる。そして、実施例3のアプリケーションシステム1は、WMA形式で圧縮された音データを再生することができる。
さらに、実施例3のアプリケーションシステム1では、実施例1でモジュールM1とM2を切り換えたのと同様に、複数のモジュールM2とM4のフレームワーク2に対する接続を切り換えることができる。この実施例3のアプリケーションシステム1を用いれば、実施例3のプラグイン方法により、実施例1で説明したのと同様に、図15のアプリケーションシステム1としての音再生機能のなかの音圧縮データを対応する圧縮形式で伸張する機能を達成するように、WMAデコーダM2とAACデコーダM4の一方を選択するシーケンスにしたがい、WMAデコーダM2とAACデコーダM4の一方をプレーヤ2に接続する。そして、選択されたモジュールがWMAデコーダM2であれば、さらに、デマルチプレクサM1、WMAデコーダM2、オーディオドライバM3の順番になるシーケンスにしたがい、WMA形式で圧縮された音データを再生することができる。一方、選択されたモジュールがAACデコーダM4であれば、さらに、デマルチプレクサM1、AACデコーダM4、オーディオドライバM3の順番になるシーケンスにしたがい、AAC形式で圧縮された音データを再生することができる。
このように、実施例3のアプリケーションシステム1で、圧縮された音データの変換方式を変更するには、プレーヤ2の構成は変更する必要が無く、WMAデコーダM2とAACデコーダM4とを切り換えるのみでよい。そして、WMAデコーダM2とAACデコーダM4との切り換えは、WMAデコーダM2のエントリインタフェースIe2のエントリ名である関数ポインタWMADecoder_QueryInterface()と、AACデコーダM4のエントリインタフェースIe4のエントリ名である関数ポインタAACDecoder_QueryInterface()を変更すればよい。このように、実施例3のアプリケーションシステム1によれば、圧縮された音データの変換方式の変更を容易に行うことが可能になる。
図20に示すように、実施例4に係るソフトウェアのプラグイン方法は、図6の実施例1のプラグイン方法と比較して、インタフェースの取得方法が異なっている。言い換えると、オペレーションインタフェースの取得に関して、実施例1のプラグイン方法では、オペレーション名をエントリインタフェースの引数として指定してオペレーションインタフェースの関数ポインタを取得するのに対して、実施例4のプラグイン方法では、エントリインタフェースを呼び出すことによって、オペレーションインタフェースの関数ポインタの配列の先頭ポインタを取得する点が異なっている。
図1のアプリケーションシステム1によるソフトウェアのプラグイン方法について説明する。例として、モジュールM1に組まれたソフトウェアをフレームワーク2にプラグインし、次に、モジュールM2に組まれたソフトウェアをフレームワーク2にプラグインする場合について説明する。
図21で示すように、プラグインインタフェースでは、オペレーションインタフェースの関数ポインタを配列として定義している。エントリインタフェースはこの配列の先頭アドレスを返すものとする。
図20に示すように、ソフトウェアのプラグイン方法では、まず、ステップS1で、図1の登録部14が、モジュールライブラリ10に基づいて、ソフトウェアのモジュールM1が有するエントリインタフェースIe1のエントリ名である関数ポインタM1_QueryInterface()をフレームワーク2が登録する。フレームワーク2は関数ポインタM1_QueryInterface()から関数で表現されたエントリインタフェースIe1を呼び出しオペレーションインタフェースIo、Ic、Ip、Itの取得が可能になる。
ステップS2で、宣言部3が、モジュールM1のオペレーションインタフェースIo、Ic、Ip、Itの関数ポインタ型を図20のCによる関数ポインタ型宣言例に示すように宣言する。なお、オペレーションインタフェースIo、Ic、Ip、Itそれぞれが行う入出力の処理もいわゆる関数であると考えられるので、オペレーションインタフェースIo、Ic、Ip、Itそれぞれが対応する関数CodecOpen、CodecClose、CodecProperty、CodecTranslateDataを宣言し定義している。これらの宣言により、オペレーションインタフェースIo、Ic、Ip、It毎に、フレームワーク2がどのような出力データを出力し、どのような入力データを入力するか明確になり、図7に示すように、フレームワーク2にインタフェースIe1、Io、Ic、Ip、Itの接続準備ができたことになる。
ステップS3で、取得部4が、エントリインタフェースIe1の関数ポインタM1_QueryInterface()に基づいてエントリインタフェースIe1を呼び出す。この呼び出しにより、フレームワーク2はモジュールM1が有するオペレーションインタフェースIo、Ic、Ip、Itのオペレーション名である関数ポインタOpen()、Close()、Property()、TranslateData()の配列の先頭アドレスを取得する。この取得により、フレームワーク2が関数ポインタOpen()、Close()、Property()、TranslateData()に基づいてオペレーションインタフェースIo、Ic、Ip、Itを呼び出す。図8に示すように、オペレーションインタフェースIo、Ic、Ip、Itがフレームワーク2に接続することにより、モジュールM1とフレームワーク2は接続され、フレームワーク2の制御により、モジュールM1のソフトウェアを実施することができるようになる。なお、図20のCによるオペレーションインタフェースの関数ポインタの取得例によれば、エントリインタフェースの関数query_interface()を呼び出し、取得したオペレーションインタフェースの配列の先頭アドレスを、宣言した関数ポインタをメンバに持った構造体のポインタにキャストし、関数CodecOpen、CodecClose、CodecProperty、CodecTranslateDataをフレームワーク2は取得することができる。
ステップS4で、オペレーションインタフェースIo、Ic、Ip、Itを用いて、処理部5がモジュールM1のソフトウェアを実行処理する。処理部5からの制御により、モジュールM1はフレームワーク2に接続するモジュールM1自身の生成、モジュールM1の固有の処理と、フレームワーク2に接続するモジュールM1自身の削除を実施する。
このように、プラグインインタフェース側で、オペレーションインタフェースの関数ポインタの配列を定義し、エントリインタフェースで配列の先頭ポインタを返すように設計することによって、アプリケーション側でのオペレーションインタフェースの関数ポインタの取得に際しては、エントリインタフェースを呼び出すだけでよくなる。これにより、オペレーションインタフェースの取得が簡単に行える。
実施例1乃至4は、本発明を実施するにあたっての具体化の例を示したものに過ぎず、実施例1乃至4によって本発明の技術的範囲が限定的に解釈されてはならないものである。本発明は、その技術的思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。すなわち、本発明の特許請求の範囲を逸脱しない範囲で、変更・改良や一部転用などが可能であり、これらすべて本発明の請求範囲内に包含されるものである。
本発明の一実施形態に係るアプリケーションシステムの構成図である。 本発明の一実施形態に係るソフトウェアモジュールの階層構造図である。 本発明の一実施形態に係るソフトウェアモジュールとフレームワークを接続するインタフェースの一覧表である。 本発明の一実施形態に係るソフトウェアモジュールのデータの流れを示すブロック図である。 データ変換モジュールとして機能するソフトウェアモジュールのブロック図である。 本発明の一実施形態に係るプラグイン方法のフローチャートである。 本発明の一実施形態に係るアプリケーションシステムのプラグイン方法中途における構成図である。 本発明の一実施形態に係るアプリケーションシステムのプラグイン方法中途における構成図である。 本発明の一実施形態に係るプラグイン方法における処理方法のフローチャートである。 本発明の一実施形態に係るアプリケーションシステムのプラグイン方法中途における構成図である。 本発明の一実施形態に係るアプリケーションシステムのプラグイン方法中途における構成図である。 本発明の一実施形態に係るアプリケーションシステムの構成図である。 本発明の一実施形態に係るアプリケーションシステムのプラグイン方法中途における構成図である。 本発明の一実施形態に係るアプリケーションシステムのプラグイン方法中途における構成図である。 本発明の一実施形態に係るアプリケーションシステム(プレーヤ)の構成図である。 本発明の一実施形態に係るソフトウェアモジュール(デマルチプレクサ)の階層構造図である。 本発明の一実施形態に係るソフトウェアモジュール(WMAデコーダ)の階層構造図である。 本発明の一実施形態に係るソフトウェアモジュール(オーディオドライバ)の階層構造図である。 本発明の一実施形態に係るソフトウェアモジュール(AACデコーダ)の階層構造図である。 本発明の一実施形態に係るプラグイン方法のフローチャートである。 本発明の一実施形態に係るプラグインインタフェースの定義例である。
符号の説明
1 アプリケーションシステム
2 フレームワーク
3 宣言部
4 取得部
5 処理部
6 生成部
7 削除部
8 シーケンス部
9 設定部
10 モジュールライブラリ
11 インタフェース層
12 コア層
13 ミドルウェアコア
14 登録部

Claims (5)

  1. 登録部、取得部、処理部及びモジュールライブラリを備えるアプリケーションプログラムをコンピュータに実行させることにより実現されるソフトウェアのプラグイン方法であって、前記コンピュータに、
    前記登録部、前記取得部、前記処理部及び前記モジュールライブラリが、前記ソフトウェアがプラグインされるフレームワークを構成する手順
    前記ソフトウェアのモジュールが有するエントリインタフェースのエントリ名を前記登録部が前記モジュールライブラリに登録する手順
    前記取得部が前記登録されたエントリ名に基づいて前記エントリインタフェースを呼び出すことにより、前記モジュールが有するオペレーションインタフェースのオペレーション名を取得する手順
    前記取得部が前記オペレーション名に基づいて前記オペレーションインタフェースを呼び出すことにより、前記オペレーションインタフェースを前記フレームワークに接続する手順
    前記処理部が、前記モジュールに、前記接続されたオペレーションインタフェースを用いて、前記フレームワークに接続する自身の生成、前記モジュールの固有の処理と、前記フレームワークに接続する自身の削除を実施させる手順
    を実行させることを特徴とするソフトウェアのプラグイン方法。
  2. 前記モジュールが複数である場合に、一の前記モジュールの自身の削除の後に、前記取得部が、他の前記モジュールの前記エントリインタフェースを呼び出すことを特徴とする請求項1に記載のソフトウェアのプラグイン方法。
  3. 前記モジュールが複数である場合に、複数の前記モジュールの前記オペレーション名が同一であることを特徴とする請求項1または請求項2に記載のソフトウェアのプラグイン方法。
  4. 前記オペレーションインタフェースの呼び出しにおいて、
    前記フレームワークは前記オペレーションインタフェースとして、オープンインタフェース、トランスレイトデータインタフェース、プロパティインタフェースとクローズインタフェースを呼び出し、
    前記生成、処理と削除において、
    前記モジュールは前記オープンインタフェースによって前記フレームワークに接続し、
    前記モジュールは前記トランスレイトデータインタフェースと前記プロパティインタフェースによって前記モジュールの固有の処理を実施し、
    前記モジュールは前記クローズインタフェースによって前記フレームワークとの接続を解消することを特徴とする請求項1乃至3のいずれか1項に記載のソフトウェアのプラグイン方法。
  5. 登録部、取得部、処理部及びモジュールライブラリを備えるアプリケーションプログラムであって、コンピュータに、
    前記登録部、前記取得部、前記処理部及び前記モジュールライブラリが、ソフトウェアがプラグインされるフレームワークを構成する手順
    前記登録部が、前記ソフトウェアのモジュールが有するエントリインタフェースのエントリ名を前記モジュールライブラリに登録する手順
    前記取得部が、前記登録されたエントリ名に基づいて前記エントリインタフェースを呼び出すことにより、前記モジュールが有するオペレーションインタフェースのオペレーション名を取得する手順
    前記取得部が、前記オペレーション名に基づいて前記オペレーションインタフェースを呼び出すことにより、前記オペレーションインタフェースを前記フレームワークに接続する手順
    前記処理部が、前記モジュールに、前記接続されたオペレーションインタフェースを用いて、前記フレームワークに接続する自身の生成、前記モジュールの固有の処理と、前記フレームワークに接続する自身の削除を実施させる手順
    を実行させることを特徴とするアプリケーションプログラム
JP2005133581A 2005-04-28 2005-04-28 ソフトウェアのプラグイン方法、および、アプリケーションプログラム Expired - Fee Related JP4855710B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005133581A JP4855710B2 (ja) 2005-04-28 2005-04-28 ソフトウェアのプラグイン方法、および、アプリケーションプログラム
US11/411,944 US7770149B2 (en) 2005-04-28 2006-04-27 Semiconductor device, system for performing data processing, and method for performing communication between software framework and plurality of software modules

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005133581A JP4855710B2 (ja) 2005-04-28 2005-04-28 ソフトウェアのプラグイン方法、および、アプリケーションプログラム

Publications (2)

Publication Number Publication Date
JP2006309621A JP2006309621A (ja) 2006-11-09
JP4855710B2 true JP4855710B2 (ja) 2012-01-18

Family

ID=37235754

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005133581A Expired - Fee Related JP4855710B2 (ja) 2005-04-28 2005-04-28 ソフトウェアのプラグイン方法、および、アプリケーションプログラム

Country Status (2)

Country Link
US (1) US7770149B2 (ja)
JP (1) JP4855710B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4986598B2 (ja) * 2006-12-14 2012-07-25 キヤノン株式会社 アプリケーション管理システム及びその制御方法
KR101255685B1 (ko) 2008-12-22 2013-04-24 한국전자통신연구원 로봇 응용 프로그램 실행 장치 및 방법
CN103309700B (zh) 2012-03-16 2016-05-18 腾讯科技(深圳)有限公司 一种插件管理控制方法及装置

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0720798A (ja) 1993-06-30 1995-01-24 Toshiba Corp 表示装置
US5509123A (en) * 1994-03-22 1996-04-16 Cabletron Systems, Inc. Distributed autonomous object architectures for network layer routing
WO1996020448A1 (en) * 1994-12-23 1996-07-04 Southwestern Bell Technology Resources, Inc. Flexible network platform and call processing system
US6643765B1 (en) * 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US5930808A (en) * 1996-05-30 1999-07-27 Matsushita Electric Industrial Co., Ltd. Data conversion apparatus for data communication system
US5931928A (en) * 1997-05-07 1999-08-03 3Com Corporaton System for ISDN terminal adapter DCE for automatically negotiating data compression with it's PPP peer when DTE is unable or unwilling to negotiate compression
US6598093B1 (en) * 1998-05-14 2003-07-22 Sun Microsystems, Inc. Method and apparatus for a core application programming interface
US7127701B2 (en) * 1998-09-18 2006-10-24 Wylci Fables Computer processing and programming method using autonomous data handlers
US7039919B1 (en) * 1998-10-02 2006-05-02 Microsoft Corporation Tools and techniques for instrumenting interfaces of units of a software program
US6601058B2 (en) * 1998-10-05 2003-07-29 Michael Forster Data exploration system and method
WO2000045238A2 (en) * 1999-01-29 2000-08-03 Iona Technologies, Inc. Dynamic configuration of activators in a client-server environment
US7219327B1 (en) * 1999-07-01 2007-05-15 Affinity Internet, Inc. Extensible data model for use in an integrated platform for creating a distribution multiapplication online presence
EP1196841A2 (en) * 2000-03-09 2002-04-17 Koninklijke Philips Electronics N.V. A family of complex systems with shared family software architecture
US6681383B1 (en) * 2000-04-04 2004-01-20 Sosy, Inc. Automatic software production system
US7280529B1 (en) * 2000-05-20 2007-10-09 Ciena Corporation Providing network management access through user profiles
JP3913470B2 (ja) * 2000-12-28 2007-05-09 株式会社東芝 システムlsi
US6996832B2 (en) * 2001-05-30 2006-02-07 Bea Systems, Inc. System and method for software component plug-in framework
JP2003108370A (ja) * 2001-10-01 2003-04-11 Toshiba Corp アプリケーションシステム構築用フレームワーク
EP1522033A4 (en) * 2002-04-03 2006-02-01 Ims Health Inc SYSTEM AND METHOD FOR COMMUNICATING AND DISTRIBUTING BUSINESS RESEARCH DATA AND MARKET STUDIES
US7055142B2 (en) * 2002-05-10 2006-05-30 Microsoft Corporation Permutation nuances of the integration of processes and queries as processes at queues
US20040103073A1 (en) * 2002-11-21 2004-05-27 Blake M. Brian System for and method of using component-based development and web tools to support a distributed data management system
US7152942B2 (en) * 2002-12-02 2006-12-26 Silverbrook Research Pty Ltd Fixative compensation
US7493309B2 (en) * 2003-01-16 2009-02-17 International Business Machines Corporation Framework for dynamic analysis of varying structured data using multiple analysis techniques
US7502803B2 (en) * 2003-05-28 2009-03-10 Hewlett-Packard Development Company, L.P. System and method for generating ACPI machine language tables
JP2005038251A (ja) 2003-07-16 2005-02-10 Mitsubishi Electric Corp 分散制御システム、分散制御システム用ソフトウェア設計支援システム
US7287037B2 (en) * 2003-08-28 2007-10-23 International Business Machines Corporation Method and apparatus for generating service oriented state data mapping between extensible meta-data model and state data including logical abstraction
US7526608B2 (en) * 2004-05-28 2009-04-28 Sony Computer Entertainment Inc. Methods and apparatus for providing a software implemented cache memory
US7702725B2 (en) * 2004-07-02 2010-04-20 Hewlett-Packard Development Company, L.P. Digital object repositories, models, protocol, apparatus, methods and software and data structures, relating thereto
US7861239B2 (en) * 2005-05-23 2010-12-28 International Business Machines Corporation Data migration between versions of software

Also Published As

Publication number Publication date
US7770149B2 (en) 2010-08-03
US20060248223A1 (en) 2006-11-02
JP2006309621A (ja) 2006-11-09

Similar Documents

Publication Publication Date Title
CA2208289C (en) Method and computer program product for interconnecting software drivers in kernel mode
US6016515A (en) Method, computer program product, and data structure for validating creation of and routing messages to file object
KR101163868B1 (ko) 프로세서 간 통신을 위한 시스템 및 방법
CA2208295C (en) User mode proxy of kernel mode operations in a computer operating system
EP0871116B1 (en) Method and computer program product for reducing inter-buffer data transfers between separate processing components
US8555251B2 (en) Signal processing apparatus with user-configurable circuit configuration
KR101255856B1 (ko) 통합형 음성 대화 시스템
US6665409B1 (en) Methods for surround sound simulation and circuits and systems using the same
US9749072B2 (en) End point parameterization management of generic devices
JP4855710B2 (ja) ソフトウェアのプラグイン方法、および、アプリケーションプログラム
CN109783083B (zh) Web应用开发方法及其系统
EP2449460A1 (en) A method, apparatus and computer program for creating software components for computing devices
JPH06162228A (ja) データフロープロセッサ装置
US8464210B1 (en) Software development and testing environment
Place et al. The jamoma audio graph layer
Lossius et al. Model-view-controller separation in max using jamoma
US20060198501A1 (en) Method and device for constructing a voice dialog
CN114816792A (zh) 一种基于专用通道的远程函数调用方法
CN114398306A (zh) 一种基于模型与中间件的嵌入式系统软硬件解耦架构
KR20050015930A (ko) 디멀티플렉서 애플리케이션 프로그래밍 인터페이스
Mullanix et al. Reference frameworks for eXpressDSP software: RF5, an extensive, high-density system
KR20120063372A (ko) 추상화 api 층위를 이용한 독립형 음성인식 방법 및 시스템
CN112883220A (zh) 音频处理方法、音频处理装置及可读存储介质
JP2006318305A (ja) システム構築用フレームワーク及び半導体装置
JP2009544091A (ja) 電子回路の合成

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080226

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110224

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110614

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110810

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110906

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110913

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: 20111004

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111027

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141104

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141104

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees