(57)【要約】【課題】ユーザが参照したい箇所をユーザが認識し易いように表示することができるソフトウェア構造可視化システム及びその方法を提案する。【解決手段】ソフトウェアの構造を可視化するソフトウェア構造可視化システムにおいて、ユーザ側端末装置と、ソフトウェアを管理するサーバとを備え、サーバは、ソフトウェアを構成する複数のノードを決定し、当該複数のノードをユーザ側端末装置に表示させ、ユーザ側端末装置に対するユーザの操作に応じて、複数のノードについて重要度を決定し、当該重要度に基づいて、ユーザ側端末装置での複数のノードの表示態様を設定するようにした。【選択図】図３
2018106256.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアの構造を可視化するソフトウェア構造可視化システムであって、
ユーザ側端末装置と、
ソフトウェアを管理するサーバと
を備え、
前記サーバは、
前記ソフトウェアを構成する複数のノードを決定し、当該複数のノードを前記ユーザ側端末装置に表示させ、
前記ユーザ側端末装置に対するユーザの操作に応じて、前記複数のノードについて重要度を決定し、
当該重要度に基づいて、前記ユーザ側端末装置での前記複数のノードの表示態様を設定する
ソフトウェア構造可視化システム。
【請求項２】
前記サーバは、
前記ノードに関係する情報が入力され、前記ノード及びノード間の情報であるソフトウェア構造を取得するソフトウェア構造取得モジュールと、
前記ソフトウェア構造を格納するソフトウェア構造格納モジュールと、
前記ソフトウェア構造を前記ユーザ側端末装置へ送信するソフトウェア構造送信モジュールと、
前記ユーザ側端末装置からのユーザの前記操作に関する情報であるユーザ操作情報を受信するユーザ操作受信モジュールと、
前記ユーザ操作情報を格納する全ユーザ操作格納モジュールと、
前記ソフトウェア構造及び前記ユーザ操作情報を基に前記重要度を算出する重要度算出モジュールと、
前記重要度を格納する全重要度格納モジュールと、
前記重要度を前記ユーザ側端末装置へ送信する重要度送信モジュールと
を備える請求項１に記載のソフトウェア構造可視化システム。
【請求項３】
前記ユーザ側端末装置は、
前記ユーザ操作情報を受け付けるユーザ操作取得モジュールと、
前記ユーザ操作情報を格納するユーザ操作格納モジュールと、
前記ユーザ操作情報を前記サーバへ送信するユーザ操作送信モジュールと、
前記サーバからの前記重要度を受信する重要度受信モジュールと、
前記重要度を格納する重要度格納モジュールと、
前記ソフトウェア構造を受信するソフトウェア構造受信モジュールと、
前記ソフトウェア構造を格納するソフトウェア構造格納モジュールと、
前記重要度、前記ユーザ操作情報及び前記ソフトウェア構造を基にソフトウェア構造画像を描画するソフトウェア構造描画モジュールと、
前記ソフトウェア構造画像を表示するソフトウェア構造表示モジュールと
を備える請求項２に記載のソフトウェア構造可視化システム。
【請求項４】
前記ノードは、親スクリプト、子スクリプト及びプログラムを含み、
前記サーバは、
前記親スクリプト、前記子スクリプト及び前記プログラムを、
前記親スクリプト及び前記子スクリプトの関係と、前記子スクリプト及び前記プログラムの関係とを含めて、前記ユーザ側端末装置に表示させる
請求項１に記載のソフトウェア構造可視化システム。
【請求項５】
前記ユーザ側端末装置は、
同一種類の前記ノードに関して、表示又は非表示を前記重要度に応じて決定する
請求項１に記載のソフトウェア構造可視化システム。
【請求項６】
前記ユーザ側端末装置は、
前記ノードの表示又は非表示を前記ノードの種類に応じて決定する
請求項１に記載のソフトウェア構造可視化システム。
【請求項７】
前記ユーザ操作情報に含まれる前記操作の種類は、前記ノードに対する拡大操作、縮小操作及び移動操作である
請求項２に記載のソフトウェア構造可視化システム。
【請求項８】
前記ユーザ側端末装置は、
前記ノード間の関係を示すエッジを描画する
請求項２に記載のソフトウェア構造可視化システム。
【請求項９】
前記ソフトウェア構造画像は、処理フロー図又はデータフローダイアグラムである
請求項３に記載のソフトウェア構造可視化システム。
【請求項１０】
ソフトウェアの構造を可視化するソフトウェア構造可視化システムにおけるソフトウェア構造可視化方法であって、
前記ソフトウェア構造可視化システムは、
ユーザ側端末装置と、
ソフトウェアを管理するサーバと
を備え、
前記サーバが、
前記ソフトウェアを構成する複数のノードを決定し、当該複数のノードを前記ユーザ側端末装置に表示させる第１のステップと、
前記サーバが、
前記ユーザ側端末装置に対するユーザの操作に応じて、前記複数のノードについて重要度を決定する第２のステップと、
前記サーバが、
当該重要度に基づいて、前記ユーザ側端末装置での前記複数のノードの表示態様を設定する第３のステップと
を備えるソフトウェア構造可視化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア構造可視化システム及びその方法に関し、詳しくは、ソフトウェアの構造をユーザの要望に合わせて可視化できるようにしたソフトウェア構造可視化システムに関する。
【背景技術】
【０００２】
ソフトウェアの開発及びソフトウェアの改良など、ソフトウェアに係る諸作業に関与するユーザにとっては、ソフトウェアのソースコードに触れずに、グラフ表示された情報に基づき、ソフトウェアに係る諸作業をすることが好適である。
【０００３】
例えば、特許文献１には、ソフトウェアの構成や処理概要に関する情報を変数依存関係の観点からユーザに提供する際に、ソフトウェアを複数のノードの集合として表示する、ソフトウェア構造可視化システムが開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３-１５６７８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の可視化システムには、ユーザにとって参照したい箇所を、適切に表示することができないという課題があった。
【０００６】
本発明は、ユーザが参照したい箇所をユーザが認識し易いように表示することができるソフトウェア構造可視化システム及びその方法を提案することを目的とする。
【課題を解決するための手段】
【０００７】
この目的を達成するために、本発明は、ソフトウェアの構造を可視化するソフトウェア構造可視化システムにおいて、ユーザ側端末装置と、ソフトウェアを管理するサーバとを備え、サーバは、ソフトウェアを構成する複数のノードを決定し、当該複数のノードをユーザ側端末装置に表示させ、ユーザ側端末装置に対するユーザの操作に応じて、複数のノードについて重要度を決定し、当該重要度に基づいて、ユーザ側端末装置での複数のノードの表示態様を設定するようにした。
【０００８】
また本発明においては、ソフトウェアの構造を可視化するソフトウェア構造可視化システムにおけるソフトウェア構造可視化方法において、ソフトウェア構造可視化システムは、ユーザ側端末装置と、ソフトウェアを管理するサーバとを備え、サーバが、ソフトウェアを構成する複数のノードを決定し、当該複数のノードをユーザ側端末装置に表示させる第１のステップと、サーバが、ユーザ側端末装置に対するユーザの操作に応じて、複数のノードについて重要度を決定する第２のステップと、サーバが、当該重要度に基づいて、ユーザ側端末装置での複数のノードの表示態様を設定する第３のステップとを備えるようにした。
【発明の効果】
【０００９】
本発明によれば、ユーザが参照したい箇所をユーザが認識し易いように表示することができるソフトウェア構造可視化システム及びその方法を実現できる。
【図面の簡単な説明】
【００１０】
【図１】本実施の形態によるソフトウェア構造可視化システムのハードウェア構成を示すブロック図である。
【図２】本実施の形態によるサーバなどのハードウェア構成を示すブロック図である。
【図３】本実施の形態による重要度算出装置の機能構成を示すブロック図である。
【図４】本実施の形態によるソフトウェア構造表示装置の機能構成を示す図である。
【図５】ノード情報テーブルの構成を示す概念図である。
【図６】エッジ情報テーブルの構成を示す概念図である。
【図７】重要度テーブルの構成を示す概念図である。
【図８】ユーザ操作情報テーブルの構成を示す概念図である。
【図９】ノード表示画面の構成を略線的に示す略線図である。
【図１０】ノード表示画面の構成を略線的に示す略線図である。
【図１１】ソフトウェア構造表示処理の処理手順を示すフローチャートである。
【図１２】重要度算出処理の処理手順を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下図面について、本発明の一実施の形態を詳述する。
【００１２】
（１）本実施の形態によるソフトウェア構造可視化システムの構成
図１は、本実施の形態によるソフトウェア構造可視化システムのハードウェア構成を示す。このシステムは、ソフトウェアの構造を表示する装置と、ソフトウェアの構造に対する重要度を、ユーザの操作に基づいて算出する装置と、を備える。
【００１３】
詳しくは、重要度算出装置１０が、ネットワーク３０を介して、複数のソフトウェア構造表示装置２０に接続されている。重要度算出装置１０は、複数のソフトウェア構造表示装置２０のサーバとして機能し、複数のソフトウェア構造表示装置２０それぞれに対する操作情報を集約し、これを、ユーザが操作を行うユーザ側端末であるソフトウェア構造表示装置２０におけるソフトウェアの構造の表示態様に反映させる。
【００１４】
（２）本実施の形態によるソフトウェア構造可視化機能
次に、本実施の形態のソフトウェア構造可視化システムに実装されたソフトウェア試験支援機能について説明する。
【００１５】
ソフトウェア構造可視化システムは、ソースコードに基づくソフトウェアの構造をグラフ、表及び図などにすることで可視化するシステムである。このシステムは、可視化されたソフトウェア構造に対する、表示箇所を拡大する、表示箇所を縮小する、表示箇所を移動する、又はそれらの組み合わせといった、ユーザの操作に応じて（以下、ユーザ操作情報とする）、表示の態様を変化させる。
【００１６】
ソフトウェア構造とは、ソフトウェアの構造を示す単位であるノード及びノード間の情報といったノード関連情報であり、重要度とは、ソフトウェアの構造及びユーザ操作情報に設定されたスコアをＮ（Ｎは１以上の整数）等分した情報で、例えば、３等分にする場合は、高、中、低とされる。スコアの上位１／３が高、次の１／３が中、残りが低とされる。なお、重要度は、ノード種別ごとに別々に設定される。
【００１７】
ソフトウェアの構造へのスコアは、例えば、ノードの行数によって、ベースとなるスコアを５０や３０とし、それぞれのノードに対する操作に応じた数値及び倍率を加算するなどとして設定される。
【００１８】
具体的には、そのノードの縮小操作（倍率が１より小さい場合）は１、そのノードへの移動は１、そのノードの拡大操作は倍率の値が加算値とされる。また、縮小倍率、拡大倍率及び移動量に応じてスコアは加算される。
【００１９】
複数のソフトウェア構造表示装置２０それぞれは複数のソフトウェア構造表示装置２０それぞれに対してのユーザの操作情報を取得し、重要度算出装置１０へ送信する。重要度算出装置１０は、取得したそれぞれの操作情報に対応する個別の重要度（以下、個別重要度とする）を算出するとともに、全てのソフトウェア構造表示装置２０の平均の重要度（以下、平均重要度とする）も算出する。これらの算出を、操作情報を受信するたびに行う。
【００２０】
重要度算出装置１０は、複数のソフトウェア構造表示装置２０それぞれへ複数のソフトウェア構造表示装置２０それぞれの個別重要度及び平均重要度を送信する。複数のソフトウェア構造表示装置２０それぞれにおいては、複数のソフトウェア構造表示装置２０それぞれの操作情報に応じた重要度を用いることで、最適にソフトウェア構造を把握することが可能となる。
【００２１】
また平均重要度を用いることで、ユーザは、他のソフトウェア構造表示装置２０での平均的な操作情報も把握することができ、どのノードが一般的に重要とされているかを把握することができる。
【００２２】
図２に示すように、重要度算出装置１０及びソフトウェア構造表示装置２０は、主制御装置５１、外部記憶装置５２、入力装置５３、出力装置５４及び通信装置５５を備え、それぞれの装置は内部バスで接続されている。
【００２３】
主制御装置５１はＣＰＵ及びＲＡＭを備えた構成であり、外部記憶装置５２は不揮発的に情報を記憶するＨＤＤであり、入力装置５３はマウス及びキーボードであり、出力装置５４はモニタであり、通信装置５５はネットワークカードである。ＨＤＤに格納されたプログラム及びデータなどがＲＡＭに読み込まれ、ＣＰＵによって実行されることで各機能が実現される。
【００２４】
図３に示すように、重要度算出装置１０は、ソフトウェア構造及び複数のソフトウェア構造表示装置２０それぞれから送信されるそれぞれのユーザ操作情報からそれぞれの重要度を算出する装置であり、ソフトウェア構造取得モジュール１０１、ソフトウェア構造格納モジュール１０２、ソフトウェア構造送信モジュール１０３、重要度算出モジュール１０４、全重要度格納モジュール１０５、重要度送信モジュール１０６、全ユーザ操作情報格納モジュール１０７、ユーザ操作情報受信モジュール１０８及び通信モジュール１０９を備える。モジュールは制御機能を実現する単位であって、プログラム、及び／又は、ハードウェアによって実現される。
【００２５】
ソフトウェア構造取得モジュール１０１は、主制御装置５１に備えられ、入力装置５３から入力されるソフトウェア構造を取得する。ソフトウェア構造は、入力装置５３からの入力でなく、ソースコードを所定の方法で解析することで取得されてもよい。
【００２６】
ソフトウェア構造格納モジュール１０２は、主制御装置５１に備えられ、ノード情報テーブル１０２Ａ及びエッジ情報テーブル１０２Ｂにソフトウェア構造を格納する。なお外部記憶装置５２は、ノード情報テーブル１０２Ａ及びエッジ情報テーブル１０２Ｂなどの各種テーブルを備える。
【００２７】
図５に示すように、ノード情報テーブル１０２Ａは、ノードの情報を登録している。ノード情報テーブル１０２Ａは、ノードＩＤ欄１０２Ａ１、ノード名称欄１０２Ａ２、ノード種別欄１０２Ａ３、親ノード欄１０２Ａ４、座標欄１０２Ａ５、サイズ欄１０２Ａ６、形状欄１０２Ａ７及びノード固有情報欄１０２Ａ８を備える。
【００２８】
ノードＩＤ欄１０２Ａ１には、ノードＩＤが登録される。例えば、ノードＩＤはＮ０００００００１といった英字と８桁の数字を備える文字列であり、それぞれのノードの処理の際にソフトウェア構造可視化システムに一意に識別させるために主に用いられる。
【００２９】
ノードの種別によって、８桁の数字のうちの３桁目の数字が変更される。例えば、親スクリプトは０００００１０１、０００００１０２、…とされ、子スクリプトは０００００２０１、０００００２０２、…とされ、プログラムは０００００３０１、０００００３０２、…とされる。
【００３０】
ノード名称欄１０２Ａ２には、ノード名称が登録される。例えば、ノード名称はＰａｒｅｎｔＳｃｒｉｐｔ＿Ａといったノード種別と英字を備える文字列であり、それぞれのノードの表示の際にユーザに一意に識別させるために主に用いられる。
【００３１】
例えば、親スクリプトはＰａｒｅｎｔＳｃｒｉｐｔ、子スクリプトはＣｈｉｌｄＳｃｒｉｐｔ、プログラムはＰｒｏｇｒａｍとされる。また、英字は、ノード種別ごとにＡ、Ｂ、…と順に付けられる。
【００３２】
ノード種別欄１０２Ａ３には、ノード種別が登録される。例えば、ノード種別は親スクリプト、子スクリプト及びプログラムの３種類とされる。親スクリプトは機能単位であり、子スクリプトはいくつか集まって機能を実現する単位であり、プログラムはソフトウェアの最小単位とされる。
【００３３】
ソフトウェアは１又は複数の親スクリプトを呼び出し、親スクリプトは１又は複数の子スクリプトを呼び出し、子スクリプトは１又は複数のプログラムを呼び出す。
【００３４】
親ノード欄１０２Ａ４には、親ノードが登録される。親ノードは当該ノードの親となるノード名称であり、当該ノードの種別がプログラムの場合は、親ノードの種別は子スクリプト、当該ノードが子スクリプトの場合は親ノードの種別は親スクリプトとなる。当該ノードが親スクリプトの場合は、親ノードは該当なしとなり、親ノード欄１０２Ａ４には−が登録される。
【００３５】
座標欄１０２Ａ５には、座標が登録される。例えば、座標は（３．５３，３．７６）といったＸ座標及びＹ座標を表す形式とされる。Ｘ座標、Ｙ座標共に正の値かつ小数第２位までとされる。座標は、当該ノードを表す図形の左上隅の座標を示す。
【００３６】
サイズ欄１０２Ａ６には、サイズが登録される。例えば、サイズは（１２，７）といったＸ軸方向の幅及びＹ軸方向の高さを表す形式とされる。Ｘ座標、Ｙ座標共に正の値かつ０．５単位での表示とされる。
【００３７】
形状欄１０２Ａ７には、形状が登録される。例えば、形状はノード種別ごとに同じ図形とし、親スクリプトは四角、子スクリプトは角丸四角、プログラムは丸とされる。
【００３８】
ノード固有情報欄１０２Ａ８には、ノード固有情報が登録される。ノード固有情報はメタデータとされ、例えば図５に示すように行数：１００といったように当該ノードのソースコードの行数とされる。
【００３９】
ノード固有情報は、行数に限らず、コミット履歴、クラス数、カプセル化されたデータであるフィールド数、又はそれらの組み合わせでもよい。ノード固有情報は、混在していても、１つのノードに対して複数表示されてもよい。
【００４０】
例えば、ノードＩＤ欄１０２Ａ１にＮ０００００００１が登録されている行のノード固有情報欄１０２Ａ８に行数：１００が登録されていて、ノードＩＤ欄１０２Ａ１にＮ０００００００２が登録されている行のノード固有情報欄１０２Ａ８にクラス数：５が登録される。
【００４１】
また、例えばノードＩＤ欄１０２Ａ１にＮ０００００００１が登録されている行のノード固有情報欄１０２Ａ８に行数：１００及びクラス数：５が登録される。なお、エッジ固有情報として登録すべき内容がない場合は−がエッジ固有情報欄１０２Ｂ８へ登録される。
【００４２】
図６に示すように、エッジ情報テーブル１０２Ｂには、ノード間の情報であるエッジの情報が登録される。エッジ情報テーブル１０２Ｂは、エッジＩＤ欄１０２Ｂ１、エッジ名称欄１０２Ｂ２、エッジ種別欄１０２Ｂ３、始端ノード欄１０２Ｂ４、終端ノード欄１０２Ｂ５、幅欄１０２Ｂ６、縦スタイル欄１０２Ｂ７及びエッジ固有情報欄１０２Ｂ８を備える。
【００４３】
エッジＩＤ欄１０２Ｂ１には、エッジＩＤが登録される。例えば、エッジＩＤは、Ｅ０００００００１といった英字と８桁の数字を備える文字列であり、それぞれのエッジの処理の際にソフトウェア構造可視化システムに一意に識別させるために主に用いられる。
【００４４】
エッジによって接続されるノードの種類によって、８桁の数字のうちの３桁目の数字が変更される。例えば、親スクリプト間を接続するエッジは０００００１０１、０００００１０２、…とされ、子スクリプト間を接続するエッジは０００００２０１、０００００２０２、…とされ、プログラム間を接続するエッジは０００００３０１、０００００３０２、…とされる。
【００４５】
エッジ名称欄１０２Ｂ２には、エッジ名称が登録される。例えば、エッジ名称はｎｅｘｔ＿Ａ＿Ｂといったエッジ種別及び２文字の英字を備える文字列であり、それぞれのエッジの表示の際にユーザに一意に識別させるために主に用いられる。
【００４６】
エッジ種別欄１０２Ｂ３には、エッジ種別が登録される。例えば、エッジ種別はあるノードの次のノードを指すネクストエッジ及びあるノードの前のノードを指すプレビアスエッジの２種類とされる。ネクストエッジはｎｅｘｔと表示し、プレビアスエッジはｐｒｅｖと表示する。
【００４７】
例えば、エッジ名称がｎｅｘｔ＿Ａ＿Ｂの場合、ＰａｒｅｎｔＳｃｒｉｐｔ＿ＡからＰａｒｅｎｔＳｃｒｉｐｔ＿Ｂの方向にノードが接続されることを示す。なお、エッジは同種のノード間を接続する。
【００４８】
始端ノード欄１０２Ｂ４には、エッジの始端となるノードＩＤが登録され、終端ノード欄１０２Ｂ５には、エッジの終端となるノードＩＤが登録される。
【００４９】
幅欄１０２Ｂ６には、エッジの幅が登録される。エッジの幅は３ｐｔ、２ｐｔ又は１ｐｔなどの１以上の整数のＤＴＰポイントとされ、エッジを表示する際の線の太さが表され、親スクリプト間のエッジを太く、プログラム間のエッジを細く、子スクリプト間のエッジを中間の太さとされる。
【００５０】
縦スタイル欄１０２Ｂ７には、縦スタイルが登録される。例えば、縦スタイルは実線又は破線とされ、エッジが表示される際の線の種類が表される。
【００５１】
エッジ固有情報欄１０２Ｂ８には、エッジ固有情報が登録される。エッジ固有情報として登録すべき内容がない場合は−がエッジ固有情報欄１０２Ｂ８へ登録される。エッジ固有情報は、ノード間の呼び出し回数などのメタデータとされる。
【００５２】
ソフトウェア構造送信モジュール１０３は、通信装置５５に備えられ、ソフトウェア構造をソフトウェア構造表示装置２０へ通信装置５５に備えられる通信モジュール１０９及びネットワーク３０を介して送信する。
【００５３】
重要度算出モジュール１０４は、主制御装置５１に備えられ、ソフトウェア構造及び複数のソフトウェア構造表示装置２０それぞれから取得したそれぞれのユーザ操作情報を基にソフトウェア構造表示装置２０それぞれの個別重要度を、スコアを設定することで算出する。また、重要度算出モジュール１０４は、全てのソフトウェア構造表示装置２０の平均の平均重要度についても算出する。
【００５４】
全重要度格納モジュール１０５は、主制御装置５１に備えられ、複数のソフトウェア構造表示装置２０それぞれから取得したユーザ操作情報に基づく個別重要度を個別重要度テーブル１０５Ａに格納する。また全重要度格納モジュール１０５は、複数のソフトウェア構造表示装置２０それぞれから取得したユーザ操作情報に基づく平均重要度を平均重要度テーブル１０５Ｂへ格納する。
【００５５】
図７に示すように、個別重要度テーブル１０５Ａは、ノードＩＤ欄１０５Ａ１、スコア欄１０５Ａ２及び個別重要度欄１０５Ａ３を備える。平均重要度テーブル１０５Ｂの構成は個別重要度テーブル１０５Ａとほぼ同じであるが、個別重要度欄１０５Ａ３の代わりに平均重要度欄を備える。
【００５６】
ノードＩＤ欄１０５Ａ１は、ノード情報テーブル１０２Ａで説明したノードＩＤ欄１０２Ａ１と同様であるため、説明を省略する。
【００５７】
スコア欄１０５Ａ２にはスコアが登録され、個別重要度欄１０５Ａ３には重要度が登録される。例えば、スコアはノード種別が親スクリプトのノードにおいて、スコアの範囲が１〜３００とされると、１０１、２５１及び８７のスコアは、それぞれ中、高及び低の重要度とされる。これは、スコアの１〜１００は重要度低、１０１〜２００は重要度中、２０１〜３０は重要度高とされるためである。
【００５８】
同様に、ノード種別が子スクリプトのノードにおいて、スコアの範囲が１〜４５０とされると、２４０、４０及び３４８のスコアは、それぞれ中、低及び高の重要度とされる。これは、スコアの１〜１５０が重要度低、１５１〜３００が重要度中、３０１〜４５０が重要度高とされるためである。
【００５９】
同様に、ノード種別がプログラムのノードにおいて、スコアの範囲が１〜６００とされると、１０１、２５１及び８７のスコアは、それぞれ中、高及び低の重要度とされる。これは、スコアの１〜１００が重要度低、１０１〜２００が重要度中、２０１〜３００が重要度高とされるためである。
【００６０】
平均重要度は、例えば、それぞれのノードの平均スコアを、上記のそれぞれのノードのスコアとして扱うことで算出される。例えば、ノード種別が子スクリプトのノードにおいて、Ｎ０００００００１のスコアがそれぞれのソフトウェア構造表示装置２０で、１００、３００及び５００である場合、それぞれのスコアが加算され、ソフトウェア構造表示装置２０の個数で割られることで、Ｎ０００００００１の平均スコアは３００とされる。同様に、Ｎ０００００００２及びＮ０００００００３についても平均スコアが求められる。
【００６１】
重要度送信モジュール１０６は、複数のソフトウェア構造表示装置２０それぞれに、複数のソフトウェア構造表示装置２０それぞれからのユーザ操作情報に基づく個別重要度及び平均重要度を、通信装置５５に備えられる通信モジュール１０９及びネットワーク３０を介して送信する。
【００６２】
全ユーザ操作情報格納モジュール１０７は、主制御装置５１に備えられ、ユーザ操作情報テーブル１０７Ａにユーザ操作情報を格納する。ユーザ操作情報テーブル１０７Ａには、重要度算出装置１０と接続される複数のソフトウェア構造表示装置２０それぞれにおけるそれぞれのユーザ操作情報が格納される。
【００６３】
図８に示すように、ユーザ操作情報テーブル１０７Ａは、操作ＩＤ欄１０７Ａ１、操作時刻欄１０７Ａ２、操作種別欄１０７Ａ３、表示領域座標欄１０７Ａ４、表示領域サイズ欄１０７Ａ５及び倍率欄１０７Ａ６を備える。
【００６４】
操作ＩＤ欄１０７Ａ１には、操作ＩＤが登録される。例えば、操作ＩＤはＭ０００００００１といった英字と８桁の数字を備える文字列であり、それぞれの操作情報の処理の際にソフトウェア構造可視化システムに一意に識別させるために主に用いられる。８桁の数字は操作の時系列順に０００００００１から始まり、昇順とされる。
【００６５】
操作時刻欄１０７Ａ２には、操作時刻が登録される。例えば、操作時刻は２０１６／４／１６  １５：００といった年、月、日、時及び分であり、操作が発生した時刻を示す。
【００６６】
操作種別欄１０７Ａ３には、操作種別が登録される。例えば、操作種別は移動、拡大及び縮小の３種類とされる。
【００６７】
表示領域座標欄１０７Ａ４には、表示領域座標が登録される。例えば、表示領域座標は（−５．４８，５．７６）といったＸ軸方向及びＹ軸方向の座標を表す形式とされる。Ｘ座標、Ｙ座標共に小数第２位までとし、負の値を含む。
【００６８】
表示領域サイズ欄１０７Ａ５には、表示領域サイズが登録される。表示領域サイズは（３０，１８）といったＸ軸方向の幅及びＹ軸方向の高さを表す形式とされる。Ｘ座標、Ｙ座標共に１以上の整数とされる。
【００６９】
倍率欄１０７Ａ６には、倍率が登録される。倍率は１、３及び１／２といった等倍、拡大及び縮小とされる。拡大倍率及び縮小倍率は小数第１位までとし、正の値とされる。
【００７０】
ソフトウェア構造を描画した図がちょうど画面に収まる倍率を１とされると、倍率が３の場合は、幅及び高さが１／３の領域のみが画面に表示される。
【００７１】
ユーザ操作情報受信モジュール１０８は、主制御装置５１に備えられ、複数のソフトウェア構造表示装置２０それぞれからユーザ操作情報を、通信装置５５に備えられる通信モジュール１０９及びネットワーク３０を介してソフトウェア構造表示装置２０から受信する。
【００７２】
図４に示すように、ソフトウェア構造表示装置２０は、ユーザ操作情報取得モジュール２０１、ユーザ操作情報格納モジュール２０２、ユーザ操作情報送信モジュール２０３、重要度格納モジュール２０４、重要度受信モジュール２０５、ソフトウェア構造表示モジュール２０６、ソフトウェア構造描画モジュール２０７、ソフトウェア構造格納モジュール２０８、ソフトウェア構造受信モジュール２０９及び通信モジュール２１０を備える。
【００７３】
ユーザ操作情報取得モジュール２０１は、主制御装置５１に備えられ、入力装置５３から入力されたユーザ操作情報を取得する。
【００７４】
ユーザ操作情報格納モジュール２０２は、主制御装置５１に備えられ、ソフトウェア構造表示装置２０におけるユーザ操作情報をユーザ操作情報テーブル２０２Ａに格納する。ユーザ操作情報テーブル２０２Ａの構成はユーザ操作情報テーブル１０７Ａの構成と同様であるため、説明を省略する。
【００７５】
ユーザ操作情報送信モジュール２０３は、主制御装置５１に備えられ、当該ソフトウェア構造表示装置２０のユーザ操作情報を、通信装置５５に備えられる通信モジュール２１０及びネットワーク３０を介して重要度算出装置１０へ送信する。
【００７６】
重要度格納モジュール２０４は、主制御装置５１に備えられ、ソフトウェア構造表示装置２０の個別重要度を個別重要度テーブル２０４Ａに格納する。また、重要度格納モジュール２０４は、平均重要度を平均重要度テーブル２０４Ｂに格納する。個別重要度テーブル２０４Ａ及び平均重要度テーブル２０４Ｂの構造は、個別重要度テーブル１０５Ａの構造と同様であるため、説明を省略する。
【００７７】
重要度受信モジュール２０５は、主制御装置５１に備えられ、重要度算出装置１０から当該ソフトウェア構造表示装置２０の個別重要度及び平均重要度を、通信装置５５に備えられる通信モジュール２１０及びネットワーク３０を介して受信する。
【００７８】
ソフトウェア構造表示モジュール２０６は、主制御装置５１に備えられ、ソフトウェア構造描画モジュール２０７の描画した結果を出力装置５４に表示する。
【００７９】
ソフトウェア構造描画モジュール２０７は、主制御装置５１に備えられ、ソフトウェア構造、個別重要度及びユーザ操作情報を基にデータフローダイアグラム及び処理フロー図などの図及び表などを描画する。
【００８０】
図９及び図１０にソフトウェア構造を可視化し描画した略線図を示す。ソフトウェア構造描画モジュール２０７は、倍率によって描画するノードを変化させる。具体的には、ソフトウェア構造描画モジュール２０７は、描画するノードを、ノード種別及び個別重要度を参照して決定する。
【００８１】
例えば、倍率が１より大きく２以下の場合は、ノード種別が親スクリプトのノードのみを描画し、倍率が２より大きく３以下の場合は、ノード種別が親スクリプト及び子スクリプトのノードを描画し、倍率が３より大きい場合は、表示領域内のノード種別が親スクリプト、子スクリプト及びプログラムのノードを描画する。
【００８２】
なお、倍率が０より大きく１以下の場合は、可視化の主な対象ではない他のソフトウェアとの関連を表示する。また、倍率が４より大きい場合は、例えばソースコードを表示する。
【００８３】
また、倍率が１より大きく１．３以下の場合は、ノード種別が親スクリプトのノードかつ個別重要度が高のノードを描画する。同様に、倍率が１．３より大きく１．６以下の場合は、ノード種別が親スクリプトのノードかつ個別重要度が高及び低のノードを描画し、倍率が１．６より大きく２以下の場合は、ノード種別が親スクリプトのノードかつ個別重要度が低、中及び高のノードを描画する。
【００８４】
倍率が２より大きく２．３以下の場合は、ノード種別が子スクリプトのノードかつ個別重要度が高のノードを描画する。同様に、倍率が２．３より大きく２．６以下の場合は、ノード種別が子スクリプトのノードかつ個別重要度が高及び低のノードを描画し、倍率が１．６より大きく３以下の場合は、ノード種別が子スクリプトのノードかつ個別重要度が低、中及び高のノードを描画する。
【００８５】
なお、倍率が２より大きい場合は、ノード種別が親スクリプトのノードは、重要度に関わらず、表示領域内であれば描画される。
【００８６】
図９は、ソフトウェア構造描画モジュール２０７が、倍率によってノード種別に応じたノードを描画していることを示している。図９（Ａ）においては倍率が２であり、ソフトウェア構造描画モジュール２０７は、ノード種別が親スクリプトのノードを描画している。
【００８７】
図９（Ｂ）においては倍率が３であり、ソフトウェア構造描画モジュール２０７は、ノード種別が子スクリプトのノードを描画している。図９（Ｃ）においては倍率が４、ソフトウェア構造描画モジュール２０７は、ノード種別が親スクリプトのノードを描画している。
【００８８】
図１０は、ソフトウェア構造描画モジュール２０７が、倍率によって個別重要度に応じたノードを描画していることを示している。倍率が３以上の場合について示している。図１０（Ａ）においては倍率が３．２であり、ソフトウェア構造描画モジュール２０７は、個別重要度が高のノードを描画している。
【００８９】
図１０（Ｂ）においては、倍率が３．５であり、ソフトウェア構造描画モジュール２０７は、個別重要度が高及び中のノードを描画している。図１０（Ｃ）においては、倍率が３．８であり、ソフトウェア構造描画モジュール２０７は、個別重要度が高、中及び低のノードを描画している。
【００９０】
ソフトウェア構造格納モジュール２０８は、主制御装置５１に備えられ、ノード情報テーブル２０８Ａ及びエッジ情報テーブル２０８Ｂにソフトウェア構造を格納する。ノード情報テーブル２０８Ａ及びエッジ情報テーブル２０８Ｂの構成はノード情報テーブル１０２Ａ及びエッジ情報テーブル１０２Ｂと同様であるため、説明を省略する。
【００９１】
ソフトウェア構造受信モジュール２０９は、主制御装置５１に備えられ、重要度算出装置１０からソフトウェア構造を、通信装置５５に備えられる通信モジュール２１０及びネットワーク３０を介して受信する。
【００９２】
（３）ソフトウェア構造可視化機能に関する各種処理
図１１は、ソフトウェア構造表示装置２０が実行するソフトウェア構造表示処理ＲＴ１の処理手順を示す。ユーザから入力装置５３を介して所定操作が入力されると、ソフトウェア構造表示装置２０は、この図に示す処理手順に従って、ソフトウェア構造を表示する。
【００９３】
ユーザ操作情報取得モジュール２０１は、そのソフトウェア構造表示装置２０に入力されたユーザ操作情報を取得する（ＳＰ１１）。ユーザ操作情報格納モジュール２０２は、ユーザ操作情報をユーザ操作情報テーブルに格納する（ＳＰ１２）。
【００９４】
ソフトウェア構造描画モジュール２０７は、直前のユーザ操作情報の倍率を参照することで描画するノードを、ノード種別に応じて決定する（ＳＰ１３）。ソフトウェア構造描画モジュール２０７は、直前のユーザ操作情報の倍率を参照することで描画するノードを、個別重要度に応じて決定する（ＳＰ１４）。
【００９５】
ソフトウェア構造表示装置２０からユーザ操作情報が送信された際に、重要度算出装置１０が保持する個別重要度テーブル１０５Ａ及び平均重要度テーブル１０５Ｂが更新され、更新された内容をソフトウェア構造表示装置２０が取得し、ソフトウェア構造表示装置２０が保持する個別重要度テーブル２０４Ａ及び平均重要度テーブル２０４Ｂを更新する。
【００９６】
ソフトウェア構造表示装置２０は、ソフトウェア構造表示処理ＲＴ１が終了した際に、未送信のユーザ操作情報を重要度算出装置１０へ送信する。
【００９７】
ソフトウェア構造描画モジュール２０７は、直前のユーザ操作情報の表示領域座標及び表示領域サイズを参照し、その領域におけるノードとそのノードに関連するエッジを描画する（ＳＰ１５）。この際に、描画するノードはノード種別及び個別重要度に応じたノードとされる。ソフトウェア構造表示モジュール２０６は、描画した結果である描画結果を出力する（ＳＰ１６）。
【００９８】
図１２は、重要度算出装置１０が実行する重要度算出処理ＲＴ２の処理手順を示す。重要度算出装置１０は、ソフトウェア構造表示処理ＲＴ１が終了した際に、この図に示す処理手順に従って、重要度を算出する。
【００９９】
ユーザ操作情報受信モジュール１０８は、複数のソフトウェア構造表示装置２０それぞれからそれぞれのユーザ操作情報を受信し、重要度算出装置１０が保持するユーザ操作情報テーブル１０７Ａを更新する（ＳＰ２１）。
【０１００】
重要度算出モジュールはスコアに倍率を加算するなどして（ＳＰ２２）、個別重要度を決定し（ＳＰ２３）、個別重要度テーブル１０５Ａを更新する。また算出したスコアから平均スコアを算出し（ＳＰ２４）、平均重要度を決定し（ＳＰ２５）、平均重要度テーブル１０５Ｂを更新する。
【０１０１】
重要度送信モジュール１０６は、更新した内容を複数のソフトウェア構造表示装置２０それぞれへ送信する（ＳＰ２６）。
【０１０２】
（４）本実施の形態の効果
以上のように本実施の形態のソフトウェア構造可視化システムでは、ノードごとのユーザ操作に応じた個別重要度及び平均重要度を算出して、どのノードがユーザにとって重要かを判断する。
【０１０３】
従って本ソフトウェア構造可視化システムによれば、ユーザ操作に応じて、可視化されたソフトウェア構造の表示の態様を変化させることにより、ユーザによって変更されることを要する箇所、追加で作成が必要となる箇所及びそれに関連する箇所を重点的に表示することができる。
【０１０４】
（５）他の実施の形態
なお上述の実施の形態においては、本発明を図に対する操作に適用する場合について述べたが、本発明はこれに限らず、例えば、ソースコードの編集時間に応じて重要度を算出するようにしてもよい。
【符号の説明】
【０１０５】
１０……重要度算出装置、２０……ソフトウェア構造表示装置、１０１……ソフトウェア構造取得モジュール、１０２……ソフトウェア構造格納モジュール、１０２Ａ……ノード情報テーブル、１０２Ｂ……エッジ情報テーブル、１０３……ソフトウェア構造送信モジュール、１０４……重要度算出モジュール、１０５……全重要度格納モジュール、１０５Ａ……重要度テーブル、１０６……重要度送信モジュール、１０７……全ユーザ操作情報格納モジュール、１０７Ａ……ユーザ操作テーブル、１０８……ユーザ操作情報受信モジュール、２０１……ユーザ操作情報取得モジュール、２０２……ユーザ操作情報格納モジュール、２０２Ａ……ユーザ操作情報テーブル、２０３……ユーザ操作情報送信モジュール、２０４……重要度格納モジュール、２０４Ａ……重要度テーブル、２０５……重要度受信モジュール、２０６……ソフトウェア構造表示モジュール、２０７……ソフトウェア構造描画モジュール、２０８……ソフトウェア構造格納モジュール、２０８Ａ……ノード情報テーブル、２０８Ｂ……エッジ情報テーブル、２０９……ソフトウェア構造受信モジュール。
【図１】
2018106256.tif 000003
【図２】
2018106256.tif 000004
【図３】
2018106256.tif 000005
【図４】
2018106256.tif 000006
【図５】
2018106256.tif 000007
【図６】
2018106256.tif 000008
【図７】
2018106256.tif 000009
【図８】
2018106256.tif 000010
【図９】
2018106256.tif 000011
【図１０】
2018106256.tif 000012
【図１１】
2018106256.tif 000013
【図１２】
2018106256.tif 000014