TOP > 国内特許検索 > 編集支援プログラムおよびプログラム編集の支援方法 > 明細書

明細書 :編集支援プログラムおよびプログラム編集の支援方法

発行国 日本国特許庁(JP)
公報種別 特許公報(B2)
特許番号 特許第5164032号 (P5164032)
公開番号 特開2006-243987 (P2006-243987A)
登録日 平成24年12月28日(2012.12.28)
発行日 平成25年3月13日(2013.3.13)
公開日 平成18年9月14日(2006.9.14)
発明の名称または考案の名称 編集支援プログラムおよびプログラム編集の支援方法
国際特許分類 G06F   9/44        (2006.01)
FI G06F 9/06 620K
請求項の数または発明の数 5
全頁数 28
出願番号 特願2005-056804 (P2005-056804)
出願日 平成17年3月2日(2005.3.2)
審査請求日 平成20年2月27日(2008.2.27)
特許権者または実用新案権者 【識別番号】506301140
【氏名又は名称】公立大学法人会津大学
発明者または考案者 【氏名】ニコライ ミレンコフ
【氏名】吉岡 廉太郎
【氏名】渡部 有隆
個別代理人の代理人 【識別番号】100103333、【弁理士】、【氏名又は名称】菊池 治
審査官 【審査官】漆原 孝治
参考文献・文献 特開平08-123677(JP,A)
特開2002-304428(JP,A)
特開2003-084876(JP,A)
調査した分野 G06F 9/44
特許請求の範囲 【請求項1】
計算を構成する一連の処理の空間的関係および時間的関係を規定する計算スキームの要素と、計算の各ステップで行なう処理を表す計算式および変数の要素と、計算に用いるデータの入力および計算結果の出力に関する処理の要素と、の少なくとも3個の要素をそれぞれに含む複数の自己説明型コンポーネントからなってコンピュータに計算を実行させる自己説明型プログラムを編集する編集支援プログラムであって、
コンピュータが、前記複数の自己説明型コンポーネントそれぞれについて、前記少なくとも3個の要素それぞれの情報を、マルチメディア言語を用いてディスプレイに表示
コンピュータが、前記少なくとも3個の要素それぞれに個別に、それらの要素の変更の入力を受けて、その変更を行い、変更した内容を保存する
ように機能させることを特徴とする編集支援プログラム。
【請求項2】
前記マルチメディア言語は、画像、グラフィックス、アニメーションのうちの少なくとも1種類を用いて表示するものであること、を特徴とする請求項1に記載の編集支援プログラム。
【請求項3】
前記要素ごとの情報は、サイバーフィルムとして構成されていること、を特徴とする請求項2に記載の編集支援プログラム。
【請求項4】
複数のソフトウェアコンポーネントを有して構成されるプログラムの編集を支援するプログラム編集支援方法であって、
前記ソフトウェアコンポーネントそれぞれが、計算を構成する一連の処理の空間的関係および時間的関係を規定する計算スキームの要素と、計算の各ステップで行なう処理を表す計算式および変数の要素と、計算に用いるデータの入力および計算結果の出力に関する処理の要素と、の少なくとも3個の要素を含み、
前記コンピュータが、保存されている複数のソフトウェアコンポーネントから少なくとも一つのソフトウェアコンポーネントを検索して読み込むステップと、
前記コンピュータが、前記読み込みステップで読み込まれたソフトウェアコンポーネントを一連のマルチメディアシーンとして、少なくとも図形および文字を組み合わせてディスプレイに動的に表示する表示ステップであって、前記ソフトウェアコンポーネントの前記少なくとも3個の要素を表示する表示ステップと、
前記コンピュータが、前記少なくとも3個の要素それぞれに個別に、それらの要素の変更の入力を受けて、その変更を行い、変更した内容を保存するステップと、
を実行することを特徴とするプログラム編集の支援方法。
【請求項5】
複数のソフトウェアコンポーネントを有して構成されるプログラムの編集を支援する編集支援プログラムであって、
前記複数のソフトウェアコンポーネントそれぞれが、計算を構成する一連の処理の空間的関係および時間的関係を規定する計算スキームの要素と、計算の各ステップで行なう処理を表す計算式および変数の要素と、計算に用いるデータの入力および計算結果の出力に関する処理の要素と、の少なくとも3個の要素を含み、
コンピュータに、
メモリに保存されている複数のソフトウェアコンポーネントから少なくとも一つのソフトウェアコンポーネントを検索して読み込むステップを実行させ、
前記読み込みステップで読み込まれたソフトウェアコンポーネントを一連のマルチメディアシーンとして、少なくとも図形および文字を組み合わせてディスプレイに動的に表示する表示ステップであって、前記ソフトウェアコンポーネントの前記少なくとも3個の要素を表示する表示ステップを実行させ、更に、
前記少なくとも3個の要素それぞれに個別に、それらの要素の変更の入力を受けて、その変更を行い、変更した内容を保存するステップを実行させる、
ことを特徴とする編集支援プログラム。
発明の詳細な説明 【技術分野】
【0001】
この発明は、コンピュータを利用するプログラム、プログラム改変方法、改変管理方法およびコンピュータ処理方法に関し、特に、自己説明型コンポーネントモデルによる処理に関する。
【背景技術】
【0002】
大規模なソフトウェア・システムの開発では、機能を細分化しそれぞれの機能単位でソフトウェアコンポーネントを実装し、それらコンポーネントの組み合わせと連携によってシステム全体を構築するのが一般的である。このような開発では、それぞれのコンポーネントがどのようなデータと機能を持つべきかを規定するコンポーネント構造と、それらのコンポーネントが連携し合うための環境からなる、コンポーネントモデルを定義することが必要である。これまでに様々なコンポーネントモデルが提唱され、利用されてきた。現在、最も広く利用されているソフトウェアのコンポーネントモデルとしてCORBA、COM+、Enterprise Java Beans(商標)がある。
【0003】
上述したようなコンポーネントモデルを再利用するには、そのコンポーネントの機能、利用方法、内部動作を理解する必要がある。従来のコンポーネントでは、一般に、コンポーネントが提供する機能を利用するのに必要最低限の情報がインターフェイス定義として記録されている。すなわち、コンポーネントが提供する関数の名前とその引数のデータ型が記録されている。その他には、コンポーネントの作成者、作成日、バージョン等の情報も記録されている。
【0004】
しかし、コンポーネントがどのような機能を持ち、どのような内部処理を行なっているのか、どのようにそれらの機能にアクセスでき、どのように拡張できるかなど、そのコンポーネントを理解、利用または拡張するのに必要な情報は、コンポーネントには含まれず、仕様書やマニュアルとして記載されている。
【0005】
一方、コンピュータサイエンスにおいて、アルゴリズムを学習するためのツールとして、アルゴリズムのフローチャートの作成によるもの(特許文献1参照)、サイバーフィルムによるもの(非特許文献1~3参照)が知られている。

