"ユーザからの所定の入力によって解析対象プログラムの指定を受け付ける入力受付部と、前記入力受付部にて指定された前記解析対象プログラムに含まれる複数のサブルーチンのコードに基づき、フローチャートを表す有向グラフのデータを生成するフローチャート生成部と、前記フローチャート生成部にて生成された前記有向グラフのデータに基づいて前記サブルーチン間の呼び出し関係を抽出し、呼び出し元のサブルーチン内の呼び出し処理に対応する節点から呼び出し先のサブルーチンの入り口に対応する節点に向けて当該2つの節点を接続する、前記呼び出し関係を表す有向辺である呼び出し辺のデータを生成し、当該呼び出し辺のデータを前記有向グラフのデータに付加する呼び出し関係付加部と、前記呼び出し関係付加部にて生成された前記有向グラフのデータに基づいて、前記サブルーチン内の条件式を用いる処理において参照される変数値を決定する処理に対応する節点を抽出し、前記変数値を決定する処理に対応する節点から前記条件式を用いる処理に対応する節点に向けて当該2つの節点を接続する、前記2つの節点のデータ依存関係を表す有向辺であるデータ依存辺のデータを生成し、当該データ依存辺のデータを前記有向グラフのデータに付加する条件式データ依存関係付加部と、前記条件式データ依存関係付加部にて生成された前記有向グラフのデータに基づいて、前記フローチャートのレイアウトデータを生成するグラフレイアウト決定部と、前記グラフレイアウト決定部にて生成された前記レイアウトデータに基づいて、前記フローチャートを出力して表示する表示部と、を備える、プログラム解析装置。前記入力受付部にて前記解析対象プログラムとともに指定された解析対象サブルーチンと、前記条件式データ依存関係付加部にて生成された前記有向グラフのデータとに基づいて、前記解析対象サブルーチンに関連するサブルーチンのうちの前記データ依存辺を含まず前記条件式に影響しない非影響サブルーチンを抽出し、当該非影響サブルーチンのデータを生成する制御フロー非影響部分抽出部をさらに備え、前記グラフレイアウト決定部は、前記条件式データ依存関係付加部にて生成された前記有向グラフのデータと、前記制御フロー非影響部分抽出部にて生成された前記非影響サブルーチンのデータとに基づいて、前記非影響サブルーチンを除く前記フローチャートのレイアウトデータを生成することを特徴とする、請求項1に記載のプログラム解析装置。前記条件式データ依存関係付加部にて生成された前記有向グラフのデータに基づいて、前記各サブルーチンをそれぞれまとめて代表節点とし、前記有向グラフのデータを、前記代表節点と当該代表節点間を接続する前記呼び出し辺および前記データ依存辺とを含むコールグラフのデータに変換して生成するコールグラフ変換部をさらに備え、前記グラフレイアウト決定部は、前記コールグラフ変換部にて生成された前記コールグラフのデータに基づいて、前記コールグラフのレイアウトデータを生成することを特徴とする、請求項1に記載のプログラム解析装置。前記コールグラフ変換部にて生成された前記コールグラフのデータに基づいて、前記各代表節点をそれぞれクラス毎にまとめてクラス節点とし、前記コールグラフのデータを、前記クラス節点と当該クラス節点間を接続する前記呼び出し辺および前記データ依存辺とを含むクラス図のデータに変換して生成するクラス図変換部をさらに備え、前記グラフレイアウト決定部は、前記クラス図変換部にて生成された前記クラス図のデータに基づいて、前記クラス図のレイアウトデータを生成することを特徴とする、請求項3に記載のプログラム解析装置。コンピュータをプログラム解析装置として機能させるためのプログラム解析プログラムであって、aユーザからの所定の入力によって解析対象プログラムの指定を受け付ける手順と、b前記手順aにて指定された前記解析対象プログラムに含まれる複数のサブルーチンのコードに基づき、フローチャートを表す有向グラフのデータを生成する手順と、c前記手順bにて生成された前記有向グラフのデータに基づいて前記サブルーチン間の呼び出し関係を抽出し、呼び出し元のサブルーチン内の呼び出し処理に対応する節点から呼び出し先のサブルーチンの入り口に対応する節点に向けて当該2つの節点を接続する、前記呼び出し関係を表す有向辺である呼び出し辺のデータを生成し、当該呼び出し辺のデータを前記有向グラフのデータに付加する手順と、d前記手順cにて生成された前記有向グラフのデータに基づいて、前記サブルーチン内の条件式を用いる処理において参照される変数値を決定する処理に対応する節点を抽出し、前記変数値を決定する処理に対応する節点から前記条件式を用いる処理に対応する節点に向けて当該2つの節点を接続する、前記2つの節点のデータ依存関係を表す有向辺であるデータ依存辺のデータを生成し、当該データ依存辺のデータを前記有向グラフのデータに付加する手順と、e前記手順dにて生成された前記有向グラフのデータに基づいて、前記フローチャートのレイアウトデータを生成する手順と、f前記手順eにて生成された前記レイアウトデータに基づいて、前記フローチャートを出力して表示する手順と、をコンピュータに実行させることを特徴とする、プログラム解析プログラム。非特許文献1によれば、フローチャートは、プログラムの制御フローの形状をユーザが理解しやすい有向グラフの形で表現することができる。しかし、フローチャートは、条件分岐処理や繰り返し処理に用いられる条件式と、当該条件式で使用する変数の値を決定する処理との関係を表現していないため、制御フローがプログラム中のどこでどのように決まるか以下、単に制御フローの決まり方とも称するをユーザが理解することは難しい。また、フローチャートはサブルーチンごとに作成されるため、大規模なプログラムではフローチャートが非常に多くなり、ユーザがフローチャート間の関係性を把握するのが困難になりやすい。また、特許文献1に記載の条件依存グラフの単純化によれば、非特許文献1に記載のフローチャートよりもグラフの規模は小さくなるが、条件分岐処理や繰り返し処理に用いられる条件式と、当該条件式で使用する変数の値を決定する処理との関係を表現していないため、制御フローの決まり方をユーザが理解することは難しい。また、プログラムに複数のサブルーチンが含まれていて、それらが相互に呼び出し合うようにプログラムが構成されている場合における条件依存グラフを作成する方法が開示されておらず、大規模なプログラムの全体をユーザが解析する作業をどのように支援するのか不明である。このように、従来による図的表現をユーザが見ることによって、プログラムの制御フローの決まり方を理解することは難しい。また、特に多数のサブルーチンを含む大規模なプログラムを解析する場合には、多数の図的表現間の関係性をユーザが把握することが困難になりやすい。本発明は、これらの問題を解決するためになされたものであり、多数のサブルーチンを含む大規模なプログラムをユーザが解析する際の作業の効率を向上させることが可能なプログラム解析装置およびプログラム解析プログラムを提供することを目的とする。上記の課題を解決するために、本発明によるプログラム解析装置は、ユーザからの所定の入力によって解析対象プログラムの指定を受け付ける入力受付部と、入力受付部にて指定された解析対象プログラムに含まれる複数のサブルーチンのコードに基づき、フローチャートを表す有向グラフのデータを生成するフローチャート生成部と、フローチャート生成部にて生成された有向グラフのデータに基づいてサブルーチン間の呼び出し関係を抽出し、呼び出し元のサブルーチン内の呼び出し処理に対応する節点から呼び出し先のサブルーチンの入り口に対応する節点に向けて当該2つの節点を接続する、呼び出し関係を表す有向辺である呼び出し辺のデータを生成し、当該呼び出し辺のデータを有向グラフのデータに付加する呼び出し関係付加部と、呼び出し関係付加部にて生成された有向グラフのデータに基づいて、サブルーチン内の条件式を用いる処理において参照される変数値を決定する処理に対応する節点を抽出し、変数値を決定する処理に対応する節点から条件式を用いる処理に対応する節点に向けて当該2つの節点を接続する、2つの節点のデータ依存関係を表す有向辺であるデータ依存辺のデータを生成し、当該データ依存辺のデータを有向グラフのデータに付加する条件式データ依存関係付加部と、条件式データ依存関係付加部にて生成された有向グラフのデータに基づいて、フローチャートのレイアウトデータを生成するグラフレイアウト決定部と、グラフレイアウト決定部にて生成されたレイアウトデータに基づいて、フローチャートを出力して表示する表示部とを備える。本発明によると、ユーザからの所定の入力によって解析対象プログラムの指定を受け付ける入力受付部と、入力受付部にて指定された解析対象プログラムに含まれる複数のサブルーチンのコードに基づき、フローチャートを表す有向グラフのデータを生成するフローチャート生成部と、フローチャート生成部にて生成された有向グラフのデータに基づいてサブルーチン間の呼び出し関係を抽出し、呼び出し元のサブルーチン内の呼び出し処理に対応する節点から呼び出し先のサブルーチンの入り口に対応する節点に向けて当該2つの節点を接続する、呼び出し関係を表す有向辺である呼び出し辺のデータを生成し、当該呼び出し辺のデータを有向グラフのデータに付加する呼び出し関係付加部と、呼び出し関係付加部にて生成された有向グラフのデータに基づいて、サブルーチン内の条件式を用いる処理において参照される変数値を決定する処理に対応する節点を抽出し、変数値を決定する処理に対応する節点から条件式を用いる処理に対応する節点に向けて当該2つの節点を接続する、2つの節点のデータ依存関係を表す有向辺であるデータ依存辺のデータを生成し、当該データ依存辺のデータを有向グラフのデータに付加する条件式データ依存関係付加部と、条件式データ依存関係付加部にて生成された有向グラフのデータに基づいて、フローチャートのレイアウトデータを生成するグラフレイアウト決定部と、グラフレイアウト決定部にて生成されたレイアウトデータに基づいて、フローチャートを出力して表示する表示部とを備えるため、多数のサブルーチンを含む大規模なプログラムをユーザが解析する際の作業の効率を向上させることが可能となる。本発明の実施形態について、図面に基づいて以下に説明する。実施形態1図1は、本発明の実施形態1によるプログラム解析装置100の構成を示すブロック図である。図1に示すように、本実施形態1によるプログラム解析装置100は、入力受付部1と、フローチャート生成部2と、呼び出し関係付加部3と、条件式データ依存関係付加部4と、グラフレイアウト決定部5と、表示部6とを備えている。入力受付部1は、ユーザから解析対象のプログラム以下、解析対象プログラムとも称するの指定所定の入力を受け付けて、フローチャート生成部2に対して当該解析対象プログラムを指定する。フローチャート生成部2は、入力受付部1から指定された解析対象プログラムに含まれる各サブルーチンについて、当該各サブルーチンのコードソースコードに基づいてフローチャートを表す有向グラフのデータを作成する以下、フローチャートにおいてノード節点間を接続する有向辺を制御辺とも称する。呼び出し関係付加部3は、フローチャート生成部2が作成した全てのフローチャートサブルーチン間の呼び出し関係を抽出して、呼び出し元の処理に対応する節点から呼び出し先のサブルーチンの入り口に対応する節点に向けた呼び出し関係を表す有向辺以下、呼び出し辺とも称するを付加して上記2つの節点を接続する。このように、呼び出し関係付加部3は、全ての呼び出し関係に対応する呼び出し辺を付加することによって、解析対象プログラムの入り口に対応する節点と直接的あるいは間接的に制御辺あるいは呼び出し辺で接続された有向グラフのデータを作成する。条件式データ依存関係付加部4は、呼び出し関係付加部3が作成した有向グラフのデータにおける条件分岐処理に対応する全ての節点に対して、各節点に対応する処理で用いられる条件式が参照する全ての変数について、当該変数に値を設定する処理に対応する節点を制御辺あるいは呼び出し辺を逆向きに辿って遡って見つけ出し、変数に値を設定する処理に対応する節点から変数を参照する処理条件分岐処理に対応する節点に向けた有向辺以下、データ依存辺とも称するを付加して上記2つの節点を接続する。すなわち、条件式データ依存関係付加部4は、呼び出し関係付加部にて生成された有向グラフのデータに基づいて、サブルーチン内の条件式を用いる処理において参照される変数値を決定する処理に対応する節点を抽出し、変数値を決定する処理に対応する節点から条件式を用いる処理に対応する節点に向けて当該2つの節点を接続する、2つの節点のデータ依存関係を表す有向辺であるデータ依存辺のデータを生成し、当該データ依存辺のデータを有向グラフのデータに付加する。このように、条件式データ依存関係付加部4は、条件分岐処理に対応する全ての節点にデータ依存辺を付加した有向グラフ以下、フローグラフとも称するのデータを作成する。グラフレイアウト決定部5は、条件式データ依存関係付加部4が作成したフローグラフフローチャートを出力する際における節点と辺のレイアウトを決定してレイアウトデータを作成する。表示部6は、グラフレイアウト決定部5が作成したレイアウトデータすなわち、フローグラフを出力して表示する。図2は、本発明の実施形態1によるプログラム解析装置100を実現するためのコンピュータのハードウェアの構成を示す図である。図2に示すように、本実施形態1によるコンピュータは、キーボード101と、マウス102と、マイクロプロセッサ103と、HDDHardDiskDrive:ハードディスク装置104と、RAMRandomAccessMemory105と、ROMReadOnlyMemory106と、グラフィックチップ107と、フレームバッファ108と、ディスプレイモニタ109とを備えている。入力受付部1は、キーボード101およびマウス102で実現されている。フローチャート生成部2、呼び出し関係付加部3、条件式データ依存関係付加部4、およびグラフレイアウト決定部5は、それぞれの機能に対応したプログラムが、HDD104、RAM105、あるいはROM106等の記憶領域に格納されており、これらのプログラムをマイクロプロセッサ103が実行することによって各機能が実現されている。表示部6は、グラフィックチップ107、フレームバッファ108およびディスプレイモニタ109で実現されている。次に、有向グラフおよびフローグラフのデータについて説明する。なお、説明の簡単のため、以下では具体例を用いて説明する。図3は、本発明の実施形態1による解析対象プログラムの一例を示す図である。また、図4は、本実施形態1によるプログラム解析装置が図3に示す解析対象プログラムを解析して出力したフローグラフの一例を示す図である。また、図5は、図4に示すフローグラフに対応するデータの一例を示す図である。以下、図5を用いてフローチャート生成部2、呼び出し関係付加部3、条件式データ依存関係付加部4、およびグラフレイアウト決定部5のそれぞれが取り扱うデータの内容を説明する。図5に示すように、図4に示すフローグラフ有向グラフに含まれる節点の1つが、図3に示す解析対象プログラムにおける1つの行に対応している。節点IDは、有向グラフの節点に固有の識別子である。有向グラフの各節点は図3のプログラム中のいずれか1つの文に対応しており、ステートメントは、各節点に対応するプログラム文の内容を示している。節点種別は、有向グラフの節点に対応するプログラム中の文がフローチャートにおける図的表現のいずれの種類に該当するのかを示している。制御辺接続先IDは、ある節点と制御辺で接続する接続先の節点の節点IDを示し、条件成立時制御辺接続先IDは、節点種別が条件分岐処理である場合に、当該条件分岐処理に付随する条件式の成立時に条件分岐処理に対応する節点と制御辺で接続する接続先の節点IDを示し、条件不成立時制御辺接続先IDは、節点種別が条件分岐処理である場合に、当該条件分岐処理に付随する条件式の不成立時に条件分岐処理に対応する節点と制御辺で接続する接続先の節点IDを示している。呼び出し辺接続先IDは、節点種別が定義済み処理である場合に、当該定義済み処理に対応する節点と呼び出し辺で接続する接続先の節点IDを示し、データ依存辺接続先IDは、変数の値を変更する節点とデータ依存辺で接続する接続先である変数の値を参照する節点の節点IDを示している。図6,7は、本実施形態1によるグラフレイアウト決定部5が図4に示すフローグラフを作成する際における図的表現のレイアウトに関するデータの一例を示す図である。以下、図6,7を用いてグラフレイアウト決定部5および表示部6が取り扱うデータの内容を説明する。図6は、フローグラフの節点のレイアウトに関するデータの一例を示す図である。図6に示す1つの行は、フローグラフに含まれる節点の1つに対応している。図6において、節点種別は図5に示す節点種別と同じであり、各節点を出力する際には図8に例示されるような接点種別と図形との対応関係に従って、フローグラフに用いられる図形が定まる。また、図6において、ラベルは各節点を出力する際に当該節点に対応する図形の内部又は近傍に表示する文字列を示し、座標は各節点の座標位置を示している。図7は、フローグラフの辺のレイアウトに関するデータの一例を示す図である。図7に示す1つの行は、フローグラフに含まれる辺の1つに対応する。図7において、辺種別は各辺が制御辺、呼び出し辺、またはデータ依存辺のいずれであるかを示しており、各辺を出力する際には図9に例示されるような辺種別と図形との対応関係に従ってフローグラフに用いられる図形が定まる。また、図7において、始点座標は辺の始点の座標位置を示し、終点座標は辺の終点の座標位置を示している。次に、本実施形態1によるプログラム解析装置100の動作について説明する。説明の簡単のため、以下では、図3に示す解析対象プログラムをユーザが解析対象として指定したものとする。入力受付部1からユーザによる所定の動作で解析対象プログラムが指定されると、フローチャート生成部2に対して解析対象プログラムを解析するよう指示される。フローチャート生成部2は、図3に示すプログラムのコードをHDD104、RAM105、またはROM106等の記憶領域から読み込み、図3に示す解析対象プログラムに対応するフローチャートを表す有向グラフのデータを作成する。図10は、本実施形態1によるフローチャート生成部2が図3に示す解析対象プログラムを解析して作成した有向グラフのデータの一例を示す図である。また、図11は、図10に示すデータに対応する有向グラフの一例を示す図である。フローチャート生成部2は、解析対象プログラムを解析して、図10に示されるデータの節点ID、ステートメント、節点種別、制御辺接続先ID、条件成立時制御辺接続先ID、および条件不成立時制御辺接続先IDの各々に値を記録する。図12は、本実施形態1によるフローチャート生成部2における図10に示すデータの記録動作を示すフローチャートである。以下、図12に示すフローチャートを参照して、フローチャート生成部2の動作を詳細に説明する。フローチャート生成部2は、解析対象プログラムの先頭から終端までの文を1つずつ順に読み込んで、図12に示す動作を行う。まず、解析対象プログラムの次の文を読み込むステップS1201。以下、ステップS1201にて読み込んだプログラム文をsとする。なお、解析対象プログラムを初めて読み込んだときは、上記次の文を先頭の文に置き換えるものとする。次に、プログラム文sに対応する節点のデータとして、プログラム文sに固有のIDを節点IDに記録し、プログラム文sの内容をステートメントに記録し、次に次回読み込むプログラム文に割り当てられる節点IDを制御辺接続先IDに記録するステップS1202。ステップS1202の後、プログラム文sの種類種別を判定するステップS1203。プログラム文sが条件分岐文である場合はステップS1204へ進む。また、プログラム文sが繰り返し文である場合はステップS1211へ進む。また、プログラム文sがサブルーチンの呼び出し文である場合はステップS1216へ進む。また、プログラム文sがサブルーチンの入り口である場合はステップS1217へ進む。また、プログラム文sがサブルーチンの出口である場合はステップS1218へ進む。また、上記のいずれのプログラム文でない場合はステップS1219へ進む。プログラム文sが条件分岐文である場合において、プログラム文sの節点種別に条件分岐処理を記録し、プログラム文sの制御辺接続先IDを削除する。また、プログラム文sの条件式成立時制御辺接続先IDとして、次に読み込む文に割り当てられる節点IDを記録するステップS1204。ステップS1204の後、条件成立時における処理の終端までプログラム文sを読み込んだか判定するステップS1205。まだ読み込んでいないプログラム文sがある場合はステップS1206へ進む。それ以外の場合処理の終端までプログラム文sを読み込んだ場合はステップS1207へ進む。ステップS1204にてまだ読み込んでいないプログラム文sがあると判定されると、図12に示すフローチャートの処理を呼び出し、条件成立時における処理の終端までプログラム文sを読み込んで処理を行うステップS1206。ステップS1205にて処理の終端までプログラム文sを読み込んだと判定されると、プログラム文sの条件不成立時制御辺接続先IDとして、次に読み込むプログラム文sに割り当てられる節点IDを記録するステップS1207。ステップS1207の後、条件不成立時における処理の終端までプログラム文sを読み込んだか判定するステップS1208。まだ読み込んでいないプログラム文sがある場合はステップS1209へ進む。それ以外の場合処理の終端までプログラム文sを読み込んだ場合はステップS1210へ進む。ステップS1208にてまだ読み込んでいないプログラム文sがあると判定されると、図12に示すフローチャートの処理を呼び出し、条件不成立時における処理の終端までプログラム文sを読み込んで処理を行うステップS1209。ステップS1208にて、条件不成立時における処理の終端までプログラム文sを読み込んだと判定されると、条件成立時の処理に対応する節点の系列の末尾である節点の制御辺接続先IDとして、次に読み込むプログラム文sに割り当てられる節点IDを記録するステップS1210。プログラム文sが繰り返し文である場合において、プログラム文sの節点種別に繰り返し処理を記録し、プログラム文sの制御辺接続先IDを削除する。また、プログラム文sの条件式成立時制御辺接続先IDとして、次に読み込むプログラム文sに割り当てられる節点IDを記録するステップS1211。ステップS1211の後、条件成立時における処理の終端まで読み込んだか判定するステップS1212。まだ読み込んでいないプログラム文sがある場合はステップS1213へ進む。それ以外の場合処理の終端までプログラム文sを読み込んだ場合はステップS1214へ進む。ステップS1212にてまだ読み込んでいないプログラム文sがあると判定されると、図12に示すフローチャートの処理を呼び出し、条件成立時における処理の終端までプログラム文sを読み込んで処理を行うステップS1213。ステップS1212にて処理の終端までプログラム文sを読み込んだと判定されると、プログラム文sの条件不成立時制御辺接続先IDとして、次に読み込むプログラム文sに割り当てられる節点IDを記録するステップS1214。ステップS1214の後、条件成立時の処理に対応する節点の系列の末尾である節点の制御辺接続先IDとして、次に読み込むプログラム文sに割り当てられる節点IDを記録するステップS1215。プログラム文sがサブルーチンの呼び出し文である場合において、プログラム文sの節点種別に定義済み処理を記録するステップS1216。プログラム文sがサブルーチンの入り口である場合において、プログラム文sの節点種別に入り口を記録するステップS1217。プログラム文sがサブルーチンの出口である場合において、プログラム文sの節点種別に出口を記録するステップS1218。プログラム文sが上記のいずれのプログラム文でない場合において、プログラム文sの節点種別に処理を記録するステップS1219。次に、呼び出し関係付加部3の動作について説明する。呼び出し関係付加部3は、フローチャート生成部2が作成したデータ例えば、図10参照に含まれる節点種別が定義済み処理である全ての節点について、呼び出し先のサブルーチンの入り口に対応する節点の節点IDを呼び出し辺接続先IDに記録する。図13は、本実施形態1による呼び出し関係付加部3が図10に示すデータに基づいて作成した有向グラフのデータの一例を示す図である。また、図14は、図13に示すデータに対応する有向グラフの一例を示す図である。次に、条件式データ依存関係付加部4の動作について説明する。条件式データ依存関係付加部4は、呼び出し関係付加部3が作成したデータ例えば、図13参照に含まれる節点種別が条件分岐処理である節点nのそれぞれについて、以下に説明する動作を行う。以下の説明では、節点nのステートメントの条件式が参照する変数の集合をRnとし、節点nの節点IDと集合Rnとの組を要素とする集合をTとする。また、制御辺接続先ID、条件成立時制御辺接続先ID、または条件不成立時制御辺接続先IDが節点nの節点IDである節点mの集合をMと記す。条件式データ依存関係付加部4は、集合M中の節点mのそれぞれについて、図15に示すフローチャートの通りの動作を行う。以下、図15のフローチャートを参照して、条件式データ依存関係付加部4が節点mを処理する動作について詳細に説明する。まず、節点mの節点種別を判定するステップS1501。節点mの節点種別が処理である場合はステップS1502へ進む。また、節点mの節点種別が条件分岐処理である場合はステップS1508へ進む。また、節点mの節点種別が入り口である場合はステップS1510へ進む。また、節点mの節点種別が定義済み処理である場合はステップS1514へ進む。また、上記のいずれでもない場合は、呼び出し元へ戻る。節点mの節点種別が処理である場合において、節点mのステートメント中で値を設定する変数の集合Wmを作成するステップS1502。ステップS1502の後、集合Wmが空でないか集合Wmが存在するか否か判定するステップS1503。ステップS1503にて集合Wmが空でない場合と判定されるとステップS1504へ進む。それ以外の場合集合Wmが空である場合はステップS1508へ進む。ステップS1503にて集合Wmが空でないと判定されると、集合Tの要素で、集合Wm中のいずれかの変数を含む集合Rxのそれぞれについて、次の処理を行う。すなわち、集合Rx中の全ての節点xについて、節点mのデータ依存辺接続先IDに節点xの節点IDを記録し、集合Rxから集合Wmと共通する要素を取り除く処理を行うステップS1504。ステップS1504の後、節点mのステートメント中で値を参照する変数の集合Rmを作成するステップS1505。ステップS1505の後、集合Rmが空でないか集合Rmが存在するか否か判定するステップS1506。ステップS1506にて集合Rmが空でないと判定されるとステップS1507へ進む。それ以外の場合集合Rmが空である場合はステップS1508へ進む。ステップS1506にて集合Rmが空でないと判定されると、節点mの節点IDと集合Rmの組を集合Tに追加するステップS1507。節点mの節点種別が条件分岐処理である場合において、制御辺接続先ID、条件成立時制御辺接続先ID、または条件不成立時制御辺接続先IDが、節点mの節点IDである節点の集合Hを作成するステップS1508。ステップS1508の後、集合H中の各節点をmとして、図15に示すフローチャートの処理を呼び出して順次処理を行うステップS1509。節点mの節点種別が入り口である場合において、呼び出し辺接続先IDが節点mの節点IDである節点の集合Pを作成するステップS1510。ステップS1510の後、集合Pが空でないか集合Pが存在するか否か判定するステップS1511。ステップS1511にて集合Pが空でないと判定されるとステップS1512へ進む。それ以外の場合集合Pが空である場合は、呼び出し元へ戻る。ステップS1511にて集合Pが空でないと判定されると、制御辺接続先ID、条件成立時制御辺接続先ID、または条件不成立時制御辺接続先IDが、集合P中のいずれかの節点の節点IDである節点の集合Qを作成するステップS1512。ステップS1512の後、集合Q中の各節点をmとして、図15に示すフローチャートの処理を呼び出して順次処理を行うステップS1513。節点mの節点種別が定義済み処理である場合において、節点IDが節点mの呼び出し辺接続先IDである節点から制御辺を辿って、節点種別が出口である節点eを取得するステップS1514。ステップS1514の後、制御辺接続先ID、条件成立時制御辺接続先ID、または条件不成立時制御辺接続先IDが節点eの節点IDである節点の集合Kを作成するステップS1515。ステップS1515の後、集合K中の各節点をmとして、図15に示すフローチャートの処理を呼び出して順次処理を行うステップS1516。次に、グラフレイアウト決定部5の動作について説明する。グラフレイアウト決定部5は、条件式データ依存関係付加部4が作成したデータ例えば、図5参照に含まれる全ての節点および辺についてディスプレイモニタ109上での座標位置を決定し、図6に示すデータの座標、および図7に示すデータの始点座標と終点座標に記録する。また、グラフレイアウト決定部5は、各節点の内部または近傍に出力する文字列をステートメントから抜き出して図6に示すデータのラベルに記録する。次に、表示部6の動作について説明する。表示部6は、グラフレイアウト決定部5が作成した2つのデータ図6,7に示すデータをディスプレイモニタ109に出力する。図4は、表示部6が図6,7に示すデータをディスプレイモニタ109に出力した際の表示画面の一例を示す図である。以上のことから、本実施形態1によるプログラム解析装置100は、解析対象プログラムに含まれる条件分岐処理や繰り返し処理の条件式と、当該条件式で参照される変数の値を決定する処理とを抽出し、これら2つの処理に対応する2つの節点をデータ依存辺で接続することを再帰的に繰り返して、解析対象プログラム中で条件式が参照する変数の値の決定に影響する全ての処理を抽出する条件式データ依存関係付加部4を備えているため、プログラム解析装置100から出力される図的表現を見ることによって、解析対象プログラムの制御フローをユーザが解析する際の作業の効率を向上させることができる。すなわち、多数のサブルーチンを含む大規模なプログラムを解析する際の作業の効率を向上させることが可能となる。実施形態2図16は、本発明の実施形態2によるプログラム解析装置200の構成を示すブロック図である。図16に示すように、本実施形態2によるプログラム解析装置200は、制御フロー非影響部分抽出部7を備えることを特徴としている。その他の構成は、実施形態1と同様であるため、ここでは説明を省略する。入力受付部1は、ユーザから解析対象プログラムおよびサブルーチンの指定を受け付けて、フローチャート生成部2に対して解析対象プログラムを指定し、制御フロー非影響部分抽出部7に対して解析対象のサブルーチン以下、解析対象サブルーチンとも称するを指定する。制御フロー非影響部分抽出部7は、入力受付部1から解析対象サブルーチンを指定され、かつ条件式データ依存関係付加部4がフローグラフを作成すると、当該フローグラフのうちで解析対象サブルーチンに対応する部分グラフ中の節点から制御辺または呼び出し辺を順方向に辿って到達可能なサブルーチンに対応する全ての部分グラフ以下、下流部分グラフ集合とも称するを抽出し、下流部分グラフ集合中の各部分グラフ以下、下流部分グラフとも称するについて、下流部分グラフ中の部分グラフであり、かつ当該部分グラフ内から外部へ出るデータ依存辺が存在しない最大のもの以下、非影響部分グラフとも称するを抽出して非影響部分グラフのデータを作成する。すなわち、制御フロー非影響部分抽出部7は、入力受付部1にて解析対象プログラムとともに指定された解析対象サブルーチンと、条件式データ依存関係付加部4にて生成されたフローグラフ有向グラフのデータとに基づいて、解析対象サブルーチンに関連するサブルーチンのうちのデータ依存辺を含まず条件式に影響しない非影響部分グラフ非影響サブルーチンを抽出し、当該非影響部分グラフのデータを生成する。グラフレイアウト決定部5は、条件式データ依存関係付加部4が作成したフローグラフのデータと、制御フロー非影響部分抽出部7が作成した非影響部分グラフのデータとを組み合わせて出力する際の節点および辺のレイアウトを決定してレイアウトデータを作成する。すなわち、グラフレイアウト決定部は、条件式データ依存関係付加部4にて生成されたフローグラフ有向グラフのデータと、制御フロー非影響部分抽出部7にて生成された非影響部分グラフ非影響サブルーチンのデータとに基づいて、記非影響部分グラフを除くフローグラフフローチャートのレイアウトデータを生成する。その他の構成は実施形態1と同様であるため、ここでは説明を省略する。本実施形態2のプログラム解析装置200を実現するためのコンピュータのハードウェアの構成は、実施形態1と同じである図2参照。制御フロー非影響部分抽出部7は、その機能に対応したプログラムが、HDD104、RAM105、またはROM106等の記憶領域に格納されており、このプログラムをマイクロプロセッサ103が実行することによって制御フロー非影響部分抽出部7の機能が実現されている。その他の各機能の実現方法は、実施形態1と同様であるため、ここでは説明を省略する。次に、非影響部分グラフのデータについて説明する。なお、説明の簡単のため、以下では具体例を用いて説明する。また、本実施形態2では、解析対象プログラムの一例として図3に示すプログラムを使用するものとして説明する。図17は、本実施形態2によるプログラム解析装置200が、ユーザから図3に示す解析対象プログラムおよびサブルーチンSubroutine_Aを指定された際に出力するフローグラフの一例を示す図である。また、図18は、制御フロー非影響部分抽出部7が図3に示す解析対象プログラムを解析して作成した非影響部分グラフのデータの一例を示す図である。以下、図18を用いて制御フロー非影響部分抽出部7およびグラフレイアウト決定部5が取り扱うデータの内容を説明する。図18において、有向グラフに含まれる節点の1つが図3に示す解析対象プログラムにおける1つの行に対応している。また、節点IDは図5に示す節点IDと同じである。図18に示すように、制御フロー非影響節点の項目には、サブルーチンSubroutine_Aの非影響部分グラフに含まれる節点についてはYesが記録され、それ以外の節点についてはNoが記録される。次に、本実施形態2によるプログラム解析装置200の動作について説明する。入力受付部1からユーザによる所定の動作で解析対象プログラムおよび解析対象サブルーチンが指定されると、フローチャート生成部2に対して解析対象プログラムを解析するよう指示され、制御フロー非影響部分抽出部7に対して解析対象サブルーチンの識別子が入力される。説明の簡単のため、以下では、図3に示す解析対象プログラムおよびサブルーチンSubroutine_Aをユーザが解析対象として指定したものとする。フローチャート生成部2、呼び出し関係付加部3、および条件式データ依存関係付加部4は、実施形態1と同じ動作をする。次に、制御フロー非影響部分抽出部7の動作について説明する。図19および図20は、本実施形態2による制御フロー非影響部分抽出部7の動作を示すフローチャートである。以下、図19および図20に示すフローチャートを参照して、制御フロー非影響部分抽出部7の動作について詳細に説明する。なお、サブルーチンSubroutine_Aを実行する際にサブルーチンSubroutine_Aから直接呼び出されるサブルーチンの入り口節点の集合をCとする。また、集合C中の1つの節点cおよび節点cから制御辺または呼び出し辺を辿って到達できる節点の集合Dcと記し、集合Dcによって表されるグラフをサブルーチンSubroutine_Aの下流部分グラフとする。さらに、サブルーチンSubroutine_Aの全ての下流部分グラフからなる集合をEとする。図19に示すように、まず、非影響部分グラフのデータ図18参照の各行に対して、フローグラフのデータ図5参照に記録されている節点IDを転記するステップS1901。ステップS1901の後、非影響部分グラフのデータの各行における制御フロー非影響節点の項目にNoを記録するステップS1902。ステップS1902の後、サブルーチンSubroutine_Aの入り口に対応する節点fを、フローグラフのデータから取得するステップS1903。ステップS1903の後、節点fから制御辺を辿って到達できる節点で、かつ節点種別が定義済み処理である節点の呼び出し辺接続先IDの集合Cを作成するステップS1904。ステップS1904の後、集合C中の各節点cについて、節点cおよび節点cから制御辺または呼び出し辺を辿って到達できる節点の節点IDの集合Dcを作成して、下流部分グラフの集合Eに追加するステップS1905。次に、制御フロー非影響部分抽出部7は、集合Eの各要素Dxについて、集合Eの内容が変化しなくなるまで図20に示すフローチャートを繰り返し実行する。図20に示すように、まず、集合Dx中の節点で、集合Dxに含まれない節点が接続先であるデータ依存辺を持つ節点の集合Lxを作成するステップS2001。ステップS2001の後、集合Lx中の節点から制御辺または呼び出し辺を辿って到達できる節点を、集合Dxから削除するステップS2002。ステップS2002の後、集合Lx中の節点から制御辺または呼び出し辺を1つだけ辿って到達できる節点の集合Gxを作成するステップS2003。ステップS2003の後、集合Gx中の節点gから制御辺または呼び出し辺を辿って到達できる節点の集合Dgを作成するステップS2004。ステップS2004の後、集合Dgを下流部分グラフの集合Eへ追加するステップS2005。以上の処理が完了した時点での集合Eは、サブルーチンSubroutine_Aにおける全ての非影響部分グラフの集合である。制御フロー非影響部分抽出部7は、集合E中の各節点について、図18に示すデータの制御フロー非影響節点の項目にYesを記録する。上記の処理を行うことによって、制御フロー非影響部分グラフのデータ図18参照の作成が完了する。グラフレイアウト決定部5は、条件式データ依存関係付加部4が作成したフローグラフのデータ図5参照と、制御フロー非影響部分抽出部7が作成した非影響部分グラフのデータ図18参照とを照合し、非影響部分グラフのデータにおける制御フロー非影響節点の項目にYesが記録されている節点IDの節点のデータをフローグラフのデータから消去する。次に、グラフレイアウト決定部5は、フローグラフのデータ中の呼び出し辺接続先IDとして、フローグラフからグラフレイアウト決定部5が消去したいずれかの節点の節点IDが記録されている全ての項目から当該節点IDを消去する。図21は、この時点でのフローグラフのデータを例示する図である。次に、グラフレイアウト決定部5は、実施形態1と同じ動作をする。また、表示部6も、実施形態1と同じ動作をする。以上のことから、本実施形態2によるプログラム解析装置200は、実施形態1による効果に加えて、解析対象サブルーチンの制御フローの決まり方に影響しない下流のサブルーチン呼び出しがディスプレイモニタ109に表示されないため、プログラム解析装置200から出力される図的表現を見ることによって、解析対象プログラムの制御フローをユーザが解析する際の作業の効率をさらに向上させることができるという顕著な効果を奏する。すなわち、多数のサブルーチンを含む大規模なプログラムを解析する際の作業の効率を実施形態1よりもさらに向上させることが可能となる。なお、説明の簡単のため、本実施形態2では、グラフレイアウト決定部5が非影響部分グラフ中の節点を消去する例について説明したが、節点を消去せずに、非影響部分グラフの画面上での表示色を薄い色にする、非影響部分グラフの画面上での大きさを小さくする、あるいは非影響部分グラフを非影響部分グラフ中の節点よりも少ない数の節点に置き換えるなどの方法によっても、上記と同様の効果を奏することは言うまでもない。実施形態3図22は、本発明の実施形態3によるプログラム解析装置300の構成を示すブロック図である。図22に示すように、プログラム解析装置300は、コールグラフ変換部8を備えることを特徴としている。その他の構成は、実施形態1と同様であるため、ここでは説明を省略する。コールグラフ変換部8は、条件式データ依存関係付加部4が作成したフローグラフ中の節点を当該節点のステートメントを含むサブルーチンごとに1つの節点以下、代表節点とも称するにまとめて、代表節点にまとめる前の節点が始点または終点になっていた全ての呼び出し辺とデータ依存辺を代表節点と接続するように移動変更させた後、代表節点のみを記録した有向グラフ以下、コールグラフとも称するのデータを作成する。すなわち、コールグラフ変換部8は、条件式データ依存関係付加部4にて生成されたフローグラフ有向グラフのデータに基づいて、各サブルーチンをそれぞれまとめて代表節点とし、フローグラフのデータを、代表節点と当該代表節点間を接続する呼び出し辺およびデータ依存辺とを含むコールグラフのデータに変換して生成する。グラフレイアウト決定部5は、コールグラフ変換部8が作成したコールグラフを出力する際の節点および辺のレイアウトを決定してコールグラフのレイアウトデータを作成する。本実施形態3のプログラム解析装置300を実現するためのコンピュータのハードウェアの構成は、実施形態1と同じである図2参照。コールグラフ変換部8は、その機能に対応したプログラムが、HDD104、RAM105、またはROM106等の記憶領域に格納されており、このプログラムをマイクロプロセッサ103が実行することによってコールグラフ変換部8の機能が実現されている。その他の各機能の実現方法は、実施形態1と同様であるため、ここでは説明を省略する。次に、コールグラフのデータについて説明する。なお、説明の簡単のため、以下では具体例を用いて説明する。また、本実施形態3では、解析対象プログラムの一例として図3に示すプログラムを使用するものとして説明する。図23は、本実施形態3によるプログラム解析装置300が、ユーザから図3に示す解析対象プログラムを指定された際に出力するコールグラフの一例を示す図である。また、図24は、コールグラフ変換部8が作成したコールグラフのデータの一例を示す図である。以下、図24を用いてコールグラフ変換部8およびグラフレイアウト決定部5が取り扱うデータの内容を説明する。図24において、コールグラフに含まれる節点の1つが図3に示す解析対象プログラムにおける1つの行に対応する。また、節点ID、ステートメント、呼び出し辺接続先ID、およびデータ依存辺接続先IDは、図5に示したものと同じである。図25および図26は、グラフレイアウト決定部5が図23に示すコールグラフを作成する際におけるコールグラフのレイアウトに関するデータの一例を示す図である。図25において、節点種別は図27中の節点種別と同じであり、各節点を出力する際には図27に例示される接点種別と図形との対応関係に従って用いる図形が定まる。次に、本実施形態3によるプログラム解析装置300の動作について説明する。説明の簡単のため、以下では、入力受付部1からユーザによる所定の動作で図3に示す解析対象プログラムをユーザが解析の対象として指定したものとする。入力受付部1、フローチャート生成部2、呼び出し関係付加部3、および条件式データ依存関係付加部4は、実施形態1と同様の動作をするため、ここでは説明を省略する。次に、コールグラフ変換部8の動作について説明する。まず、コールグラフ変換部8は、フローグラフのデータ図5参照における節点種別が入り口である節点の集合Yを作成する。次に、コールグラフ変換部8は、集合Y中の各節点について、節点IDおよびステートメントをフローグラフのデータからコールグラフのデータ図24参照に転記する。そして、コールグラフ変換部8は、集合Y中の各節点yについて、節点yから制御辺を辿って到達でき、かつ節点種別が定義済み処理である節点の呼び出し辺接続先IDの値を、コールグラフのデータにおける節点yの呼び出し辺接続先IDに記録する。さらに、コールグラフ変換部8は、フローグラフのデータにおける各データ依存辺zについて、図28に示すフローチャートの処理を実行する。図28に示すように、まず、データ依存辺zの接続元の節点から制御辺を逆向きに辿って到達でき、かつ節点種別が入り口である最初の節点iを取得するステップS2801。ステップS2801の後、データ依存辺zの接続先の節点から制御辺を逆向きに辿って到達でき、かつ節点種別が入り口である最初の節点jを取得するステップS2802。ステップS2802の後、コールグラフのデータにおける節点iのデータ依存辺接続先IDに、節点jの節点IDを記録するステップS2803。グラフレイアウト決定部5は、コールグラフ変換部8が作成したデータ図24参照に含まれる全ての節点および辺についてディスプレイモニタ109上での座標位置を決定して、図25に示すデータの座標、および図26に示すデータの始点座標と終点座標に記録する。また、グラフレイアウト決定部5は、各節点の内部または近傍に出力する文字列をステートメントから抜き出して図25に示すデータのラベルに記録する。表示部6の動作は実施形態1と同じである。図23は、表示部6が図25および図26に示したデータをディスプレイモニタ109に出力した際の画面表示の一例を示す図である。以上のことから、本実施形態3によるプログラム解析装置は、実施形態1による効果に加えて、サブルーチンという粗い粒度の図的表現で解析対象プログラムを見ることができるため、解析対象プログラムの大まかな制御フローをユーザが解析する際の作業の効率をさらに向上させることができるという顕著な効果を奏する。すなわち、多数のサブルーチンを含む大規模なプログラムを解析する際の作業の効率を実施形態1よりもさらに向上させることが可能となる。実施形態4図29は、本発明の実施形態4によるプログラム解析装置400の構成を示すブロック図である。図29に示すように、本実施形態4によるプログラム解析装置400は、クラス図変換部9を備えることを特徴としている。その他の構成は、実施形態3と同様であるため、ここでは説明を省略する。クラス図変換部9は、コールグラフ変換部8が作成したコールグラフ中の節点に対応するサブルーチンをメソッドとして含むクラスごとに1つの節点以下、クラス節点とも称するにまとめて、クラス節点にまとめる前の節点が始点または終点になっていた全ての呼び出し辺およびデータ依存辺をクラス節点と接続するように移動変更させた後、クラス節点のみを記録した有向グラフ以下、クラス図とも称するのデータを作成する。すなわち、クラス図変換部9は、コールグラフ変換部8にて生成されたコールグラフのデータに基づいて、各代表節点をそれぞれクラス毎にまとめてクラス節点とし、コールグラフのデータを、クラス節点と当該クラス節点間を接続する呼び出し辺およびデータ依存辺とを含むクラス図のデータに変換して生成する。グラフレイアウト決定部5は、クラス図変換部9が作成したクラス図のデータを出力する際の節点および辺のレイアウトを決定してクラス図のレイアウトデータを作成する。本実施形態4のプログラム解析装置400を実現するためのコンピュータのハードウェアの構成は、実施形態3と同様である。また、クラス図変換部9は、その機能に対応したプログラムが、ハードディスクHDD104、RAM105、またはROM106等の記憶領域に格納され、このプログラムをマイクロプロセッサ103が実行することでクラス図変換部9の機能が実現されている。その他の各機能の実現方法は、実施形態3と同様であるため、ここでは説明を省略する。次に、クラス図のデータについて説明する。なお、説明の簡単のため、以下では具体例を用いて説明する。図30は、本実施形態4による解析対象プログラムの一例を示す図であり、本実施形態4では図30に示す解析対象プログラムを用いるものとして説明する。図31は、本実施形態4によるプログラム解析装置400が、ユーザから図30に示す解析対象プログラムを指定された際に出力するクラス図の一例を示す図である。また、図32は、クラス図変換部9が作成したクラス図のデータの一例を示す図である。以下、図32を用いてクラス図変換部9およびグラフレイアウト決定部5が取り扱うデータの内容を説明する。図32において、クラス図に含まれる節点の1つが図30に示す解析対象プログラムにおける1つの行に対応する。また、節点ID、呼び出し辺接続先ID、およびデータ依存辺接続先IDは、図5に示したものと同じである。図32において、ステートメントは、コールグラフ変換部8が作成したコールグラフのデータ図33は、図32に対応するコールグラフのデータの一例を示す図であるから、クラス図変換部9が抽出したクラス名である。図34および図35は、グラフレイアウト決定部5が図31に示すクラス図を作成する際におけるクラス図のレイアウトに関するデータの一例を示す図である。図34において、節点種別は図36に示す節点種別と同じであり、各節点を出力する際には図36に例示されるような接点種別と図形との対応関係に従って用いる図形が定まる。次に、本実施形態4によるプログラム解析装置400の動作について説明する。説明の簡単のため、以下では、入力受付部1からユーザによる所定の動作で図30に示す解析対象プログラムをユーザが解析の対象として指定したものとする。入力受付部1、フローチャート生成部2、呼び出し関係付加部3、条件式データ依存関係付加部4、およびコールグラフ変換部8は、実施形態3と同様の動作をするため、ここでは説明を省略する。図37は、フローチャート生成部2が図30に示す解析対象プログラムを解析して作成した有向グラフのデータの一例を示す図である。また、図38は、呼び出し関係付加部3が図37に示すデータに基づいて作成した有向グラフのデータの一例を示す図である。また、図39は、条件式データ依存関係付加部4が図38に示すデータに基づいて作成したフローグラフのデータの一例を示す図である。そして、図33は、コールグラフ変換部8が図39に示すフローグラフのデータに基づいて作成したコールグラフのデータの一例を示す図である。次に、クラス図変換部9の動作について説明する。まず、クラス図変換部9は、コールグラフのデータ図33参照における節点のステートメントからクラス名を重複がないように収集する。次に、クラス図変換部9は、収集した各クラス名について、クラス図のデータ図32参照の節点IDに新たな節点IDを記録し、ステートメントにクラス名を記録する。そして、クラス図変換部9は、コールグラフ中の各呼び出し辺uについて、図40に示すフローチャートの処理を実行する。図40に示すように、まず、呼び出し辺uの接続元の節点のクラス名cと接続先の節点のクラス名dを、コールグラフのデータから取得するステップS4001。ステップS4001の後、クラス図のデータにおけるクラス名cに対応する節点の呼び出し辺接続先IDに、クラス名dに対応する節点の節点IDを記録するステップS4002。また、クラス図変換部9は、コールグラフ中の各データ依存辺vについて、図41に示すフローチャートの処理を実行する。図41に示すように、まず、データ依存辺vの接続元の節点のクラス名cと接続先の節点のクラス名dとを、コールグラフのデータから取得するステップS4101。ステップS4101の後、クラス図のデータにおけるクラス名cに対応する節点のデータ依存辺接続先IDに、クラス名dに対応する節点の節点IDを記録するステップS4102。グラフレイアウト決定部5は、クラス図変換部9が作成したデータ図32参照に含まれる全ての節点および辺についてディスプレイモニタ109上での座標位置を決定して図34に示すデータの座標、および図35に示すデータの始点座標と終点座標とに記録する。また、グラフレイアウト決定部5は、各節点の内部または近傍に出力する文字列をステートメントから抜き出して図34に示すデータのラベルに記録する。表示部6の動作は実施形態1と同様である。図31は、表示部6が図34および図35に示すデータをディスプレイモニタ109へ出力した際の画面表示の一例を示す図である。以上のことから、本実施形態4によるプログラム解析装置400は、実施形態3による効果に加えて、クラスというさらに粗い粒度の図的表現で解析対象プログラムを見ることができるため、解析対象プログラムが大規模である場合に、その大まかな制御フローをユーザが解析する際の作業の効率を向上させることができるという顕著な効果を奏する。すなわち、多数のサブルーチンを含む大規模なプログラムを解析する際の作業の効率を実施形態3よりもさらに向上させることが可能となる。"