(57)【要約】分析対象プログラムの特性に応じて、分析手法の適用可否を利用者に提示することを目的とする。本発明に係るプログラム可視化装置は、プログラムを解析してノードとリンクからなるグラフ構造を出力するプログラム解析手段と、グラフ構造に対して所定の処理を施して分析結果を出力する構造分析手段と、グラフ構造と分析結果とを合成表示する画像描画手段とを備える。これらの３つの手段は、独立して部品化されている。また、グラフ構造の特性に応じて分析手法の適用可否を判定し、その判定結果に応じて分析手法の名称表示の形態を切り替えるようにしてある。
2012172687.tif 000002
【特許請求の範囲】
【請求項１】
プログラムから情報を抽出し、その抽出情報を用いてプログラム分析に必要な処理を施し分析結果を表示するプログラム可視化装置であって、
前記プログラムを解析してノードとリンクからなるグラフ構造を出力するプログラム解析手段と、前記グラフ構造に分析処理を施して分析結果を出力する構造分析手段と、前記グラフ構造とその分析結果とを所定の描画形式により画像表示装置に表示する画像描画手段と、の３つの手段を備え、
これらの３つの手段は、コンピュータを介して実行されるソフトウェアであって、且つそれぞれ独立して部品化されて、各手段単位で変更可能に構成されていることを特徴とするプログラム可視化装置。
【請求項２】
請求項１において、
前記プログラム解析手段は、種類の異なる複数のプログラムをそれぞれ解析してグラフ構造を作成する複数のプログラム解析アルゴリズムを有し、これらのプログラム解析アルゴリズムがそれぞれ部品化されて、各プログラム解析アルゴリズム単位で変更可能に構成され、
前記構造分析手段は、前記グラフ構造に対してそれぞれ異なる分析手法を実行するための複数の構造分析アルゴリズムを有し、これらの構造分析アルゴリズムがそれぞれ部品化されて、各構造分析アルゴリズム単位で変更可能に構成され、
前記画像描画手段は、それぞれ異なる描画形式を実行するための複数の描画アルゴリズムを有し、これらの描画アルゴリズムがそれぞれ部品化されて、各描画アルゴリズム単位で変更可能に構成されているプログラム可視化装置。
【請求項３】
請求項１において、
前記構造分析手段は、前記グラフ構造に対してそれぞれ異なる分析手法を実行するため複数の構造分析アルゴリズムを有し、
前記プログラム可視化装置は、分析対象プログラムの特性から、前記構造分析アルゴリズムの各々が前記グラフ構造に対して適用可能であるか否か判別する構造分析アルゴリズム適否判別手段を備え、
前記画像表示装置は、一つの画面に、少なくとも、
（i）前記グラフ構造とそのグラフ構造に対して適用された構造分析アルゴリズムの分析結果とを前記画像描画手段の描画形式を介して合成表示する第１のウィンドウと、（ii）前記複数の構造分析アルゴリズムの名称を表示し、且つ表示される複数の構造分析アルゴリズムの名称から画面を通して所望の構造分析アルゴリズムを指定する機能、および前記構造分析アルゴリズム適否判別手段による判別結果を表示する機能を有する第２のウィンドウとが設定されているプログラム可視化装置。
【請求項４】
請求項３において、
前記画像描画手段は、それぞれ異なる描画形式を実行するための複数の描画アルゴリズムを有し、
前記プログラム可視化装置は、前記構造分析手段の分析手法の特性から、前記描画アルゴリズムの各々で実行される描画形式が適用可能であるか否か判別する描画形式適否判別手段を備え、
前記画像表示装置は、一つの画面に、前記第１、第２のウィンドウに加えて、
（iii）前記描画アルゴリズムで実行される描画形式の名称を表示し、且つ表示される複数の描画形式の名称から画面を通して所望の描画形式を指定する機能、および前記描画形式適否判別手段による判別結果を表示する機能を有する第３のウィンドウが設定されているプログラム可視化装置。
【請求項５】
請求項１ないし４のいずれか１項において、
前記構造分析手段は、分析対象プログラムのグラフ構造の特性を分類するグラフ特性判定手段を備えるプログラム可視化装置。
【請求項６】
請求項５において、
前記画像描画手段は、前記グラフ特性判定手段の判定結果に基づいて、画面上の前記構造分析手段の分析手法の名称表示の形態を変えるプログラム可視化装置。
【請求項７】
請求項６において、
前記プログラム解析手段は、分析対象プログラムの種類に応じて、変数をノードとし、変数間の代入関係をリンクとして前記プログラムを解析するか、或いは関数をノードとし、関数間の呼び出し関係をリンクとして前記プログラムを解析するプログラム可視化装置。
【請求項８】
請求項６において、
前記グラフ特性判定手段は、前記分析対象プログラムが複雑ネットワーク特性を有しているか否かを、前記グラフ構造に基づいて判定する複雑ネットワーク判定手段よりなるプログラム可視化装置。
【請求項９】
請求項１において、
前記構造分析手段は、少なくとも一つの構造分析アルゴリズムを備えるとともに、前記構造解析アルゴリズムが適用可能なネットワーク特性を記憶する構造分析アルゴリズム属性記憶手段を有するプログラム可視化装置。
【請求項１０】
プログラムから情報を抽出し、その抽出情報を用いてプログラム分析に必要な処理を施し分析結果を表示するプログラム可視化装置であって、
前記プログラムを解析してノードとリンクからなるグラフ構造を出力するプログラム解析手段と、前記グラフ構造に分析処理を施して分析結果を出力する構造分析手段と、前記グラフ構造とその分析結果とを所定の描画形式により画像表示装置に表示する画像描画手段と、の３つの手段を備え、
前記構造分析手段は、前記グラフ構造に対してそれぞれ異なる分析手法を実行するため複数の構造分析アルゴリズムを有し、
前記プログラム可視化装置は、分析対象プログラムの特性から、前記構造分析アルゴリズムの各々が前記グラフ構造に対して適用可能であるか否か判別する構造分析アルゴリズム適否判別手段を備え、
前記画像表示装置は、一つの画面に、少なくとも、
（i）前記グラフ構造とそのグラフ構造に対して適用された構造分析アルゴリズムの分析結果とを前記画像描画手段の描画形式を介して合成表示する第１のウィンドウと、（ii）前記複数の構造分析アルゴリズムの名称を表示し、且つ表示される複数の構造分析アルゴリズムの名称から画面を通して所望の構造分析アルゴリズムを指定する機能、および前記構造分析アルゴリズム適否判別手段による判別結果を表示する機能を有する第２のウィンドウとが設定されていることを特徴とするプログラム可視化装置。
【請求項１１】
請求項１０において、
前記画像描画手段は、それぞれ異なる描画形式を実行するための複数の描画アルゴリズムを有し、
前記プログラム可視化装置は、前記構造分析手段の分析手法の特性から、前記描画アルゴリズムの各々で実行される描画形式が適用可能であるか否か判別する描画形式適否判別手段を備え、
前記画像表示装置は、一つの画面に、前記第１、第２のウィンドウに加えて、
（iii）前記描画アルゴリズムで実行される描画形式の名称を表示し、且つ表示される複数の描画形式の名称から画面を通して所望の描画形式を指定する機能、および前記描画形式適否判別手段による判別結果を表示する機能を有する第３のウィンドウが設定されているプログラム可視化装置。
【請求項１２】
請求項１０又は１１において、
前記画像表示装置は、前記第２のウィンドウにおいて、分析対象プログラムに適用できない構造分析アルゴリズムについては、その構造分析アルゴリズムの名称に、適用不可であることを識別させる情報を重ね合わせて表示するプログラム可視化装置。
【請求項１３】
請求項１０又は１１において、
前記画像表示装置は、前記第２のウィンドウにおいて、分析対象プログラムに適用可能な構造分析アルゴリズムと適用できない構造分析アルゴリズムとを、少なくとも色相、明度、彩度のいずれかを変更して表示するプログラム可視化装置。
【請求項１４】
請求項１０ないし１３のいずれか１項において、
前記画像表示装置は、前記第２のウィンドウにおいて、分析対象プログラムにおいて適用可能な構造分析アルゴリズムと適用できない構造分析アルゴリズムとを、表示順序を変更して表示するプログラム可視化装置。
【請求項１５】
請求項１０ないし１４のいずれか1項において、
前記画像表示装置は、前記第２のウィンドウにおいて、分析対象プログラムに適用できない構造分析アルゴリズムを、画面を通して選択不可とする機能を設定したプログラム可視化装置。
【請求項１６】
請求項１１において、
前記画像表示装置は、前記第３のウィンドウにおいて、分析対象プログラムに適用できない描画形式については、その描画形式の名称に、適用不可であることを識別させる情報を重ね合わせて表示するプログラム可視化装置。
【請求項１７】
請求項１１において、
前記画像表示装置は、前記第３のウィンドウにおいて、分析対象プログラムに適用可能な描画形式と適用できない描画形式とを、少なくとも色相、明度、彩度のいずれかを変更して表示するプログラム可視化装置。
【請求項１８】
請求項１０ないし１７のいずれか１項において、
前記画像表示装置は、前記第１、第２のウィンドウ或いは前記第１、第２、第３のウィンドウと共に１画面に分析対象プログラムのネットワーク特性を表示するプログラム可視化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムから情報を抽出し、その抽出情報を用いてプログラム分析に必要な処理を施し分析結果を表示するプログラム可視化装置に関する。
【背景技術】
【０００２】
エレベータ、自動車、建設機械、家電、その他幅広く各種技術分野では、特定の機能を実現するために、制御装置に組み込まれるいわゆる組込みソフトウェアによって機器（制御対象）を制御する技術が行なわれている。このようなソフトウェアを組み込んだ制御装置は、コンピュータにより実行される組み込み制御装置といえる。【０００３】
組込みソフトウェアは、従来の機械的機構や電気回路による方式に比べて、柔軟かつ高度な制御が実現できること、ソフトウェアの部分的な変更によって多くの派生製品を開発できることが利点として挙げられる。【０００４】
このような組込み制御装置、例えばエレベータ制御装置では、一定周期または割り込みに応じてタスクを起動し、行き先階指定ボタンやドア安全センサ等のセンサの入力に基づいて制御変数を更新することにより、ドア開閉用モータやかご駆動用モータなどのアクチュエータを制御する、いわゆるデータ駆動型の計算モデルが採用されている。【０００５】
組み込み制御装置に求められる制御処理の内容が年々複雑化するとともに、制御変数やサブルーチン間の依存関係が複雑化し、ソフトウェアの理解が困難になるという課題がある。例えば数千個の変数で更新されている制御ソフトウェアにおいても、ある一か所の変数の演算方法を変更した場合に、その影響を受ける変数を特定し、ソフトウェアを検証することが必要不可欠である。したがって、組み込みソフトウェア（プログラム）を解析して影響し合う変数間の関係等を可視化してユーザに表示する可視化装置が望まれている。【０００６】
従来のプログラムの可視化装置としては、次のようものが提案されている。【０００７】
特許文献１には、プログラム開発を行なう場合に、開発対象となるソフトウェアの構成要素の性質を明確にするための構成要素を定義づける定義情報と、定義に基づいて存在する実体を表す実体情報と、各構成要素間の相互関係（分析結果）を認識しやすくするための表示情報をそれぞれＩＤを付して独立して記録すると共に、それらの情報を関係付けて任意の局面の表示情報を作成する表示ソフトウェアシステム分析支援装置が提案されている。【０００８】
特許文献２には、オブジェクト指向プログラミング言語で既述されたソースプログラムを解析して、ソースプログラムの構造を表示するプログラム構造表示装置が開示されている。このプログラム構造表示装置は、オブジェクト指向プログラム構造におけるクラス間の関係だけでなく、属性やメソッドの依存関係も含め、ノードとラインの図形を用いて、色や形を変化させて表示するよう構成されている。【０００９】
特許文献３には、オブジェクト指向言語で記述されたソースコード（プログラム）の可視化の例が示されている。すなわち、テスト実行で得られたログからオブジェクト一覧及びオブジェクト間の関係を収集し、オブジェクト構造抽出部によりオブジェクト間関係を抽出してオブジェクト図を作成し、表示部を介して表示している。この表示において、オブジェクト間の関係である呼び出しの方向や所有関係に応じて線種や色、太さ等を使い分けて図示する。【００１０】
特許文献４には、プログラム構成要素間の依存関係を分析して可視化する例が示されている。本技術では、依存関係の分析結果を行列形式で図示するものであり、分析結果に応じて行列要素の強調表示を行う。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開平７−１７５６４２号公報
【特許文献２】特開平１１−９５９９０号公報
【特許文献３】ＷＯ２００８／０９６６３２
【特許文献４】ＵＳ ７，５１２，９２９ Ｂ２
【発明の概要】
【発明が解決しようとする課題】
【００１２】
（I）従来は、プログラム可視化装置として、分析対象プログラムを解析してグラフ構造を作成する構造作成アルゴリズムや、その構造を分析する構造分析アルゴリズムや、それらの構造や構造分析結果を図式化する図式化アルゴリズムが一連となって不離一体に開発されていた。分析対象となるプログラムが多種多様になるにつれ、プログラム可視化装置の開発効率化が必要となる。特に上記した構造作成アルゴリズム、構造分析アルゴリズムおよび図式化アルゴリズムに関しては、それらのアルゴリズムのいずれかが変更されると、そのたびに新規なプログラム可視化装置を開発することは、プログラムの開発効率が低下してしまうので、その改善が望まれていた。【００１３】
（II）また、近年の大規模データ分析技術の進展に伴って、様々な構造分析アルゴリズムが提案されている。構造分析アルゴリズムの中には、例えば、いわゆる複雑ネットワークの特性を持っているグラフ構造にのみ適用可能なコミュニティ構造分析の様に、特定のネットワーク特性にのみ適用可能な構造分析アルゴリズムが存在する。分析対象プログラムの特性に適用可能な構造分析アルゴリズムの選定には、専門知識が必要となるため、利用者に対応関係を明確に提示することが望まれる。【００１４】
上記した（I）および(II)に関する要求を満足させる従来技術は、上記特許文献１から特許文献４を含め今まで提案されていない。すなわち、従来のプログラム可視化装置は、プログラムの解析から表示までのソフトウェアが一連の流れで構成されており、その一部分を変更した場合には全体のソフトウェアを作成し直さなければならない。また、従来術では、分析対象プログラムのネットワーク特性に応じて適用可能な構造分析アルゴリズムを理解できるように利用者に提示する配慮がなされていない。【００１５】
本発明は、上記のような課題を解決するためになされたものであり、例えば、組み込みソフトウェアなどを検証のため分析（解析）する場合に、上記（I）,（II）の少なくともいずれか一つの要求を満足させて分析作業効率を高めることができるプログラム可視化装置を提供することにある。
【課題を解決するための手段】
【００１６】
本発明に係るプログラム可視化装置は、上記（I）の目的を実現させるために、プログラムを解析してノードとリンクからなるグラフ構造を出力するプログラム解析手段と、前記グラフ構造に分析処理を施して分析結果を出力する構造分析手段と、前記グラフ構造とその分析結果とを所定の描画形式により画像表示装置に表示する画像描画手段と、の３つの手段を備え、
これらの３つの手段は、コンピュータを介して実行されるソフトウェアであって、且つそれぞれ独立して部品化されて、各手段単位で変更可能に構成されている。【００１７】
上記（II）の目的を実現させるために、プログラムを解析してノードとリンクからなるグラフ構造を出力するプログラム解析手段と、前記グラフ構造に分析処理を施して分析結果を出力する構造分析手段と、前記グラフ構造とその分析結果とを所定の描画形式により画像表示装置に表示する画像描画手段と、の３つの手段を備え、
前記構造分析手段は、前記グラフ構造に対してそれぞれ異なる分析手法を実行するため複数の構造分析アルゴリズムを有し、
前記プログラム可視化装置は、分析対象プログラムの特性から、前記構造分析アルゴリズムの各々が前記グラフ構造に対して適用可能であるか否か判別する構造分析アルゴリズム適否判別手段を備え、
前記画像表示装置は、一つの画面に、少なくとも、
（i）前記グラフ構造とそのグラフ構造に対して適用された構造分析アルゴリズムの分析結果とを前記画像描画手段の描画形式を介して合成表示する第１のウィンドウと、（ii）前記複数の構造分析アルゴリズムの名称を表示し、且つ表示される複数の構造分析アルゴリズムの名称から画面を通して所望の構造分析アルゴリズムを指定する機能、および前記構造分析アルゴリズム適否判別手段による判別結果を表示する機能を有する第２のウィンドウとが設定されている。
【発明の効果】
【００１８】
本発明に係る前者のプログラム可視化装置によれば、プログラムを解析してグラフ構造を作成するプログラム解析アルゴリズム、そのグラフ構造を分析する構造分析アルゴリズム、その分析結果を表示する描画アルゴリズムに関するソフトウェアのいずれかを変更した場合でも、他のソフトウェアは、その変更の影響を受けずに再利用することができる。【００１９】
また、後者のプログラム可視化装置によれば、分析対象プログラムの特性に応じて、適用可能な構造分析アルゴリズムを利用者に容易に理解させることができる。
【図面の簡単な説明】
【００２０】
【図１】本発明の一実施例に係るプログラム可視化装置の表示画面を示す図である。
【図２】上記実施例のプログラム可視化装置の構成を示す図である。
【図３】上記実施例のプログラム可視化装置の処理の流れを示す図である。
【図４】上記実施例におけるプログラム解析層３１の構成を示す図である。
【図５】分析対象プログラムＡ２１１の構成例を示す図である。
【図６】図４におけるプログラムＡ解析部３１１の出力の一例を示す図である。
【図７】分析対象プログラムＢ２２１の構成例を示す図である。
【図８】図４におけるプログラムＢ解析部３１２の出力を示す図である。
【図９】上記実施例における構造分析層３２の構成を示す図である。
【図１０】上記実施例における複雑ネットワーク判定部３２１の構成を示す図である。
【図１１】上記複雑ネットワーク判定部３２１の処理の流れを示す図である。
【図１２】図１１に用いられるスケールフリー性判定部３２１１の処理の流れを示す図である。
【図１３】上記実施例におけるプログラム構造分析部３２２の構成を示す図である。
【図１４】上記実施例における構造分析アルゴリズム属性記憶部３２２７のデータ構成３２２７１を示す図である。
【図１５】上記実施例における画像描画層３３の構成を示す図である。
【図１６】図１５において用いられる分析手法表示作成部３３２１の処理の流れを示す図である。
【図１７】上記実施例に係るプログラム可視化装置の表示画面の他の例を示す図である。
【発明を実施するための形態】
【００２１】
本発明の実施の形態を、以下の実施例に基づき説明する。
（実施例）
図２は、本発明の一実施例に係るプログラム可視化装置（：ソフトウェア可視化装置）１００の構成図である。プログラム可視化装置１００は、例えば、種々の制御装置に組み込まれるプログラムを分析して可視化するためのもので、プログラム分析・可視化の実行本体となるコンピュータ１と、コンピュータ１で実行される可視化結果を表示するディスプレイ９と、利用者からの操作を受け付けるマウス７およびキーボード８とを備えている。
【００２２】
コンピュータ１は、分析対象となるプログラムを記憶するデータベース２と、プログラム可視化装置の処理手順（アルゴリズム）を記憶するメモリ３と、ソフトウェア可視化装置の処理手順を実行するプロセッサ４と、ネットワークインタフェース５とを備えている。コンピュータ１は、ネットワークインタフェース５を用いてネットワーク１０を経由して他のコンピュータやデータベースと接続する。
【００２３】
図３は、ソフトウェア可視化装置１００の処理の流れを示すブロック図である。データベース２は分析対象となるプログラムＡ２１と、プログラムＢ２２とを備える。本実施例では、一例として、２つの分析対象プログラムをデータベース２に備えるが、その数は任意である。
【００２４】
メモリ３は、プログラム可視化装置のアルゴリズムとして、分析対象プログラムを情報（図５、図７参照）を抽出して、その情報を解析してノードとリンクの集合からなるグラフ構造を出力するプログラム解析層（プログラム解析手段）３１と、グラフ構造に基づいて分析処理を行って分析結果を出力する構造分析層（構造分析手段）３２と、グラフ構造とその分析結果とを所定の描画形式により画像表示装置に表示する画像描画層（画像描画手段）３３とを備える。画像描画層３３は、マウス７により利用者が望む分析手法や画像表示方式の選択操作を受け付けるとともに、その選択操作に基づくプログラム分析結果をディスプレイ９に出力する。
【００２５】
プログラム解析層３１と構造分析層３２と画像描画層３３は、それぞれ独立して部品化されたソフトウェア(アルゴリズム)により構成され、各部品単位で変更可能に構成されている。ここで、変更とは、ソフトウェアの内容変更のほかに、追加、削除も含むものである。
【００２６】
図４は、プログラム解析層３１の詳細な構成を示す図である。プログラム解析層３１は、プログラムＡ２１用のプログラム解析手段であるプログラムＡ解析部３１１と、プログラムＢ用のプログラム解析手段であるプログラムＢ解析部３１２とを備える。
【００２７】
ここで、プログラムＡ解析部３１１で行われるプログラム解析の一例を図５及び図６を参照して説明する。
【００２８】
図５は、プログラムＡ２１の一例に係る具体的構成を示す図である。プログラムＡ２１のソースコード２１１は複数の関数を備えており、関数間の呼び出しによってプログラムを構成している。
【００２９】
図６は、プログラムＡ解析部３１１の出力結果であるプログラムＡグラフ構造３１１１を示す図である。
【００３０】
プログラムＡ解析部３１１のアルゴリズムは、ソースコード２１１（図５）における関数をノード、関数間の呼び出し関係をリンクとしてプログラム解析を行い、解析結果をプログラムＡのグラフ構造３１１１（図６）として出力することを内容とする。
【００３１】
一例をあげれば、図５におけるソースコード２１１の１行目〜３行目は、「関数aが関数eを呼び出している」ことを示している。この場合には、前者（関数a）を始点ノード、後者（関数e）を終点ノードとする。それ以降の行についても同様の解析が行われ、それぞれの関数間呼び出しについてリンクＩＤ（リンク識別番号）が付される。リンクＩＤの付け方は種々の態様が考えられる。ここでは、終点ノードの変数（アルファベット）の若い順を第1優先とし、次いで始点ノードの変数（アルファベット）の若い順を第２優先としている（図６参照）。その結果、上記した「関数aが関数eを呼び出している」（ソースコード２１１）は、図６のプログラムＡグラフ構造３１１１において、リンクＩＤ４として、関数間の呼び出し関係が示されている。
【００３２】
次に、プログラムＢ解析部３１２で行われるプログラム解析の一例を図７及び図８を参照して説明する。
【００３３】
図７は、プログラムＢ２２の一例に係る具体的構成を示す図である。プログラムＢ２２のソースコード２２１は複数の関数を備えている。ただし、関数間の呼び出し関係ではなく、変数の代入関係によってプログラムを構成している。
【００３４】
図８は、プログラムＢ解析部３１２の出力結果であるプログラムＢグラフ構造３１２１を示す図である。
【００３５】
プログラムＢ解析部３１２のアルゴリズムは、ソースコード２２１（図７）における変数をノード、変数間の代入関係をリンクとしてプログラム解析を行い、解析結果をプログラムＢグラフ構造３１２１（図８）として出力することを内容とする。
【００３６】
一例をあげれば、ソースコード２２１の２行目は、「変数ａに基づいて変数ｂが演算されている」ことを示している。この場合には、前者（変数ａ）を始点ノード、後者（変数ｂ）を終点ノードとする。それ以降の行についても同様の解析が行われ、それぞれの変数間の代入関係についてリンクＩＤ（リンク識別番号）が付される。リンクＩＤの付け方は、既述した関数間呼び出し同様に行われる。その結果、上記した「変数ａに基づいて変数ｂが演算されている」は、図８のプログラムＢグラフ構造３１２１において、リンクＩＤ１としての内容を示している。
【００３７】
以上のように、プログラム可視化装置１００に複数のプログラム解析層３１として、異なる複数のプログラム解析部、例えばプログラムＡ解析部３１１およびプログラムＢ解析部３１２を設け、プログラム解析層３１を構造分析層３２と画像描画層３３に対してそれぞれ独立して部品化することによって、異なる構造を持つプログラムに対してはプログラム解析部を変更するのみで対応可能である。したがって、プログラムの種類に応じてプログラム解析部を変更（追加、削除を含む）する場合には、プログラム解析層３１にて、各
プログラム解析部単位で変更すれば良く、その変更が他の構造分析層３２や画像描画層３３には影響を与えないので、プログラム可視化装置の再利用性および開発効率が向上する。なお、構造分析層３２や画像描画層３３に関しても独立して部品化されているので、それぞれの層単位で変更可能である（この点については後述される）。
【００３８】
図９は、構造分析層３２の詳細な構成を示す図である。構造分析層３２は、グラフ特性判定部（グラフ特性判定手段）３２０とプログラム構造分析部３２２とを備えている。グラフ特性判定部は、複雑ネットワーク判定部３２１を備えている。
【００３９】
図１０は、複雑ネットワーク判定部３２１の詳細な構成を示す図である。複雑ネットワークは、現実世界に存在する多様なネットワーク（ネットワークは、ノードとリンクの集合よりなるグラフ構造で示される）において、一定の共通する性質として「スケールフリー性」（次数分布のべき乗則）、「スモールワールド性」、および「クラスター性」を有するものであり、近年、現実世界の様々な現象を説明するのに使用され周知な学問であるので、詳細な説明は省略する。
【００４０】
複雑ネットワーク判定部３２１は、プログラム解析層３１で解析されたグラフ構造の次数分布がべき乗則にしたがっているか否かを判定するスケールフリー性判定部３２１１と、任意に選択した２つのノードが最短で幾つの仲介ノードおよびリンクを介して繋がりを持つのか求め（ノード間距離）、これをノードの組み合わせを変えて全ノードに実行してその平均最短距離を求め、その平均最短距離がノード数の大きさに比べて小さい値を取っているか否かを判定するスモールワールド性判定部３２１２と、グラフ構造のクラスター係数の値を評価するクラスター性判定部３２１３を備える。
【００４１】
図１１は、複雑ネットワーク判定部３２１の処理の流れを示す図である。ステップＳ３２１０１において処理が開始される。
【００４２】
ステップＳ３２１０２においてスケールフリー性判定部３２１１が実行され、スケールフリー性の有無が判定される。スケールフリー性有りと判定された場合には、ステップＳ３２１０３へ進み、無しと判定された場合には、ステップＳ３２１０６へ進み処理が終了する。
【００４３】
ステップＳ３２１０３においてスモールワールド性判定部３２１２が実行され、スモールワールド性の有無が判定される。スモールワールド性有りと判定された場合には、ステップＳ３２１０４へ進み、無しと判定された場合には、ステップＳ３２１０６へ進み処理が終了する。
【００４４】
ステップＳ３２１０４においてクラスター性判定部３２１３が実行され、クラスター性の有無が判定される。クラスター性有りと判定された場合にはステップＳ３２１０５へ進み、無しと判定された場合にはステップＳ３２１０６へ進み処理が終了する。
【００４５】
ステップＳ３２１０５に進んだ場合には、このステップにて、分析対象プログラムのグラフ構造が複雑ネットワークであると判定され、ステップＳ３２１０６へ進み処理が終了する。
【００４６】
図１２は、スケールフリー性判定部３２１１の処理の流れを示す図である。スケールフリー性は、ノードが次数ｋを持つ確率ｐ（ｋ）の確率分布がｐ（ｋ）∝ｋ−γのべき乗則になると表現されるものであり、その判定のために、次の処理が行われる。
【００４７】
ステップＳ３２１１１において処理が開始される。
【００４８】
ステップＳ３２１１２では分析対象プログラムの各ノードに接続するリンク数である次数に基づいて、次数とノード数の対応関係である次数分布を取得する。
【００４９】
ステップＳ３２１１３では両対数における次数分布の相関係数を演算する。
【００５０】
ステップＳ３２１１４では、相関係数が所定の閾値を上回っているか否かを判定する。上回っている場合にはステップＳ３２１１５に進み、上回っていない場合にはステップＳ３２１１６に進み処理を終了する。
【００５１】
ステップＳ３２１１５では分析対象プログラムのグラフ構造がスケールフリー性を備えていると判定され、ステップＳ３２１１６へ進み処理が終了する。
【００５２】
スモールワールド性判定部３２１２により行われる判定処理は、そのフローチャートによる図示を省略するが、概略次のように行なわれる。すなわち、ノード数を求めるステップと、任意の２つのノード間の平均最短距離を求めるステップと、上記のノード間平均最短距離がノード数の大きさに比べて小さい値を取っているか否かを判定し、小さい値を取っている場合には、スモールワールド性を有するものと判定するステップを有する。
【００５３】
クラスター性判定部３２１２により行われる判定処理についても、そのフローチャートによる図示を省略するが、概略次のように行なわれる。すなわち、グラフ構造のノードおよびリンクの集合からクラスター係数Ｃを算出するステップと、クラスター係数が閾値より大きいか否か判定し、大きい場合には、クラスター性を有するものと評価するステップを有する。
【００５４】
図１３は、構造分析層３２におけるプログラム構造分析部３２２の詳細な構成を示す図である。プログラム構成分析部３２２は、それぞれ独立して部品化されている複数種類の分析部よりなる。これらの分析部は、それぞれ分析アルゴリズムにより構成され、次のようなものがある。例えば、（i）ノード及びリンクの集合体でネットワークよりなるグラフ構造において、特定の共通のノード及びリンクよりなるコミュニティ（組織）を分析するコミュニティ構造分析部３２２１と、（ii）ネットワークを構成するノードのうち、重要度の高いノードを分析するノード重要度分析部３２２２と、（iii）ある特定ノードに着目して、そのノードが他のノードに及ぼす影響範囲を分析するノード影響範囲分析部３２２３と、（iv）ある特定のノードから他の特定ノードに到るまでにリンク繋がりのある幾つかの仲介ノード及びリンクを経由する場合にその最短経路を分析するノード間最短経路分析部３２２４と、（v）複数のプログラムについてグラフ構造解析して、それらのグラフ構造の類似性を分析する構造類似性分析部３２２５と、(vi)媒介中心性、すなわち、そのノードを通過しないと他のノードに到達できない度合いを分析する媒介中心性分析部３２２６が用意されている。さらに、プログラム構造分析部３２２には、上記列挙した各種分析部（構造分析アルゴリズム）の属性を記憶する構造分析アルゴリズム属性記憶部３２２７を備える。
【００５５】
これらの各種分析部（構造分析アルゴリズム３２２１〜３２２６）は、図１に示すディスプレイ画面９１の分析手法表示部９１３を通して選択的に指定可能である（ディスプレイ画面９１の詳細は後述する）。
【００５６】
プログラム構造分析部３２２となる複数の構造分析アルゴリズム（３２２１〜３２２６）は、それぞれ独立しており、またプログラム解析層３１や画像描画層３３とも独立している。したがって、構造分析アルゴリズムを変更（追加，削除を含む）する場合でも、プログラム解析層３１および画像描画層３３については再利用することができ、プログラム可視化装置の開発効率を向上させることができる。
【００５７】
図１４は、構造分析アルゴリズム属性記憶部３２２７の詳細なデータ構成３２２７１を示す図である。構造分析アルゴリズム属性記憶部３２２７のデータ構成３２２７１は、分析アルゴリズムのＩＤと、そのアルゴリズムの名称と、適用可能なグラフ構造とで構成されている。例えば、ＩＤ１のコミュニティ構造解析アルゴリズムは、複雑ネットワーク専用プログラムのグラフ構造に適用可能であり、ＩＤ４のノード間最短経路分析は、ネットワーク専用プログラムに限らず汎用的なグラフ構造に適用することができる。
【００５８】
図１５は、画像描画層３３の詳細な構成を示す図である。
【００５９】
画像描画層３３は、(i)分析対象プログラムのグラフ構造を指定の描画アルゴリズム（本例では、有効グラフ、依存関係行列、ツリーのいずれかの描画アルゴリズム）で描画するグラフ図描画部３３１と、（ii）分析対象プログラムの構造分析アルゴリズム（図１３の３２２１〜３２２６：分析手法）の名称を一覧表示して作成する分析手法表示作成部３３２１と、（iii）上記した描画アルゴリズム（３３１１〜３３１３：描画形式）の名称を一覧表示して作成する描画形式表示作成部３３２２と、(iv)ディスプレイ９の画面を通して分析手法や描画形式に関して利用者の選択（指定）を受け付けるユーザインタフェース部３３２と、を備える。
【００６０】
本実施例のグラフ図描画部３３１を構成する描画アルゴリズムは、ノードとリンクからなるグラフ構造をリンクに方向性を与えて表示する有向グラフ描画アルゴリズム（有向グラフ描画部）３３１１と、ノード間の依存関係を行列方式で表示する依存関係行列描画アルゴリズム（依存関係行列描画部）３３１２と、ノードの関係を、リンクを介してツリー状に描画するツリー描画部３３１３とを備えている。
【００６１】
これらの各種描画部（描画アルゴリズム３３１１〜３３１３）は、図１に示すディスプレイ画面９１の描画形式表示部９２４を通して選択的に指定可能である（ディスプレイ画面９１の詳細は後述する）。
【００６２】
グラフ図描画部３３１を構成する複数の描画アルゴリズム（３３１１〜３３１３）は、それぞれ独立しており、またプログラム解析層３１やグラフ構造分析層３２とも独立している。したがって、描画アルゴリズムを変更（追加，削除を含む）する場合でも、プログラム解析層３１、グラフ構造分析層（構造分析部）３２ついては再利用することができ、プログラム可視化装置の開発効率を向上させることができる。
【００６３】
分析手法表示作成部３３２１は、グラフ構造を分析する構造分析アルゴリズム（分析手法）の一覧表示を作成するほかに、分析対象プログラムの特性から、各構造分析アルゴリズムが、解析されたグラフ構造に対して適用可能であるか否か判別する構造分析アルゴリズム適否判別機能（構造分析アルゴリズム適否判別手段）を有する。この判別は、図１４の構造分析アルゴリズム属性記憶部３２２７のデータ構成３２２７１に基づき行なわれ、その判別結果が構造分析アルゴリズムの一覧表示作成に反映される。
【００６４】
図１６は、分析手法表示作成部３３２１で実行される構造分析アルゴリズム適否判別機能の処理の流れを示す図である。
【００６５】
分析手法表示作成部３３２１は、図１の分析手法表示部９１３に示すような構造分析アルゴリズム（分析手法）一覧表示を作成した後に、ステップＳ３３２１１から構造分析アルゴリズム適否判別処理を開始する。
【００６６】
ステップＳ３３２１２では、構造分析アルゴリズムのＩＤに１をセットする。ＩＤ１，ＩＤ２，ＩＤ３…ＩＤｎは、例えば図１４に示す一覧表示の分析アルゴリズム名に対応する。
【００６７】
ステップＳ３３２１３では、グラフ特性判定部３２０から現在の分析対象プログラムのネットワーク特性を取得する。
【００６８】
ステップＳ３３２１４では、構造分析アルゴリズム属性記憶部３２２７のデータに基づいて、現在のＩＤの構造分析アルゴリズムが分析対象プログラムのネットワーク特性に対して適用可能か否かを判定する。適用可能な場合はステップＳ３３２１５に進み、適用不可の場合にはステップＳ３３２１６に進む。
【００６９】
ステップＳ３３２１５では、現在のＩＤの構造分析アルゴリズムが適用可能であるとして、その旨を、ディスプレイ９（図１の分析手法表示部９２３）を介して表示する。
【００７０】
ステップＳ３３２１６では、現在のＩＤの構造分析アルゴリズムが適用不可であるとして、その旨を、ディスプレイ９（図１の分析手法表示部９２３）を介して表示する。
【００７１】
ステップＳ３３２１７では、構造分析アルゴリズムが最終ＩＤであるか否かを判定する。最終ＩＤであった場合にはステップＳ３３２１９に進み処理を終了し、最終ＩＤではない場合にはステップＳ３３２１８に進む。
【００７２】
ステップＳ３３２１８ではＩＤを１加算し、ステップＳ３３２１４に進む。以上の構造分析アルゴリズムの適否の判別結果は、次に述べるプログラム可視化装置１００のディスプレイの画面表示に反映される。
【００７３】
描画形式表示作成部３３２２は、描画形式の名称の一覧表示を作成するほかに、各描画形式（図１５の描画アルゴリズム３３１１〜３３１３）が構造分析層３２で実行されたグラフ構造分析に対して適用可能であるか否か判別する描画形式適否判別機能（描画形式適否判別手段）を有する。この判別結果は、描画アルゴリズム（描画形式）の一覧表示作成に反映される。
【００７４】
図１は、本構成によるプログラム可視化装置１００によってプログラムＡ２１の分析結果をディスプレイ９に表示した画面９１を示す図である。図示のように、１つの画面９１に、グラフ構造表示部（第１のウィンドウ）９１１と、分析対象プログラム表示部９１２と、分析手法表示部（第２のウィンドウ）９１３と、描画形式（描画手法）表示部（第３のウィンドウ）９１４とが設定されている。
【００７５】
グラフ構造表示部（第１のウィンドウ）９１１は、図１５に示すグラフ図描画部３３１により作成される。図１では、一例として、グラフ構造表示部９１１には、プログラムＡの分析結果として、ノード影響範囲が有向グラフ形式で表示されている。マウスカーソルがノードｄを指しているため、ノードｄの変更に影響を受ける、リンクで接続された変数が黒く強調表示されている。すなわち、グラフ構造表示部（第１ウィンドウ）９１１には、プログラム解析結果のグラフ構造とそのグラフ構造に対して適用された構造分析アルゴリズムの分析結果とを、画像描画層３３により実行される指定の描画形式を介して合成表示される。
【００７６】
分析対象表示部９１２には、一例として、分析対象プログラム名「プログラムＡ」と、グラフ構造の特性「非複雑ネットワーク」が表示されている。
【００７７】
分析手法表示部（第２のウィンドウ）９１３には、構造分析に用いる分析手法（構造分析アルゴリズム）の名称が表示されている。さらに、分析手法表示部９１３には、一覧表示される複数の分析手法（構造分析アルゴリズム）の名称から画面を通して所望の分析手法を指定する機能、および分析手法表示作成部（構造分析アルゴリズム適否判別手段）３３２１による判別結果（図１５、図１６参照）を表示する機能を有する。
【００７８】
例えば、分析手法表示部（第２ウィンドウ）９１３における所望の分析手法を指定する機能としては、図１に示すように所望の分析手法の指定マーク入力部をマウスポインタによりクリックする方式（図１では、ノード影響範囲分析の指定マーク入力部をクリックしている）がある。指定の仕方は、上記指定マーク入力部に代えて、所望の分析手法の名称をダブルクリックしたり、或いは各分析手法の名称がボタン表示で示され、これをクリックするなどしてもよい。上記したグラフ構造表示部（第１ウィンドウ）９１１には、分析手法表示部（第２ウィンドウ）９１３で指定した分析手法の分析結果がグラフ構造と合わせて表示される。
【００７９】
本実施例では、分析手法表示作成部３３２１（図１５）により実行される分析アルゴリズム適否判別結果は、その分析アルゴリズム（分析手法）の名称に重ね合わせて表示される。例えば、図１では、一例として、分析対象プログラムＡ（グラフ特性：非複雑ネットワーク）については、コミュニティ構造分析およびノード重要度分析が適用不可として、それらの名称の上に取り消し線が引かれる。適用可の分析アルゴリズムについては、取り消し線無しの状態でそのまま表示される。さらに、本実施例では、分析対象プログラムにおいて適用可能な分析アルゴリズムと適用できない分析アルゴリズムとを、表示順序を変更して表示する。図１では、表示順序変更後の画面を示しており、分析手法適用不可の分析手法を第２ウィンドウ９１２内の下位位置に移動させている。なお、本実施例は表示手法の一例であり、その表示手法を実施例のものに限定されるものではない。例えば、分析対象プログラムに適用可能な分析手法と適用不可の分析手法とを、少なくとも色相、明度、彩度のいずれかを用いて識別表示してもよい。
【００８０】
描画形式表示部（第３のウィンドウ）９１４には、指定対象となる描画形式の一覧が示されている。ここでは、一例として、有効グラフ、ツリー、依存関係行列の３つの描画形式を一覧表示している。この描画形式表示部９１４は、描画形式の一覧表示のほかに、次のような機能も有する。一つは、一覧表示される複数の描画形式の名称から画面を通して所望の描画形式を指定する機能を有する。この指定の仕方は、上記した分析手法一覧の中から所望の分析手法を指定する方式と同様に行なえばよい。もう一つは、描画形式表示作成部３３２２（図１５）で実行された描画形式適否判別の結果を、描画形式一覧表示に反映させて表示する機能を有する。この場合にも、既述した分析アルゴリズムの適否同様に、取消し線、網掛け、色相、明度、彩度のいずれかを用いて識別表示してもよい。さらに、適否判別結果に応じて表示優先順序を変えてもよい。
【００８１】
本実施例で示すように、画面表示を通して、（i）分析対象プログラムに適用できる分析手法と適用できない分析手法との表示方法を切り替えることによって、さらに、（ii）グラフ構造に応じて描画が可能な描画形式と不可の描画形式の表示方法を切り替えることにより、グラフ理論や統計分析の専門知識を持たない利用者でも適切な分析手法、描画形式を選択することができる。
【００８２】
図１７は、本構成によるプログラム可視化装置１００によってプログラムＢ２２の分析結果をディスプレイ９に表示した画面９２を示す図である。画面９２は、グラフ構造表示部９２１と、分析対象プログラム表示部９２２と、分析手法表示部９２３と、描画形式表示部９２４とで構成されている。
【００８３】
グラフ構造表示部９２１には、プログラムＢの分析結果として、コミュニティ構造が有向グラフ形式で表示されている。
【００８４】
分析対象表示部９２２には、分析対象プログラム名「プログラムＢ」と、グラフ構造の特性「複雑ネットワーク」が表示されている。
【００８５】
分析手法表示部９２３には、構造分析に用いる分析手法が示されている。プログラムＢは複雑ネットワークであり、本実施例では全ての分析手法が選択可能となっている。
【００８６】
描画形式表示部９２４には、描画形式の一覧が示されている。
【００８７】
これらの表示部９２１〜９２４の表示の形態及び機能は、図１の表示部９１１〜９１４と同様であるので、説明を省略する。
【００８８】
なお、図１の例では、分析手法としてノード影響範囲分析のグラフ構造を有向グラフで表示したものを例示し、図１７の例では、分析手法としてコミュニティ構造分析を有向グラフで表示したものを例示し、その他の分析手法や描画形式によるグラフ構造分析の描画表示について図示省略している。その理由は、その他の分析手法や描画形式も、それ自体は周知な事項であり、描画作成自体は、本明細書に具体的例示を示さなくても、当業者であれば容易に実施可能なものであるので、図示省略したものである。ちなみに、依存関係行列の描画については、本明細書の従来技術で紹介した特許文献４に開示されている。
【符号の説明】
【００８９】
１００：プログラム可視化装置、３１：プログラム解析層（プログラム解析手段）、３２：グラフ構造分析層（グラフ構造解析手段）、３３：画像描画層（画像描画解析手段）、９１：表示画面、９１１：グラフ構造表示部（第１のウィンドウ）、９１２：分析対象プログラム表示部、９１３：分析手法表示部（第２のウィンドウ）、９１４：描画形式表示部（第３のウィンドウ）。
【図１】
2012172687.tif 000003
【図２】
2012172687.tif 000004
【図３】
2012172687.tif 000005
【図４】
2012172687.tif 000006
【図５】
2012172687.tif 000007
【図６】
2012172687.tif 000008
【図７】
2012172687.tif 000009
【図８】
2012172687.tif 000010
【図９】
2012172687.tif 000011
【図１０】
2012172687.tif 000012
【図１１】
2012172687.tif 000013
【図１２】
2012172687.tif 000014
【図１３】
2012172687.tif 000015
【図１４】
2012172687.tif 000016
【図１５】
2012172687.tif 000017
【図１６】
2012172687.tif 000018
【図１７】
2012172687.tif 000019
【国際調査報告】
2012172687.tif 000020
2012172687.tif 000021
2012172687.tif 000022
2012172687.tif 000023