【特許文献1】特開平8-110754号公報
【非特許文献1】Yutaka Watanobe, Rentaro Yoshioka, Nikolay N. Mirenkov著、"Self-Explanatory Components to Study Algorithms", THE JOURNAL OF THREE DIMENSIONAL IMAGES 三次元映像のフォーラム, vol.16-No.4, 2002年12月, p.231-236
【非特許文献2】R. Yoshioka, N. Mirenkov著、"Visual computing within environment of self-explanatory components", Soft Computing 7, Springer-Verlag 2002年, p.20-32
【非特許文献3】Rentaro Yoshioka, Nikolay N. Mirenkov, Yuho Tuchida, Yutaka Watanobe著、"Visual Notation of Film Language System", DMS Proceedings of The Eighth International Conference on Distributed Multimedia Systems, 2002年9月, p.648-655
【発明の開示】
【発明が解決しようとする課題】
【0006】
上述のように、コンポーネントを効率的に再利用するには、そのコンポーネントの機能、利用方法、内部動作をいかに簡単に理解するかが大切である。ところが、コンポーネントの機能や内部処理に関して、どのようにそれらの機能にアクセスでき、どのように拡張できるかなど、そのコンポーネントを理解、利用または拡張するのに必要な情報は、コンポーネントには含まれていない。これは、コンポーネントにそれら、いわゆる「説明書」に当たる情報を記述する仕組みがないからである。すなわち、ソフトウェアを開発するプログラミング環境(ツール)にはこれらの情報が含まれていない。
【0007】
このため、開発の様々な段階において、説明書やマニュアルの中から、最も適切なものを選択し、必要とする情報を検索するという余計な作業を開発者に強いることになる。初心者にとっては、これら説明書やマニュアルにいかに早く精通するかということが開発の大きな割合を占めるようになる。
【0008】
これは、現在実用されているコンポーネントモデル全てに共通する問題である。コンポーネントの意味や動作が理解しづらいという問題は、コンポーネントの修正、拡張などの再利用に当たって、開発者(ユーザ)に多大な負担をかけ、ソフトウェアの生産効率を著しく低下させる原因だと考えられる。
【0009】
本発明の目的は、上記事情に鑑みて、ソフトウェアコンポーネントを理解し利用するのに便利な自己説明型コンポーネントモデルによる自己説明型プログラムを編集する編集支援プログラムおよびプログラム編集の支援方法を提供することにある。
【課題を解決するための手段】
【0010】
この発明は上記目的を達成するものであって、請求項1に記載の発明は、計算を構成する一連の処理の空間的関係および時間的関係を規定する計算スキームの要素と、計算の各ステップで行なう処理を表す計算式および変数の要素と、計算に用いるデータの入力および計算結果の出力に関する処理の要素と、の少なくとも3個の要素をそれぞれに含む複数の自己説明型コンポーネントからなってコンピュータに計算を実行させる自己説明型プログラムを編集する編集支援プログラムであって、コンピュータが、前記複数の自己説明型コンポーネントそれぞれについて、前記少なくとも3個の要素それぞれの情報を、マルチメディア言語を用いてディスプレイに表示し、コンピュータが、前記少なくとも3個の要素それぞれに個別に、それらの要素の変更の入力を受けて、その変更を行い、変更した内容を保存するように機能させることを特徴とする。
【0011】
また、請求項2に記載の発明は、請求項1に記載の編集支援プログラムにおいて、前記マルチメディア言語は、画像、グラフィックス、アニメーションのうちの少なくとも1種類を用いて表示するものであること、を特徴とする。

【0012】
また、請求項3に記載の発明は、請求項2に記載の編集支援プログラムにおいて、前記要素ごとの情報は、サイバーフィルムとして構成されていること、を特徴とする。

