JPH11161483A - 動的拡張性を備えたソフトウェア構築システムおよび方法 - Google Patents

動的拡張性を備えたソフトウェア構築システムおよび方法

Info

Publication number
JPH11161483A
JPH11161483A JP32612297A JP32612297A JPH11161483A JP H11161483 A JPH11161483 A JP H11161483A JP 32612297 A JP32612297 A JP 32612297A JP 32612297 A JP32612297 A JP 32612297A JP H11161483 A JPH11161483 A JP H11161483A
Authority
JP
Japan
Prior art keywords
component
unit
management
software
function
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.)
Withdrawn
Application number
JP32612297A
Other languages
English (en)
Inventor
Kiyoshi Nitta
清 新田
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP32612297A priority Critical patent/JPH11161483A/ja
Publication of JPH11161483A publication Critical patent/JPH11161483A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

(57)【要約】 【課題】 既存のコンポーネントをできるだけ再利用し
ながら、新規のコンポーネントと協調させて、ソフトウ
ェアを動的に拡張することが課題である。 【解決手段】 特定のコンポーネントの機能を呼び出す
処理コードをすべて、それを管理する管理コンポーネン
トに集中させる。動的拡張を行う際には、特定のコンポ
ーネントとともに管理コンポーネントを交換すること
で、コンポーネント協調のための情報も自動的に更新さ
れる。そのほかのコンポーネントについては、再利用す
ることが可能になる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、既存のコンピュー
タソフトウェアを再利用しながら、ソフトウェアを動的
に拡張することができるソフトウェア構築システムおよ
びその方法に関する。
【0002】
【従来の技術】コンピュータのハードウェア上に構築さ
れるソフトウェアシステムは、年々多機能化、大規模化
している。その中でも、最近、例えば、次のような動的
拡張性を持ったシステムの開発要求が高い。・旧システ
ムの運用を継続しながら、その機能を融合するデータベ
ースシステム金融機関のオンラインシステムのような大
規模なデータベースシステムは、データの整合性を保つ
ために様々な配慮がなされており、機能拡張のためのシ
ステム停止に時間がかる。そのような時間を費やすこと
なしに機能拡張を可能にするために、動的拡張システム
が望まれている。・ネットワークを通して得た最新の機
能モジュール(プラグイン等)を即座に利用可能にする
個人用情報表示・編集システムネットワークのエンドユ
ーザが利用する情報表示・編集システムは、常にその時
点で最高の技術を駆使した機能が望まれるために、多機
能となり、起動・終了に時間がかかる。さらなる機能拡
張のために要する起動・終了の時間は、ユーザの自由な
操作意志を阻害し、能率の低下を招く。また、機能拡張
を行う際にシステム全体を更新することは、ネットワー
クトラフィックの増大につながり、コストが増大する。
このような問題を回避するために、動的拡張システムが
望まれている。
【0003】ここで、動的拡張とは、システム拡張に要
する時間が短く、拡張の前後において、稼働中のシステ
ム資源のうち拡張に関わらない部分が継承されるような
機能を意味する。
【0004】上述の例では、動的拡張機能は、運用時の
時間コストを節約する点で有利であるが、それ以外に
も、ソフトウェアの開発効率の改善や、ソフトウェア部
品の再利用が促進されることによる信頼性の向上等のメ
リットがある。このため、既存のアプリケーションシス
テム等の中にも、独自にこれらの動的拡張機能を実装し
ているものがある。このように、動的拡張性を備えたシ
ステムのニーズは現在でも存在し、ハードウェアの高性
能化に応じたソフトウェアの高機能化に対応して、将
来、そのニーズはより高まると思われる。
【0005】動的拡張機能は優れた機能であるが、それ
を備えたシステムを実現することは難しい。その実現の
ための開発コストを下げ、システムの信頼性を増すため
に、次のような既存技術が利用可能である。 ・ソフトウェア再利用技術 ・分散オブジェクト・コンポーネント技術 一般に、コンピュータのソフトウェアを開発するには多
大なコストがかかる。ライブラリ、オブジェクト指向、
フレームワーク、コンポーネントウェア、デザインパタ
ーン等の技術は、ソフトウェアを再利用することにより
開発コストを削減する目的を持って、研究されてきた。
これらは、一般的なソフトウェア開発過程で適用されて
いる。
【0006】また、COM(component object mode
l)、CORBA(common object request broker arch
itecture )、Java Beans(商標)等の分散オブジェク
ト・コンポーネント技術は、動的拡張システムを構築す
るための基礎的な機構として利用できる。ここで、オブ
ジェクトとは、データと処理をカプセル化したソフトウ
ェアの構成要素に対応し、コンポーネントとは、アプリ
ケーションを構成する機能単位(ソフトウェア部品)に
対応する。分散オブジェクト・コンポーネント技術と
は、複数のコンピュータ上に分散したオブジェクトやコ
ンポーネントを利用する技術である。
【0007】
【発明が解決しようとする課題】しかしながら、従来の
動的拡張システムには、次のような問題がある。ソフト
ウェア再利用技術は、動的拡張性のような、一部のアプ
リケーション特有の性質を実現するための具体的な解決
方法は与えていない。また、分散オブジェクト・コンポ
ーネント技術は、その基礎的な解決のための道具は提供
するが、実際に動的拡張アプリケーションを開発するに
は不十分である。動的拡張を行うためには、次の課題が
解決される必要がある。
【0008】A.コンポーネントの型をチェックする。 B.動的にコンポーネントを読み込む。 C.読み込んだコンポーネントの提供する機能を実行す
る。
【0009】D.読み込んだコンポーネントを協調させ
て活用する。 このうち、A.は、コンポーネントがアプリケーション
の中でどのような役割を果たすかを特定する課題であ
る。分散オブジェクト・コンポーネント技術では、その
役割を型として分類し、それによりコンポーネントを識
別する。2つのコンポーネントの型が一致すれば、それ
らは同じ役割を果たすものとみなされる。Smalltalk-80
やObjective-C 等の一部のプログラミング言語では、言
語レベルでその機能を提供しているが、通常は、ライブ
ラリの関数呼び出しによりチェックを行う。
【0010】B.とC.は、動作中のプログラムがコン
ポーネントの実体であるプログラムモジュールをいかに
ファイルシステム等から読み込み、実行させるかという
課題である。分散オブジェクト・コンポーネント技術が
そのための機構を提供する。また、D.は、読み込んだ
コンポーネントをアプリケーションの他の部分といかに
協調させて、機能拡張を行うかという課題である。
【0011】以上の課題のうち、A.、B.、C.は、
既存の分散オブジェクト、コンポーネント技術により解
決できるが、動的拡張にとって最も重要なD.を解決す
ることはできない。読み込まれた新規コンポーネント
が、元からアプリケーションに存在する部分の性能を改
善した代替品であれば、D.の課題は発生しない。しか
し、当初のアプリケーション設計時に予想されていない
新たな機能を備えている場合は、それをどう活用するか
は非常に重要な問題となる。従来の技術は、この問題に
対して明確な回答を与えていない。
【0012】コンポーネント協調の具体的な問題として
は、次のようなものがある。例えば計算機のファイルシ
ステムの階層構造を2次元的に表示するアプリケーショ
ンがあり、表示のためのウィンドウを実現する部分がコ
ンポーネントとして交換可能になっていると想定する。
そのコンポーネントを、2次元表示との互換性を保ちな
がら、3次元のウィンドウを実現するコンポーネントに
交換することを考えてみる。
【0013】この場合、コンポーネントの交換後も、ア
プリケーションの他の部分は、ウィンドウ用コンポーネ
ントに対して、2次元平面上の制御情報しか与えること
ができない。したがって、新規に組み込まれた3次元表
示コンポーネントは、アプリケーション内の他の部分と
協調して性能を発揮しているとは言えない。これでは、
アプリケーションの拡張ではなく、単なる交換である。
【0014】3次元表示コンポーネントの性能を活用し
たアプリケーション拡張を行うには、その表示コンポー
ネントを制御している部分を修正してまわる必要があ
る。コード設計が適切になされていない場合、そのよう
な制御部分は多数のコンポーネントに分散されているこ
とが多い。
【0015】この場合、開発者は、それらのコンポーネ
ントのソースコードを部分的に再利用することができる
かも知れないが、コンパイルされたバイナリコードの再
利用性は少ない。したがって、アプリケーションをバイ
ナリコードで受け取ったエンドユーザは、関連するコン
ポーネントをすべて新規なものに置き換えなければなら
ず、必要な個所のみ変更すればよいという動的拡張の利
点が失われる。
【0016】一般に、アプリケーションの拡張の度合い
が大きいほど、その前後で継続して利用できるソフトウ
ェア資源の量は少なくなる。現状の技術は、動的拡張に
関する重要な問題の一つであるコンポーネント協調への
解答を、既存のコンポーネントを再利用できる形で提供
していない。このため、動的拡張性を持つアプリケーシ
ョンの開発効率は悪く、その信頼性も低くなっている。
【0017】本発明の課題は、既存のコンポーネントを
できるだけ再利用しながら、新規のコンポーネントと協
調させて、ソフトウェアを動的に拡張することができる
ソフトウェア構築システムおよびその方法を提供するこ
とである。
【0018】
【課題を解決するための手段】図1は、本発明のソフト
ウェア構築システムの原理図である。図1のソフトウェ
ア構築システムは、構成手段1と変更手段2を備え、複
数の機能単位3、4を組み合わせてソフトウェア5を構
築する。
【0019】構成手段1は、複数の機能単位3のうち特
定の機能単位3を使用する処理を、少数の管理用機能単
位4に集中して実装する。変更手段2は、ソフトウェア
5を変更する際に、特定の機能単位3を含む1つ以上の
機能単位の交換または追加を行う。
【0020】構成手段1は、特定の機能単位3を使用す
る処理とは、その機能単位3が持っている機能の実行結
果を利用する必要のある処理であり、例えば、他の機能
単位のメソッドを呼び出す処理コードに対応する。この
ような処理を、少数の管理用機能単位4に集中して実装
することで、特定の機能単位3を使用するコードの分散
が回避される。
【0021】変更手段2は、特定の機能単位3の機能を
変更する際に、少なくともその機能単位3を交換し、必
要であれば、それを管理する管理用機能単位4も交換す
る。また、特定の機能単位3を新たに追加する際に、必
要であれば、管理用機能単位4も追加する。
【0022】このように、特定の機能単位3に関する変
更を行う際には、それを使用する処理コードを集中して
実装している管理用機能単位4を交換/追加すれば十分
であり、他の機能単位3を交換/追加する必要はなくな
る。したがって、既存の機能単位3をできるだけ再利用
しながら、交換/追加された新規の機能単位と協調させ
て、ソフトウェア5を拡張することが可能になる。
【0023】例えば、図1の機能単位3、4は、それぞ
れ、後述する図2におけるコンポーネント、管理コンポ
ーネントに対応し、構成手段1と変更手段2は、後述す
る図3におけるカーネル11、実装マネジャ12、コン
ポーネントマネジャ13、およびメッセージディストリ
ビュータ14に対応する。
【0024】また、図1のソフトウェア構築システムと
は別に、要求処理手段、機能単位管理手段、実装手段、
および制御手段を備えたソフトウェア構築システムを構
成することもできる。
【0025】このシステムにおいて、要求処理手段は、
複数の機能単位の間の処理要求を処理する。機能単位管
理手段は、上記複数の機能単位のうち特定の機能単位
と、その特定の機能単位を使用する処理を集中して実装
した少数の管理用機能単位との関係を管理する。
【0026】実装手段は、ソフトウェアを変更する際
に、上記特定の機能単位を含む1つ以上の機能単位の交
換または追加を行う。制御手段は、上記要求処理手段、
機能単位管理手段、および実装手段のうち少なくとも1
つ以上を制御する。
【0027】要求処理手段は、複数の機能単位の間でや
り取りされるメッセージ呼び出し等の処理要求の配送を
行い、機能単位管理手段は、機能単位間における管理/
被管理関係を管理する。管理用機能単位が特定の機能単
位を使用する処理を実行する際には、通常、要求処理手
段を介して、管理用機能単位から特定の機能単位に処理
要求が送られる。
【0028】実装手段は、特定の機能単位の機能を変更
する際に、少なくともその機能単位交換し、必要であれ
ば、機能単位管理手段の管理情報に基づいて、それを管
理する管理用機能単位も交換する。また、特定の機能単
位を新たに追加する際に、必要であれば、管理用機能単
位も追加する。これらの要求処理手段、機能単位管理手
段、および実装手段は、制御手段により制御される。
【0029】この構成においても、図1のソフトウェア
構築システムと同様に、既存の機能単位をできるだけ再
利用しながら、交換/追加された新規の機能単位と協調
させて、ソフトウェアを拡張することが可能になる。
【0030】例えば、要求処理手段は、後述する図3に
おけるメッセージディストリビュータ14に対応し、機
能単位管理手段はコンポーネントマネジャ13に対応
し、実装手段は実装マネジャ12に対応し、制御手段は
カーネル11に対応する。
【0031】
【発明の実施の形態】以下、図面を参照しながら、本発
明の実施の形態を詳細に説明する。まず、以下で用いる
用語を、前述のものを含めて定義しておく。アプリケー
ションとは、実際に稼働するコンピュータソフトウェア
であり、コンポーネントとは、アプリケーションを構成
する個々の機能単位であり、コンポーネント実装とは、
コンポーネントの機能を実現するソフトウェアの実体で
ある。また、メソッドとは、コンポーネントが提供する
個々の機能であり、通常、1つのコンポーネントには1
つ以上のメソッドが含まれる。
【0032】したがって、ここで扱うコンポーネント
は、CORBA等の特定のコンポーネントや特定のオブ
ジェクトの枠組みに限られることなく、任意の形式のソ
フトウェアにおける機能単位を指す。
【0033】ここで、動的拡張に関する従来技術の問題
点を改めて整理すると、次のようになる。 (P−1)特定コンポーネントを制御する制御コード
が、複数のコンポーネントに分散している。これらの制
御コードには、制御対象のコンポーネント名、そのコン
ポーネントに実行を依頼するメソッド名、およびそのメ
ソッドの実行に必要な引数が含まれる。 (P−2)制御コードを集中させるための機構も、アプ
リケーション開発者の責任において開発しなければなら
ない。
【0034】これらの問題点を解決し、動的拡張の利点
(必要な個所のみ変更することによる時間の節約、作業
中のデータの活用)を確保したシステムを効率よく開発
するために、本実施形態では、次の手順に従って開発を
行う。 1.開発するコンポーネントの構成を決定する。この構
成は、後述する「動的拡張のためのコンポーネント構成
決定手法」に基づいて決定する。 2.既存の分散オブジェクト・コンポーネント技術を反
映したプログラミング環境を用いて、各コンポーネント
を実装する。このとき、後述する「動的拡張のためのコ
ンポーネント実装指針」に従って、後述する「動的拡張
を行うコンポーネント統合機構」の提供する適切な機能
を用いる。 3.各コンポーネントを統合して、アプリケーションと
して完成させる。このとき、「動的拡張を行うコンポー
ネント統合機構」を用いる。
【0035】次に、図2および図3を参照しながら、
「動的拡張のためのコンポーネント構成決定手法」、
「動的拡張のためのコンポーネント実装指針」、および
「動的拡張を行うコンポーネント統合機構」について説
明する。
【0036】まず、「動的拡張のためのコンポーネント
構成決定手法」は、次のようになる。拡張性を実現する
ために、いくつかのコンポーネントを組み合わせたもの
として、アプリケーションを設計する。これは、既存の
ソフトウェア再利用技術で、一般的に行われていること
である。そのコンポーネント構成は、アプリケーション
のアーキテクチャに応じて自由に決定してよいが、次の
4つの条件(AC−1)−(AC−4)を満たすものと
する。ここで、ACは、Architecture Conditionを表
す。 (AC−1)それぞれのコンポーネントに名前を付け
る。 (AC−2)それぞれのコンポーネントの役割を(概念
上)定める。 (AC−3)あるコンポーネント群(コンポーネントグ
ループ)の間に強い関連がある場合は、それらを管理す
る管理コンポーネントを設ける。 (AC−4)すべてのコンポーネントが、一つの管理コ
ンポーネント(ルート管理コンポーネント)からたどれ
るようにする。
【0037】管理コンポーネントは、必要であれば、階
層的に複数設けることができ、コンポーネントグループ
がないときは、1つの管理コンポーネントのみを設け
る。図2は、管理コンポーネントを階層的に設けた様子
を示している。図2において、管理コンポーネントから
の矢印が指すコンポーネントは管理対象を表し、最上部
の管理コンポーネントがルート管理コンポーネントに対
応する。
【0038】次に、「動的拡張のためのコンポーネント
実装指針」は、次のようになる。実際に動作するアプリ
ケーションを得るために、上述のコンポーネント構成決
定手法で設計したそれぞれのコンポーネントを実装す
る。各コンポーネントは、例えば、前述した動的拡張の
課題A.−C.を解決できる任意のプログラミング言語
を用いて実装する。そのとき、以下の6つの条件(IC
−1)−(IC−6)を満たすものとする。ここで、I
Cは、Implement Condition を表す。 (IC−1)それぞれのコンポーネント実装に名前をつ
ける。 (IC−2)1つのコンポーネント内で処理が完結する
機能は、原則としてそのコンポーネント内で実装し、ひ
とまとまりの機能にメソッド名をつける(関連:(IC
−6)) (IC−3)他のコンポーネントを扱う処理は、原則と
してそれを管理する管理コンポーネント内で実装する
(関連:(IC−6)) (IC−4)管理コンポーネントは、被管理コンポーネ
ントの名前と、そのコンポーネントのメソッド名を指定
し、「動的拡張を行うコンポーネント統合機構」を呼び
出すことで、被管理コンポーネントの機能を用いる。 (IC−5)コンポーネント実装を一時的に交換された
くないときは、それより上位に位置する管理コンポーネ
ントがコンポーネントの名前を指定し、「動的拡張を行
うコンポーネント統合機構」を呼び出すことで、そのコ
ンポーネント実装をロックする。そして、必要がなくな
れば、ロックを外す。 (IC−6)あるコンポーネントが、その被管理コンポ
ーネントではない他のコンポーネントが担当する機能を
どうしても呼び出したいときは、例外的に、直接、ルー
ト管理コンポーネントに処理を依頼する(関連:(IC
−2),(IC−3))。
【0039】上述したコンポーネント構成決定手法とコ
ンポーネント実装指針を経て作成されたアプリケーショ
ンにおいては、特定のコンポーネントに関するコンポー
ネント協調のための制御コードをすべて分離して、それ
を管理する管理コンポーネントに集中させることができ
る。これにより、上述の問題点(P−1)が解決され
る。動的拡張を行う際には、この管理コンポーネントを
交換することで、コンポーネント協調のための情報も自
動的に更新されるため、大幅な機能拡張が可能となる。
【0040】次に、「動的拡張を行うコンポーネント統
合機構」について説明する。各コンポーネントは、この
コンポーネント統合機構(Mechanism for Dynamic Modi
fication of Component Configuration, MDMCC)
により統合されて、アプリケーションとなる。また、M
DMCCは、アプリケーション開発の際にも機能提供を
行う。MDMCCは、本実施形態の中心的なソフトウェ
アであり、以下のサービスを提供する。 (S−1)アプリケーションの起動 (S−2)被管理コンポーネントのメソッド呼び出し (S−3)コンポーネント実装のロック、アンロック (S−4)コンポーネント実装の交換 (S−5)アプリケーションの拡張 (S−6)ルート管理コンポーネントへの直接処理要求 このMDMCCは、例えば、図3に示すように構成され
る。図3において、カーネル11は、MDMCCの他の
要素12、13、14を用いて、サービス(S−1)、
(S−5)を提供する。実装マネジャ12とコンポーネ
ントマネジャ13は連携して動作し、サービス(S−
3)、(S−4)を提供する。実装マネジャ12は、コ
ンポーネント実装を読み込む機能を、コンポーネントマ
ネジャ13は、システム稼働時のコンポーネントの状態
を管理する機能をそれぞれ受け持つ。このため、コンポ
ーネントマネジャ13は、各コンポーネントの状態に関
する管理データを保持している。
【0041】メッセージディストリビュータ14は、実
装マネジャ12とコンポーネントマネジャ13を用いて
サービス(S−2)を提供し、さらに、それらとルート
管理コンポーネントを用いてサービス(S−6)を提供
する。サービス(S−5)の提供時には、メッセージデ
ィストリビュータ14がカーネル11に指示を送る。
【0042】このMDMCCは、開発対象のアプリケー
ションに依らないソフトウェアであり、必要に応じて、
各アプリケーションに組み込んでおくことができる。ア
プリケーション開発の際に、あらかじめ用意されたMD
MCCを用いることで、同様の機構を新たに開発する手
間が省け、開発効率が改善される。したがって、上述の
問題点(P−2)が回避される。
【0043】次に、本実施形態の方法により作成された
アプリケーションの具体例として、グラフ構造のデータ
を扱うグラフ構造エディタについて説明する。ここでい
うグラフ構造とは、ノード(節点)とエッジ(枝)から
なるグラフのことである。ここで説明するエディタは、
有向グラフという、グラフ構造の中でも単純な構造を持
つものを対象としている。有向グラフの具体例について
は、後で処理例を述べるときに示すことにする。
【0044】今回作成したグラフ構造エディタは、以下
の機能を持つ。 ・ノードの作成、ラベルの付与、表示、位置の移動、前
後の移動 ・エッジの作成、ラベルの付与、表示、位置の移動、前
後の移動 ・エッジの有無を考慮したノードの自動配置(スプリン
グ・レイアウト) ・接続ノードに追従するようなエッジの自動配置 ・コンポーネントの交換 ・アプリケーションの動的拡張 スプリング・レイアウトは、表示画面上で、エッジ接続
されたノード同士はなるべく近く、そうでないノード同
士は遠くなるように、ノードの配置を調整する自動描画
手法であり、既存の配置をあまり変えないという性質を
持つ。スプリング・レイアウトは、例えば、簡単なアイ
ディア整理ツールとして用いられる。
【0045】ユーザは、このエディタの機能を利用し
て、各ノードにラフなアイディア(個別情報)を設定
し、関連があると思うノード同士をエッジで接続する。
すると、関連があると思ったアイディア同士が、スプリ
ング・レイアウトにより、自動的に近寄って表示され、
関連性の低いアイディア同士は離れて表示される。
【0046】このようなノードの自動配置機能は、一般
的に捕らえると、図4に示すように、グラフを可視化す
るパイプライン処理になっている。図4において、各直
方体はデータを表し、直方体同士を結ぶ円柱は処理を表
す。応用表現データ21は、計算機内にあり、ユーザに
対して可視化されるべき情報を含んでいる。
【0047】応用表現データ21をグラフ抽象化処理す
ると、抽象的なグラフ構造を表す抽象表現データ22に
なる。抽象表現データ22をレイアウト生成処理する
と、実際の平面上の位置等が加わった視覚表現データ2
3になる。視覚表現データ23を装飾処理すると、ノー
ドの色や重複関係等が加わった図表現データ24にな
る。そして、図表現データ24を、計算機のディスプレ
イ画面に収まるように、表示処理すると、ユーザが認知
できる図データ25になる。
【0048】このように、グラフデータの可視化は、図
4において右方向への流れに沿って行われる。ユーザが
右端の図データ25を変更した場合は、このパイプライ
ンを左に向かって逆に処理し、グラフデータを更新しな
くてはならない。このパイプライン構造は、後述するア
ーキテクチャに強い影響を与える。
【0049】図5は、グラフ構造エディタによるグラフ
データの表示例を示している。図5の画面の上部には、
メニューバー31があり、下部にはメッセージ表示領域
32があり、中央部にはグラフ領域33がある。
【0050】グラフ領域33では、グラフの図データが
表示され、マウス等のポインティングデバイスによる編
集操作が可能である。この例では、グラフのノードは長
方形で表示され、エッジは矢印で表示されている。スプ
リング・レイアウトは毎秒数十回実行されており、ユー
ザがノードを追加すると、そのノードに重ならないよう
に周辺のノードが徐々に拡散する様子がアニメーション
表示される。
【0051】このエディタは、JDK1.1(Java Dev
eloper's Kit,商標)ベースのJavaアプリケーショ
ンとして書かれており、そのソースコードの規模は、コ
メント空行込みで8,536行、209,091バイト
である。なお、このソースコードには、上述のMDMC
Cも含まれている。
【0052】グラフ構造エディタのアーキテクチャは、
図6に示すようになる。図6において、各長方形41−
50はコンポーネントを表し、その名前は(AC−1)
に基づいて付けられている。矢印は、(AC−3)に基
づいて設けられた管理コンポーネントと被管理コンポー
ネントの関係を表し、管理コンポーネントから被管理コ
ンポーネントに向かっている。コンポーネント粒度(ア
プリケーションの分割の度合い)を、このアーキテクチ
ャのように決定することは、アプリケーションのデザイ
ン作業の中でも重要な過程の一つである。
【0053】これらのコンポーネントのうち、TaskMana
ger 41は、間接的にすべてのコンポーネントの管理コ
ンポーネントであり、ルート管理コンポーネントに該当
し、(AC−4)を満たしている。以下、(AC−2)
に基づいて、それぞれのコンポーネントの名前、役割、
およびそれが独立したコンポーネントである理由を述べ
る。
【0054】TaskManager 41は、EventManager42を
管理し、EventManager42と共にアプリケーション全体
を制御する。被管理コンポーネントからの実行要求の収
集・解析と必要な情報の準備をEventManager42が担当
し、それに基づく実際の制御の執行をTaskManager 41
が担当する。
【0055】これらのコンポーネントはルート管理コン
ポーネントの役割を担うため、現状のアプリケーション
の被管理コンポーネント群以外のコンポーネントが新た
に追加された場合、それらのコンポーネント実装を交換
する必要がある。したがって、このような場合に動的拡
張を行うためには、これらはコンポーネントとして独立
していなくてはならない。
【0056】TaskManager 41とEventManager42が別
のコンポーネントであるのは、次の2つの場合が考えら
れるからである。 (1)TaskManager 41の1つのコンポーネント実装に
対して、異なった情報収集方法が存在し、EventManager
42のコンポーネント実装を独立して交換する場合 (2)EventManager42のコンポーネント実装が発する
要求に対して、異なった実行方法が可能であり、TaskMa
nager 41のコンポーネント実装を独立して交換する場
合 次に、DiagramManager43は、TaskManager 41により
管理され、図4に示した応用表現データ21、抽象表現
データ22、視覚表現データ23を管理し、それらに関
する処理を行う。このコンポーネントは、この処理に関
連するコンポーネント群を管理する管理コンポーネント
である。したがって、その処理に関する動的拡張を可能
にするためには、その実装は交換可能でなくてはならな
い。
【0057】LayoutGeneration44は、DiagramManager
43により管理され、抽象表現データ22を視覚表現デ
ータ23に変換するレイアウト生成処理を行う。その実
装としては、抽象表現データ22や表示機構から独立し
て、様々なものが考えられる。したがって、動的交換可
能なコンポーネントでなくてはならない。
【0058】GraphicalEntity 45は、DiagramManager
43により管理され、応用表現データ21、抽象表現デ
ータ22、視覚表現データ23の一部を格納する。抽象
的なグラフ構造としては、レイアウト生成、表示機構、
図表現データ24から独立して、複数考えることができ
るため、その実装は動的交換可能なコンポーネントでな
くてはならない。
【0059】DisplayManager46は、TaskManager 41
により管理され、視覚表現データ23、図表現データ2
4、図データ25を管理し、それらに関する処理を行
う。このコンポーネントは、この処理に関連するコンポ
ーネント群を管理する管理コンポーネントである。した
がって、その処理に関する動的拡張を可能にするために
は、その実装は交換可能でなくてはならない。
【0060】ViewType47は、DisplayManager46によ
り管理され、グラフデータを最終的にユーザに認知させ
る表示処理を行う。表示処理は、グラフの抽象表現デー
タ22やその処理機構等とは独立に、2次元(2D)表
示、3次元(3D)表示等の異なった処理を行うことが
想定される。このため、その実装は動的交換可能なコン
ポーネントでなくてはならない。
【0061】VisualEntity48は、DisplayManager46
により管理され、視覚表現データ23、図表現データ2
4の一部を格納する。抽象的なデータを図として表現す
る方法はいくつも考えることができる。例えば、エッジ
に関しては、ノード間の矢印で表現することもできる
し、ノードに対応する長方形領域の包含関係で表現する
こともできる。このため、その実装は動的交換可能なコ
ンポーネントでなくてはならない。
【0062】ShapeChoiceSet49は、VisualEntity48
により管理され、図表現データ24の一部を格納する。
例えば、ノードを表現するのに長方形を使い、エッジを
表現するのに実直線矢印を使うことも可能であり、ノー
ドを表現するのに楕円を使い、エッジを表現するのに矢
印付きスパイラル曲線を使うことも可能である。このよ
うに、具体的な図表現データ24のセット(この場合は
ノードとエッジだが、他に表現する要素があればそれら
も含める)を格納する。具体的なセットは、抽象表現デ
ータ22、視覚表現データ23やそれらの処理から独立
して、いくつも考えることができるため、その実装は動
的交換可能なコンポーネントでなくてはならない。
【0063】UserInteraction 50は、TaskManager 4
1により管理され、ユーザがエディタの各種機能をメニ
ューやキーボード・ショートカットにより使えるように
するためのいわゆるGUI(Graphical User Interfac
e)である。エディタの基本的な機能は変わらなくて
も、言語(英語、日本語等)や操作体系の違いにより、
様々な実現方法が考えられる。このため、その実装は動
的交換可能なコンポーネントでなくてはならない。
【0064】前述の実装指針(IC−1)−(IC−
6)に基づき、これらのコンポーネントのそれぞれに対
して、Java言語による一つまたは複数の実装を行っ
た。ここでは、それぞれのコンポーネントについて、
(IC−1)に基づく実装名を列挙し、その機能、特
徴、依存する他のコンポーネント実装を述べる。
【0065】ここで、「コンポーネント実装Aがコンポ
ーネント実装Bに依存する」とは、AがBの存在を前提
にしており、Aを読み込んで働かせるためには、Bも読
み込まれていなくてはならないことを意味する。コンポ
ーネント間の管理/被管理関係とは別に、実装同士の間
にそうした依存関係が存在し、依存関係の整合性を保つ
ことは管理コンポーネントの責任である。また、管理/
被管理関係と依存関係とが重複する場合もある。こうし
たコンポーネント実装間の関係は、コンポーネントマネ
ジャ13により管理されている。
【0066】まず、TaskManager 41のコンポーネント
実装としては、次のようなものが用いられる。 ・MixedPizza TaskManager(MPTM) UserInteraction 50と協調して働き、動的拡張機能の
みを持つアプリケーションを構成する。後述するMixedP
izza EventManager コンポーネント実装に依存する。 ・DirectedGraph TaskManager(DGTM) EventManager42、DiagramManager43、LayoutGenera
tion44、GraphicalEntity 45、DisplayManager4
6、ViewType47、VisualEntity48、ShapeChoiceSet
49、UserInteraction 50と協調して働き、グラフ構
造エディタを構成する。後述するDirectedGraph EventM
anagerコンポーネント実装に依存する。MixedPizza Tas
kManagerコンポーネント実装の機能はすべて含む。
【0067】EventManager42のコンポーネント実装と
しては、次のようなものが用いられる。 ・MixedPizza EventManager(MPEM) UserInteraction 50と協調して働き、動的拡張機能の
みを持つアプリケーションを構成する。MixedPizza Tas
kManagerコンポーネント実装に依存する。 ・DirectedGraph EventManager(DGEM) EventManager42、DiagramManager43、LayoutGenera
tion44、GraphicalEntity 45、DisplayManager4
6、ViewType47、VisualEntity48、ShapeChoiceSet
49、UserInteraction 50と協調して働き、グラフ構
造エディタを構成する。DirectedGraph TaskManager コ
ンポーネント実装に依存する。MixedPizzaEventManager
コンポーネント実装の機能はすべて含む。
【0068】DiagramManager43のコンポーネント実装
としては、次のようなものが用いられる。 ・DirectedGraph DiagramManager(DGDgM) LayoutGeneration44、GraphicalEntity 45と協調し
て働き、抽象的な有向グラフデータの管理と処理を行
う。DirectedGraph TaskManager コンポーネント実装、
DirectedGraph EventManagerコンポーネント実装に依存
する。
【0069】LayoutGeneration44のコンポーネント実
装としては、次のようなものが用いられる。 ・Arrange LayoutGeneration(ALG) ノードをウィンドウ内に整列配置する。DirectedGraph
DiagramManagerコンポーネント実装に依存する。 ・ConnectEdge LayoutGeneration(CELG) グラフ的に接続しているノード同士が接続しているよう
に見えるように、エッジ配置を行う。DirectedGraph Di
agramManagerコンポーネント実装に依存する。 ・Scramble LayoutGeneration (ScLG) ノードをかきまぜてウィンドウ内にランダムに配置す
る。DirectedGraph DiagramManagerコンポーネント実装
に依存する。 ・Spring LayoutGeneration (SpLG) スプリング・レイアウト手法により、ノード同士があた
かもエッジで表されるバネによってつながれているかの
ような配置を行い、表示する。DirectedGraphDiagramMa
nagerコンポーネント実装に依存する。
【0070】GraphicalEntity 45のコンポーネント実
装としては、次のようなものが用いられる。 ・DirectedGaph GraphicalEntity(DGGE) 抽象的な有向グラフデータの保持・管理を行う。Direct
edGraph DiagramManagerコンポーネント実装と、後述す
るTwoD VisualEntity コンポーネント実装に依存する。
【0071】DisplayManager46のコンポーネント実装
としては、次のようなものが用いられる。 ・DirectedGraph DisplayManager(DGDpM) ViewType47、VisualEntity48、ShapeChoiceSet49
と協調して働き、表示のためのグラフデータ管理・処理
を行う。DirectedGraph TaskManager コンポーネント実
装、DirectedGraph EventManagerコンポーネント実装に
依存する。
【0072】ViewType47のコンポーネント実装として
は、次のようなものが用いられる。 ・TwoDPlain ViewType(TPVT) グラフの図データを表示するための2次元領域を提供す
る。DirectedGraph DisplayManagerコンポーネント実装
と、後述するDirectedGraph UserInteractionコンポー
ネント実装に依存する。
【0073】VisualEntity48のコンポーネント実装と
しては、次のようなものが用いられる。 ・TwoD VisualEntity (TDVE) グラフを2次元図形として表示するためのデータ構造の
保持・管理を行う。DirectedGraph DisplayManagerコン
ポーネント実装と、DirectedGraph GraphicalEntity コ
ンポーネント実装に依存する。
【0074】ShapeChoiceSet49のコンポーネント実装
としては、次のようなものが用いられる。 ・TwoD ShapeChoiceSet (TDSCS) グラフを2次元図形として表示するための図形描画情報
セットを提供する。TwoD VisualEntity コンポーネント
実装に依存する。
【0075】UserInteraction 50のコンポーネント実
装としては、次のようなものが用いられる。 ・DirectedGraph UserInteraction (DGUI) グラフ構造エディタを、ウィンドウシステム内のひとつ
のウィンドウとして実現する。ウィンドウ枠やメニュー
を英語表記で提供する。MixedPizza TaskManagerコンポ
ーネント実装と、MixedPizza EventManager コンポーネ
ント実装に依存する。 ・DGj UserInteraction (DGjUI) DirectedGraph UserInteraction コンポーネント実装と
同等の機能を持つが、ウィンドウ枠やメニューを日本語
表記で提供する。MixedPizza TaskManagerコンポーネン
ト実装と、MixedPizza EventManager コンポーネント実
装に依存する。図7は、これらのコンポーネント実装の
間の管理/被管理関係と依存関係を示している。ここで
は、TaskManager 41のコンポーネント実装としてDG
TMを用い、EventManager42のコンポーネント実装と
してDGEMを用いている。そして、これらがルート管
理コンポーネントに対応する。また、UserInteraction
50のコンポーネント実装としてDGUIを用いてい
る。
【0076】図7において、太い実線の矢印は、管理コ
ンポーネントのコンポーネント実装から被管理コンポー
ネントのコンポーネント実装に対するメソッドの呼び出
し(S−2)を表し、破線の矢印は、被管理コンポーネ
ントのコンポーネント実装からルート管理コンポーネン
トのコンポーネント実装に対するメソッドの直接呼び出
し依頼(S−6)を表す。また、細い実線の矢印(双方
向)は、(S−3)により実現される特定のコンポーネ
ント実装間の依存関係を表す。
【0077】次に、図8から図20までを参照しなが
ら、図3のコンポーネント統合機構MDMCCがアプリ
ケーションに対して提供する各種サービスについて、詳
細に説明する。
【0078】グラフ構造エディタの各コンポーネント実
装は、MDMCCによって統合されて、動的拡張可能な
アプリケーションとして機能する。MDMCCは、前述
した(S−1)−(S−6)のサービスを提供する。
【0079】図8は、サービス(S−1)のアプリケー
ション起動処理のフローチャートである。アプリケーシ
ョン起動時には、最初にカーネル11が処理を開始し、
MDMCCの諸機能を用いて、アプリケーションを構成
する各コンポーネント実装を読み込み、起動していく。
また、図9は、図7のグラフ構造エディタの起動の様子
を示している。図9において、実線の矢印は、メソッド
の呼び出しを表し、破線の矢印は、コンポーネント実装
の読み込みを表す。
【0080】まず、カーネル11は、実装マネジャ12
に指示して、ルート管理コンポーネントのコンポーネン
ト実装を読み込ませ(ステップS11)、メッセージデ
ィストリビュータ14を通して、それを起動する(ステ
ップS12)。図9の例では、ルート管理コンポーネン
トとしてDGTMが読み込まれ、起動される。
【0081】次に、ルート管理コンポーネントのコンポ
ーネント実装が、メッセージディストリビュータ14を
通して、実装マネジャ12に指示し、アプリケーション
を構成する残りすべてのコンポーネントについて、デフ
ォルトのコンポーネント実装を読み込ませる(ステップ
S13)。
【0082】ここでは、実装マネジャ12により、Sp
LG、CELG、ALG、ScLGのいずれかと、DG
EM、DGDgM、DGGE、DGDpM、DGUI、
TDVE、TPVT、およびTDSCSが読み込まれ
る。
【0083】次に、実装マネジャ12が、読み込んだ各
コンポーネント実装をコンポーネントマネジャ13に通
知する(ステップS14)。そして、ルート管理コンポ
ーネントのコンポーネント実装が他のコンポーネント実
装を起動することで、アプリケーションが起動される
(ステップS15)。ここでは、ステップS13で読み
込まれた各コンポーネント実装が、DGTMにより起動
される。
【0084】次に、図10は、サービス(S−2)の被
管理コンポーネントのメソッド呼び出し処理のフローチ
ャートである。この処理は、アプリケーション実装時
に、(IC−4)に基づいてコーディングされている。
指定されたコンポーネント名に対応するコンポーネント
実装が既に読み込まれていれば、メッセージディストリ
ビュータ14は、指定されたメソッドをそのコンポーネ
ント実装に実行させる。
【0085】また、図11は、図7のグラフ構造エディ
タにおける被管理コンポーネントのメソッド呼び出しの
様子を示している。図11において、実線の矢印は、メ
ソッドの呼び出しを表し、破線の矢印は、コンポーネン
ト実装の状態調査を表す。コンポーネント実装の状態調
査は、コンポーネントマネジャ13の管理データに基づ
いて行われる。
【0086】まず、ある管理コンポーネントのコンポー
ネント実装が、被管理コンポーネントの名前、実行させ
たいメソッド名、およびその引数を指定し、メッセージ
ディストリビュータ14を通して、コンポーネントマネ
ジャ13にメソッド呼び出し要求を通知する(ステップ
S21)。
【0087】図11の例では、管理コンポーネントであ
るDGDpMが、被管理コンポーネント名としてViewTy
peを指定し、それに対するメソッド呼び出し要求を、コ
ンポーネントマネジャ13に通知している。
【0088】次に、コンポーネントマネジャ13は、通
知された名前に対応する被管理コンポーネントとして読
み込まれているコンポーネント実装の状態を調査し(ス
テップS22)、そのようなコンポーネント実装へのポ
インタの有無を判定する(ステップS23)。
【0089】コンポーネント実装へのポインタが取得で
きれば、メッセージディストリビュータ14を通してそ
のコンポーネント実装を呼び出し、与えられた引数を渡
して、指定されたメソッドを実行させる(ステップS2
4)。コンポーネント実装へのポインタが取得できなけ
れば、処理を終了する。
【0090】ここでは、コンポーネントマネジャ13
は、ViewTypeに対応するコンポーネント実装であるTP
VTへのポインタを取得し、TPVTにメソッド実行が
依頼される。
【0091】このようなサービス(S−2)によれば、
コンポーネントへの処理要求は、必ずその管理コンポー
ネントから発行されるため、コンポーネントとその管理
コンポーネントを組にして交換することで、容易に機能
を拡張することができる。ただし、コンポーネントへの
処理要求が発行される毎に、対応するコンポーネント実
装の有無を確認しなければならず、実行効率が多少悪く
なる。
【0092】そこで、管理コンポーネントが、必要に応
じて、被管理コンポーネントの交換、取り外しを禁止で
きるようなロック機構を設ければ、コンポーネント実装
の有無の確認が不要になり、実行効率が改善される。そ
のために、次に説明する(S−3)のサービスが提供さ
れる。
【0093】図12は、サービス(S−3)のコンポー
ネント実装のロック処理のフローチャートであり、図1
3は、そのアンロック処理のフローチャートである。こ
れらの処理は、アプリケーション実装時に、(IC−
5)に基づいてコーディングされている。
【0094】コンポーネントマネジャ13は、ロック要
求を受け取ると、対象となる被管理コンポーネントのコ
ンポーネント実装へのポインタと、アプリケーション実
行中に重複なく生成されるロックIDとを返す。アンロ
ックは、そのロックIDに基づいて行われる。ロック中
は、(S−4)、(S−5)のサービス要求があって
も、ロック対象となったコンポーネントの交換、取り外
しは行われない。コンポーネントマネジャ13は、ロッ
クIDを管理するために、各コンポーネント実装のロッ
クキューを保持している。
【0095】また、図14は、図7のグラフ構造エディ
タにおけるコンポーネント実装のロック/アンロックの
様子を示している。図14において、実線の矢印は、メ
ソッドの呼び出しを表し、破線の矢印は、コンポーネン
ト実装の状態調査を表す。
【0096】図12のロック処理においては、まず、あ
る管理コンポーネントのコンポーネント実装が、それよ
り下位の階層に属する被管理コンポーネントの名前を指
定して、コンポーネントマネジャ13にロックを要求す
る(ステップS31)。図14の例では、管理コンポー
ネントであるDGDgMが、被管理コンポーネント名と
してGraphicalEntity を指定し、それをロックする要求
をコンポーネントマネジャ13に通知している。
【0097】次に、コンポーネントマネジャ13は、通
知された名前に対応する被管理コンポーネントとして読
み込まれているコンポーネント実装の状態を調査し(ス
テップS32)、そのようなコンポーネント実装へのポ
インタの有無を判定する(ステップS33)。
【0098】コンポーネント実装へのポインタが取得で
きれば、対応するロックIDを生成し、それをそのコン
ポーネント実装のロックキューに追加しておく(ステッ
プS34)。そして、そのコンポーネント実装へのポイ
ンタとロックIDを、要求元の管理コンポーネントに返
す(ステップS35)。コンポーネント実装へのポイン
タが取得できなければ、エラーコードを管理コンポーネ
ントに返して(ステップS36)、処理を終了する。
【0099】ここでは、コンポーネントマネジャ13
は、GraphicalEntity に対応するコンポーネント実装で
あるDGGEへのポインタを取得し、DGGEのロック
キューにロックIDを格納する。そして、DGGEへの
ポインタとロックIDを、DGDgMに通知する。こう
して、DGGEがロックされる。
【0100】これ以後、DGGEがアンロックされるま
での間、一時的に、DGGEが交換されたり、取り外さ
れたりすることは禁止される。したがって、DGDgM
は、通知されたポインタを用いて、直接、DGGEに対
して、1つ以上の処理要求を発行することができる。こ
の場合、サービス(S−2)のようにメッセージディス
トリビュータ14やコンポーネントマネジャ13を通す
必要がなくなるので、実行効率の悪化が防止される。
【0101】図13のアンロック処理においては、ま
ず、管理コンポーネントのコンポーネント実装が、ロッ
クされている被管理コンポーネントの名前とそのロック
IDを指定して、コンポーネントマネジャ13にアンロ
ックを要求する(ステップS41)。図14の例では、
管理コンポーネントであるDGDgMが、被管理コンポ
ーネント名としてGraphicalEntity を指定し、それをア
ンロックする要求をコンポーネントマネジャ13に通知
している。
【0102】次に、コンポーネントマネジャ13は、通
知された名前に対応する被管理コンポーネントのコンポ
ーネント実装のロックキューを参照して(ステップS4
2)、指定されたロックIDがあるかどうかを調査する
(ステップS43)。
【0103】指定されたロックIDがあれば、それをそ
のロックキューから削除する(ステップS44)。指定
されたロックIDがなければ、エラーコードを要求元の
管理コンポーネントに返して(ステップS45)、処理
を終了する。
【0104】ここでは、コンポーネントマネジャ13
は、GraphicalEntity に対応するコンポーネント実装で
あるDGGEのロックキューを調査し、そのロックキュ
ーから指定されたロックIDを削除する。こうして、D
GGEがアンロックされる。
【0105】次に、図15は、サービス(S−4)のコ
ンポーネント実装の交換処理のフローチャートである。
例えば、ユーザが新旧のコンポーネント実装を指定し
て、それらの交換を指示すると、コンポーネントマネジ
ャ13と実装マネジャ12が各種チェックを行って、条
件が整えば交換を行う。旧コンポーネント実装が存在し
ない場合は、新コンポーネント実装の読み込みのみを行
う。
【0106】新コンポーネント実装が既存の管理コンポ
ーネントで制御できず、新たな管理コンポーネントが必
要な場合は、自動的にサービス(S−5)を呼び出し
て、管理コンポーネントのコンポーネント実装を交換す
る。こうして、ソフトウェアの不整合状態に陥る危険性
が、自動的に回避される。
【0107】また、図16は、図7のグラフ構造エディ
タにおけるコンポーネント実装の交換の様子を示してい
る。図16において、実線の矢印は、メソッドの呼び出
しを表し、破線の矢印は、コンポーネント実装の状態調
査と脱着を表す。
【0108】まず、ユーザ等の指示にしたがって、交換
を指定されたコンポーネントの管理コンポーネントに対
応するコンポーネント実装が、新旧のコンポーネント実
装を指定して、それらの交換要求を発行する。そして、
メッセージディストリビュータ14は、その要求をコン
ポーネントマネジャ13に伝える(ステップS51)。
図16の例では、管理コンポーネントであるDGDgM
が、被管理コンポーネントであるSpLGをALGに交
換する要求を出している。
【0109】次に、コンポーネントマネジャ13は、指
定された旧コンポーネント実装が存在するかどうかを調
査し(ステップS52)、それが既に読み込み済かどう
かを判定する(ステップS53)。ここでは、指定され
た旧コンポーネント実装と互換性のあるものは、旧コン
ポーネント実装と同じものとみなされる。指定された旧
コンポーネント実装が読み込み済であれば、次に、新旧
のコンポーネント実装が所属するコンポーネントを調査
し(ステップS54)、それらの名前を比較する(ステ
ップS55)。
【0110】新旧のコンポーネント実装のコンポーネン
ト名が一致すれば、次に、新旧のコンポーネント実装の
名前を比較し、それらが異なっているかどうかを判定す
る(ステップS56)。それらが異なっていれば、実装
マネジャ12に、旧コンポーネント実装の取り外しを指
示する(ステップS57)。
【0111】ここでは、旧コンポーネント実装であるS
pLGと新コンポーネント実装であるALGの所属する
コンポーネントは、ともにLayoutGenerationであり、S
pLGとALGは異なるコンポーネント実装であるの
で、SpLGをALGに交換する指示が実装マネジャ1
2に送られる。
【0112】次に、実装マネジャ12は、旧コンポーネ
ント実装の状態の調査をコンポーネントマネジャ13に
依頼して(ステップS58)、それがロックされている
かどうかを判定し(ステップS59)、ロックされてい
なければ、それをアプリケーションから取り外す(ステ
ップS60)。ここでは、SpLGはロックされておら
ず、アプリケーションから取り外される。
【0113】次に、コンポーネントマネジャ13は、実
装マネジャ12に、新コンポーネント実装の読み込みを
指示すると(ステップS61)、実装マネジャ12は、
新コンポーネント実装の状態の調査をコンポーネントマ
ネジャ13に依頼し(ステップS62)、新コンポーネ
ント実装が既存の管理コンポーネントのコンポーネント
実装で扱うことができるかどうかを判定する(ステップ
S63)。ただし、ルート管理コンポーネントの交換要
求の場合は、この判定において「はい」として処理する
ものとする。
【0114】既存の管理コンポーネントのコンポーネン
ト実装で扱うことができれば、新コンポーネント実装を
読み込む(ステップS65)。新コンポーネント実装が
他の管理コンポーネントのコンポーネント実装に依存
し、既存のコンポーネント実装で扱うことができなけれ
ば、(S−5)の動的拡張サービスの処理を行った後に
(ステップS64)、新コンポーネント実装を読み込む
(ステップS65)。ここでは、DGDgMはALGを
扱うことができるので、ステップS64の処理を行わず
に、ALGがアプリケーションに読み込まれる。
【0115】ステップS53において、指定された旧コ
ンポーネント実装が読み込み済でなければ、ステップS
61以降の処理が行われ、ステップS55において、両
者のコンポーネント名が一致しなければ、ステップS6
4以降の処理が行われる。また、ステップS56におい
て新旧のコンポーネント実装が同一の場合、および、ス
テップS59において旧コンポーネント実装がロックさ
れている場合は、処理を終了する。
【0116】次に、図17は、サービス(S−5)のア
プリケーションの拡張処理のフローチャートである。ア
プリケーションの拡張においては、新しい種類のコンポ
ーネントを動的にアプリケーションに読み込み、他のコ
ンポーネントと結合して、機能拡張を行う。このとき、
既存の管理コンポーネントを、その新コンポーネントを
扱うことができるコンポーネント実装に交換する。実際
の交換においては、サービス(S−4)を利用する。
【0117】また、図18は、図7のグラフ構造エディ
タにおけるアプリケーションの拡張の様子を示してい
る。図18において、実線の矢印は、メソッドの呼び出
しを表し、破線の矢印は、コンポーネント実装の状態調
査と脱着を表す。
【0118】まず、ユーザが新たなコンポーネント実装
を指定して、アプリケーションの拡張を要求すると、メ
ッセージディストリビュータ14は、その要求をカーネ
ル11に伝える。カーネル11は、新たなコンポーネン
ト実装に関する調査をコンポーネントマネジャ13に指
示する。これを受けて、コンポーネントマネジャ13
は、指定されたコンポーネント実装が存在するかどうか
を調査し(ステップS71)、それが既に読み込み済か
どうかを判定する(ステップS72)。
【0119】そのコンポーネント実装が読み込み済でな
ければ、カーネル11の指示により、ルート管理コンポ
ーネントのコンポーネント実装が、他のコンポーネント
実装の動作を停止する(ステップS73)。図18の例
では、新たなコンポーネント実装として、TPVTの組
み込みが要求され、既存のルート管理コンポーネント
が、被管理コンポーネントのコンポーネント実装を停止
する。
【0120】次に、コンポーネントマネジャ13は、指
定されたコンポーネント実装が所属するコンポーネント
が既存のものかどうかを判定し(ステップS74)、既
存のものでなければ、それを扱うことのできる管理コン
ポーネントのコンポーネント実装を入手する(ステップ
S75)。このとき、必要であれば、ルート管理コンポ
ーネントまで遡って、複数の管理コンポーネントのコン
ポーネント実装を入手する。そして、カーネル11が、
既存の管理コンポーネントを、入手したコンポーネント
実装に交換する(ステップS76)。
【0121】ここでは、コンポーネントマネジャ13
は、TPVTが所属するコンポーネントであるViewType
を新たなコンポーネントとみなし、ViewTypeの管理コン
ポーネントであるDisplayManagerのコンポーネント実装
DGDpMを入手する。また、DisplayManagerの管理コ
ンポーネントであるTaskManager のコンポーネント実装
DGTMを入手する。そして、これらの管理コンポーネ
ントの既存のコンポーネント実装は、それぞれ、DGD
pMとDGTMに置き換えられる。
【0122】次に、管理コンポーネントは、指定された
コンポーネント実装を新コンポーネント実装とし、旧コ
ンポーネント実装は指定せずに、サービス(S−4)の
処理要求を発行する(ステップS77)。これにより、
図15の処理が起動され、ステップS53からステップ
S61に分岐して、ステップS65で新コンポーネント
実装が読み込まれる。そして、カーネル11の指示によ
り、ルート管理コンポーネントのコンポーネント実装
が、新コンポーネント実装を含む他のコンポーネント実
装を起動する(ステップS78)。
【0123】ここでは、DGDpMからの処理要求によ
り、実装マネジャ12がTPVTを読み込む。そして、
TPVTは、他のコンポーネント実装と共に、DGTM
により起動される。こうして、アプリケーションにTP
VTの新たな機能が追加される。
【0124】ステップS72において、指定されたコン
ポーネント実装が読み込み済であれば処理を終了し、ス
テップS74において、指定されたコンポーネント実装
が所属するコンポーネントが既存のものあれば、ステッ
プS77以降の処理が行われる。
【0125】次に、図19は、サービス(S−6)のル
ート管理コンポーネントへの直接処理要求のフローチャ
ートである。あるコンポーネントが、被管理コンポーネ
ント以外のコンポーネントの機能を用いる場合、メッセ
ージディストリビュータ14は、ルート管理コンポーネ
ントに実際の処理を任せる。ルート管理コンポーネント
は、サービス(S−2)を利用してその処理を遂行す
る。
【0126】また、図20は、図7のグラフ構造エディ
タにおけるルート管理コンポーネントへの直接処理要求
の様子を示している。図20において、実線の矢印は、
メソッドの呼び出しを表し、破線の矢印は、サービス
(S−2)の実行を表す。
【0127】まず、処理の依頼元のコンポーネント実装
が、他のコンポーネントを必要とする処理の要求を発行
すると(ステップS81)、メッセージディストリビュ
ータ14がその要求を受け取り、ルート管理コンポーネ
ントに通知する(ステップS82)。図20の例では、
TDVEが、その被管理コンポーネントではないDGG
Eのメソッドを呼び出す要求を発行し、メッセージディ
ストリビュータ14は、それをルート管理コンポーネン
トであるDGTMに通知する。このとき、TDVEへの
ポインタもDGTMに通知される。
【0128】ルート管理コンポーネントは、要求された
処理を実行するために必要な他の情報があるかどうかを
判定し(ステップS83)、必要な情報があれば、それ
を収集し(ステップS84)、要求された処理を実行す
るための命令列を生成する(ステップS85)。ステッ
プS83において、必要な情報がなければ、ステップS
85以降の処理を行う。ここでは、DGTMが、DGG
Eのメソッド呼び出しのための命令列を生成する。
【0129】次に、生成された命令列に、他のコンポー
ネントに実行を依頼すべき処理が含まれているかどうか
を判定する(ステップS86)。そのような処理があれ
ば、ルート管理コンポーネントは、メッセージディスト
リビュータ14を介して、対応するコンポーネント実装
に処理を依頼し(ステップS87)、ステップS86以
降の処理を繰り返す。ステップS87では、実際の処理
は、図10のフローチャートにしたがって行われる。そ
して、ステップS86において、他のコンポーネントに
依頼すべき処理がなくなれば、処理を終了する。
【0130】ここでは、まず、DGTMが、メッセージ
ディストリビュータ14とコンポーネントマネジャ13
を介して、DGGEのメソッド呼び出しをDGDgMに
依頼する。次に、DGDgMが、メッセージディストリ
ビュータ14とコンポーネントマネジャ13を介して、
DGGEにメソッド実行を要求する。このとき、要求元
であるTDVEへのポインタもDGGEに通知される。
これにより、DGGEが呼び出されて、要求されたメソ
ッドを実行し、その実行結果がTDVEに通知される。
【0131】このように、サービス(S−6)を利用す
れば、管理/被管理関係を持たないコンポーネント間に
おいても、メソッド呼び出しを行うことができる。本実
施形態のソフトウェア構築システムは、例えば、図21
に示すような情報処理装置(コンピュータ)を用いて構
成することができる。図21の情報処理装置は、CPU
(中央処理装置)61、メモリ62、入力装置63、出
力装置64、外部記憶装置65、媒体駆動装置66、お
よびネットワーク接続装置67を備え、それらはバス6
8により互いに接続されている。
【0132】メモリ62には、処理に用いられるプログ
ラムとデータが格納される。メモリ62としては、例え
ばROM(read only memory)、RAM(random acces
s memory)等が用いられる。CPU61は、メモリ62
を利用してプログラムを実行することにより、必要な処
理を行う。
【0133】入力装置63は、例えば、キーボード、ポ
インティングデバイス、タッチパネル等であり、ユーザ
からの指示や情報の入力に用いられる。出力装置64
は、例えば、ディスプレイやプリンタ等であり、ユーザ
への問い合わせや処理結果等の出力に用いられる。
【0134】外部記憶装置65は、例えば、磁気ディス
ク装置、光ディスク装置、光磁気ディスク(magneto-op
tical disk)装置等である。この外部記憶装置65に、
プログラムとデータを保存しておき、必要に応じて、そ
れらをメモリ62にロードして使用することもできる。
【0135】媒体駆動装置66は、可搬記録媒体69を
駆動し、その記録内容にアクセスする。可搬記録媒体6
9としては、メモリカード、フロッピーディスク、CD
−ROM(compact disk read only memory )、光ディ
スク、光磁気ディスク等、任意のコンピュータ読み取り
可能な記録媒体が用いられる。この可搬記録媒体69に
プログラムとデータを格納しておき、必要に応じて、そ
れらをメモリ62にロードして使用することもできる。
【0136】ネットワーク接続装置67は、LAN(lo
cal area network)等の任意のネットワーク(回線)を
介して他の装置と通信し、通信に伴うデータ変換を行
う。これにより、必要に応じて、プログラムとデータを
外部の装置から受け取り、それらをメモリ62にロード
して使用することもできる。
【0137】図22は、図21の情報処理装置にプログ
ラムとデータを供給することのできるコンピュータ読み
取り可能な記録媒体を示している。可搬記録媒体69や
外部のデータベース70に保存されたプログラムとデー
タは、メモリ62にロードされる。そして、CPU61
は、そのデータを用いてそのプログラムを実行し、必要
な処理を行う。
【0138】
【発明の効果】本発明によれば、アプリケーションに含
まれる特定の機能単位に関する制御コードがすべて、そ
れを管理する管理用機能単位に集中することになる。し
たがって、動的なソフトウェアの拡張を行う際には、特
定の機能単位と、対応する管理用機能単位とを交換・追
加するだけでよい。
【0139】このように、必要最小限の機能単位のみを
交換・追加すれば、拡張に伴う停止時間が短縮され、拡
張に関わらない他の機能単位が処理中のデータを継続し
て利用できる機会が増える。
【0140】また、アプリケーション開発の際に、汎用
性の高い統合機構(MDMCC)を用いることで、新た
に同様の機構を開発する手間が省け、開発効率が改善さ
れる。
【図面の簡単な説明】
【図1】本発明のソフトウェア構築システムの原理図で
ある。
【図2】管理コンポーネントを示す図である。
【図3】コンポーネント統合機構の構成図である。
【図4】グラフデータのパイプライン処理を示す図であ
る。
【図5】グラフデータの表示例を示す図である。
【図6】グラフ構造エディタのアーキテクチャを示す図
である。
【図7】コンポーネント実装間の関係を示す図である。
【図8】アプリケーションの起動のフローチャートであ
る。
【図9】アプリケーションの起動を示す図である。
【図10】被管理コンポーネントのメソッド呼び出しの
フローチャートである。
【図11】被管理コンポーネントのメソッド呼び出しを
示す図である。
【図12】コンポーネント実装のロックのフローチャー
トである。
【図13】コンポーネント実装のアンロックのフローチ
ャートである。
【図14】コンポーネント実装のロック・アンロックを
示す図である。
【図15】コンポーネント実装の交換のフローチャート
である。
【図16】コンポーネント実装の交換を示す図である。
【図17】アプリケーションの拡張のフローチャートで
ある。
【図18】アプリケーションの拡張を示す図である。
【図19】ルート管理コンポーネントへの直接処理要求
のフローチャートである。
【図20】ルート管理コンポーネントへの直接処理要求
を示す図である。
【図21】情報処理装置の構成図である。
【図22】記録媒体を示す図である。
【符号の説明】
1 構成手段 2 変更手段 3 機能単位 4 管理用機能単位 5 ソフトウェア 11 カーネル 12 実装マネジャ 13 コンポーネントマネジャ 14 メッセージディストリビュータ 21 応用表現データ 22 抽象表現データ 23 視覚表現データ 24 図表現データ 25 図データ 31 メニューバー 32 メッセージ表示領域 33 グラフ領域 41、42、43、44、45、46、47、48、4
9、50 コンポーネント 61 CPU 62 メモリ 63 入力装置 64 出力装置 65 外部記憶装置 66 媒体駆動装置 67 ネットワーク接続装置 68 バス 69 可搬記録媒体 70 データベース

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 複数の機能単位を組み合わせてソフトウ
    ェアを構築するソフトウェア構築システムであって、 前記複数の機能単位のうち特定の機能単位を使用する処
    理を、少数の管理用機能単位に集中して実装する構成手
    段と、 前記ソフトウェアを変更する際に、前記特定の機能単位
    を含む1つ以上の機能単位の交換または追加を行う変更
    手段とを備えることを特徴とするソフトウェア構築シス
    テム。
  2. 【請求項2】 前記ソフトウェアを動的に変更する際
    に、前記複数の機能単位のうち交換されない機能単位が
    処理中のデータを継続して使用する手段をさらに備える
    ことを特徴とする請求項1記載のソフトウェア構築シス
    テム。
  3. 【請求項3】 前記変更手段は、前記少数の管理用機能
    単位のうち少なくとも1つと前記特定の機能単位の交換
    または追加を行うことを特徴とする請求項1記載のソフ
    トウェア構築システム。
  4. 【請求項4】 前記構成手段は、前記特定の機能単位が
    依存する他の機能単位の情報を管理する機能単位管理手
    段を含み、前記変更手段は、前記ソフトウェアを変更す
    る際に、該特定の機能単位とともに、該特定の機能単位
    が依存する他の機能単位の交換または追加を行うことを
    特徴とする請求項1記載のソフトウェア構築システム。
  5. 【請求項5】 前記特定の機能単位の交換または取り外
    しを一時的に禁止する手段をさらに備えることを特徴と
    する請求項1記載のソフトウェア構築システム。
  6. 【請求項6】 前記複数の機能単位のうち任意の機能単
    位を下位の機能単位として管理するルート管理機能単位
    を介して、互いに管理関係を持たない2つの機能単位の
    間の処理要求を処理する手段をさらに備えることを特徴
    とする請求項1記載のソフトウェア構築システム。
  7. 【請求項7】 前記少数の管理用機能単位は、他の機能
    単位からの処理要求の解析を行う第1の管理用機能単位
    と、該処理要求の解析結果に基づいて、要求された処理
    を実行する第2の管理用機能単位とを含み、前記変更手
    段は、前記ソフトウェアを変更する際に、該第1および
    第2の管理用機能単位のいずれかの交換または追加を行
    うことを特徴とする請求項1記載のソフトウェア構築シ
    ステム。
  8. 【請求項8】 複数の機能単位を組み合わせてソフトウ
    ェアを構築するソフトウェア構築システムであって、 前記複数の機能単位の間の処理要求を処理する要求処理
    手段と、 前記複数の機能単位のうち特定の機能単位と、該特定の
    機能単位を使用する処理を集中して実装した少数の管理
    用機能単位との関係を管理する機能単位管理手段と、 前記ソフトウェアを変更する際に、前記特定の機能単位
    を含む1つ以上の機能単位の交換または追加を行う実装
    手段と、 前記要求処理手段、機能単位管理手段、および実装手段
    のうち少なくとも1つ以上を制御する制御手段とを備え
    ることを特徴とするソフトウェア構築システム。
  9. 【請求項9】 複数の機能単位を組み合わせてソフトウ
    ェアを構築するコンピュータのためのプログラムを記録
    した記録媒体であって、 前記複数の機能単位のうち特定の機能単位を使用する処
    理を、少数の管理用機能単位に集中して実装する機能
    と、 前記ソフトウェアを変更する際に、前記特定の機能単位
    を含む1つ以上の機能単位の交換または追加を行う機能
    とを前記コンピュータに実現させるためのプログラムを
    記録したコンピュータ読み取り可能な記録媒体。
  10. 【請求項10】 特定の機能単位を使用する処理を、少
    数の管理用機能単位に集中して実装し、 前記特定の機能単位と管理用機能単位を含む複数の機能
    単位を組み合わせて、ソフトウェアを構築し、 前記ソフトウェアを変更する際に、前記特定の機能単位
    を含む1つ以上の機能単位の交換または追加を行うこと
    を特徴とするソフトウェア構築方法。
JP32612297A 1997-11-27 1997-11-27 動的拡張性を備えたソフトウェア構築システムおよび方法 Withdrawn JPH11161483A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP32612297A JPH11161483A (ja) 1997-11-27 1997-11-27 動的拡張性を備えたソフトウェア構築システムおよび方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP32612297A JPH11161483A (ja) 1997-11-27 1997-11-27 動的拡張性を備えたソフトウェア構築システムおよび方法

Publications (1)

Publication Number Publication Date
JPH11161483A true JPH11161483A (ja) 1999-06-18

Family

ID=18184327

Family Applications (1)

Application Number Title Priority Date Filing Date
JP32612297A Withdrawn JPH11161483A (ja) 1997-11-27 1997-11-27 動的拡張性を備えたソフトウェア構築システムおよび方法

Country Status (1)

Country Link
JP (1) JPH11161483A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007511834A (ja) * 2003-11-03 2007-05-10 インテンショナル ソフトウェア コーポレーション リバーシブルなデザイン・ツリーの変換のための方法とシステム
JP2008146637A (ja) * 2006-11-20 2008-06-26 Intentional Software Corp ドメイン変換言語
JP2010204840A (ja) * 2009-03-02 2010-09-16 Nippon Telegr & Teleph Corp <Ntt> ユーザインターフェース操作統合システムのカスタマイズ方法及び端末装置並びにコンピュータプログラム及び情報記録媒体
JP2013211030A (ja) * 2013-05-14 2013-10-10 Nippon Telegr & Teleph Corp <Ntt> ユーザインターフェース操作統合システムのカスタマイズ方法及び端末装置並びにコンピュータプログラム及び情報記録媒体
JP2017058791A (ja) * 2015-09-14 2017-03-23 株式会社リコー 情報処理システム、情報処理装置、情報処理方法、及びプログラム

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007511834A (ja) * 2003-11-03 2007-05-10 インテンショナル ソフトウェア コーポレーション リバーシブルなデザイン・ツリーの変換のための方法とシステム
US8429525B2 (en) 2003-11-03 2013-04-23 International Software Corporation Method and system for reversible design tree transformations
JP2008146637A (ja) * 2006-11-20 2008-06-26 Intentional Software Corp ドメイン変換言語
US9158507B2 (en) 2006-11-20 2015-10-13 Intentional Software Corporation Domain transformation languages
JP2010204840A (ja) * 2009-03-02 2010-09-16 Nippon Telegr & Teleph Corp <Ntt> ユーザインターフェース操作統合システムのカスタマイズ方法及び端末装置並びにコンピュータプログラム及び情報記録媒体
JP2013211030A (ja) * 2013-05-14 2013-10-10 Nippon Telegr & Teleph Corp <Ntt> ユーザインターフェース操作統合システムのカスタマイズ方法及び端末装置並びにコンピュータプログラム及び情報記録媒体
JP2017058791A (ja) * 2015-09-14 2017-03-23 株式会社リコー 情報処理システム、情報処理装置、情報処理方法、及びプログラム

Similar Documents

Publication Publication Date Title
US5301270A (en) Computer-assisted software engineering system for cooperative processing environments
US6434594B1 (en) Virtual processing network enabler
US6820118B1 (en) Method and system for providing a linkage between systems management systems and applications
Hoheisel User tools and languages for graph‐based Grid workflows
JPH04191928A (ja) ソフトウェア作業ツール
EP1656800B1 (en) System architecture method and computer program product for managing telecommunication networks
CN104579792A (zh) 多适配方式实现多种类型虚拟资源集中管理架构及方法
Eggenschwiler et al. ET++ SwapsManager: Using object technology in the financial engineering domain
US20090172696A1 (en) Service-based content management
JP2003114793A (ja) 画面遷移図編集装置、画面遷移図編集方法およびその方法をコンピュータに実行させるプログラム
JPH11161483A (ja) 動的拡張性を備えたソフトウェア構築システムおよび方法
JPH1125126A (ja) システム設計ツール及びデータウエアハウス設計システム及び方法
Sangwan et al. Integrating a software architecture-centric method into object-oriented analysis and design
Kulscár et al. Bringing Clouds down to Earth: Modeling Arrowhead Deployments via Eclipse Vorto.
Petriu et al. Deriving software performance models from architectural patterns by graph transformations
JP2002203086A (ja) ワークフロー管理装置、ワークフロー管理方法およびワークフロー管理プログラムを記録した記録媒体
Heydarnoori et al. Towards an automated deployment planner for composition of web services as software components
JPH1083420A (ja) モデルベースの業務支援システムおよび方法
Pellegrini et al. Using GWorkflowDL for middleware-independent modeling and enactment of workflows
CN118312296B (zh) 一种基于工作流的可视化多机调度系统
Kainz et al. Model-to-metamodel transformation for the development of component-based systems
Just et al. VjControl: an advanced configuration management tool for VR Juggler applications
EP1098245A1 (en) Task management
Heinrich et al. MDA applied: a task-model driven tool chain for multimodal applications
Tsai et al. Generating user interface for mobile phone devices using template-based approach and generic software framework

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20050201