(57)【特許請求の範囲】
【請求項１】
グラフィカル・ディスプレイを持つコンピュータ・システムであって、
各々がオブジェクト指向プログラムの実行中にアクティブの該オブジェクト指向プログラムのクラスを表し、各々がグラフィカル・インタフェース上に１つの配置を有する１つ以上のノードを、前記グラフィカル・インタフェース上に表示する手段と、
実行中の前記オブジェクト指向プログラムにより生成される、タイプとタイムスタンプとメソッド名とオブジェクト名とクラス名とを含む前記オブジェクト指向プログラムに関する情報を有するデータ構造である事象を収集する、前記オブジェクト指向プログラム内のイベント・コレクタと、
前記オブジェクト指向プログラム内の前記イベント・コレクタから前記事象を受信するビジュアル化手段と、
前記ビジュアル化手段に含まれ、前記事象に含まれる前記情報を受け取り、前記情報から決定される、前記ノードが表すクラスと他の全てのクラスとの間の対話の度合いにより決定される前記ノードの新しい配置に、前記グラフィカル・インタフェース上の１つ以上の前記ノードを移動させて配置する手段とを含み、
前記ビジュアル化手段に前記事象が到来することにより、前記ノードが再配置される、コンピュータ・システム。
【請求項２】
前記表示において、第１のノードと第２のノード間の距離が、該第１及び第２のノードに対応する２つの前記クラス間の対話度により定義されて変化するものにおいて、前記第１及び第２のノード間の距離が対話度に比例する、請求項１記載のコンピュータ・システム。
【請求項３】
前記表示において、前記対話度が２つの前記クラス間の通信を反映し、これらのクラス間のメッセージ数として定義される、請求項２記載のコンピュータ・システム。
【請求項４】
前記表示において、２つのクラス間の前記対話度が生成を反映し、これらのクラスの一方が他方のクラスのオブジェクトを生成する回数として定義される、請求項２記載のコンピュータ・システム。
【請求項５】
前記表示において、２つのクラス間の前記対話度が集合を反映し、一方のクラスのオブジェクトが、他方のクラスのオブジェクトの生成の間に生成される総数として定義される、請求項２記載のコンピュータ・システム。
【請求項６】
前記表示において、クラスに対応するノードが、このクラスが最初に生成されるとき、またはこのクラスのオブジェクトだけが生成されるときに、前記グラフィカル・インタフェース上に配置される、請求項１記載のコンピュータ・システム。
【請求項７】
前記表示において、前記対話が前記ノード間のラインにより表される、請求項１記載のコンピュータ・システム。
【請求項８】
前記表示において、前記ラインが前記対話度を表すようにその外観を変化させる、請求項７記載のコンピュータ・システム。
【請求項９】
前記表示において、前記外観の変化が色の変化である、請求項８記載のコンピュータ・システム。
【請求項１０】
前記表示において、前記外観の変化がラインの太さである、請求項８記載のコンピュータ・システム。
【請求項１１】
前記表示において、クラスのメソッドがコール・スタック上に見い出される順に、前記コール・スタックが該コール・スタックのノード間のラインにより示される、請求項１記載のコンピュータ・システム。
【請求項１２】
前記表示において、前記クラスに対応してオブジェクトがもはや存在しなくなると、ノードが前記グラフィカル・インタフェースから除去され、前記除去されたノードと他のクラスとの間の全ての前記対話度が０にセットされ、残りのノードの位置を再決定する、請求項１記載のコンピュータ・システム。
【請求項１３】
前記表示において、前記ノードがこのノードの現対話度を表すように、その外観を変化させる、請求項１記載のコンピュータ・システム。
【請求項１４】
前記表示において、前記外観の変化が色の変化である、請求項１３記載のコンピュータ・システム。
【請求項１５】
前記表示において、前記外観の変化が大きさの変化である、請求項１３記載のコンピュータ・システム。
【請求項１６】
前記表示において、前記ノードがオブジェクト指向プログラムのオブジェクトを表す、請求項１記載のコンピュータ・システム。
【請求項１７】
前記表示において、前記ノードがオブジェクト指向プログラムのオブジェクトを表す、請求項２記載のコンピュータ・システム。
【請求項１８】
前記表示において、２つのオブジェクト間の前記対話度が通信を反映し、これらのオブジェクト間のメッセージ数として定義される、請求項１７記載のコンピュータ・システム。
【請求項１９】
前記表示において、２つのオブジェクト間の前記対話度が生成を反映し、これらのオブジェクトの一方が他方を生成するとき１と定義され、それ以外では０と定義される、請求項１７記載のコンピュータ・システム。
【請求項２０】
前記表示において、２つのオブジェクト間の前記対話度がこれらのオブジェクト間の集合を反映し、これらのオブジェクトの一方が、他方のオブジェクトの生成の間に生成される場合、１と定義され、それ以外では０と定義される、請求項１７記載のコンピュータ・システム。
【請求項２１】
前記表示において、前記ノードがオブジェクトであり、該オブジェクトが破壊されるとき、該オブジェクトが除去される、請求項１２記載のコンピュータ・システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はグラフィカル・ディスプレイ分野に関し、特に、オブジェクト指向プログラムにおけるクラス及びオブジェクトの対話表示に関する。
【０００２】
【従来の技術】
オブジェクト指向プログラミングには、カプセル化（ｅｎｃａｐｓｕｌａｔｉｏｎ）、インヘリタンス（ｉｎｈｅｒｉｔａｎｃｅ）、及びポリモアフィズム（ｐｏｌｙｍｏｒｐｈｉｓｍ）と言った重要な概念がある。カプセル化は、実現（ｉｍｐｌｅｍｅｎｔａｉｏｎ）の詳細が”オブジェクト”と呼ばれる抽象により隠蔽される方法をさす。オブジェクトは、データ及びそのデータに対するオペレーションをカプセル化するように言われる。オブジェクト指向ソフトウェア・システムは、互いに対話する複数のオブジェクトから成る。これらは、互いに”メッセージ”を送信し合うことにより対話する。オブジェクトはメッセージに対する応答を”メソッド”により実現する。オブジェクトはお互いの実現を意識せず、他のオブジェクトが応答したメッセージを知るだけである。カプセル化は、ソフトウェア・システムを小さな好適に定義された断片に区分化することにより複雑度を制御し、他の部品に影響することなく、システムの部品を変更することを容易にする。
【０００３】
オブジェクトはメッセージを受信すると、それらを送信する。オブジェクト指向プログラムにおける”コール・スタック（ｃａｌｌ  ｓｔａｃｋ）”が、オブジェクト間の通信の現連鎖を記録する。コール・スタック上の１番目のオブジェクトが、コール・スタック上の２番目のオブジェクトにメッセージを送信し、１番目のオブジェクトは、メッセージを実現するメソッドが実行を終えるのを待機する。コール・スタック上の２番目のオブジェクトは、３番目のオブジェクトにメッセージを送信し、対応するメソッドの実行を待機する。以下同様にして継続され、コール・スタック上の最後のオブジェクトが、メソッドが現在実行されているオブジェクトとなる。
【０００４】
インヘリタンスは、オブジェクト間の分類学的関係（ｔａｘｏｎｏｍｉｃ  ｒｅｌａｔｉｏｎｓｈｉｐ）をさす。オブジェクトは”クラス”に属し、また”クラス”により定義される。クラスはオブジェクトが応答できるメッセージ・セットを定義し、またデータ及びこれらの応答を実現するオペレーションを定義する。オブジェクトは、クラスの”インスタンス”と呼ばれる。クラスは任意の数のインスタンスを有することができる。
【０００５】
インヘリタンスは、クラスを他のクラスに関連して定義する。別のクラスを継承するクラスは、他のクラス（”親クラス”または”スーパクラス”と呼ばれる）の”サブクラス”と呼ばれる。サブクラスはその親と同じメッセージに応答し、追加のメッセージにも応答しうる。サブクラスは、幾つかのオペレーションの再実現または他のデータの追加を選択しうるが、その実現を親から継承する。インヘリタンスは、プログラマが新たなクラスを既存クラスの増分の細分類（ｉｎｃｒｅｍｅｎｔａｌ  ｒｅｆｉｎｅｍｅｎｔｓ）として、容易に定義できるようにする。これはポリモアフィズムも可能にする。
【０００６】
ポリモアフィズムは、関連オブジェクトの代用性（ｓｕｂｓｔｉｔｕｔａｂｉｌｉｔｙ）をさす。オブジェクトは同一の”タイプ”を有する場合、関連付けられ、このことはほとんどのオブジェクト指向言語において、これらのオブジェクトが同一のクラスのインスタンスであるか、またはインヘリタンスを通じて、共通の親クラスを有することを意味する。インヘリタンスを通じて関連付けられるオブジェクトは、一様に、すなわちそれらの特定のタイプに関係なく処理される。例えば、グラフィカル・オブジェクトの抽象を定義するグラフィック・クラスは、描画（Ｄｒａｗ）オペレーションを定義しうる。グラフィック・クラスは矩形及び円をサブクラスとして有し、これらはそれぞれ矩形及び円を描画する描画オペレーションを再実現する。ポリモアフィズムは、矩形及び円インスタンスをグラフィカル・オブジェクトとして一様に処理することを可能にする。すなわち、オブジェクトにそれ自身を描画するように命令するためには、そのオブジェクトはグラフィック・サブクラスのインスタンスであることだけを知っていれば足りる。オブジェクトが矩形または円のいずれのインスタンスであるかは重要でなく、その正確なタイプ（例えば矩形か円か）を知る必要なく、描画メッセージを送ることができる。
【０００７】
ポリモアフィズムは、プログラマに、後に変更の必要無しに個別化すなわちカストマイズ化可能な汎用コードを作成させる。ここで、描画メッセージをグラフィック・インスタンスのセットに送信することにより、ピクチャを描画するコードを有するものとしよう。コードに矩形及び円オブジェクトを渡すと、コードはこれらのオブジェクトに自身を描画するように命令する。後に、グラフィックの新たなサブクラス、例えば多角形を定義し、その描画オペレーションを適切に実現することができる。多角形はグラフィックのサブクラスであるので、多角形のインスタンスをピクチャ描画コードに渡すことができ、コードは何の変更も無く、多角形をピクチャに描画する。
【０００８】
オブジェクト指向プログラムは、しばしば、数十または数百のクラスから編成される数千個のオブジェクトを使用する。これらのプログラムがどのように機能するかを、これらのコードを調査するだけにより理解することは、しばしば困難である。なぜなら、コードはプログラム（すなわちクラス）の静的側面しか記述しないからである。プログラムの動的側面を理解するには、実行時におけるプログラムの表現が必要である。動画グラフィックスは、オブジェクト指向プログラムの実行を表現する１つの方法である。
【０００９】
Ｂｅｃｋによる米国特許第４８８５７１７号は、メッセージを互いに送信しながら、ディスプレイ上に個々のオブジェクトを表現するグラフィカル・プレゼンテーションを開示する。オブジェクトはグラフィカル・ノードとして現れ、メッセージはノード間の有向ライン（ｄｉｒｅｃｔｅｄ  ｌｉｎｅ）として示される。オブジェクトは１度描画されると、プログラムの実行の間、固定位置に留まる。セマンティクス（意味）はノードの配置に関連付けられない。
【００１０】
【発明が解決しようとする課題】
従来技術には、次に示す２つの主な問題が存在する。
１．実際のオブジェクト量を扱わない。重要なオブジェクト指向システムは、数百以上のオブジェクトを使用する。各オブジェクトをシステム内で表示すると、理解し難い量のグラフィックスを生成することになる。更にオブジェクトは、たとえそれらが消去されても、決して姿を消すことはない。消去されたオブジェクトは更に、プレゼンテーションを乱雑にする。これらは観察者を当惑させ、アクティブのオブジェクトを見ることを困難にする。消去オブジェクトの表示は、実際よりも多くのオブジェクトがシステム内に存在するかのように観察者を錯覚させうる。
２．実際のメッセージ量を扱わない。メッセージが送信される度に、別の有向ラインが現れて、それを表現する。従って、有向ラインの数がメッセージ送信数に対応する。この数は一般にシステム内のオブジェクト数を上回るので、ディスプレイはオブジェクトで乱雑化するよりも早く、有向ラインで乱雑化する。
【００１１】
これらの問題の結果、従来技術のアプローチは、動的グラフィカル・プレゼンテーションを行うのに十分なシステムであっても効果的でない。
【００１２】
本発明の目的は、オブジェクト指向プログラムの理解、最適化、及びデバッグを支援するために、オブジェクト指向プログラムの実行を表示する改善された方法を提供することである。
【００１３】
【課題を解決するための手段】
本発明は、オブジェクト指向プログラムの実際の複雑度の理解、デバッグ、及び調整を容易にするように、オブジェクト指向プログラムの実行をグラフィカルに表現する方法に関する。
【００１４】
オブジェクトは通常、それらが例示化されるクラスよりも豊富に存在する。従って好適な実施例では、オブジェクトは直接表示されず、それらが最初に例示化されるときに、それらのクラスがグラフィカルに表現される。クラスはグラフィカル・ノードとしてディスプレイ上に現れ、ノードがクラスを識別する。
【００１５】
好適な実施例では、２つのノードの相対位置が、それらのクラスのインスタンス間の対話度を反映する。更に、よりそれらのインスタンスが対話し合うと、２つのノードはより接近して現れる。対話が減ると隔たりが大きくなる。こうした対話の例に、通信（メッセージ送信）、集合（ａｇｇｒｅｇａｔｉｏｎ）、及び生成（ｃｒｅａｔｉｏｎ）が含まれる。対話度を示す他のメソッドも考えられうる。
【００１６】
好適な実施例では、プログラムが実行されると、ノードは互いに近づいたり遠ざかったりする傾向がある。そのオブジェクトが互いにたくさん対話し合うクラスは、集まる傾向があり、それにより密接に協働し合うことを示す。
【００１７】
更に、好適な実施例では、ディスプレイ上のノード間のライン・セットが、コール・スタックを反映する。オブジェクトが別のオブジェクトにメッセージを送信する度に、青の（または任意の他の色のまたは他の特徴的な）ラインが、それぞれのクラス・ノード間に引かれて、メッセージ送信を反映する。最も最近アクティブとなったメッセージに対応するラインは赤に色付けされる（または任意の他の色に、または他の特徴を有するように特徴化される）。メソッドの実行が完了すると、メソッドが実現したメッセージを反映するラインが、ディスプレイから除去される。
【００１８】
このライン・セットは、プログラムの実行につれ、その形状を変化するパスを形成し、この形状は僅かに変化する時も有れば、劇的に変化する時もある。
【００１９】
或いは、ノードがオブジェクトが属するクラスの代わりに、個々のオブジェクトを表現してもよい。この場合には、より多くのノードがディスプレイ上に現れる。
【００２０】
【実施例】
図１において、コンピュータ・システム１００は主メモリ１２０を含み、主メモリ１２０には、オブジェクト指向プログラム１５０がロードされる。オブジェクト指向プログラム１５０内には１つ以上のクラスが含まれ、図では２つのこうしたクラス、すなわちクラス１（１６０）とクラス２（１７０）が示される。
【００２１】
各クラス内には、オブジェクト指向プログラム１５０がコンピュータ・システム１００内で実行されるときに生成されるオブジェクトが存在する。クラス１（１６０）内には２つのこうしたオブジェクトが、またクラス２（１７０）内には１つのオブジェクトが示される。クラス１（１６０）内に示されるオブジェクトは、オブジェクト１０（１６１）とオブジェクト１１（１６２）であり、クラス２（１７０）内に示されるオブジェクトは、オブジェクト２０（１７１）である。
【００２２】
オブジェクトは、メッセージ矢印１９０で示されるように、メッセージを送信することにより対話する。オブジェクトはまた生成矢印１９１で示されるように、他のオブジェクトを生成する。
【００２３】
図２を参照すると、ディスプレイが曲線状のコーナを有する矩形２００により示される。ディスプレイ２００上の位置は、２次元座標系Ｘ２８０及びＹ２９０に関連付けられる。ディスプレイ２００は、クラスを表すノード２１０、２２０、２３０、２４０、９２５を含む。これらのノードは、テキスト１、テキスト２、テキスト３、及びテキストｎ（２１０、２２０、２３０、２４０、９２５）で示されるようにテキスト形式で表示される。ここでノード９２５は、例えばアイコン、ピクチャ、記号、マークなどの任意のグラフィカル・ノードである。テキストを有するノードにおいて、テキストはクラスを識別する。例えばテキストが対応するクラスの名前であったりする。以降では、一般性を失うことなく、グラフィカル・ノードがテキストに関連して述べられる。ディスプレイ上には多くのこうしたノードが存在しうる。通常、ディスプレイは各例示化クラスに対応して、１つのノードを有する。各ノード２１０、２２０、２３０、２４０、９２５は位置を有する。この位置は図２において、括弧２１５、２２５、２３５、２４５、９２６内の座標対により示される。好適には、これらの位置２１５、２２５、２３５、２４５、９２６はディスプレイ２００上には現れず、この図では関連ノード２１０、２２０、２３０、２４０、９２５の位置を参照するために含まれて示される。
【００２４】
ノード２３０（テキスト３）は、ディスプレイ上におけるその位置２３５がディスプレイ２００の中心近傍のノードを表す。
【００２５】
図３は、新規のビジュアル化プログラムにより処理され、グラフィカル・インタフェース上に表示される事象を生成するオブジェクト指向プログラムを示す。ここではオブジェクト指向プログラム３００の走行時の振舞いを知ることが関心の的である。プログラム３００は、既知の任意のオブジェクト指向プログラムである。このオブジェクト指向プログラム３００は、クラス及びオブジェクトを含む。こうしたクラスの１つが３６０により示され、２つのオブジェクトがそれぞれ３６１及び３６２により示される。走行時にオブジェクト指向プログラム３００と一緒に動作するものに、イベント・コレクタ３１０がある。このイベント・コレクタ３１０は事象を収集し、それらをイベント・トランスミッタ３３０に渡す。イベント・トランスミッタ３３０は、事象を新規のビジュアル化プログラム３５０に送信する。ビジュアル化プログラム３５０はオブジェクト指向プログラム３００と並行して実行されるか、後に実行される。ビジュアル化プログラム３５０は、オブジェクト指向プログラム３００と同一のコンピュータ・システム上で実行される必要はない。イベント・トランスミッタ３３０は、ビジュアル化プログラム３００が実行されるまで、事象を保持しうる。イベント・トランスミッタ３３０は既知である。
【００２６】
ビジュアル化プログラム２５０はイベント・トランスミッタ３３０から事象を受信し、それらを実行モデル３７０に編成する。ビジュアル化アルゴリズム３８０は実行モデルを解析する。ビジュアル化アルゴリズム３８０は、実行モデル３７０及びグラフィカル・インタフェース・ディスプレイ３９０をアクセスする（３５４）。
【００２７】
図４は、事象内容を示すデータ構造のブロック図である。事象４００はタイプ４３０、オブジェクト名４１５、タイムスタンプ４２０、メソッド名４２５、及びクラス名４１０を含む。事象が他の情報を含んでもよい。事象４００はイベント・トランスミッタ３３０により、ビジュアル化プログラム３５０に送られる。
【００２８】
本発明では、情報はオブジェクト指向プログラム３００（図３）から新規のビジュアル化プログラム３５０（図３）に渡される。オブジェクト指向プログラム３００（図３）内のイベント・コントローラ３１０（図３）が、事象４００（図４）を収集し、イベント・トランスミッタ３３０（図３）を用いて、これらをビジュアル化プログラム３５０（図３）に送信する。事象４００（図４）は、オブジェクト指向プログラム３００（図３）に関する情報を有する小さなデータ構造である。メッセージ１９０（図１）がオブジェクト指向プログラム３００（図３）により処理される度に、２つの事象４００（図４）が生成される。第１の事象４００（図４）は、メッセージ１９０（図１）の処理の開始時に生成され、第２の事象４００（図４）は、メッセージ１９０（図１）の処理の終了時に生成される。
【００２９】
各事象４００（図４）は次の情報を含む。
・事象４３０のタイプ（図４）。
事象タイプは、事象４００（図４）がメッセージ１９０（図１）の処理の開始（入力）または終了（退去）に対応するかに依存して、入力（Ｅｎｔｅｒ）または退去（Ｌｅａｖｅ）を取る。
・タイムスタンプ４２０（図４）。
タイムスタンプは事象４００（図４）が生成された時刻である。
・メソッド名４２５（図４）。
メソッド名は、入力または退去されるメソッドの名前である。
・オブジェクト名４１５（図４）。
オブジェクト名は、メッセージ１９０（図１）を処理したオブジェクトの名前である。
・クラス名４１０（図４）。
クラス名はオブジェクトが属するクラスの名前である。
【００３０】
事象４００（図４）は（イベント・トランスミッタ３３０（図３）により）、オブジェクト指向プログラム３００（図３）からビジュアル化プログラム３５０（図３）に送られる。事象はこのビジュアル化プログラム３５０（図３）の実行モデル３７０（図３）において、オブジェクト指向プログラム３００（図３）のクラス１６０、１７０（図１）間の異なる対話タイプを反映するように、特殊な方法により編成される。この実行モデル３７０（図３）は、新たな事象４００（図４）がイベント・トランスミッタ３３０（図３）を介して、ビジュアル化プログラム３５０（図３）に送信され、クラス１６０、１７０（図１）間の対話度を変化させるときに、連続的に変化する。
【００３１】
次に、オブジェクト指向プログラムのクラス間の対話１９０、１９１（図１）の例を示す。
１．通信（Ｃｏｍｍｕｎｉｃａｔｉｏｎ）
通信の場合、任意の２つのクラス１６０、１７０（図１）間の対話度が、これら２つのクラス１６０、１７０（図１）のオブジェクト間で送信されるメッセージ１９０（図１）の総数として定義される。
２．生成（Ｃｒｅａｔｉｏｎ）
生成の場合、任意の２つのクラス１６０、１７０（図１）間の対話１９１（図１）度合いが、一方のクラス１６０、１７０（図１）のオブジェクト１６１により生成される他方のクラス１７０、１６０のオブジェクト１７１（図１）の総数として定義される。
３．集合（Ａｇｇｒｅｇａｔｉｏｎ）
集合の場合、任意の２つのクラス１６０、１７０（図１）間の対話度が、一方のクラス１６０（図１）のオブジェクト１６１（図１）の生成（図示せず）の間に生成された、他方のクラス１７０のオブジェクト１７１（図１）の総数として定義される。
【００３２】
ビジュアル化アルゴリズム３８０（図３）は動的な反復的アルゴリズムであり、オブジェクト指向プログラム３００（図３）のクラス１６０、１７０（図１）を、浮遊ノード２１０、２２０、２３０、２４０、９２５（図２）として示す。これらのノード２１０、２２０、２３０、２４０、９２５が、コンピュータ・ディスプレイ２００（図２）上に表示される。ディスプレイ上のノードは、対応するクラス名４１０（図４）を有するテキスト２１０、２２０、２３０、２４０（図２）として示される。或いはディスプレイ上のノードがグラフィカルに表現されてもよい（図２の９２５）。２つのノード１６０、１７０（図１）間の対話度が高くなると、それぞれのノード２１０、２２０、２３０、２４０、９２５（図２）は、ディスプレイ２００（図２）上で接近して表示される。
【００３３】
ビジュアル化アルゴリズム３８０（図３）によるノード２１０、２２０、２３０、２４０、９２５（図２）の配置は、スプリング・ベース（ｓｐｒｉｎｇ−ｂａｓｅｄ）のアルゴリズムにもとづく。
【００３４】
図１２の流れ図は、ビジュアル化アルゴリズム３８０（図３）を示す。ステップ１１００（図１２）で、新たな事象４００（図４）がイベント・トランスミッタ３３０（図３）からビジュアル化プログラム３５０（図３）に到来する。任意のクラス対１６０、１７０（図１）間の対話を記録する実行モデル３７０（図３）が、ステップ１１２０で更新される。
【００３５】
クラス１６０（図１）が初めて使用される場合（ステップ１１３０により判断される）、新たなノード２３０（図２）がステップ１１４０で、ディスプレイ（図２）の中央に生成される。次にあらゆる可能なクラス対１６０、１７０（図１）に対応する対話度が処理される。ステップ１１５０では、次のクラス対に対応する対話度が実行モデル３７０（図３）から獲得され、処理される。処理すべきノード対が更に存在する場合には（ステップ１１６０で判断される）、ステップ１１７０でノード位置が計算され、ノードが再配置される。
【００３６】
ノード２１０、２２０、２３０、２４０、９２５（図２）の位置２１５、２２５、２３５、３４５、９２６（図２）は、このステップ１１７０で作用する力のセットにもとづき計算される。２つの異なるタイプの力が存在する。
１．引力５２０（図５）
図５は、引力を有する２つのノードを示す。２つのマーク（５１０）はグラフ内の２つのノードを示す。２つの矢印（５２０）は、２つのノード（５１０）間の引力を示す。引力５２０（図５）は、２つのノード５１０（図５）間に非ゼロの対話度が存在するとき、これらのノード間に存在する。この力は対話度とノード間の現距離との関数である。好適な実施例では、この力は対話のこの度合いと、これらのノード５１０（図５）間の現距離の対数とに比例する。従って、任意の２つのノード５１０（図５）間の対話が大きくなり、これらがより離れると、この引力５２０（図５）は大きくなる。但し、他の関数も本発明の範疇に含まれる。
２．斥力６２０（図６）
図６は、斥力を有する２つのノードを示す。２つの矢印（６２０）は、２つのノード（６１０）間の斥力を示す。斥力６２０（図６）は、全てのノード対６１０（図６）間に存在する。この斥力６２０（図６）は、対話度とノード間の現距離との関数である。好適な実施例では、斥力はこれらのノード６１０（図６）間の現距離に反比例する（他の関数も考慮されうる）。２つのノード６１０（図６）が互いに非常に接近して配置される場合、これら２つのノード６１０（図６）間には高い斥力が存在する。２つのノード６１０が互いに遠く離れて配置される場合には、これらのノード間にはほとんど斥力６２０（図６）は存在しない。
【００３７】
各ノード２１０、２２０、２３０、２４０、９２５（図２）に対応する新たな位置２１５、２２５、２３５、２４５、９２６（図２）は、各新たな事象４００（図４）がイベント・トランスミッタ３３０（図３）から到来した後に、計算される（図１２のステップ１１００）。この計算はこれらの引力５２０（図５）と斥力６２０（図６）とにもとづく。ノード２１０、２２０、２３０、２４０（図２）のあらゆる可能な対に対応して、図１２のステップ１１５０で、これらの２つのノード間の引力５２０（図５）から斥力６２０（図６）を差し引く。この差が”合力”（ｒｅｓｕｌｔａｎｔ  ｆｏｒｃｅ）と呼ばれる。
【００３８】
図７及び図８を参照すると、ノードはオブジェクト指向プログラム内のクラスを表す。ノード７１０及び７６０（テキスト１）は、図７及び図８の両方において、同一のクラスを表す。またノード７３０及び７８０（テキスト３）も、これら両方の図において、同一のクラスを表す。
【００３９】
図７は、２つのノード（７１０、７３０）を有する表示１（７００）を示す。各ノードは、関連付けられるクラスを識別するテキスト（テキスト１、テキスト３）として表示される。各ノードは括弧内に示される関連位置（７１５、７３５）を有する。位置情報は実際にはディスプレイ上には示されないが、この図では関連ノードの位置を示すために示されている。
【００４０】
図８は、２つのノード（７６０、７８０）を有する表示２を示す。各ノードは括弧内に示される関連位置（７６５、７８５）を有する。位置情報は実際にはディスプレイ上には示されないが、この図では図７の場合同様、関連ノードの位置を参照するために示される。
【００４１】
これらの２つの図、すなわち図７及び図８は、連続する２つの時点におけるノードとそれらの位置を示す。表示１（７００）は表示２（７５０）の前または後に発生する。
【００４２】
合力が正の場合（すなわち引力が斥力よりも大きい）、それぞれの２つのノード７１０、７３０（図７）は、合力とノード７１０、７３０（図７）間の元の距離に比例する量だけ、他方のノードに近づく（７９５、７９６）。この場合には、時刻Ａが時刻Ｂに先行し、ノードは図７のそれぞれの位置から、図８のそれぞれの位置に移動する。表示２（７５０）において、ノード７６０（テキスト１）とノード７８０（テキスト３）間の距離（図８）は、ノード７１０（テキスト１）とノード７３０（テキスト３）間の距離（図７）よりも小さくなる。
【００４３】
合力が負の場合（すなわち斥力が引力よりも大きい）、それぞれの２つのノード７６０、７８０（図８）は、合力に比例する距離だけ、互いに遠ざかる（７９５、７９６）。この場合には、時刻Ｂが時刻Ａに先行し、ノードは図８のそれぞれの位置から、図７のそれぞれの位置に移動する。表示１（７００）において、ノード７１０（テキスト１）とノード７３０（テキスト３）間の距離（図７）は、ノード７６０（テキスト１）とノード７８０（テキスト３）間の距離（図８）よりも大きくなる。
【００４４】
このプロセスは、到来する各新たな事象４００（図４）に対応して繰返される。クラス１６０、１７０（図１）が初めて例示化されるとき、ノード２３０（図２）がディスプレイ２００（図２）の中央に生成される。その時から、この新たなノード２３０（図２）がディスプレイ２００（図２）上に連続的に再配置され、上述のように、斥力及び引力に従う。
【００４５】
次に示す擬似コードは、各新たな事象４００（図４）に対応するビジュアル化アルゴリズム３８０（図３）を記述するものである。
１．任意のクラス対１６０、１７０（図１）間の対話を記録する実行モデル３７０（図３）を更新する。
２．この新たな事象４００（図４）のクラス１６０（図１）が初めて使用される場合、新たなノード２３０（図２）をディスプレイ２００（図２）の中央に生成する。
３．あらゆる可能なクラス対１６０、１７０（ｎｉ、ｎｊ）（図１）に対応して、
ａ．引力５２０（図５）Ｆａ（ｎｉ、ｎｊ）を計算する。
Ｆａ（ｎｉ、ｎｊ）＝（ｎｉとｎｊ間の対話度）＊ｌｏｇ（距離（ｎｉ、ｎｊ））＊定数ａ
（ここで定数ａは適切に選択された定数）
ｂ．斥力６２０（図６）Ｆｒ（ｎｉ、ｎｊ）を計算する。
Ｆｒ（ｎｉ、ｎｊ）＝定数ｒ／距離（ｎｉ、ｎｊ）
（ここで定数ｒは適切に選択された定数）
ｃ．合力Ｆ（ｎｉ、ｎｊ）を計算する。
Ｆ（ｎｉ、ｎｊ）＝Ｆａ（ｎｉ、ｎｊ）−Ｆｒ（ｎｉ、ｎｊ）
ｄ．ｎｉ及びｎｊに対応する変位を計算する。
ｉｆ  Ｆ（ｎｉ、ｎｊ）＞０（引力が大）ならば、
ｎｉとｎｊをディスプレイ上で互いに近づくように移動し、
ｉｆ  Ｆ（ｎｉ、ｎｊ）＜０（斥力が大）ならば、
ｎｉとｎｊをディスプレイ上で互いに隔たるように移動する。
【００４６】
本発明のアプローチでは、入力データ（新たな事象４００（図４））が連続的に、イベント・トランスミッタ３３０（図３）からビジュアル化プログラム３５０（図３）に到来する。新たな事象４００（図４）が到来する度に、（前記擬似コードで示されるように）１回の反復が実行され、各ノード２１０、２２０、２３０、３４０、９２５（図２）に対応する新たな位置２１５、２２５、２３５、２４５、９２６のＸ座標２８０及びＹ座標２９０（それぞれ図２参照）が計算される。各反復の後、ディスプレイ２００（図２）は、ノード２１０、２２０、２３０、２４０、９２５（図２）の新たな位置２１５、２２５、２３５、２４５、９２６を反映するように、更新される。
【００４７】
ディスプレイ上におけるこの方法により、ノード２１０、２２０、２３０、２４０（図２）（クラス１６０、１７０（図１）を表す）間の相互対話度が変化すると、これらのノードが円滑に実時間で移動する。
【００４８】
より多くの事象４００（図４）がオブジェクト指向プログラム３００（図３）から到来すると、動画ディスプレイ２００（図２）は、徐々に、対話クラス１６０、１７０（図１）のグループを表すノード７６０、７８０（図８）のクラスタを形成する。
【００４９】
ビジュアル化アルゴリズム３８０（図３）の反復の後、２つのノード２１０、２２０（図２）が同一の位置２１５、２２５（図２）を獲得する場合、これらの位置２１５、２２５（図２）が、ランダムに選択された方向に僅かの距離離れるように、変更される。このようにして、両方のノードがディスプレイ上に表示される。
【００５０】
図９を参照すると、４つのノード８１０、８２０、８３０、８４０が、それぞれテキスト１、テキスト２、テキスト３、テキストｎにより、グラフィカル・ディスプレイ８００上に表示される。任意選択的に、ノード８１０、８２０、８３０、８４０間の対話度が、それぞれのノード間を接続するライン８５０として、ディスプレイ８００上に示される。必要に応じて、これらのライン８５０の色や太さにより対応する対話度を表現してもよい。
【００５１】
図１０を参照すると、４つのノード９１０、９２０、９３０、９４０が、それぞれテキスト１、テキスト２、テキスト３、テキストｎにより、グラフィカル・ディスプレイ９００上に表示される。これらのノードは、オブジェクト指向プログラムの現コール・スタック上に存在するクラスを表す。ノード９１０、９２０、９３０、９４０はクラスを表し、テキストがクラスを識別する。現コール・スタック上に存在しないより多くのノードに関しては、ディスプレイ上には現れず、この図では示されていない。ライン・セグメント９５０、９６０（図１０）は、メッセージ送信の順に、現コール・スタック上の全てのノードを接続する。最後のライン・セグメント９６０は、コール・スタック上の最後のメッセージ送信を表し、他のライン・セグメントとは異なって表示される。
【００５２】
図１１を参照すると、オブジェクト指向プログラムのクラスを表すノード１０１０、１０２０、１０３０、１０４０が、グラフィカル・インタフェース・ディスプレイ１０００上に表示される。各ノードは関連付けられるクラスを識別するテキスト、すなわちテキスト１、テキスト２、テキスト３、テキストｎとして表示される。１０３０により表現されるノード（テキスト３がテキスト全体に渡り抹消される）は、ディスプレイ１０００から除去されるノードを表す。任意選択的に、ノード１０３０をディスプレイ１０００から消去することも可能である。任意のクラスのノード１０３０は、そのクラスのインスタンスがオブジェクト指向プログラム３００（図３）内に留まらない場合、消去される。
【００５３】
上述の全ての技法は、ノードがオブジェクト指向プログラム３００（図３）内のクラスの代わりに、オブジェクトを表現する表示に対しても、適用することができる。この場合には、表示はオブジェクト指向プログラム３００（図３）のオブジェクト間の動画的対話を示す。オブジェクトはそれが最初に生成されたときに、ディスプレイ上に浮遊ノードとして現れ、破棄されたときに消去する。オブジェクト間の対話は、上述のクラス間の対話（通信、生成、集合）の場合と同様に定義されうる。
【００５４】
本開示により、当業者には本発明の範囲に含まれる様々な別の実施例を見い出すことができよう
【００５５】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００５６】
（１）  グラフィカル・ディスプレイを持つコンピュータ・システムであって、各々がオブジェクト指向プログラムの実行中にアクティブの該オブジェクト指向プログラムのクラスを表す１つ以上のノードを、グラフィカル・インタフェース上に表示する手段と、
所与のクラスの前記ノードの配置が、前記所与のクラスと他の全ての前記クラスとの間の対話の度合いにより決定されるように、前記グラフィカル・インタフェース上に配置される手段と、
を含む、コンピュータ・システム。
（２）  前記表示において、第１のノードと第２のノード間の距離が、該第１及び第２のノードに対応する２つの前記クラス間の対話度により定義されて変化するものにおいて、前記第１及び第２のノード間の距離が対話度に比例する、前記（１）記載のコンピュータ・システム。。
（３）  前記表示において、前記対話度が２つの前記クラス間の通信を反映し、これらのクラス間のメッセージ数として定義される、前記（２）記載のコンピュータ・システム。。
（４）  前記表示において、２つのクラス間の前記対話度が生成を反映し、これらのクラスの一方が他方のクラスのオブジェクトを生成する回数として定義される、前記（２）記載のコンピュータ・システム。
（５）  前記表示において、２つのクラス間の前記対話度が集合を反映し、一方のクラスのオブジェクトが、他方のクラスのオブジェクトの生成の間に生成される総数として定義される、前記（２）記載のコンピュータ・システム。
（６）  前記表示において、クラスに対応するノードが、このクラスが最初に生成されるとき、またはこのクラスのオブジェクトだけが生成されるときに、前記グラフィカル・インタフェース上に配置される、前記（１）記載のコンピュータ・システム。
（７）  前記表示において、前記対話が前記ノード間のラインにより表される、前記（１）記載のコンピュータ・システム。
（８）  前記表示において、前記ラインが前記対話度を表すようにその外観を変化させる、前記（７）記載のコンピュータ・システム。
（９）  前記表示において、前記外観の変化が色の変化である、前記（８）記載のコンピュータ・システム。
（１０）  前記表示において、前記外観の変化がラインの太さである、前記（８）記載のコンピュータ・システム。
（１１）  前記表示において、クラスのメソッドがコール・スタック上に見い出される順に、前記コール・スタックが該コール・スタックのノード間のラインにより示される、前記（１）記載のコンピュータ・システム。
（１２）  前記表示において、前記クラスに対応してオブジェクトがもはや存在しなくなると、ノードが前記グラフィカル・インタフェースから除去され、前記除去されたノードと他のクラスとの間の全ての前記対話度が０にセットされ、残りのノードの位置を再決定する、前記（１）記載のコンピュータ・システム。
（１３）  前記表示において、前記ノードがこのノードの現対話度を表すように、その外観を変化させる、前記（１）記載のコンピュータ・システム。
（１４）  前記表示において、前記外観の変化が色の変化である、前記（１３）記載のコンピュータ・システム。
（１５）  前記表示において、前記外観の変化が大きさの変化である、前記（１３）記載のコンピュータ・システム。
（１６）  前記表示において、前記ノードがオブジェクト指向プログラムのオブジェクトを表す、前記（１）記載のコンピュータ・システム。
（１７）  前記表示において、前記ノードがオブジェクト指向プログラムのオブジェクトを表す、前記（２）記載のコンピュータ・システム。
（１８）  前記表示において、２つのオブジェクト間の前記対話度が通信を反映し、これらのオブジェクト間のメッセージ数として定義される、前記（１７）記載のコンピュータ・システム。
（１９）  前記表示において、２つのオブジェクト間の前記対話度が生成を反映し、これらのオブジェクトの一方が他方を生成するとき１と定義され、それ以外では０と定義される、前記（１７）記載のコンピュータ・システム。
（２０）  前記表示において、２つのオブジェクト間の前記対話度がこれらのオブジェクト間の集合を反映し、これらのオブジェクトの一方が、他方のオブジェクトの生成の間に生成される場合、１と定義され、それ以外では０と定義される、前記（１７）記載のコンピュータ・システム。
（２１）  前記表示において、前記ノードがオブジェクトであり、該オブジェクトが破壊されるとき、該オブジェクトが除去される、前記（１２）記載のコンピュータ・システム。
【００５７】
【発明の効果】
以上説明したように、本発明によれば、オブジェクト間の通信が、ノード間を通過する接続ライン・セグメントのセットとして表現される。こうしたラインは、クラス間またはオブジェクト間の通信の連鎖を反映する。これらの概念的な関係を、動的な空間的な関係にマッピングすることにより、こうした関係が明示的且つ観察可能になり、ユーザはより高度にオブジェクト指向プログラムを理解、デバッグ、及び調整できるようになる。
【図面の簡単な説明】
【図１】汎用コンピュータ・システムとオブジェクト指向プログラムを示す図である。
【図２】クラスまたはオブジェクトを表すノードを含むグラフィカル・インタフェース表示を示す図である。
【図３】ビジュアル化プログラムにより処理され、グラフィカル・インタフェース・ディスプレイ上に表示される事象を生成するオブジェクト指向プログラムを示す図である。
【図４】事象内容を示すデータ構造のブロック図である。
【図５】引力を有する２つのノードを示す図である。
【図６】斥力を有する２つのノードを示す図である。
【図７】ある時点におけるノードを含む表示を示す図である。
【図８】図７に続く時点におけるノードを含む表示を示す図である。
【図９】ノードと、ノードを接続するラインとを有する表示を示す図である。
【図１０】ノードと、幾つかのノードを接続する現コール・スタックを表すラインとを有する表示を示す図である。
【図１１】ノードの１つが表示から除去される様子を示す図である。
【図１２】本ビジュアル化プログラムの１実施例の流れ図である。
【符号の説明】
１００  コンピュータ・システム
１２０  主メモリ
１５０  オブジェクト指向プログラム
１６０、１７０、３６０  クラス
１６１、１６２、１７１、３６１、３６２  オブジェクト
１９１  生成
１９０  メッセージ
２００、８００、９００、１０００  ディスプレイ
２８０  Ｘ座標
２９０  Ｙ座標
３３０  イベント・トランスミッタ
３５４  アクセス
３９０  グラフィカル・インタフェース・ディスプレイ
５１０、６１０  ノード
５２０  引力
６２０  斥力
７９５、７９６  移動
８５０  ライン
９５０、９６０  ライン・セグメント
【図１】
0003594204.tif 000002
【図２】
0003594204.tif 000003
【図３】
0003594204.tif 000004
【図４】
0003594204.tif 000005
【図５】
0003594204.tif 000006
【図６】
0003594204.tif 000007
【図７】
0003594204.tif 000008
【図８】
0003594204.tif 000009
【図９】
0003594204.tif 000010
【図１０】
0003594204.tif 000011
【図１１】
0003594204.tif 000012
【図１２】
0003594204.tif 000013