【0015】
また、請求項に記載の発明は、複数のソフトウェアコンポーネントを有して構成されるプログラムの編集を支援するプログラム編集支援方法であって、前記ソフトウェアコンポーネントそれぞれが、計算を構成する一連の処理の空間的関係および時間的関係を規定する計算スキームの要素と、計算の各ステップで行なう処理を表す計算式および変数の要素と、計算に用いるデータの入力および計算結果の出力に関する処理の要素と、の少なくとも3個の要素を含み、前記コンピュータが、保存されている複数のソフトウェアコンポーネントから少なくとも一つのソフトウェアコンポーネントを検索して読み込むステップと、前記コンピュータが、前記読み込みステップで読み込まれたソフトウェアコンポーネントを一連のマルチメディアシーンとして、少なくとも図形および文字を組み合わせてディスプレイに動的に表示する表示ステップであって、前記ソフトウェアコンポーネントの前記少なくとも3個の要素を表示する表示ステップと、前記コンピュータが、前記少なくとも3個の要素それぞれに個別に、それらの要素の変更の入力を受けて、その変更を行い、変更した内容を保存するステップと、を実行することを特徴とする。
【0016】
また、請求項5に記載の発明は、複数のソフトウェアコンポーネントを有して構成されるプログラムの編集を支援する編集支援プログラムであって、前記複数のソフトウェアコンポーネントそれぞれが、計算を構成する一連の処理の空間的関係および時間的関係を規定する計算スキームの要素と、計算の各ステップで行なう処理を表す計算式および変数の要素と、計算に用いるデータの入力および計算結果の出力に関する処理の要素と、の少なくとも3個の要素を含み、コンピュータに、メモリに保存されている複数のソフトウェアコンポーネントから少なくとも一つのソフトウェアコンポーネントを検索して読み込むステップを実行させ、前記読み込みステップで読み込まれたソフトウェアコンポーネントを一連のマルチメディアシーンとして、少なくとも図形および文字を組み合わせてディスプレイに動的に表示する表示ステップであって、前記ソフトウェアコンポーネントの前記少なくとも3個の要素を表示する表示ステップを実行させ、更に、前記少なくとも3個の要素それぞれに個別に、それらの要素の変更の入力を受けて、その変更を行い、変更した内容を保存するステップを実行させる、ことを特徴とする。
【発明の効果】
【0017】
本発明によれば、コンポーネントを理解し利用するのに必要な情報をコンポーネント内に記述できるコンポーネント構造が採用され、それから提供される情報から適切なものを適時取り出し表示することができ、それぞれの情報項目ごとに最適なマルチメディア表現を利用できる。これにより、各コンポーネントの自己説明性が向上し、コンポーネントの利用(理解および作成)が容易になる。
【発明を実施するための最良の形態】
【0018】
初めに、本発明に係る自己説明型コンポーネントモデルの概要を説明する。自己説明型コンポーネントモデルは、ソフトウェアの効率的な作成と管理を可能にする、既存のコンポーネントモデルにはみられない自己説明性を追求したソフトウェアのコンポーネント化技術である。コンポーネントの役割、使い方、そして内部アルゴリズムを理解するために必要な情報をコンポーネントに必須の情報として規定することで、自己説明性を向上し、理解と利用を容易にしている。この技術を構成するのは、コンポーネントをアルゴリズムの観点から特徴づけて要素ごとに分類/保管するデータ・モデル、それら要素を的確に表現するためのマルチメディア言語群、そして、データ・モデルとマルチメディア言語群に対する操作を提供する開発環境である(図1参照)。
【0019】
自己説明型コンポーネントモデルの中核をなす、データ・モデル、マルチメディア言語群、開発環境は相互に深く関わりあっている。開発環境は、ユーザの種類や作業内容に応じてコンポーネントにアクセスするためのインターフェイスを的確に組み立てることができる。なぜなら、ユーザにとって必要な情報は状況によって異なるが、既にデータ・モデルによって要素ごとに分類/管理されているので、特定の情報に容易にアクセスすることができるからである。また、状況に応じて異なるマルチメディア言語を使用することができるので、情報をより適した形で表現することが可能となる。このような特徴から、コンポーネントを様々な角度から捉えることが可能となり、それらを状況に応じて使い分けることで、知識、関心、経験の異なる様々なユーザがそのコンポーネントを理解できる可能性を高めているのである。この意味においてコンポーネントの「自己説明性」は高められるのであり、これが本技術の最大の目的であり特徴である。以下では、データ・モデル、マルチメディア言語群、開発環境について順を追って説明する。
【0020】
[データ・モデル]
ソフトウェアコンポーネントは、ある機能を実現するための計算手順をコンポーネント化したものである。その計算手順を計算のスキームという観点で特徴づけていくと、「計算のスキーム」、「計算式と変数」および「入出力処理」の3つの要素に分解することができる。
【0021】
ここでいう「計算のスキーム」とは、計算を構成する一連の処理の空間的関係と時間的関係を意味する。図2にその例を示す。図2(a)の例では、4つの処理、A、B、C、Dが、横一列につながり、A→B→C→Dという順序で実行されることを表している。つまり、ステップ1~4において、黒く塗りつぶされている処理が実行される。図2(b)の例では、同じ4つの処理が図2(a)と同じく横一列に並び、D→C→B→Aと異なる順序で実行されることを表している。図2(c)の例では、同じ4つの処理がこれまでとは違い格子状に並び、A→B→C→Dと図2(a)と同じ順序で実行されることを表している。このように、どのような計算手順も「計算のスキーム」という要素を持っている。
【0022】
「計算式と変数」とは、図2の例の場合で言えば、4つの処理、A、B、C、Dそれぞれで実際に行う処理を表す計算式や変数のことを意味する。このように、どのような計算手順も「計算式と変数」という要素を持っている。
【0023】
「入出力処理」とは、計算に用いるデータの入力や計算結果の出力に関する処理のことを意味する。これには、計算を始める前に行う初期値の入力、計算結果のファイルへの出力、計算途中で生ずる他コンポーネントとのやりとりなどが含まれる。このように、どのような計算手順も「入出力処理」という要素を持っている。
【0024】
以上、3つをデータ・モデルで規定する要素とする。ただし、データ・モデルの構造上、規定する要素に制限はなく、対象とするコンポーネントの種類によって必要な要素を付け加えることができる。つまり、最低限、上記3つの要素を含む必要がある。自己説明型コンポーネントとは、データ/知識をこれらの要素でもって表現したもののことを言う。
【0025】
[マルチメディア言語]
コンポーネントを上記の要素ごとにデータ・モデルに記述するときに用いるマルチメディア言語について説明する。前述の通り、各要素に最も適した専用のマルチメディア言語を用いるため、複数のマルチメディア言語が存在する。ここでは、それらの一例を示す。
【0026】
<「計算のスキーム」用の言語>
「計算のスキーム」は、構造体とそれを構成するノードの形、色、点滅によって表現される。図2で示した例のように、処理をノード(図内の○)として表すと、処理の空間的関係をノードとそれらをつなぐ線によって形作られる構造体として表すことができる。この構造体には幾つかの種類があり、処理に応じて適切なものを選んで使うことができる。構造体の例を図3に示す。図3(a)は、代表的な構造体を示している。左から一次元格子、二次元格子、木、ピラミッド、グラフの順に並んでいる。図3(b)は、構造体のノードにまた別の構造体を含んでいる様子を示している。この場合はノードの形を○(丸)ではなく□(正方形)で表現する。このように、より複雑な処理の構造を表すためにノードには別の構造体を含めることができる。図3(c)は、同じ構造体を違う見せ方で表現した例である。このように構造的に同じでも、用途に応じてより適切な、より意味を理解しやすい形で表現できる。
【0027】
図2の例では、各ノードで行われる処理をA、B、C、Dと表記し区別しているが、本来はこれをノードの色で識別する。図4は、各処理を色で表したものである。ただし、灰色は斜線のハッチングによる。色によって処理を区別しているので、図から同じ処理をしているノードが2つ存在し、残り2つはそれぞれ別の処理をしていることが分かる。このように色で区別することでユーザの理解を助けている。図2の例では、ステップごとに図示することでノードの実行順序、すなわち処理の時間的関係を表しているが、本来はノードの点滅の移り変わりによって表現する。つまり、各計算ステップで塗りつぶされているノードが点滅し、順に移り変わるのである。このとき、点滅しているノードが実行され、具体的にはそのノードに定義されている処理(例えば、数式や関数)が実行される。1つのステップで複数のノードが点滅している場合は、それらの処理が同時に行われる(並列処理される)ことを示す。さらに、点滅の種類で実行される処理のおおまかな性質を表現することができる。点滅の種類には図に示すようなものがある。
【0028】
図5で示した点滅の具体的な使用例を、図6を用いて説明する。まず図6(a)は、全体が点滅している(塗りつぶされている)ノードと輪郭だけが点滅しているノードがある。これは、全体が点滅しているノードがその上、右、下、左のノードの値を参照してなんらかの処理を行っていることを示す。図6(b)は、2つの連続したステップを表わしている。ステップ1では、半分だけ点滅したノードが2つある。これらは、ステップ2で実行するノードを選択するための処理を行っている。ステップ2では、ステップ1の処理で選択されたノードが全体の点滅に変わり、なんらかの処理が行われている。図6(c)は、マルチステージネットワーク上の計算を表わしているが、第2ステージのノードがなんらかの信号またはデータを待っている状態を示している。図6(d)は、2つの連続したステップを用いて、どのように構造体が変化するかを表わしている。ステップ1で、構造体が拡張されるかどうかを判定する処理が点滅しているノードで行われている。その結果、ステップ2で構造体が変化したことを示している。
【0029】
「計算のスキーム」を表わす具体的な例を図7に示す。図7の例では、二次元格子状の空間的関係において、各列において左から右の順になんらかの計算をし、各計算は一つ前の列(左側の列)の値を参照し現在の列の処理を実行している。
【0030】
また図7の例では、処理が済んだノードをマークし、処理の時間的関係を読み取りやすくするためにグループオブジェクトを用いている。グループオブジェクトを用いることで、共通の意味を持つノードはグループ化され、その様子を可視化することができる。図8にグループオブジェクトの使用例を示す。図8の例では、各ノードになんらかの処理を行い、その結果からグループに属すかを判断していく処理が実行されている。そして、グループに属するノードをグループオブジェクトで表現している。このように、グループオブジェクトを使用すると、グループ化の様子を可視化することができ、ユーザの理解を助けることができる。
【0031】
これとは別に、各ステップが表わす意味の抽象度を下げ、ユーザの理解を助けるために、構造体の前面及び背面に、任意の図形、絵、アニメーション、文字を付け加えることができる。これを、前景オブジェクトと背景オブジェクトと呼ぶ。図9に前景オブジェクトの使用例を示す。図9(a)の例では、構造体の前面に線を引くことで実行中のノードの移り変わりを分かりやすく表現している。図9(b)の例では、構造体の前面にゼブラな図形を付け加えることで実行するノードと実行しないノードの移り変わりを分かりやすく表現している。図10に背景オブジェクトの使用例を示す。図10(a)の例では、構造体の背景に地形を表した図を置くことで、構造体が意味することを分かりやすく表現している。図10(b)の例では、構造体の背景に盤の模様を置くことで、構造体が意味することを分かりやすく表現している。図10(c)の例では、図形と文字を使うことで、構造体が意味することを分かりやすく表現している。このように、前景オブジェクトと背景オブジェクトは構造体が表現しているものをより具体的に可視化し、ユーザの理解を助けている。また、音を用いて処理の流れや内容、特徴を表すこともできる。例えば、おおまかな計算の変わり目で効果音(例えば、チャイムの音)を鳴らすことや点滅の種類(実行される処理の種類)に応じて異なった音を鳴らすことができる。
【0032】
<計算式と変数を表す言語>
計算スキームの各ステップでは点滅しているノードに定義された計算式が実行される。ここではこの計算式を定義する言語について説明する。
【0033】
この言語は数学で用いられている一般的表記にアイコンや色などを導入し数学特有の高い抽象性をできる限り少なくするという特徴をもつマルチメディア言語である。この言語は数学や物理における計算のように数字、演算子、変数、関数の各要素で構成されている。ただし、この言語では精度を落とさずに数学特有の抽象度を下げ直感的なわかりやすさを追求するために、「文字における工夫」、「変数の参照における工夫」、「関数表記における工夫」などの工夫がなされている。
【0034】
<文字における工夫>
既存のプログラミング言語では使えないギリシャ文字や記号、様々なフォントを用いることで、分野毎に用いられている独特の表記に比べ、より慣れ親しんだ記述を使うことができるようになっている。例えば、物理ではμは静止摩擦係数、κはバネ定数を意味するなど、特別な意味を持った文字をそのまま用いることができる。
【0035】
<変数の参照における工夫>
数字と演算子は一般的な数学の表記とほぼ同じである。変数は構造体とデータ型という二つの属性を持っている。構造体は、前に図3に示したような空間的関係を表すものであり、データ型は格納する値が整数、実数など、どの形式かを表すものである。例えば、二次元格子型構造体の変数が宣言された場合、その格子にあるすべてのノードの値を宣言された変数一つによって扱う事ができる。これは、多次元変数内の値を参照するのに従来のインデックスを用いる方法のほかに、空間内の絶対座標や相対的位置を用いて参照することを可能にする。
【0036】
図11にその例を示す。図11の例では、左側に二次元格子構造上の計算スキームの1ステップを示している。そのステップでは、2つのノードが点滅しており(黒く塗りつぶされたノード)、これらのノードでなんらかの計算が行われていることが分かる(説明のため、各ノードに番号が振られている)。さらにこの場合、二つのノードは同じ色で点滅しているため、同じ処理を行うことがわかる。すなわち、これらのノードには同じ式または関数が割り当てられている。その処理の内容が図11の右側に書かれた数式である。ここで、変数Xはこの二次元格子型構造体に割り当てられた二次元格子型構造体型の変数である。
【0037】
ここで、各計算式や関数における変数の参照(インデックスの指定の方法)について、従来のプログラムと比較する。ここで二次元格子型構造体についての例をあげると、従来のプログラムでは二次元格子型構造体のi行j列の値を指し示す場合にX[i][j]などといった、変数に対してある定数や他のカウンター変数などを用いて値を参照する場合が多い。また、現在値からの相対的なインデックスを指定するためには、X[i-1][j+1]といったように、参照したいインデックスを計算によって求めなければならず、慣れていない人にとっては間違いを犯し易い。ここで説明する言語では、この値の指定や参照といったインデックスの指定を、直接的そして視覚的に表現する。
【0038】
まず、図11の数式の左辺は「変数Xの現在点滅中のノード」という意味を表し、この計算ステップの場合では、7と11のノードを示す。図11の数式の右辺では特別なアイコンによるインデックスの指定が用いられている。ここで、右辺の第一項ではインデックスの参照に長方形で囲まれた2つのリンクされた異なった色(灰色(斜線ハッチングで示す)と黒)のノードが用いられている。このアイコンの右側のノード(黒いノード)は現在点滅しているノードを示し、その左隣にリンクされた灰色のノードが参照されるノードを示している。つまり、このアイコンは、「現在点滅しているノードの左隣のノードの値」を指し示す(このような特別なアイコンをステンシルと呼ぶ)。つまり、この数式は「現在点滅しているノードに、現時点滅しているノードの左隣のノードの値に1を足したものを代入する」という意味である。このように、計算のスキームが定義されているので、数式や関数はその性質を利用して自己説明性を高めることができ、直感的(視覚的)にわかりやすく、直接的な参照や指定が可能となる。
【0039】
図12にステンシルの他の例を示す。図12の上段は二次元格子型構造体におけるステンシルの例であり、(a)は現在点滅しているノードの左隣、(b)は右隣、(c)は上、(d)は下のノードを示し、(e)~(h)は四つの子供を持つピラミッド型構造体におけるステンシルの例であり、それぞれ灰色の子ノードを示している。
【0040】
<関数表記における工夫>
関数には、Σ、√、sin、cosのような一般的な数学関数と構造体の属性を取得したりするためのシステム関数が用意されている。例えば、図13(a)は数学関数の一つである和を計算するための関数であり、変数IUの値について点滅しているノードと隣接する8つのノードを表示されている定数分の重みをつけて和を取る、ということを意味する。具体的には、点滅しているノードを囲む8つのノードの値を足し、それから点滅しているノードの値を4倍したものを引くということである。これをもっとも一般的なプログラミング言語(C言語)で表すと図13(b)のようになる。また、図13(c)は二次元格子型構造体の大きさを取得するためのシステム関数であり、N×Nの2次元格子構造の縦及び横のサイズであるNを取得するためのものである。この関数によって実際のノードの数が分かるためノードの数に依存する計算を行うのに便利である。このようにシステム関数は構造体や処理の流れに関するパラメータや状態を取得するのが主な目的である。
【0041】
以上が、この言語の具体的な特徴である。この言語は、点滅しているノードをインデックスに用いるなど前項で述べた計算のスキーム用の言語と連携して使われるのが一般的である。そこで、この二つの言語の関係を説明するために、ある計算を両言語で記述したものを示す。ここでは連立一次方程式を解くために用いるLU分解という計算を例に挙げて説明する。LU分解とは、連立一次方程式を行列方程式A=L×Uに見立て(Aは正方行列、bは既知のベクトル)、未知のベクトルxを求めるために、行列AをA=L×Uとなるような下三角行列Lと上三角行列Uに分解して考える計算手法である。すなわち、LU分解とは、このような行列LとUを求めるための計算である。実際に連立方程式を解くにはさらに前進代入と後退代入という計算を行う必要があるが、この例では省略する。
【0042】
LU分解を求めるための一般的な計算式は、行列Lの要素をα、行列Uの要素をβ、行列Aの要素をaとした場合、次の式のように表される。
【数1】
JP0005164032B2_000002t.gif

