(57)【特許請求の範囲】
【請求項１】
複数のコンポーネントから構成されるアプリケーションプログラムの実行中においてコンポーネントの追加または入れ替えのためにコンポーネント間の結合を動的に変更するコンポーネントバス機能を実行するシステムであって、
アプリケーションプログラムの実行中において既に起動されているコンポーネントから前記コンポーネントの追加または入れ替えの要求を受け付ける要求受付手段と、
前記要求受付手段により受け付けたコンポーネントの追加または入れ替えの要求に応じて該当するコンポーネントを起動するコンポーネント起動手段と、
前記コンポーネント起動手段により起動されたコンポーネントと既に起動されているコンポーネントとの間で接続を変更してデータの受け渡しを行うコンポーネント間接続手段と
を備えることを特徴とするコンポーネントバスシステム。
【請求項２】
請求項１に記載のコンポーネントバスシステムにおいて、
前記コンポーネント間接続手段は、各コンポーネントの間でオブジェクトの受け渡しを行う
ことを特徴とするコンポーネントバスシステム。
【請求項３】
請求項１に記載のコンポーネントバスシステムにおいて、
前記コンポーネント起動手段は、受け付けたコンポーネントの追加または入れ替えの要求から、コンポーネントの接続情報を取得し、当該接続情報に基づいて該当するコンポーネントを起動する
ことを特徴とするコンポーネントバスシステム。
【請求項４】
請求項１に記載のコンポーネントバスシステムにおいて、さらに、
表示画面においてコンポーネントの追加または入れ替えの指示を与え、コンポーネントの間を接続する処理の実行指示を与えるグラフィックユーザインタフェース手段を
備えることを特徴とするコンポーネントバスシステム。
【請求項５】
複数のコンポーネントから構成されるアプリケーションプログラムの実行中においてコンポーネントの追加または入れ替えのためにコンポーネント間の結合を動的に変更するコンポーネントバス機能をコンピュータにより実行するコンポーネントバス用プログラムであって、コンピュータを、
アプリケーションプログラムの実行中において既に起動されているコンポーネントから前記コンポーネントの追加または入れ替えの要求を受け付ける要求受付手段と、
前記要求受付手段により受け付けたコンポーネントの追加または入れ替えの要求に応じて該当するコンポーネントを起動するコンポーネント起動手段と、
前記コンポーネント起動手段により起動されたコンポーネントと既に起動されているコンポーネントとの間で接続を変更してデータの受け渡しを行うコンポーネント間接続手段
として機能させるコンポーネントバス用プログラム。
【請求項６】
請求項５に記載のコンポーネントバス用プログラムにおいて、
前記コンポーネント間接続手段として機能するプログラムは、各コンポーネントの間でオブジェクトの受け渡しを行う
ことを特徴とするコンポーネントバス用プログラム。
【請求項７】
請求項５に記載のコンポーネントバス用プログラムにおいて、
前記コンポーネント起動手段として機能するプログラムは、受け付けたコンポーネントの追加または入れ替えの要求から、コンポーネントの接続情報を取得し、当該接続情報に基づいて該当するコンポーネントを起動する
ことを特徴とするコンポーネントバス用プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のコンポーネントから構成されるアプリケーションプログラムの実行中においてコンポーネントの追加やコンポーネント間の結合を動的に変更するコンポーネントバス機能を実行するシステムおよびコンポーネントバス用プログラムに関するものである。
【０００２】
【従来の技術】
アプリケーションプログラムの多くは、サブプログラム、サブルーチン、あるいは関数などといった機能別の小さなプログラム（アプレットまたはコンポーネントと称される）の集合として作成される。
【０００３】
作成されたアプリケーションプログラムを実行する場合は、オペレーティングシステム（ＯＳ）の制御下において、アプリケーションプログラムの中に含まれる複数のコンポーネントのプログラムの起動を行い、その各々の実行プログラムを予め定められた順序で実行する。
【０００４】
このため、アプリケーションプログラムが、特に、ＣＡＤ（コンピュータ支援設計）装置で使用されるプログラムであって、数値計算を伴うプログラムの場合に、アプリケーションプログラムを複数のコンポーネントの集合体から構成する場合には、特に、次のような問題点がある。
【０００５】
ＣＡＤ装置で使用されるプログラムにおいては、設計される部品など、物の形を表現するための設計情報である数値データを取り扱う場合には、アプリケーションプログラムが複数のコンポーネントの集合体で構成されて、それぞれのコンポーネントがそれぞれに数値データを扱うことになる。このため、その扱いにおいて、統一がとれていないは場合には、たとえば、次のような問題が生ずる。
【０００６】
すなわち、数値は，通常、有効桁数等が指定されるので、たとえば、図１に示すように、１つのコンポーネント３０１で、１つの線分を表現し、他のコンポーネント３０２で初めの線分と平行な別の１つの線分を表現し、さらに別のコンポーネント３０３で２つの線分の先端間を滑らかに結ぶ２つの円弧を設計情報として作成した後、コンポーネント３０２による一方の線分の位置が変更されて、二つの線分が一直線に近づく場合には、２つの線分の先端間を結ぶ２つの円弧の半径が無限に大きくなり有効桁数内での計算ができなくなるという問題である。
【０００７】
【発明が解決しようとする課題】
したがって、ＣＡＤ装置で使用されるプログラムを作成するプログラム作成者（プログラム使用者）は、プログラムの実行結果を見て、その有効桁数等を試行錯誤的に設定し、入力データを変更するなどして、プログラムを作成することになるので、多大な操作労力を必要とする。また、その場合に、有効桁数等を大きく取ることは、データ量を増大させて、処理時間が長くなるという問題も発生する。また、有効桁数を設定できないコンポーネントのプログラムを組み合わせる場合には、組み合わせるコンポーネントの個数が多いほど数値誤差が累積し、プログラムの数値演算の実行結果に大きな誤差が生じてしまうこともある。
【０００８】
そこで、本発明の目的は、複数のコンポーネントから構成されるアプリケーションプログラムを実行中において、コンポーネントの追加やコンポーネント間の結合を動的に変更することができるようにして、コンポーネントの組み合わせ操作を効率的に行えて、たとえば、各コンポーネントにおける挙動を試行することができるコンポーネントバス機能を提供するシステムおよびコンポーネントバス用プログラムを提供することにある。
【０００９】
【課題を解決するための手段】
上記のような目的を達成するため、本発明によるコンポーネントバスシステムは、一つの態様として、複数のコンポーネントから構成されるアプリケーションプログラムの実行中においてコンポーネントの追加または入れ替えのためにコンポーネント間の結合を動的に変更するコンポーネントバス機能を実行するシステムであって、アプリケーションプログラムの実行中において既に起動されているコンポーネントから前記コンポーネントの追加または入れ替えの要求を受け付ける要求受付手段と、前記要求受付手段により受け付けたコンポーネントの追加または入れ替えの要求に応じて該当するコンポーネントを起動するコンポーネント起動手段と、前記コンポーネント起動手段により起動されたコンポーネントと既に起動されているコンポーネントとの間で接続を変更してデータの受け渡しを行うコンポーネント間接続手段とを備えることを特徴とするものである。
【００１０】
また、本発明のコンポーネントバスシステムは、上記の構成において、前記コンポーネント間接続手段は、各コンポーネントの間でオブジェクトの受け渡しを行うことを特徴とするものであり、前記コンポーネント起動手段は、受け付けたコンポーネントの追加または入れ替えの要求から、コンポーネントの接続情報を取得し、当該接続情報に基づいて該当するコンポーネントを起動することを特徴とするものである。
【００１１】
また、本発明のコンポーネントバスシステムは、別の態様として、上記の構成において、さらに、表示画面においてコンポーネントの追加または入れ替えの指示を与え、コンポーネントの間を接続する処理の実行指示を与えるグラフィックユーザインタフェース手段を備えることを特徴とするものである。
【００１２】
また、本発明の別の態様として、本発明によるコンポーネントバス用プログラムは、複数のコンポーネントから構成されるアプリケーションプログラムの実行中においてコンポーネントの追加または入れ替えのためにコンポーネント間の結合を動的に変更するコンポーネントバス機能をコンピュータにより実行するコンポーネントバス用プログラムであって、コンピュータを、アプリケーションプログラムの実行中において既に起動されているコンポーネントから前記コンポーネントの追加または入れ替えの要求を受け付ける要求受付手段と、前記要求受付手段により受け付けたコンポーネントの追加または入れ替えの要求に応じて該当するコンポーネントを起動するコンポーネント起動手段と、前記コンポーネント起動手段により起動されたコンポーネントと既に起動されているコンポーネントとの間で接続を変更してデータの受け渡しを行うコンポーネント間接続手段として機能させるコンポーネントバス用プログラムであることを特徴とするものである。
【００１３】
また、本発明のコンポーネントバス用プログラムは、上記の構成において、前記コンポーネント間接続手段として機能するプログラムは、各コンポーネントの間でオブジェクトの受け渡しを行うことを特徴とするものであり、また、前記コンポーネント起動手段として機能するプログラムは、受け付けたコンポーネントの追加または入れ替えの要求から、コンポーネントの接続情報を取得し、当該接続情報に基づいて該当するコンポーネントを起動することを特徴とするものである。
【００１４】
このような特徴を有する本発明のコンポーネントバスシステムおよびコンポーネントバス用プログラムによれば、複数のコンポーネントで構成されるアプリケーションプログラムの実行を制御する場合に、アプリケーションプログラムの実行中において、既に起動されているコンポーネントからコンポーネントの追加または入れ替えの要求を受け付け、受け付けたコンポーネントの追加または入れ替えの要求に応じて該当するコンポーネントを起動し、ここで新たに起動されたコンポーネントと既に起動されているコンポーネントとの間で接続を動的に変更して、データの受け渡しを行う。つまり、複数のコンポーネントから構成されるアプリケーションプログラムを実行する場合において、複数のコンポーネントの間にコンポーネントバスを介在させて、処理の途中であっても動的に、コンポーネントの追加・削除やコンポーネント間の結合を、コンポーネントバス機能によるコネクタ切り換えによる関係づけの変更により、コンポーネント内のデータ（パラメータ）の変更を行う構成としている。このため、このコンポーネントバスシステムにより、例えば、ＣＡＤアプリケーションプログラムを実行する場合に、それぞれのコンポーネントの処理によって、試行錯誤的に、ＣＡＤデータの調整を行うことができ、たとえば、プログラムの実行結果の誤差を小さくすることができるようになる。
【００１５】
具体的には、アプリケーションプログラムの実行中において、形状の調整をグラフィックユーザインタフェース（ＧＵＩ）を通じての有効桁数の取り扱いに関するパラメータの調整や、コンポーネントの入れ替えによる調整を、形状を確認しながら対話的に行うことにより、簡便に実行することができる。また、一つの変更を複数のコンポーネントに同時に伝えることも可能となる。これにより、たとえば、図２を参照する説明により後述するように、２つの線分が一直線上になった場合には、２つの円弧で結ぶコンポーネント３０３から線分で結ぶコンポーネント３０４に、コンポーネントバスにおけるコネクタによって切り換えることができ、従来における問題を解決することができる。
【００１６】
従来は、コンポーネント間の関係づけを変更するには、一度アプリケーションを終了させ、プログラムを修正し、コンパイルして再度立ち上げる必要があり、対話的な変更は、あらかじめ定まったパラメータの調整のみ可能であったが、本発明のコンポーネントバスシステム及びコンポーネントバス用プログラムを用いることにより、コンポーネントを動的に組み合わせ、パラメータの選択も動的に行うことが可能になる。
【００１７】
【発明の実施の形態】
以下、図面を参照して本発明の実施形態を詳細に説明する。図３は、本発明の一実施形態のシステム構成を示す図である。図３において、１０はコンポーネントの結合として構成された予め作成されたアプリケーションプログラムである。アプリケーションプログラム１０は、アプリケーションビルダー３０を用いて作成される。また、アプリケーションビルダー３０は、作成されたアプリケーションプログラム１０を、外部記憶４０にアプリケーションコンポーネント結合情報ファイル（専用形式）４２として、あるいはＸＭＬ等タグ言語で定義されたアプリケーションコンポーネント結合情報ファイル４３として保存する機能を持つ。
【００１８】
２０はコンポーネントバスである。１１〜１３は実行可能状態とされたアプリケーションプログラム１０のコンポーネントである。コンポーネント１１〜１３は、外部記憶４０に部品ファイル４１として記憶されたコンポーネントをアプリケーションコンポーネント結合情報（４２あるいは４３）に基づいてコンポーネントバス２０が読み込み、コネクタ２１により結合して、実行可能状態とされたコンポーネントである。アプリケーションプログラム１０は、どのようなものでもよいが、ここでは、ＣＡＤ用プログラムを例として説明する。
【００１９】
アプリケーションプログラム１０の実行では、その構成要素の複数のコンポーネント１１〜１３がそれぞれに実行されて、処理が進行する。すなわち、各コンポーネント１１〜１３の中のそれぞれのプログラムが、所定の順序で実行されることで、アプリケーションプログラム１０の処理が遂行される。これらのコンポーネント１１〜１３の中で使用されるそれぞれのデータ（パラメータ；一般的には変数などと呼ばれる）の受け渡しは、従来のように、所定の共通記憶領域に対して直接行うのではなく、コンポーネントバス２０を介して、コンポーネントバスが提供するコンポーネント間の接続の機能を利用して行われる。つまり、各コンポーネント１１〜１３の間で接続を行ってデータの受け渡しを行うが、その場合に、各々のコンポーネント１１〜１３は、プログラム処理の実行中において追加、削除、入れ替えなど、動的にコンポーネント間接続（結合）の変更が行われる。
【００２０】
コンポーネントバス２０が、アプリケーションプログラムを実行する場合のコンポーネントの間の動的連携を行い、新たなコンポーネントの動的追加または既存のコンポーネントの削除を行い、または、コンポーネントの間の動的連携の追加を行う。その中でコンポーネントの間の接続処理が行われ、データの受け渡しが行われる。
【００２１】
また、このシステムでは、これらのコンポーネントに対する動的連携は、アプリケーションンビルダー３０の持つグラフィックユーザインタフェース（ＧＵＩ）によりコネクタ２１の接合を制御することで実現している。なお、このコネクタ２１の接合制御による動的連携機能は、アプリケーションプログラム１０を構成する複数のコンポーネントのなかの一つのコンポーネントとして作成されて提供されるものであってもよい。
【００２２】
ソフトウェア部品（コンポーネント）の組み合わせが、ＸＭＬ等のタグ言語文書４３として提供される場合に対応して、アプリケーションビルダー３０には、図示しないが、ＸＭＬ等のタグ言語文書（アプリケーションコンポーネント結合情報ファイル４３）を解析するためのタグ言語パーサ、また、ＸＭＬ等のタグ言語文書（アプリケーションコンポーネント結合情報ファイル４３）によるコンポーネントの組み合わせのチェックを行うためのチェック機能を提供するプログラムのチェッカーが設けられている。
【００２３】
図４は、コンポーネントバスの主要部の処理内容を説明するフローチャートである。図４を参照して説明する。このコンポーネントバスの処理は、例えば、データの受け渡しのための他のコンポーネントを起動して接続する処理である。
【００２４】
ここでの処理では、まず、コンポーネントからの要求がソフトウェア割り込みイベントにより発生することで処理が開始される。コンポーネントからの要求があると、その内容が解析され、他のコンポーネントの接続先があるか否かが判定される（ステップ１０１）。コンポーネントの要求に接続先がない場合にはリターンする。接続先のコンポーネントがある場合には、そのコンポーネントの接続情報を取得し（ステップ１０２）、その接続情報に基づいて、該当するコンポーネントを起動し（ステップ１０３）、また、複数のコンポーネントを起動する場合には、それぞれの複数のコンポーネントを起動し、起動したそれぞれのコンポーネント処理（ステップ１０４〜１０６）に、処理の制御を移す。そして、制御が移ったコンポーネント処理が終了すると、リターンする。
【００２５】
図５は、アプリケーションビルダー４２の操作画面の一例を示す図である。アプリケーションビルダー３０を起動すると、図５に示すように、操作画面２００が表示される。操作画面２００に表示されたプラットホームベースフレームの画面上において、部品ファイル４１にソフトウェア部品として登録されているコンポーネントを読み出し、フレーム画面上に表示する。表示されたコンポーネントの間の接続を、たとえば、グラフィックユーザインタフェース機能を利用して、マウス操作などを行い、それぞれのコンポーネントの間の接続関係を指示する。そして、画面の下に配置されている実行ボタンを押すことにより、接続関係を指示したコンポーネントの間を接続する処理を行い、アプリケーションプログラムを実行する。このようなコンポーネントの間を接続する処理は、上述したコンポーネントバス２０の機能を利用して行われる。作成されたコンポーネント間の結合情報は、アプリケーションプログラムとして、アプリケーションコンポーネント結合情報ファイル（専用形式）４２により、あるいはＸＭＬ等タグ言語形式のアプリケーションコンポーネント結合情報ファイル４３により保存できる。
【００２６】
また、アプリケーションビルダー３０は、表示画面にパラメータ名およびその値を入力する記入欄（入力フィールド）を表示すると共に、マウスあるいはキーボードなどの入力装置からコンポーネントの処理名称の選択、パラメータ名とその値の入力を受付け、入力されたパラメータ名およびその値を記入欄に表示するユーザインタフェース機能を実行する。
【００２７】
このように、複数のコンポーネント１１〜１３の間にコンポーネントバス２０を介在させ、複数のコンポーネント１１〜１３による情報処理の途中であっても、プログラム使用者がアプリケーションビルダー３０を使用し、あるいは、切り換え用コンポーネント３０５を使用して、コンポーネントの追加、コンポーネントの間の接続の変更、コンポーネントにおけるパラメータの値の修正を可能としている。
【００２８】
このようなソフトウェアのＣＡＤプログラム（アプリケーションプログラム）が、コンポーネントバスシステムにより実行された場合の情報処理内容を、図６を参照して説明する。図６は、コンポーネントバス２０の機能を利用して処理が実行されるＣＡＤプログラムの流れを説明するフローチャートである。
【００２９】
このＣＡＤプログラムは、図１および図２により説明したように、例えば、二つの平行な状態にある線分の間を２つの円弧等により滑らかに接合する図形を作成するアプリケーションプログラムである。アプリケーションプログラムとしては、基本的には、線分１を生成するコンポーネント３０１、線分２を生成するコンポーネント３０２，２円弧を生成するコンポーネント３０３から構成され、さらにコンポーネント３０３による円弧の生成が不可能な場合のために、線分３を生成するコンポーネント３０４と、切り換えコンポーネント３０５が備えられたものである。これらのコンポーネント３０１〜３０５はアプリケーションコンポーネント結合情報（４２，４３）により結合の状態が指示されて結合されたものとなっている。
【００３０】
このＣＡＤプログラムを実行する場合を例として説明する。まず、図２に示す４つのコンポーネント（線分３を生成するコンポーネント３０４を除く４つのコンポーネント）が全て起動され、それらの間にコネクタが作成される。そして、アプリケーションコンポーネント結合情報に定義された、初期コンポーネントが起動された後、コンポーネントバスはコンポーネントあるいはアプリケーションビルダー３０からのイベント待ち状態にはいる（ステップ２０１〜ステップ２０４）。
【００３１】
なお、コンポーネントバス２０の処理は、アプリケーションプログラム１０とは独立しており、システムの起動時に起動されて、コンポーネントバス機能を提供する。コンポーネントバス２０は、アプリケーションプログラムで指定された初めのコンポーネントにイベントを送り、処理が開始される。
【００３２】
コンポーネントバス２０は、アプリケーションプログラムのコンポーネントからのイベントにしたがって、コンポーネントの起動とデータの受け渡しを整合的に管理する処理を行う。例えば、コンポーネントバス２０が、コネクタオブジェクトの切り換えイベントを受けた場合に、新しく接続されるコンポーネントの起動を行い、起動されたコンポーネントに切り換えられたデータを整合的に受け渡す（ステップ２０４〜ステップ２１０）。また、コンポーネントバス２０は、同一のコンポーネントから発生した同一のイベントを識別し、複数の経路で到達した同一イベントを重複することなく受け取り側のコンポーネントに受け渡す機能を持つ。
【００３３】
コンポーネントバス２０がコネクタ変更のイベントを受け取った場合、例えば、図２において、２円弧を作成するコンポーネント３０３から，不成立のイベントを受け取った場合、コンポーネントバス２０から、これが切り換えコンポーネント３０５に伝達され、切り換えコンポーネント３０５が、２円弧を作成するコンポーネント３０３と、線分１を作成するコンポーネント３０１と、線分２を作成するコンポーネント３０２との結合から、２円弧を作成するコンポーネント３０３に替えて、線分３を作成するコンポーネント３０４との結合に切り換える指示をコンポーネントバス２０に出すので、コンポーネントバス２０は、これらのコンポーネントの間の結合を切り換える処理を実行する。
【００３４】
その後、コンポーネントを起動するに必要なデータが揃っているか検証され、そろった場合に、そのコンポーネントが起動される（ステップ２０９，ステップ２１０）。２円弧を作成するコンポーネント３０３の切り換えの例では、切り換えられる線分３を作成するコンポーネント３０４を起動するために必要なデータが揃っているため、線分３を作成するコンポーネント３０４が起動される。
【００３５】
線分１を作成するコンポーネント３０１あるいは線分２を作成するコンポーネント３０２が、ＣＡＤアプリケーション利用者からの指示で変更された場合、線分１を作成するコンポーネント３０１あるいは線分２を作成するコンポーネント３０２から変更のイベントがコンポーネントバス２０に送られ、線分３による接続が滑らかでなくなった場合には、切り換えコンポーネント３０５が再び２円弧を作成するコンポーネント３０３への切り換え処理の指示を行うこともある。
【００３６】
以上、説明した本発明の実施の形態によれば、複数のコンポーネントが情報処理を行っている途中で、パラメータの値をプログラム使用者が変更した場合、コンポーネントバスがコンポーネントの結合を切り換えることにより、アプリケーションプログラム全体の情報処理結果の誤差が大きくなることはない。
【００３７】
【発明の効果】
以上、説明したように、本発明によれば、アプリケーションプログラムの実行途中でコンポーネントの切り換えによりプログラムの実行を修正できるので、数値誤差などに起因するプログラム使用者の労力を大幅に低減することができる。
【図面の簡単な説明】
【図１】  CAD等のプログラムの問題を示す図である。
【図２】本発明によるＣＡＤプログラムの実行を説明する図である。
【図３】本発明の一実施形態のシステム構成を示す図である。
【図４】コンポーネントバスの主要部の処理内容を説明するフローチャートである。
【図５】アプリケーションビルダーの操作画面の一例を示す図である。
【図６】コンポーネントバスの機能を利用して処理が実行されるＣＡＤプログラムの流れを説明するフローチャートである。
【符号の説明】
１０  アプリケーションプログラム
１１〜１３  コンポーネント
２０  コンポーネントバス
３０  アプリケーションビルダー（GUI）
４０  外部記憶
４１  部品ファイル
４２  アプリケーションコンポーネント結合情報（専用形式）
４３  アプリケーションコンポーネント結合情報（ＸＭＬ等タグ言語形式）
【図１】
0004392490.tif 000002
【図２】
0004392490.tif 000003
【図３】
0004392490.tif 000004
【図４】
0004392490.tif 000005
【図５】
0004392490.tif 000006
【図６】
0004392490.tif 000007