(57)【要約】【課題】ユーザがソフトウェアを容易に解析することができるようにしたシステムを提供すること。【解決手段】ソフトウェアの構造の解析を支援するソフトウェア解析支援システム１は、少なくとも一つの計算機を含み、計算機は、各ソフトウェア部品の関係および属性を示すソフトウェア部品情報１２を取得し、各ソフトウェア部品の属性に対応する第１表示要素４１と各ソフトウェア部品間の関係に対応する第２表示要素４２とが設定された表示要素設定情報１３であって、編集可能な表示要素設定情報１３を取得し、各ソフトウェア部品の属性のうちあらかじめ選択される所定の複数の属性に基づいて各ソフトウェア部品の関係を表示する仮想空間４０の所定位置に、第１表示要素および第２表示要素をそれぞれ配置させる。【選択図】図１
2020184259.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアの構造の解析を支援するソフトウェア解析支援システムであって、
少なくとも一つの計算機を含み、
前記計算機は、
各ソフトウェア部品の関係および属性を示すソフトウェア部品情報を取得し、
前記各ソフトウェア部品の属性に対応する第１表示要素と前記各ソフトウェア部品間の関係に対応する第２表示要素とが設定された表示要素設定情報であって、編集可能な表示要素設定情報を取得し、
前記各ソフトウェア部品の属性のうちあらかじめ選択される所定の複数の属性に基づいて前記各ソフトウェア部品の関係を表示する仮想空間の所定位置に、前記第１表示要素および前記第２表示要素をそれぞれ配置させる、
ソフトウェア解析支援システム。
【請求項２】
前記所定の複数の属性は、前記各ソフトウェア部品のディレクトリ情報を含む、
請求項１に記載のソフトウェア解析支援システム。
【請求項３】
前記所定の複数の属性は、前記各ソフトウェア部品の属する階層構造を含む、
請求項２に記載のソフトウェア解析支援システム。
【請求項４】
前記ソフトウェア部品情報は、ユーザが第１設定部を介して設定可能である、
請求項３に記載のソフトウェア解析支援システム。
【請求項５】
前記表示要素設定情報は、ユーザが第２設定部を介して設定可能である、
請求項４に記載のソフトウェア解析支援システム。
【請求項６】
前記仮想空間は、円筒状空間として形成されており、
前記所定の複数の属性のうちの第１の属性は、前記円筒状空間の周方向に割り当てられており、
前記所定の複数の属性のうちの第２の属性は、前記円筒状空間の軸方向に割り当てられている、
請求項５に記載のソフトウェア解析支援システム。
【請求項７】
前記所定の複数の属性のうちの第３の属性は、前記円筒状空間の半径方向に割り当てられている、
請求項６に記載のソフトウェア解析支援システム。
【請求項８】
前記仮想空間は、ソフトウェア毎に生成されており、
前記仮想空間に対応するソフトウェア間の関連度が表示される、
請求項１に記載のソフトウェア解析支援システム。
【請求項９】
前記ユーザの視点を前記仮想空間内の所定位置に配置させ、前記所定位置から前記仮想空間に表示された前記第１表示要素および前記第２表示要素をユーザに視認させる、
請求項６に記載のソフトウェア解析支援システム。
【請求項１０】
計算機をソフトウェアの構造の解析を支援するソフトウェア解析支援システムとして機能させるためのコンピュータプログラムであって、
前記計算機に、
各ソフトウェア部品の関係および属性を示すソフトウェア部品情報を取得させる機能と、
前記各ソフトウェア部品の属性に対応する第１表示要素と前記各ソフトウェア部品間の関係に対応する第２表示要素とが設定された表示要素設定情報であって、編集可能な表示要素設定情報を取得させる機能と、
前記各ソフトウェア部品の属性のうちあらかじめ選択される所定の複数の属性に基づいて前記各ソフトウェア部品の関係を表示する仮想空間の所定位置に、前記第１表示要素および前記第２表示要素をそれぞれ配置させる機能とを、
それぞれ実現させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア解析支援システムおよびそのコンピュータプログラムに関するものである。
【背景技術】
【０００２】
近年のソフトウェア開発では、母体となる開発済みのソフトウェアを拡張または変更することにより新しいソフトウェアを開発する派生開発が主流である。ソフトウェアの派生開発においては、長年に渡る機能拡張または変更の繰り返しにより、ソフトウェアが複雑化するため、ソースコードの可読性が低下し、ソフトウェアの構造および振る舞いを理解するのに手間がかかる。そこで、ソフトウェア部品の情報を２次元平面または３次元空間上に可視化することにより、ソフトウェアの構造および振る舞いの理解に役立てる技術が提案されている（特許文献１，２）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−１５２５７６号公報
【特許文献２】特開２００４−５６４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１の手法では、ソフトウェア部品の情報を異なる色の図形として２次元平面上に表示する。その２次元平面において、第１軸は依存関係の方向を示し、第２軸はプログラム間の依存関係の強さを示す。しかし、ソフトウェアを構成する各ソフトウェア部品は種々の属性を持ち、各ソフトウェア部品間の関係も複雑であるため、２次元平面で表現するのは無理がある。
【０００５】
特許文献２では、円錐状の空間に各ノードの図形表示と階層関係の図形表示とを配置させる。しかし、特許文献２は木構造のソフトウェアの構成を可視化することはできるが、木構造を取らないソフトウェアの構成等の理解には役立たない。したがって、特許文献２の技術は一部のソフトウェアの解析に役立つにすぎず、汎用性が低い。
【０００６】
さらに特許文献１，２のいずれも、図形の色、大きさ、軸の定義はあらかじめ固定されており、使い勝手が低い。ソフトウェア開発現場では、工程または役割に応じて様々な観点から、ソフトウェアの構造等を観察して理解する必要があるが、特許文献１，２はユーザの使いやすさの点で改善の余地がある。
【０００７】
本発明は、上記課題に鑑みてなされたもので、その目的は、ユーザがソフトウェアを容易に解析することができるようにしたソフトウェア解析支援システムおよびそのコンピュータプログラムを提供することにある。
【課題を解決するための手段】
【０００８】
上記課題を解決すべく、本発明に従うソフトウェアの構造の解析を支援するソフトウェア解析支援システムは、少なくとも一つの計算機を含み、計算機は、各ソフトウェア部品の関係および属性を示すソフトウェア部品情報を取得し、各ソフトウェア部品の属性に対応する第１表示要素と各ソフトウェア部品間の関係に対応する第２表示要素とが設定された表示要素設定情報であって、編集可能な表示要素設定情報を取得し、各ソフトウェア部品の属性のうちあらかじめ選択される所定の複数の属性に基づいて各ソフトウェア部品の関係を表示する仮想空間の所定位置に、第１表示要素および第２表示要素をそれぞれ配置させる。
【発明の効果】
【０００９】
本発明によれば、各ソフトウェア部品の属性に対応する第１表示要素と各ソフトウェア部品間の関係に対応する第２表示要素とが設定された表示要素設定情報は編集可能であるため、仮想空間への第１表示要素および第２表示要素の配置を変更することができ、ソフトウェアの構造の理解と使い勝手が向上する。
【図面の簡単な説明】
【００１０】
【図１】ソフトウェア解析支援システムの機能構成図である。
【図２】ソフトウェア解析支援システムのハードウェア構成図である。
【図３】個別のソフトウェア部品情報を示す構成図である。
【図４】ソフトウェア部品間の関係情報を示す構成図である。
【図５】ソフトウェア部品と表示要素との対応関係を定義するマッピング設定を示す構成図である。
【図６】図５に続くマッピング設定の構成図である。
【図７】ソフトウェア解析支援処理を示すフローチャートである。
【図８】ソフトウェアの構造等を表現する仮想空間の例である。
【図９】第２実施例に係るソフトウェア解析支援システムの構成説明図である。
【図１０】第３実施例に係り、複数の仮想空間を移動する場合の速度を制御する処理を示すフローチャートである。
【図１１】第４実施例に係り、仮想空間に第３の軸（半径方向）を設定する様子を示す説明図である。
【図１２】第５実施例に係り、仮想空間内でユーザの視点の基準位置を移動可能であることを示す説明図である。
【図１３】第６実施例に係り、仮想空間内でソフトウェア部品の内容を変更し、その変更結果を仮想空間に反映させる処理を示すフローチャートである。
【図１４】第７実施例に係り、上位の仮想空間内の表示要素を選択することにより、下位の仮想空間へ移動する様子を示す説明図である。
【発明を実施するための形態】
【００１１】
以下、図面に基づいて、本発明の実施の形態を説明する。本実施形態では、ソフトウェアの構成をユーザが確認可能なように仮想空間に表現する。さらに本実施形態では、仮想空間での表現形態を変更可能することにより、種々の構造を持つソフトウェアを種々の観点から解析することができる。
【００１２】
本実施形態では、ソフトウェアを構成する各ソフトウェア部品の構成と各ソフトウェア部品間の関係とをユーザが理解しやすいように可視化する。ソフトウェア部品の単位は、クラス、モジュール、ファイル、関数、ブロックなどのいずれでもよい。すなわち、本実施形態では、ソースコードの一部を構成する単位であれば、それらの構成を可視化することができる。
【００１３】
本実施形態では、仮想空間を構成する各要素に対して、ソフトウェアを構成する部品の属性を任意に割り当てることができる。仮想空間を構成する要素には、例えば、円柱、箱、球などの空間形状、仮想空間に表示される線および点、それらの属性（色、大きさ、太さなど）がある。
【００１４】
本実施形態では、後述のように、ソフトウェア部品情報と、ソフトウェア部品の属性と表示要素（描画オブジェクト）との対応関係を定義するマッピング設定とが入力されると、解析対象のソフトウェアの構成等を仮想空間に表現する。
【００１５】
本実施形態によれば、ユーザは、所望の観点（どのような観点からソフトウェア部品情報を可視化するか）に基づいて、ソフトウェア部品情報を可視化するための情報を設定することができ、ソフトウェア部品情報を解析することができる。以下、本実施形態の例を詳細に説明する。
【実施例１】
【００１６】
図１〜図８を用いて第１実施例を説明する。図１は、ソフトウェア解析支援システム１の機能構成を示す。ソフトウェア解析支援システム１（以下、システム１と略記する場合がある）は、解析対象として選択されたソフトウェアの構造等（構成および振る舞いなど）を解析し、その解析結果を仮想空間４０に表示することにより、解析対象ソフトウェアに対するユーザの理解を支援する。
【００１７】
システム１は、例えば、描画オブジェクト生成部１１を有するソフトウェア解析支援装置１０と、ソフトウェア部品情報１２と、ソフトウェア部品−描画オブジェクトマッピング設定１３と、描画オブジェクト情報１４と、設定部１５，１６と、出力装置２１と、入力装置２２とを備える。
【００１８】
情報１２，１３，１４は、図２で後述する記憶装置１０３に格納されている。ソフトウェア部品情報１２は、ソフトウェアを構成する各ソフトウェア部品の情報であり、その詳細は図３，図４で後述する。ソフトウェア部品−描画オブジェクトマッピング設定１３は、ソフトウェア部品と「表示要素」としての描画オブジェクトとの対応関係を定義する情報であり、その詳細は図５，図６で後述する。以下では、ソフトウェア部品−描画オブジェクトマッピング設定１３をマッピング設定１３と略記する場合がある。
【００１９】
描画オブジェクト生成部１１は、ソフトウェア部品情報１２とマッピング設定１３とに基づいて、ソフトウェア部品の構成および接続関係を仮想空間４０内に表現するための描画オブジェクト情報１４を生成する機能である。
【００２０】
描画オブジェクト情報１４は、所定の仮想空間４０に、ソフトウェア部品の属性を象徴する「第１表示要素」としての点オブジェクト４１と、ソフトウェア部品間の関係を象徴する「第２表示要素」としての線オブジェクト４２とを配置して可視化するための情報である。
【００２１】
ここで、仮想空間４０の周方向はθ軸４３として、ソフトウェア部品の持つ「第１属性」が割り当てられている。仮想空間４０の軸心方向はＺ軸４４として、ソフトウェア部品の持つ「第２属性」が割り当てられている。後述のように、第１属性はソフトウェア部品のディレクトリであり、第２属性はソフトウェア部品の属する階層である。さらに、後述する他の実施例のように、仮想空間４０の半径方向はｒ軸として、ソフトウェア部品の持つ「第３属性」を割り当てることができる。
【００２２】
本システム１のユーザは、例えばＶＲ（Virtual Reality）ゴーグルを装着することにより、その視点を仮想空間４０内の所定位置に置くことができる。そして、ユーザは、仮想空間４０の内部から各オブジェクト４１，４２を視認することにより、ソフトウェア部品同士の関係を把握することができる。さらに図示は省略するが、ユーザは、任意のオブジェクト４１を選択することにより、そのオブジェクトに対応するソフトウェア部品のソースコードを仮想空間４０内に表示させて、編集作業を行うこともできる。
【００２３】
設定部１５は、ユーザが、システム１へ入力されるソフトウェア部品情報１２を設定する機能である。他の設定部１６は、ユーザが、システム１へ入力されるマッピング設定１３を設定する機能である。このように、ユーザは、解析対象のソフトウェアまたはソフトウェア部品の指定、どのような観点で仮想空間４０に表現するかの設定を、手動で行うことができる。なお、手動設定の際に、システム１からユーザに対して、設定方法または設定値などを推薦してもよい。
【００２４】
出力装置２１は、システム１からユーザへ情報を提供する機能である。出力装置２１は、描画オブジェクト情報１４が入力されると、仮想空間４０に各オブジェクト４１，４２を配置した画像をディスプレイへ出力する。
【００２５】
入力装置２２は、ユーザがシステム１へ指示などを入力する機能である。入力装置２２は、ユーザによる操作内容をソフトウェア解析支援装置１０へ送る。さらに、図１では省略するが、ユーザは入力装置２２を用いることにより、設定部１５，１６を介してソフトウェア部品情報１２とマッピング設定１３とを設定することもできる。
【００２６】
図２は、ソフトウェア解析支援システム１のハードウェア構成の例である。システム１は、例えば、一つ以上の計算機１００と一つ以上のユーザ端末２００とから構成することができる。
【００２７】
計算機１００は、例えば、マイクロプロセッサ１０１（図中、ＣＰＵ１０１）と、メモリ１０２と、記憶装置１０３と、通信部１０４と、ユーザインターフェース部１０５（図中、ＵＩ部１０５）とを備える。
【００２８】
マイクロプロセッサ１０１は、記憶装置１０３に記憶されたコンピュータプログラムをメモリ１０２に読み込んで実行することにより、ソフトウェア解析支援装置としての機能を実現する。
【００２９】
記憶装置１０３には、例えば、描画オブジェクト生成部１１を実現するコンピュータプログラムと、ソフトウェア部品情報１２と、マッピング設定１３と、描画オブジェクト情報１４とが記憶される。これら以外に、オペレーティングシステム、デバイスドライバなども記憶装置１０３に記憶されるが、ここでは省略する。
【００３０】
通信部１０４は、通信ネットワークＣＮを介して外部装置３００と通信するための装置である。通信ネットワークＣＮは、例えば、インターネットのような公衆回線網、または専用回線網のいずれでもよい。さらに、通信ネットワークＣＮは、有線通信または無線通信のいずれでもよい。
【００３１】
外部装置３００は、例えば、他の計算機、またはストレージ装置などである。描画オブジェクト生成部１１を実現するコンピュータプログラムは、外部装置３００から計算機１００へ送信されてインストールされてもよい。情報１２，１３，１４の全部または一部を、外部装置３００から計算機１００へ送信して記憶装置１０３に記憶させてもよい。
【００３２】
ユーザインターフェース部１０５には、ユーザ端末２００および／またはユーザインターフェース装置１１０が接続される。ユーザインターフェース装置１１０は、ユーザまたはシステム管理者などがシステム１に対してマッピング設定１３などを設定するための装置である、ユーザインターフェース装置１１０は、例えば、キーボード、ディスプレイ、プリンタなどを含むことができる。
【００３３】
ユーザ端末２００は、例えばＶＲゴーグル（ＶＲ用ヘッドマウントディスプレイ）のように構成される出力装置２１と、入力装置２２とを含む。ＶＲ用端末に代えて、ユーザ端末２００の少なくとも一部を、例えば、パーソナルコンピュータ、携帯電話、携帯情報端末、タブレット、ウエアラブル端末のように構成してもよい。
【００３４】
なお、計算機１００が読み書き可能な外部記憶媒体ＭＭを用いることにより、コンピュータプログラムの全部または一部を記憶装置１０３に入出力させることもできる。外部記憶媒体ＭＭとしては、例えば、フラッシュメモリデバイス、ハードディスクデバイスなどがある。
【００３５】
図３に、ソフトウェア部品情報１２の一つである個別のソフトウェア部品情報１２１の例を示す。
【００３６】
個別のソフトウェア部品情報１２１は、ソフトウェア部品情報の持つ複数の属性を管理する情報である。各ソフトウェア部品の持つ属性（属性名とも呼ぶ）としては、例えば、ソフトウェア部品番号１２１１、行数１２１２、最終更新日時１２１３、最終更新者１２１４、ディレクトリ構造１２１５、階層１２１６、複雑度１２１７がある。ここに挙げた属性名はあくまでも一例であり、個別のソフトウェア部品情報１２１に上述の属性名の一部が含まれていなくてもよい。あるいは、個別のソフトウェア部品情報１２１に、上述の属性名以外のその他の属性１２１８が含まれていてもよい。
【００３７】
個別のソフトウェア部品情報１２１の一つのレコード１２１０は、各ソフトウェア部品が持つ、各属性名に対応する値を記載した情報の例である。
【００３８】
図４に、ソフトウェア部品情報１２の他の一つであるソフトウェア部品間関係情報１２２の例を示す。ソフトウェア部品間関係情報１２２（以下、関係情報１２２とも呼ぶ）は、各ソフトウェア部品情報間の関係性を示す属性名を管理する情報である。
【００３９】
関係情報１２２は、例えば、ソフトウェア部品呼出関係番号１２２１と、呼出元ソフトウェア部品番号１２２２と、呼出先ソフトウェア部品番号１２２３と、呼出回数１２２４と、同一モジュール内呼び出１２２５とを管理する。上述の属性名は一例であり、一部の属性名が含まれていなくてもよいし、他の属性名１２２６が含まれていてもよい。
【００４０】
関係情報１２２の一つのレコード１２２０は、各ソフトウェア部品情報の関係性を示す各属性名に対応する値を記載した情報の例である。
【００４１】
図５，図６を用いてマッピング設定１３の例を説明する。マッピング設定１３は、上述の通り、仮想空間４０に表示するオブジェクト４１，４２とソフトウェア部品の属性とを対応付ける情報であり、ユーザによって編集可能である。
【００４２】
マッピング設定１３は、例えば、描画オブジェクト名１３１と、描画オブジェクトの属性１３２と、対応するソフトウェア部品の属性１３３と、対応付け方法１３４とを備えている。マッピング設定レコード１３０は、これら各項目１３１〜１３４に対応する値を記載した情報の例である。
【００４３】
図５には、点オブジェクト４１に関するマッピング設定が示されている。例えば、点オブジェクト４１は、「本体」、「色」、「形」、「大きさ」、「θ座標」、「Ｚ座標」といった複数の属性を持つ。
【００４４】
「本体」とは、点オブジェクト４１の存在を示し、ソフトウェア部品の部品番号１２１１（図３参照）に対応する。一つのソフトウェア部品は一つの点オブジェクト４１として仮想空間４０に表示される。
【００４５】
「色」とは、点オブジェクト４１の色であり、点オブジェクト４１に対応するソフトウェア部品の最終更新日時１２１３（図３参照）に基づいて、その値が決定される。例えば、最終更新日時が現在時刻の所定時間以内（例えば一週間以内）の場合、点オブジェクト４１は所定色（例えば赤色）で表現され、最終更新日時が現在時刻の所定時間以内ではない場合、点オブジェクト４１は他の色（例えば白色）で表現される。
【００４６】
「形」とは、点オブジェクト４１の形状であり、点オブジェクト４１に対応するソフトウェア部品の複雑度１２１７（図３参照）に基づいて、その値が決定される。例えば、複雑度がｃ１以上かつｃ２未満の場合は球形に、複雑度がｃ２以上かつｃ３未満の場合は正四面体に、複雑度がｃ３以上の場合は正六面体に、設定される。
【００４７】
なお、複雑度１２１７を「複雑度に基づいて決定される所定スコア」あるいは「複雑度スコア」と呼ぶこともできる。
【００４８】
「大きさ」とは、点オブジェクト４１の大きさであり、点オブジェクト４１に対応するソフトウェア部品の行数１２１２（図３参照）に基づいて、その値が設定される。すなわち、ソフトウェア部品の行数が大きくなるほど、点オブジェクト４１は大きくなる。
【００４９】
「θ座標」とは、仮想空間４０に定義されたθ軸４３（円筒状の仮想空間を周方向に区切った領域）のどこに位置するかを示す。θ軸の値は、点オブジェクト４１に対応するソフトウェア部品のディレクトリ構造１２１５（図３参照）に基づいて決定される。例えば、仮想空間４０の周方向を複数の領域に区切り、各領域とディレクトリの範囲とをあらかじめ対応付けておくことができる。この対応付けはユーザが自由に行うことができる。ユーザは、点オブジェクト４１の配置されるθ軸上の領域を確認することにより、ディレクトリ構造上のどの範囲に位置するソフトウェア部品であるかを直感的に理解することができる。
【００５０】
「Ｚ座標」とは、仮想空間４０に定義されたＺ座標４４（円筒状の仮想空間の軸方向を区切った領域）のどこに位置するかを示す。Ｚ軸の値は、点オブジェクト４１に対応するソフトウェア部品の属する階層１２１６（図３参照）  に基づいて決定される。例えば、階層１２１６をドライバ層、ミドル層、アプリケーション層のように分類し、Ｚ軸４４の下から順にドライバ層、ミドル層、アプリケーション層を位置づける。ユーザは、点オブジェクト４１の配置されるＺ軸上の領域を確認することにより、どの階層に属するソフトウェア部品であるかを直感的に理解できる。どの階層のソフトウェア部品をＺ軸上のどの領域に割り当てるかは、ユーザが自由に設定できる。
【００５１】
図６は、線オブジェクト４２に関するマッピング設定が示されている。線オブジェクト４２は、例えば、「本体」、「始点」、「終点」、「太さ」、「色」といった複数の属性を持つ。
【００５２】
「本体」とは、線オブジェクト４２の存在を示し、ソフトウェア部品間の呼び出し関係を管理する番号１２２１（図４参照）に対応する。一つの呼出関係番号は一つの線オブジェクト４２として仮想空間４０に表示される。
【００５３】
「始点」とは、線オブジェクト４２の始点であり、呼出関係番号で特定される呼出関係のうち、呼出元のソフトウェア部品の部品番号１２１１に対応する。
【００５４】
「終点」とは、線オブジェクト４２の終点であり、呼出関係番号で特定される呼出関係のうち、呼出先のソフトウェア部品の部品番号１２１１に対応する。
【００５５】
「太さ」とは、線オブジェクト４２の太さであり、線オブジェクト４２に対応するソフトウェア部品の呼出回数１２２４に基づいて、その値が決定される。呼出回数が多くなるほど、線オブジェクト４２は太く表示される。
【００５６】
「色」とは、線オブジェクト４２の色であり、同一モジュール内での呼び出し１２２５（図４参照）であるか否かによって、その値が定まる。例えば、同一モジュール内からの呼び出しの場合、線オブジェクト４２は青く表示され、それ以外の場合、線オブジェクト４２は白く表示される。
【００５７】
ソフトウェア部品間の関係性を示す線オブジェクト４２をどのように仮想空間４０に表現するかは、ユーザが自由に設定可能である。ユーザは、仮想空間４０に表示される線オブジェクト４２の表現形態から、各ソフトウェア部品間の関係性を直感的に理解することができる。
【００５８】
図７は、ソフトウェア解析支援処理のフローチャートである。ソフトウェア解析支援装置１０の描画オブジェクト生成部１１は、全てのソフトウェア部品情報１２を記憶装置１０３から読込み（Ｓ１１〜Ｓ１３）、続いてマッピング設定１３を記憶装置１０３から読み込む（Ｓ１４）。
【００５９】
そして、描画オブジェクト生成部１１は、仮想空間４０に表示させる点オブジェクト４１および線オブジェクト４２の表示方法を設定し（Ｓ１５）、全てのオブジェクトについての設定が正常に完了したか判定する（Ｓ１６）。
【００６０】
描画オブジェクト生成部１１は、全てのオブジェクトの設定が正常に完了した場合（Ｓ１６：ＹＥＳ）、その設定に基づいて描画オブジェクト情報１４を生成し、記憶装置１０３に記憶させて（Ｓ１７）、本処理を終了する。一方、オブジェクトの設定が正常に完了しなかった場合（Ｓ１６：ＮＯ）、本処理を終了する。
【００６１】
このように、描画オブジェクト生成部１１は、各ソフトウェア部品情報１２とマッピング設定１３とに基づいて、描画オブジェクト情報１４を生成する。
【００６２】
図８に、出力装置２１によって描画されたソフトウェア解析結果を示す。図８では、円筒状の仮想空間４０の周面上に複数の点オブジェクト４１が配置されている。上述のように、一つの点オブジェクト４１は一つのソフトウェア部品（ソフトウェア部品情報１２）に対応する。
【００６３】
或る点オブジェクト４１と他の点オブジェクト４１とは、線オブジェクト４２で結ばれる場合がある。上述の通り、線オブジェクト４２は、ソフトウェア部品間の関係を示している。
【００６４】
点オブジェクト４１の座標を決める座標軸として、図８の例ではθ軸４３とＺ軸４４とを用いる。θ軸４３の値は、ソフトウェア部品の属するディレクトリに基づいて決定される。Ｚ軸４４の値は、ソフトウェア部品の属する階層に基づいて決定される。
【００６５】
ユーザがソフトウェア解析支援装置１０を用いて描画オブジェクト情報１４を生成し、その描画オブジェクト情報１４を元に各ソフトウェア部品および各ソフトウェア部品間の関係を可視化して閲覧するまでの流れの例を説明する。
【００６６】
まず、ユーザは、ソフトウェア部品情報１２およびマッピング設定１３を用意する。ユーザは、ソフトウェア部品情報１２として個別のソフトウェア部品情報１２１とソフトウェア部品間関係情報１２２とを用意するものとする。ユーザは、外部装置３００からソフトウェア部品情報１２およびマッピング設定１３を記憶装置１０３へダウンロードしてもよいし、外部記憶媒体ＭＭから記憶装置１０３へソフトウェア部品情報１２およびマッピング設定１３を転送してもよい。ユーザは、ソフトウェア部品情報１２またはマッピング設定１３の全部または一部を設定部１５，１６を介して書き換えてもよい。
【００６７】
図３で述べたように、個別のソフトウェア部品情報１２１は、ソフトウェア部品番号１２１１、行数１２１２、最終更新日時１２１３、最終更新者１２１４、ディレクトリ構造１２１５、階層１２１６、複雑度１２１７といった属性名一覧を持つ。レコード１２１０は、各ソフトウェア部品の各属性名に対応する値を記載したレコードの例である。実際には多くのレコードが、ソフトウェア部品情報１２１に含まれている。
【００６８】
図４で述べたように、ソフトウェア部品間の関係情報１２２は、ソフトウェア部品呼出関係番号１２２１、呼出元ソフトウェア部品番号１２２２、呼出先ソフトウェア部品番号１２２３、呼出回数１２２４、同一モジュール内呼び出１２２５といった属性名一覧を有する。レコード１２２０は、各ソフトウェア部品の各属性名に対応する値を記載したレコードの例である。実際には多くのレコードが、ソフトウェア部品間関係情報１２２に含まれている。
【００６９】
次に、ユーザはマッピング設定１３を用意する。図５，図６で述べたように、マッピング設定１３は、描画オブジェクト名１３１と、描画オブジェクトの属性１３２と、対応するソフトウェア部品の属性１３３と、対応付け方法１３４とを持つ。
【００７０】
点オブジェクト４１の属性である「本体」には、ソフトウェア部品番号１２１１が対応する。その対応付け方法は、例えば「一つのソフトウェア部品番号に一つの点が対応する」である。
【００７１】
点オブジェクト４１の属性「色」には、最終更新日時１２１３が対応する。その対応付け方法は、例えば「最終更新日時が現在時刻より所定時間内ならば赤色、そうでない場合は白色が対応する」である。
【００７２】
点オブジェクト４１の属性「形」には、複雑度１２１７が対応する。その対応付け方法は、例えば「複雑度がｃ１以上かつｃ２未満の場合は球形に、複雑度がｃ２以上かつｃ３未満の場合は正四面体に、複雑度がｃ３以上の場合は正六面体に対応する」である。
【００７３】
点オブジェクト４１の属性「大きさ」には、行数が対応する。その対応付け方法は、例えば「点の大きさは行数に比例する」である。
【００７４】
点オブジェクト４１の属性「θ座標」には、ディレクトリ構造が対応する。その対応付け方法は、例えば「ディレクトリ構造が ｓｒｃ/Ｇ１/＊ の場合に点オブジェクトのθ座標は０度以上１２０度未満のいずれかの値、ディレクトリ構造が ｓｒｃ/Ｇ２/＊ の場合に点オブジェクトのθ座標は１２０度以上２４０度未満のいずれかの値、ディレクトリ構造が ｓｒｃ/Ｇ３/＊ の場合に点オブジェクトのθ座標は２４０度以上３６０度未満のいずれかの値」である。
【００７５】
点オブジェクト４１の属性「Ｚ座標」には、階層が対応する。その対応付け方法は、例えば「階層がドライバ層の場合に点オブジェクトのＺ座標は０以上１００未満のいずれかの値、階層がミドル層の場合に点オブジェクトのＺ座標は１００以上２００未満のいずれかの値、階層がアプリケーション層の場合に点オブジェクトのＺ座標は２００以上３００未満のいずれかの値」である。
【００７６】
線オブジェクト４２の属性「本体」には、ソフトウェア部品呼び出し関係番号が対応している。その対応付け方法は、例えば「一つのソフトウェア部品呼び出し関係番号に一つの線が対応する」である。
【００７７】
線オブジェクト４２の属性「始点」には、呼び出し元ソフトウェア部品番号が対応している。その対応付け方法は、例えば「ソフトウェア部品番号が呼び出し元ソフトウェア部品番号である点オブジェクトが、線オブジェクトの始点に対応する」である。
【００７８】
線オブジェクト４２の属性「終点」には、呼び出し先ソフトウェア部品番号が対応している。その対応付け方法は、例えば「ソフトウェア部品番号が呼び出し先ソフトウェア部品番号である点オブジェクトが、線オブジェクトの終点に対応する」である。
【００７９】
線オブジェクト４２の属性「太さ」には、呼び出し回数が対応する。その対応付け方法は、例えば「線オブジェクトの太さは呼び出し回数に比例する」である。
【００８０】
線オブジェクト４２の属性「色」には、同一モジュール内呼び出しが対応する。その対応付け方法は、例えば「同一モジュール内呼び出しが「ＴＲＵＥ」の場合に線オブジェクトは青色、同一モジュール内呼び出しが「ＦＡＬＳＥ」の場合に白色」である。
【００８１】
ソフトウェア解析支援装置１０（描画オブジェクト生成部１１）は、以上述べた通り、個別のソフトウェア部品情報１２１とソフトウェア部品間関係情報１２２とマッピング設定１３とを読み込み（図７のＳ１１〜Ｓ１４）、オブジェクト生成時の設定を行う（Ｓ１５）。ソフトウェア解析支援装置１０は、オブジェクト生成時の設定が正常に完了したことを確認し（Ｓ１６：ＹＥＳ）、描画オブジェクト情報１４を生成する（Ｓ１７）。描画オブジェクト情報１４は、出力装置２１がソフトウェアの解析結果を仮想空間４０に描画するために必要な情報を含む情報である。
【００８２】
出力装置２１は、描画オブジェクト情報１４を読み込み、図８に示すような仮想空間４０とオブジェクト４１，４２を描画する。
【００８３】
図８では点オブジェクト４１の図形は実際には点オブジェクトの形状を示している。図８において正三角形で示された点オブジェクトは実際には正四面体であることを示す。図８において円で示された点オブジェクトは実際には球体であることを示す。図８において正方形で示された点オブジェクトは実際には正六面体であることを示す。
【００８４】
出力装置２１は、図８に示したような描画内容を仮想的な３Ｄ空間上に描画し、ユーザは平面ディスプレイを通じてこれを閲覧する。または、出力装置２１は、図８に示したような描画内容をＶＲ空間上に描画し、ユーザはヘッドマウントディスプレイ機器を通じてこれを閲覧する。
【００８５】
このように構成される本実施例によれば、ユーザは、所望の観点に基づいて、ソフトウェア部品情報を仮想空間４０上に可視化させることができ、これによりソフトウェア部品情報を直感的に理解したり解析したりすることができる。すなわち、ユーザは、仮想空間４０に配置された各オブジェクト４１，４２を視認することにより、ソフトウェア部品の概略（どのディレクトリとどの階層に属するソフトウェア部品であるか、どの程度複雑であるか、どのくらい行数が大きいか、更新されたのは最近か等）を直感的におおざっぱに把握することができるため、使い勝手が向上する。
【実施例２】
【００８６】
図９を用いて第２実施例を説明する。本実施例を含む以下の各実施例では、第１実施例との差異を中心に説明する。
【００８７】
本実施例に係るソフトウェア解析支援システム１Ａでは、複数のソフトウェアについての複数の仮想空間４０（１）〜４０（４）をユーザに提供する。すなわち、仮想空間４０（１）〜４０（４）は、それぞれ異なるソフトウェアに対応し、各ソフトウェアにおけるソフトウェア部品とその関係性を表現している。
【００８８】
さらに、図９に「Ｒ＝３８」「Ｒ＝８０」として示すように、ソフトウェア解析支援システム１Ａは、ユーザの選択したソフトウェア（仮想空間）と他のソフトウェアとの関連度を算出して、仮想空間４０に表示させる。
【００８９】
すなわち、ソフトウェア解析支援システム１Ａは、各仮想空間４０（１）〜４０（４）のうちユーザの選択した仮想空間４０（１）に対応するソフトウェアを特定すると（Ｓ２１）、ステップＳ２１で特定されたソフトウェアと他のソフトウェア（仮想空間４０（２）〜４０（４）に対応するソフトウェア）との関連度を計算する（Ｓ２２）。そして、ソフトウェア解析支援システム１Ａは、ステップＳ２２で算出された関連度を仮想空間４０（２）〜４０（４）に対応付けて表示させる（Ｓ２３）。
【００９０】
関連度の算出方法は問わない。一つの例として、各仮想空間４０の表示内容を比較することにより、関連度を算出してもよい。例えば、オブジェクト４１，４２の位置、大きさ、形状、色彩のような表現上の観点からソフトウェア間の関連度を算出してもよい。すなわち、仮想空間４０に表現した際の見た目の類似性から、ソフトウェア間の関連度を算出してもよい。これにより、目的または仕向先などの相違するソフトウェアであっても、本質的構造が類似するソフトウェアを見つけ出すことができ、ユーザの担当するソフトウェアの改善に役立たせることができる。
【００９１】
このように構成される本実施例も第１実施例と同様の作用効果を奏する。さらに本実施例では、複数のソフトウェアにそれぞれ対応する複数の仮想空間を表示し、仮想空間同士の関連度を表示することができるため、ユーザは関連するソフトウェアを見つけ出して、利用することができ、使い勝手が向上する。
【実施例３】
【００９２】
図１０を用いて第３実施例を説明する。本実施例では、仮想空間４０内または仮想空間４０の外部でユーザの視点を移動させる場合の速度を制御する。
【００９３】
第２実施例で述べたように、複数の仮想空間４０（１）〜４０（４）のいずれかの内部へユーザ視点を移動させたり、或る仮想空間から他の仮想空間へユーザ視点を移動させたりすることができる。あるいは、図１２で述べるように、仮想空間内でユーザ視点を移動させることもできる。
【００９４】
本実施例では、ユーザ視点を移動させる場合（Ｓ３１：ＹＥＳ）、移動速度を設定し（Ｓ３２）、設定した速度でユーザ視点を移動させる（Ｓ３３）。
【００９５】
ユーザ視点の移動速度は、例えば、移動速度管理テーブル６０に基づいて決定することができる。移動速度管理テーブル６０は、例えば、ユーザの手動による設定値を記憶するテーブル６１、ユーザの利用履歴を管理するテーブル６２、ユーザ属性に基づく設定テーブル６３、ユーザ状態に基づく修正値を記憶するテーブル６４などのうち一つ以上を含んで構成することができる。図示したテーブル以外のテーブルまたは関数から、ユーザ視点の移動速度を設定してもよい。
【００９６】
ユーザの利用履歴テーブル６２は、ユーザがソフトウェア解析支援システムを過去に利用した際のユーザ視点の移動速度を管理する。ユーザ属性に基づく設定テーブル６３は、例えば、ユーザの年齢、好み、運動習慣などのユーザ属性から、ユーザ視点の移動速度を設定する。ユーザ状態に基づく修正値を記憶するテーブル６４は、例えば、ユーザの現在の健康状態（心拍数、血圧など）に基づいて、ユーザ視点の移動速度を調整するための補正係数を記憶する。
【００９７】
このように構成される本実施例も第１実施例と同様の作用効果を奏する。さらに本実施例では、ユーザが仮想空間の内外で視点を移動させる場合の速度を設定することができるため、より一層使い勝手が向上する。
【実施例４】
【００９８】
図１１を用いて第４実施例を説明する。本実施例では、円筒状の仮想空間４０Ｂの周方向のθ軸４３と軸方向のＺ軸４４に加えて、半径方向のｒ軸４６も利用する。ｒ軸４６は、仮想空間４０Ｂの軸心からの距離に応じて設定される。ｒ軸４６には、例えば、軸心から半径ｒ１に位置する周面と、軸心から半径ｒ２（ｒ２＞ｒ１）に位置する周面との複数の領域が設定される。ｒ軸４６には、例えば「更新者」などの属性を割り当てることができる。他の属性をｒ軸４６に割り当ててもよい。
【００９９】
このように構成される本実施例も第１実施例と同様の作用効果を奏する。さらに本実施例では、θ軸、Ｚ軸だけでなく、ｒ軸も利用することができるため、より一層表現力を高めることができ、ユーザの使い勝手が向上する。
【実施例５】
【０１００】
図１２を用いて第５実施例を説明する。本実施例では、仮想空間４０内でのユーザ視点５０の位置を調整できるようになっている。
【０１０１】
仮想空間４０の下部にユーザ視点５０（１）を設定してもよいし、仮想空間４０の中心部にユーザ視点５０（２）を設定してもよいし、仮想空間４０の上部にユーザ視点５０（３）を設定してもよい。
【０１０２】
例えば、ユーザは、ドライバ層のソフトウェア部品について考察する場合は下側の視点５０（１）を使用し、ミドル層のソフトウェア部品について考察する場合は中心の視点５０（２）を使用し、アプリケーション層のソフトウェア部品について考察する場合は上側の視点５０（３）を使用する。あるいは、ユーザは、中心の視点５０（２）を使用することにより、仮想空間４０内で首を上下に振る角度を少なくすることができ、使い勝手が向上する。
【０１０３】
このように構成される本実施例も第１実施例と同様の作用効果を奏する。さらに本実施例では、仮想空間４０内でユーザ視点５０を調整することができるため、ユーザの使い勝手が向上する。
【実施例６】
【０１０４】
図１３を用いて第６実施例を説明する。本実施例では、ユーザは仮想空間４０内でソフトウェア部品情報１２を編集（書き換えなど）することができ、その編集結果を仮想空間４０に反映させることができる。
【０１０５】
ソフトウェア解析支援装置１０は、ユーザがソフトウェア部品情報１２の編集を希望しているか判定する（Ｓ４１）。例えば、ユーザは、仮想空間４０に表示された点オブジェクト４１の中から所望の点オブジェクト４１を選択して、編集ボタン（不図示）を操作することにより、選択した点オブジェクト４１に対応するソフトウェア部品情報１２のコードを編集可能である。
【０１０６】
ソフトウェア解析支援装置１０は、ユーザがソフトウェア部品情報１２の編集を希望すると（Ｓ４１：ＹＥＳ）、選択されたソフトウェア部品情報１２のコードを仮想空間４０に表示させる（Ｓ４２）。ユーザは、例えば、仮想空間４０内に表示された仮想キーボード（不図示）を用いて、コードを編集することができる。ソフトウェア解析支援装置１０は、ユーザからの入力を検知する（Ｓ４３）。
【０１０７】
なお、編集ボタンおよび仮想キーボードは、入力装置２２を用いることにより実現することもできる。
【０１０８】
ソフトウェア解析支援装置１０は、ユーザによる編集作業が終了したか判定し（Ｓ４４）、編集終了の場合（Ｓ４４：ＹＥＳ）、ユーザの編集に応じて、編集対象のソフトウェア部品情報１２の表示状態に反映させる（Ｓ４５）。例えば、ソフトウェア部品情報１２の行数が増減した場合は、それに応じて点オブジェクト４１の大きさが変化し、ソフトウェア部品情報１２の複雑度が変化した場合は、それに応じて点オブジェクト４１の形状が変化する。なお、ユーザの編集作業が終了していない場合（Ｓ４４：ＮＯ）、ステップＳ４１へ戻る。
【０１０９】
このように構成される本実施例も第１実施例と同様の作用効果を奏する。さらに本実施例では、ユーザは、仮想空間４０内においてソフトウェア部品情報１２を編集することができ、その編集作業の結果を仮想空間４０の表示状態に反映させることができる。
【０１１０】
ユーザは、仮想空間４０内の各オブジェクト４１，４２の配置と表示状態とから、ソフトウェアの構成を直感的に把握でき、その理解にしたがって所望のソフトウェア部品情報１２を書き換えることができ、その作業の結果を仮想空間４０に反映させることにより確認することができる。したがって、ユーザの使い勝手がさらに向上する。
【実施例７】
【０１１１】
図１４を用いて第７実施例を説明する。本実施例では、仮想空間４０内の点オブジェクト４１を選択すると、その選択された点オブジェクト４１に対応するソフトウェア部品情報１２の構成を示す仮想空間４１０が表示される。
【０１１２】
上位のソフトウェアの解析結果を示す仮想空間４０は、上位ソフトウェアを構成するソフトウェア部品情報１２の解析結果を示す仮想空間４１０を含む。下位の仮想空間４１０は、上位の仮想空間４０と同様に、点オブジェクト４１１、線オブジェクト４１２、θ軸４１３、Ｚ軸４１４を備える。点オブジェクト４１１は、例えば、関数またはブロックである。
【０１１３】
このように構成される本実施例も第１実施例と同様の作用効果を奏する。さらに本実施例では、上位の仮想空間４０の点オブジェクト４１を選択すると、その点オブジェクト４１に対応するソフトウェア部品情報１２の解析結果を可視化する下位の仮想空間４１０を表示させることができる。したがって、本実施例は、複雑なソフトウェアの構成解析に役立ち、ユーザの使い勝手が向上する。
【０１１４】
なお、本発明は上記した実施例に限定されず、様々の変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【符号の説明】
【０１１５】
１，１Ａ：ソフトウェア解析支援システム、１０：ソフトウェア解析支援装置、１１：描画オブジェクト生成部、１２：ソフトウェア部品情報、１３：マッピング設定、１４：描画オブジェクト情報、１５，１６：設定部、２１：出力装置、２２：入力装置、４０，４０Ｂ：仮想空間、４１，４２：オブジェクト、４３：θ軸、４４：Ｚ軸、４５：関連度、４６：ｒ軸、５０：ユーザの視点、４１０：下位の仮想空間、４１１，４１２：オブジェクト、４１３：θ軸、４１４：Ｚ軸
【図１】
2020184259.tif 000003
【図２】
2020184259.tif 000004
【図３】
2020184259.tif 000005
【図４】
2020184259.tif 000006
【図５】
2020184259.tif 000007
【図６】
2020184259.tif 000008
【図７】
2020184259.tif 000009
【図８】
2020184259.tif 000010
【図９】
2020184259.tif 000011
【図１０】
2020184259.tif 000012
【図１１】
2020184259.tif 000013
【図１２】
2020184259.tif 000014
【図１３】
2020184259.tif 000015
【図１４】
2020184259.tif 000016