これまでわれわれは、ソフトウェアを題材として、抽象的なモデルを現実感を持って表現する研究を行なってきた。昨年までに、プログラムの動作を三次元グラフィクスを用いて視覚化するシステムを作成し、プログラムの動的な視覚化によって、プログラム作成者が持つイメージを表現することを試みてきた。 今年度は、プログラムの静的構造、すなわちプログラムテキストとして表現される情報構造を対象とすることにした。モジュールを構成するような関連性の強い関数群を自動的に発見し、人間の理解を助けるような形で視覚化することを目標とする。さらに、そのようにして得られた視覚イメージとしてのプログラムの構成図式を、コンピュータネットワークを利用して複数ユーザの間で共有することで、グループによるソフトウェアの理解や開発に役立てることができると考えた。そのために必要となる基礎技術として、関数の相互関係の抽出とその効果的な視覚化があげられる。 関数間の関係を知る尺度として、関数/変数に対する参照関係をとりあげることとした。個別の参照関係から相互関係を導くために、呼びだし関係を推移的に拡張する。たとえば同じ関数から呼び出される関数群や、逆に同じ関数を呼び出す関数群にも、たとえ直接的な呼びだし関係がなくても一定の関連性のスコアを与えるのである。 つぎに、そのようにして算出した相互関連性を視覚化するために、それを距離と考えて空間に配置することを試みた。この場合、利用者にとっては関連性の強い関数群を、近い場所に配置するのがもっとも自然な視覚化ではないかと考え、適当な緩和計算を繰り返すことで、平面上に近似的な配置を得ることができた。(いわゆるバネモデル)。三次元空間への配置も同様のアルゴリズムによって可能である。
|