【0043】
この式を、行列の大きさがN×N行列の場合に、jを1…Nの間で変えながら順次計算すればL、Uを求めることができる。これを既存のプログラミング言語で記述した例が図14である。
【0044】
これと同じ計算を、前述の計算スキーム用の言語で記述したものが図15および図16である。これはLU分解の各計算ステップを、一連のフレームとして並べたものであり、各フレームの左上にはそのステップの順番を表す番号が書かれている。各フレームは横一列に並んだ3つの2次元格子構造を含み、それぞれ、左から順にA、L、Uに対応している。各計算ステップで、なんらかの処理が行われているノードや参照されているノードが点滅している。そして、処理の終わったノードのグループを分かり易くするために、背景オブジェクト(灰色(斜線ハッチング)で塗られた領域)が付加されている。また、処理の流れの方向(パタン)を分かり易くするために、コントロールストラクチャと呼ばれる水平及び垂直のラインが付加されている。
【0045】
通常はこの一連の計算ステップをアニメーションで見ることもできる。すなわち、何らかの処理が行われていることを示す点滅の移り変わり、すなわち計算ステップの流れが視覚的に表現される。また、アニメーションによる背景オブジェクトやコントロールストラクチャの動きは、計算の流れや内容をより分かりやすいものにする効果がある。これで計算スキームは定義されたので、あとはこの一連の計算ステップの各点滅しているノードで実行される具体的な処理の内容を定義すればよい。図15の最初のフレームは初期化処理を表すもので、Lの対角線に1を代入し、Lの右上三角行列及びUの左下三角行列に0を代入するという処理を行うが、この説明ではこれに対応した数式は省略する。
【0046】
図15のステップ2からステップ9までおよび図16のステップ10からステップ17までに対応する具体的な計算式が図17に示されている。図17の上段の数式は、Uの現在点滅しているノードに対応する値を決定するものである。左辺はUの現在点滅しているノードを表す。右辺の第一項はAの現在点滅(参照を表す点滅)しているノードの値が参照されていることを示す。右辺の第2項では和の関数及び特別なステンシルが用いられているので、これを詳しく説明する。ここでは説明のために図16のステップ17に注目する。図17の数式上段の右辺の大まかな概要は、(Lのある要素)×(Uのある要素)+(Lのある要素)×(Uのある要素)+(Lのある要素)×(Uのある要素)+…であるが、このLとUの要素の掛け合わせる組み合わせがステンシルによって表されている。
【0047】
図16ステップ17の文字を用いて説明すると、図17上段の右辺、第二項の意味は、a・x+b・y+c・zである。このように掛け合わせる要素の組み合わせと順番がステンシル内の矢印によって示されている。このようにこの言語においては、計算スキームの各ステップにおけるノードの点滅のパタンや形状を利用して、視覚的で柔軟な計算式や関数の定義が可能である。
【0048】
<入出力処理」用の言語>
「入出力処理」は、入出力処理用のマイクロ・アイコンとパネルによって表現される。マイクロ・アイコンとは、絵や文字を主体とした媒体でそれぞれ異なる情報を表す。パネルとは、マイクロ・アイコンを配置する盤であり、マイクロ・アイコンを組み合わせる役割をする。それらの例を図18に示す。図18の例では、ある入出力処理をマイクロ・アイコンとパネルによって定義している。パネルは3つのエリアから成り立ち、真ん中の大きい白いエリア、それより左側のエリア、右側のエリアとなる。
【0049】
最初に真ん中のエリアについて説明する。このエリアには、実際に行われる入出力処理を定義するためのマイクロ・アイコンが配置される。左側の白い部分には処理全体の情報、真ん中の灰色(斜線ハッチング枠内)の部分にはソース(データを送る側)の情報、右側の灰色(斜線ハッチング枠内)の部分にはターゲット(データを受けとる側)の情報を表すマイクロ・アイコンが配置される。図18の例では、処理全体の情報を表すマイクロ・アイコンが2つ、ソースの情報を表すマイクロ・アイコンが4つ、ターゲットの情報を表すマイクロ・アイコンが2つ、合計8つのマイクロ・アイコンから成り立ち、それぞれ次のような意味を表している(図19)。
【0050】
図19で示すマイクロ・アイコンの説明とパネルにおけるマイクロ・アイコンの配置から総合的に判断すると、図18の例で定義された入出力処理は次のようになる。図19(a)と図19(b)から、1つのマスタープロセスから複数のスレーブプロセスへのスキャター・オペレーション、つまり、マスタープロセスからスレーブプロセスそれぞれに別のデータを送る処理であることが分かる。さらに、図19(c)と図19(d)から、マスタープロセスにはSBUFFという名前の倍精度浮動小数点型の値を持つ三次元格子型構造体を持ち、それをX軸平面ごとに切り分け、左から順にスキャンし、データを送ることが分かる。
【0051】
図19(g)から、その送られてきたデータを複数のスレーブプロセスが順にRBUFFという名前の倍精度浮動小数点型の値を持つ二次元格子型構造体に格納していくことが分かる。また、図19(e)から、入出力処理を行う前にデータの型やサイズといった基本的な情報をやり取りすることで、ソース/ターゲット間に矛盾がないかをチェックすること、図19(f)から、入出力処理を行う前にプロセスの同期を計ること、図19(h)から、図18の例で定義した入出力処理に関わるプロセスをCOMMという名前のコミュニケータが管理していることが分かる。このように、マイクロ・アイコンをパネルに配置することで具体的な意味を持ち、入出力処理を定義することができる。
【0052】
次に左側のエリアについて説明する。このエリアには、真ん中の白いエリアで定義した入出力処理を定義しているノードに関するマイクロ・アイコンが配置される。図18の例では、シンプルな四角形が1つ描かれたマイクロ・アイコンが配置され、1つのノードに定義された入出力処理であることを表している。
【0053】
最後に右側のエリアについて説明する。このエリアには、ボタンが2つ配置されている。上部のボタンは、EDIT/HELP(編集/ヘルプ)ボタンと言い、クリックするとEDITモードとHELPモードが入れ替わるようになっている。EDITモードのときは、上記で説明したマイクロ・アイコンをクリックすると、異なるマイクロ・アイコンに置き換えることができる。また、HELPモードのときは、マイクロ・アイコンをクリックすると、そのマイクロ・アイコンの説明を表示することができる(図20)。
【0054】
図20に示すように、ヘルプは、マイクロ・アイコンが表す内容をアニメーションや音、テキストで表現し、ユーザの理解を助けている。下部のボタンは、Set/Resetボタンと言い、クリックするとSetモードとResetモードが入れ替わるようになっている。Setモードのときは、マイクロ・アイコンを編集することが可能で、ボタンを押すとそれらの設定を保存できる。そして、Resetモードのときは、マイクロ・アイコンの編集は不可となり、ボタンを押すとSetモードに切り替わるようになっている。
【0055】
図18の例では、1つのマスタープロセスから複数のスレーブプロセスへの入出力処理を定義していた。その処理で送られてきたデータを元にスレーブプロセスがなんらかの計算を行うと想定すると、その結果をマスタープロセスへ返すための入出力処理があると考えられる。そこで、図18の例に対応したスレーブプロセスからマスタープロセスへの入出力処理を定義する一例を図21に示す。図18の例と図20の例の本質的な変更点を図22に示す。この2つのマイクロ・アイコンの変更は、複数のスレーブプロセスから1つのマスタープロセスに結果を返す処理に変わったことをダイレクトに表現している。このように、マイクロ・アイコンを使用することで変更点を直感的に理解でき、読解にかかる時間を大幅に減らすことができる。
【0056】
ここまで具体的な入出力処理の例をあげて説明してきたが、他にも様々なマイクロ・アイコンが存在する。一例を図23に示す。図23(a)のマイクロ・アイコンは、マスター/スレーブ間の処理を表している。図23(b)のマイクロ・アイコンは、同期処理に関する情報を表している。他にも、変数に関する情報を表すマイクロ・アイコンやデータの読み込み、格納に関する情報を表すマイクロ・アイコンなどが存在する。これら別の情報を表すマイクロ・アイコンを組み合わせることで、あらゆる入出力処理を表現することができる。
【0057】
<統合ビューと言語>
計算手順を3つの要素、「計算のスキーム」、「計算式と変数」、「入出力処理」と特徴づけ、それぞれの要素をデータ・モデルに記述するための言語について説明した。計算手順をいくつかの要素に特徴づけることで、計算の複雑さを減少させ、コンポーネントの解析などを容易にする。このことからコンポーネントの変更や管理が容易に行えるという利点がある。また、これらの要素を統合することで、計算手順をよりコンパクトな形で表現することが可能となる。従って、自己説明型コンポーネントには、上記3つの要素を統合する統合ビューが存在する。後で説明するように、開発環境はこれらの要素をユーザの用途ごとに単独または統合して表示し、ユーザはそれらを操作することで自己説明型コンポーネントを変更・定義する。このとき、図24に示すように、上記3つの要素と統合ビューは同期される。すなわち、統合ビューの変更は、対応する各要素に影響し、各要素の変更は統合ビューに影響する。
【0058】
次に、統合ビューを記述するための言語について詳しく説明する。統合ビューは、特別なアイコンやテキストによって記述される。図25に示すように、統合ビューは、処理の空間的関係を表わす構造体とそれに対応する変数が宣言されたヘッダが上部に配置される。構造体の宣言は、構造体を表わすアイコンとそれを特定するための属性から成る。ここでいう属性とは、例えば、構造体が二次元格子なら格子の縦・横のサイズ、ピラミッドならその深さなどのパラメータである。変数の宣言は、変数のタイプやデータタイプを特定するアイコン、変数名から成る。この変数が、対応する構造体に割り当てられる。図26で示すように、計算上で用いる任意の数の構造体と変数の組をヘッダ内に宣言することが可能である。ヘッダの下に統合ビューの本体が配置される。この本体は、1つまたは複数の区分から構成されている。各区分の中で、対応する構造体における時間的関係を表わす処理の流れと式を定義する。また、区分は1つまたは複数の処理の流れを含み、上から下の順番で実行される。さらに処理の流れは、それを意味するアイコンと式から構成され、1つまたは複数の式を割り当てることができる。処理の流れをさらに部分的に分解するときは、式の変わりに区分を割り当てることができる。すなわち、本体は、計算アルゴリズムの構造に対応した階層的な構造を示し、それらは色(ここではハッチングパターンで示す)によって識別される。前述のように、ここでいう式とは、理論的・数学的な計算を特別な言語で記述したものである。
【0059】
図26はある計算アルゴリズムを表わす統合ビューの例である。画面の1番上に横に延びる長方形の領域がヘッダであり、主な構造体とそれに対応する変数が定義されている。この例では、いくつかの構造体と変数が宣言されているが、その中に二次元格子とそれに対応する変数Tが宣言されている。構造体は、二次元格子を表わすアイコンと二次元格子の属性、この場合はサイズを表わすN×Mというパラメータによって示されている。変数は、2つのアイコンと文字によって示されている。左のアイコンは、変数のタイプを表わす。この例では、二次元格子を表わしている。この他にも、一次元格子、木、ピラミッドなど様々なタイプが存在する。中央のアイコンは、変数のデータタイプを表わす。この例では、整数型を表わしている。その他にも、浮動小数点型、倍精度の整数・浮動小数点型、文字、文字列型などのデータタイプが存在する。そして、右側の文字Tが変数名である。
【0060】
統合ビューの上から2段目以下は本体である。図示の統合ビューの例では、本体は、2段目(第一区分)と3段目(第二区分)2つの区分が構成されている。各区分は、左右2つの白い背景色をもった長方形の領域から成る。左側は、構造体とそれにおける処理の流れを表わすノードの点滅(実行)する順番を表示・定義する。右側は、その構造体の中のノードに割り当てる式、またはさらに階層的な区分を表示・定義する。
【0061】
第一区分を具体的に説明すると、まず左側の領域は、左から順に、構造体を表わすアイコン、計算を実行する範囲を特定するためのマスクを表わすアイコン、処理の流れを示すアイコンである。この例における処理の流れは、本来は各行を上から下に処理し、また各行では左から右に処理をするというものだが、マスクのアイコンが追加されているので、一行目と一列目だけ計算を実行することを示している。このマスクの処理は省略できる。そして右側の領域が、具体的な式を表わしている。この例では、Tの点滅しているノードを0で初期化するということである。
【0062】
第二区分を具体的に説明すると、左側の領域で定義している処理の流れは、第一区分とマスクのアイコンを除いて同じである。この場合、二次元格子の一行目と一列目を除いた部分だけ処理されることを意味する。右側の領域では、まず処理の流れを示すアイコンが配置され、二段階のif-else構造であることが分かる。さらにその構造における具体的な式を、色と形で処理を区別し、それぞれに定義している。
【0063】
[開発環境]
開発環境は、データ・モデルとマルチメディア言語群を用いて自己説明型コンポーネントへのアクセス手段を提供する。このとき、開発環境はユーザの用途ごとに的確なインターフェイスを構築し、作業を容易にする。例えば、あるユーザが計算アルゴリズムについて学ぶ際に、その基本的な構造体と処理の流れを理解するには、処理の空間的関係と時間的関係を表す要素、「計算のスキーム」を単独で表示することが非常に有効である。また、その処理における具体的な内容が知りたいときは、「計算のスキーム」という要素だけでは限界がある。このような場合、「計算式と変数」という要素と複合することで、目的を達成できる。このように、自己説明型コンポーネントの各特徴を捉えた要素を臨機応変に単独または複合したものをインターフェイスとして構築することで、ユーザの理解を助け、作業の効率化が図れる。このように、開発環境を用いることで、自己説明型コンポーネントを最大限に活かすことができ、より正確で深い理解へとつながる。
【0064】
開発環境について、具体的な例をあげて説明する。ある最短経路を求めるためのアルゴリズムが自己説明型コンポーネントモデルによって、コンポーネント化されている。自己説明型コンポーネントは、いくつかの要素に特徴づけられているので、開発環境は、ユーザの用途に最も適したインターフェイスを即座に構築することができる。例えば、そのアルゴリズムにおける処理の流れを知りたい場合は、アルゴリズムに対応した構造体と処理の流れを表わす要素、「計算のスキーム」を単独で表示するインターフェイスを構築すればよい(図27)。このとき、画像下の再生ボタンを押すことで、処理の流れをアニメーションで見ることができ、「計算のスキーム」が表わす情報を分かりやすく見ることができる。
【0065】
また、あるアルゴリズムを自己説明型コンポーネントモデルによって、コンポーネント化するとき、開発環境は、ユーザが定義したい情報にあわせたインターフェイスを構築することができる。例えば、ユーザがある構造体とその構造体における処理の流れを定義したいとき、開発環境は、「計算のスキーム」を定義するのに最も適したインターフェイスを構築する(図28)。図28に示すように、各計算ステップを静的に捉え、画面下で一覧表示することで、処理の流れを明確に管理できるようにしている。そして、画面左上に現在編集中の計算ステップを表示し、その右隣にある編集用パネルで、ノード、イメージ、テキストなどを追加、削除し、定義している。
【0066】
このように、同じ要素のインターフェイスでも、情報を見るとき、情報を定義するときでは、最適なインターフェイスは異なる。「計算のスキーム」を見るときでは、情報を動的に捉えることが肝要だが、「計算のスキーム」を定義するときでは、情報を静的に捉えることが重要である。このように、開発環境は、ユーザの用途に合わせ、様々なインターフェイスを構築することができる。
【0067】
次に、本発明に係るコンピュータ処理方法、コンピュータ処理システムの一実施の形態を説明する。この実施の形態では、コンポーネントに関連する情報を複数の項目ごとに分けて保存できるコンポーネント構造を採用する。
【0068】
このコンポーネント構造はアルゴリズムサイバーフィルムと呼ばれるものであり、一連のマルチメディアフレームからなる物理構造を持つマルチメディアデータ形式である。アルゴリズムサイバーフィルム(以下、フィルムと呼ぶ)は、ソフトウェアのアルゴリズム的性質に主眼を置くコンポーネント構造である。例えば、ある物体の一つの性質を一枚のフレームで表し、フィルム全体ではそのオブジェクトのたくさんの性質を表すことを可能とする構造である。必要に応じて、意味的に関連するフレームをマルチメディアシーンという単位でくくることができる。
【0069】
各マルチメディアフレームにはマルチメディアオブジェクトである、図形、画像、動画、音、文字が配置され、これらオブジェクトの空間的・時間的な状態によってマルチメディアフレームが定義されるという表現手法が用いられている。
【0070】
図29は、計算アルゴリズムを表現する一連のシーン、フレームの例を示す。図29の上段は第1シーン(シーン1)の第1~第5フレーム(フレーム1~5)を左から順に示している。また、図29の下段は第2シーンの第1~第5フレームを左から順に示している。なお、この図29の上段は図7と共通である。各フレームは前記マルチメディアオブジェクトとして、二次元格子状のノードの集合を含んでいる。この例では、一連のフレームは二次元格子上の計算の流れを表し、各フレームはその1ステップを表現している。各フレーム内で、どのような処理がどのような順序で実行されるかを定義する表現手法は以下のようになっている。
【0071】
まず、ノードの色がそのノードで実行される処理を表す。次に、各ノードが実行される順序はそのノードの点滅によって表す。さらに、点滅の種類で実行される処理のおおまかな性質を表す。点滅の種類は例えば、前出の図5に示すようなものがある。
【0072】
さらに、処理が済んだノードをマークし、処理の「流れ」を読み取りやすくするために背景色を用いる。ただし図29では背景色をハッチングで示している。図29の例で、第1シーンでは、二次元格子のデータ構造において、各列において左から右に順に何らかの計算をし、各計算は一つ前の列(左側の列)の値を参照し現在の列の処理を実行している。また、第2シーンでは、逆に右から左に順に計算を行ない、各計算は一つ前の列(右側の列)の値を参照し現在の列の処理を実行している。
【0073】
また、各オブジェクトが表す意味の抽象度を下げ、ユーザの理解を助けるために、図30(b)または図29に示すようにバックグラウンドオブジェクトやフォアグラウンドオブジェクトを付け加えることができる。図30(a)のフレームはバックグラウンドオブジェクトやフォアグラウンドオブジェクトを使用する前の状態を示し、図30(b)のフレームはバックグラウンドオブジェクトやフォアグラウンドオブジェクトを使用した状態を示している。
【0074】
同様にして、音を用いて処理の流れや内容・特徴を表すこともできる。例えば、シーンの変わり目で効果音(例えば、チャイムの音)を鳴らしたり、点滅の種類(実行される処理の種類)に応じて異なった音を鳴らすことができる。
【0075】
これまでに、計算アルゴリズムを実装するソフトウェアコンポーネントについて、その意味特徴をコンポーネントの概要、内部処理の流れ、処理内容の詳細な定義、入出力様式、コンポーネント同士の関連情報、作者著作権情報の各観点に分けてマルチメディアフレームを分類する方法と、コンポーネントの概要と内部処理の流れを定義するための表現手法が提案されてきた。
【0076】
本実施の形態では、本コンポーネント構造を、あらゆるソフトウェアコンポーネントを表現できるように拡張するとともに、本コンポーネント構造を持ったソフトウェアコンポーネントを検索、閲覧、生成、編集、実行するための新たなコンポーネント管理システムの構造を備える。
【0077】
コンポーネント構造の拡張として、上に挙げた六つの観点はコンポーネントを構成する基本情報として記録する一方、必要に応じて(コンポーネントの種類やアプリケーションに応じて)新たな項目を定義し、追加することを可能とする。
【0078】
コンポーネント管理システムは、上記フィルムに対して検索、閲覧、生成、編集、実行などの操作を行なうシステムである。本システムは、前記コンポーネントについて、そのマルチメディアシーンおよびマルチメディアフレームを読み込み、予め定義され情報項目ごとに専用の表現手法を用いてそれぞれのマルチメディアフレームを描画する。
【0079】
システム上でのユーザ操作の種類や目的に応じ、描画済みのマルチメディアフレームから適切なものを取り出し、必要に応じて二つ以上のマルチメディアフレームを組み合わせて、画面に表示することができる。
【0080】
図31は、マルチメディアフレームの組み合わせからビューを構成する仕組みを示している。図31(a)に示すように、情報項目ごとに一連のフレームを含んだシーンが配置されている。これらの中から複数のマルチメディアフレームを選んで組み合わせて図31(b)、(c)、(d)に示すようなビューを構成する。さらに、各情報項目は特有のビューを持っている。図32(a)は、内部処理の流れを再生するためのビューで、図32(b)は内部処理の流れを並べて表示するためのビューである。図32(a)に示すように、これらのビューは必要に応じてさらに複数のビューに分割して表示することが可能である。さらに図33は、内部処理の流れの内容を変更するためのビューである。
【0081】
上記機能により、コンポーネントが持つ複雑で多量の情報を一ヵ所に保ったまま、用途や好みに応じて、取捨選択しやすくすることでそのコンポーネントに対する理解を容易にし、ひいてはそのコンポーネントの再利用を強力に促すという特質を持つ。
【0082】
このように、複雑に関係し合う情報を、アプリケーションに応じた適切な分類に従って整理し、必要に応じて提供できるようにすることで、状況に応じて最も効果的なユーザインタフェースを構築することを可能とする。
【0083】
それぞれの情報項目ごとに最適なマルチメディア表現を利用することができる。このマルチメディア表現は、ユーザの理解を助ける機能と情報を定義する機能の両方を持つものであり、その意味においてマルチメディア言語と考えることができる。この言語は、フィルムのマルチメディアフレームとマルチメディアオブジェクトによって表現できる空間的、時間的概念を基礎とし、オブジェクトの空間的・時間的な状態によって意味が定義される。
【0084】
このような言語を情報項目ごとに定義し、切り替えて使えるようにすることで、幅広い意味を定義するのに必要な抽象性と、容易な理解に必要な具体性を適度なバランスで持ち合わせる一連の言語によってコンポーネントを表現することを可能としている。これらの言語は、基本的にはマルチメディアなものであり、これまでの文字や挿絵を中心にした表現手法に比較して、実態に近い表現が可能であり、表現の過程で生まれる抽象化の度合いを低く抑える効果がある。
【0085】
各情報項目のマルチメディアフレームはそのフレーム番号によって同期される。すなわち、複数の情報項目を一つの画面に表示する際、同一のフレーム番号のマルチメディアフレームをもってくることで、その時間におけるコンポーネントの状態を複数の観点から見ることが可能となる。
【0086】
また、本コンポーネント管理システムは、一つの情報項目に関して加えられた編集操作を受け、予め定められた変換規則に従って、関連する情報項目のマルチメディアフレームに必要な編集を自動的に加える同期機構を含んでいる。
【0087】
サイバーフィルムとして生成されるコンポーネントは通信ネットワークを介してアクセス可能なデータベースに格納され、本データベースは上記コンポーネント管理システムの一部である。各コンポーネント管理システムは一つ以上のデータベースにアクセスし、コンポーネントの検索と保存を行なう。
【0088】
図34は、本発明が実現する自己説明型コンポーネント開発の流れを示したものである。自己説明型コンポーネント開発は、共有コンポーネントライブラリが中心となっており、その基礎は、特別の認定を受けた団体・開発者による基礎コンポーネント開発によって作成され、認定を受けたものである。この認定では、コンポーネントとしての妥当性や、ある一定の水準の自己説明性に達しているかのチェックなどを行なう。
【0089】
自己説明型コンポーネント開発は、このコンポーネントライブラリから一つまたは複数のコンポーネントを組み合わせたものを基礎に開発が行なわれる。完成したコンポーネントは、認定を受けたのち、新たにコンポーネントライブラリに登録し、共有することができる。個人的に再利用するために保存し、共有ライブラリに納めないものは認定を受ける必要がない。内部に認定を受けていないコンポーネントを一つでも含むコンポーネントは共有ライブラリに含むことができない。
【0090】
次に、本発明の実施の形態をさらに具体的に説明する。図35は、本発明のハードウェアシステム構成の一実施の形態を示すものであるが、本発明では、特別のハードウェア構成に限定されるものではなく、現在一般的に使用されているネットアクセスが可能なパーソナルコンピュータ(またはワークステーション)10を用いる。パーソナルコンピュータ10は、コンピュータ本体1とユーザインタフェース21などからなる。ユーザインタフェース21は、ディスプレイ2と、キーボード3と、マウス4などからなる。パーソナルコンピュータ10は、通信ネットワーク12を介してデータベース5にアクセスが可能である。
【0091】
この構成において、本実施の形態は、サイバーフィルムによるアルゴリズムの定義および学習のためのシステムを機能させるプログラムをコンピュータ本体1に導入して形成される。
【0092】
本発明に係るコンポーネント管理システムの一実施の形態として、システムの機能構成図を図36に示す。これは、数値計算用アプリケーション・ソフトウェアの構築を対象としたシステムの場合についての説明である。システムは、ユーザインタフェース21、各モジュールを制御するコントローラ22、コンポーネントを保存するデータベース5、サイバーフィルムのマルチメディアフレームの構築、取得、編集等を行なうフレーム管理モジュールM1~Mn、マルチメディアフレームを描画するレンダリングエンジン24から形成される。
【0093】
モジュールM1は内部処理の流れ(アルゴリズムスケルトン)を、モジュールM2は処理内容の詳細な定義(変数や式)を、モジュールM3は入出力様式を、モジュールM4はコンポーネントの概要を、モジュールM5はコンポーネントの関連情報を、モジュールM6は作者著作権情報に関するマルチメディアフレームを、それぞれ管理するモジュールである。仮に、あるアプリケーションが追加の情報項目を必要とする場合、対応するx番目のモジュールMxを追加する。
【0094】
本発明に係るコンポーネント管理システムの一実施の形態の制御手順を図37に示す。システムを起動(S1)するとメイン画面が表示される(A1)。ユーザからサイバーフィルムを開く指示がある場合(B1)はモジュールM2によりデータベース等からサイバーフィルムを検索し読み込み(A2)、サイバーフィルムからマルチメディアフレームが展開され、それぞれ適切な管理モジュールM1~Mnにロードされる。これでユーザが選択したコンポーネントを見たり、編集したりする準備が完了する。
【0095】
次に、インターフェイス21でユーザの操作により、アルゴリズムスケルトンを見るという指示(BW1)があれば、インターフェイス21に内部処理の流れ(アルゴリズムスケルトン)表示画面を表示する(AW1)。変数/式を見るという指示(BW2)があれば、インターフェイス21に変数/式の表示画面を表示する(AW2)。入出力を見るという指示(BW3)があれば、インターフェイス21に入出力の表示画面を表示する(AW3)。
【0096】
この例では、おおまかに3種類の表示モード(BW1~BW3)があり、それぞれに一つずつの表示画面(AW1~AW3)を含んでいるが、表示モードの種類とそれらに含まれる表示画面の数に制限はない。また、各表示画面は、一つ以上のフレーム管理モジュール(M1~M6)が保管している一つ以上のフレームをレンダリングエンジン24が予め定められた規則に従って描画したものである。
【0097】
同様にして、ユーザの操作によりアルゴリズムスケルトンを変更するという指示があれば(BE1)、アルゴリズムスケルトンの変更画面を表示する(AE1)。また、ユーザのマウスおよびキーボードからの入力によって現在のサイバーフィルムのアルゴリズムスケルトンを変更・更新し、変数/式を変更するという指示があれば(BE2)、変数/式の変更画面を表示する(AE2)。また、ユーザのマウスおよびキーボードからの入力によって現在のサイバーフィルムオブジェクトの変数/式を変更・更新し、入出力を変更するという指示があれば(BE3)、入出力の変更画面を表示する(AE3)。
【0098】
これらの表示の後に、ユーザのマウスおよびキーボードからの入力によって、現在のサイバーフィルムオブジェクトの入出力を変更・更新する。これら編集操作は、コントローラ2を通して各フレーム管理モジュール(M1~M6)に伝達される。一つの編集操作が異なる情報項目に属する複数のマルチメディアフレームに影響を与える場合は、コントローラ2が該当するフレーム管理モジュール(M1~M6)に必要な編集命令を伝達する。
【0099】
次に、現在のサイバーフィルムを保存するという指示があれば(B4)、コントローラ22により現在のサイバーフィルムをデータ変換しデータベースまたはファイルに保存する(A4)。終了の指示がある場合(B5)はシステムを終了し(S2)、終了しない場合は分岐点B1に戻る。
【0100】
本実施の形態によれば、コンポーネントを理解し利用するのに必要な情報をコンポーネント内に記述できるコンポーネント構造が採用され、それから提供される情報から適切なものを適時取り出し表示することができ、それぞれの情報項目ごとに最適なマルチメディア表現を利用できる。これにより、コンポーネントの利用(理解および作成)という観点から、各コンポーネントの自己説明性が向上する。さらに、結果として開発されたソフトウェア・システムもまた高い自己説明性を持つ。
【図面の簡単な説明】
【0101】
【図1】本発明に係る自己説明型コンポーネントモデルの3つの柱を示す模式図。
【図2】本発明に係るコンポーネントモデルのデータ・モデルにおける空間的関係と時間的関係の例を示す説明図。
【図3】本発明に係るコンポーネントモデルのマルチメディア言語における構造体の例を示す説明図。
【図4】本発明に係るコンポーネントモデルのマルチメディア言語において処理を色で区別する例を示す説明図。
【図5】本発明に係るコンポーネントモデルのマルチメディア言語において点滅の種類の例を示す説明図。
【図6】本発明に係るコンポーネントモデルのマルチメディア言語において点滅の種類の例を示す説明図。
【図7】本発明に係るコンポーネントモデルのマルチメディア言語における計算スキームの例を示す説明図。
【図8】本発明に係るコンポーネントモデルのマルチメディア言語におけるグループオブジェクトの使用例を示す説明図。
【図9】本発明に係るコンポーネントモデルのマルチメディア言語における前景オブジェクトの使用例を示す説明図。
【図10】本発明に係るコンポーネントモデルのマルチメディア言語における背景オブジェクトの使用例を示す説明図。
【図11】本発明に係るコンポーネントモデルのマルチメディア言語における変数の参照の例を示す説明図。
【図12】本発明に係るコンポーネントモデルのマルチメディア言語におけるステンシルの例を示す説明図。
【図13】本発明に係るコンポーネントモデルのマルチメディア言語におけるシステム関数の例を示す説明図。
【図14】本発明に係るコンポーネントモデルのマルチメディア言語におけるC言語によるLU分解の実装の例を示す説明図。
【図15】本発明に係るコンポーネントモデルのマルチメディア言語におけるLU分解の計算スキームの例を示す説明図であって、ステップ1からステップ9までを示す図。
【図16】本発明に係るコンポーネントモデルのマルチメディア言語におけるLU分解の計算スキームの例を示す説明図であって、図15に続くステップ10からステップ17までを示す図。
【図17】本発明に係るコンポーネントモデルのマルチメディア言語におけるLU分解の数式の例を示す説明図。
【図18】本発明に係るコンポーネントモデルのマルチメディア言語における入出力処理をマイクロ・アイコンとパネルで定義する例を示す説明図。
【図19】図18のマイクロ・アイコンの意味を示す説明図。
【図20】本発明に係るコンポーネントモデルのマルチメディア言語におけるヘルプの例を示す説明図。
【図21】図18の例に対応した入出力処理の例を示す図。
【図22】図18の例と図21の例の比較を示す説明図。
【図23】本発明に係るコンポーネントモデルのマルチメディア言語におけるマイクロ・アイコンの例を示す説明図。
【図24】本発明に係るコンポーネントモデルの計算手順の要素と統合ビューの関係を示す説明図。
【図25】本発明に係るコンポーネントモデルの統合ビューの配置を示す説明図。
【図26】本発明に係るコンポーネントモデルの統合ビューの例を示す図。
【図27】本発明に係るコンポーネントモデルの計算スキーム用インターフェイスの例を示す図。
【図28】本発明に係るコンポーネントモデルの計算スキーム定義用インターフェイスの例を示す図。
【図29】本発明に係るコンピュータ処理方法における計算アルゴリズムを表現する一連のシーンおよびフレームの例。
【図30】本発明に係るコンピュータ処理方法における計算アルゴリズムを表現するフレームにバックグラウンドオブジェクトやフォアグラウンドオブジェクトを付加する例を示す図で、(a)はこれらオブジェクトを付加する前の表示の例を示し、(b)はこれらオブジェクトを付加した後の表示の例を示す。
【図31】本発明に係る自己説明型コンポーネントモデルによるコンピュータ処理方法におけるマルチメディアフレームの組み合わせからビューを構成する例を示す図で、(a)は情報項目ごとに一連のフレームを含んだシーンが配置された状態を示す模式的斜視図であり、(b)、(c)、(d)はそれぞれ、(a)の複数のフレームからマルチメディアフレームを選んで組み合わせて表示するビューを示す。
【図32】本発明に係る自己説明型コンポーネントモデルによるコンピュータ処理方法における内部処理の流れを再生するためのビューの例を示す図であって、(a)は内部処理の流れを再生するためのビュー、(b)は内部処理の流れを並べて表示するためのビュー。
【図33】本発明に係る自己説明型コンポーネントモデルによるコンピュータ処理方法における内部処理の流れの内容を変更するためのビュー。
【図34】本発明に係る自己説明型コンポーネントの開発の流れを示す説明図。
【図35】本発明に係る自己説明型コンポーネントモデルによるコンピュータ処理システムの一実施の形態のハードウェア構成を示すブロック図。
【図36】本発明に係る自己説明型コンポーネントモデルによるコンピュータ処理システムの一実施の形態の機能構成を示すブロック図。
【図37】本発明に係る自己説明型コンポーネントモデルによるコンピュータ処理方法の一実施の形態の制御手順を示すフローチャート。
【符号の説明】
【0102】
1…コンピュータ本体、2…ディスプレイ、3…キーボード、4…マウス、5…データベース、10…パーソナルコンピュータ、12…通信ネットワーク、21…ユーザインタフェース、22…コントローラ、24…レンダリングエンジン、M1~Mn…管理モジュール。
図面
【図1】
0
【図2】
1
【図3】
2
【図4】
3
【図5】
4
【図6】
5
【図7】
6
【図8】
7
【図9】
8
【図10】
9
【図11】
10
【図12】
11
【図13】
12
【図14】
13
【図15】
14
【図16】
15
【図17】
16
【図18】
17
【図19】
18
【図20】
19
【図21】
20
【図22】
21
【図23】
22
【図24】
23
【図25】
24
【図26】
25
【図27】
26
【図28】
27
【図29】
28
【図30】
29
【図31】
30
【図32】
31
【図33】
32
【図34】
33
【図35】
34
【図36】
35
【図37】
36