(57)【特許請求の範囲】
【請求項１】
プログラムのコードにおいて変更がなされた際に前記変更による影響を受ける変数である影響箇所の間の、依存関係の情報を含む影響情報に基づいて、前記影響箇所を示すノード、及び前記依存関係の依存先に対応する前記ノードから前記依存関係の依存元に対応する前記ノードへの有向辺である影響線を含む、グラフを、前記コードに重ね合わせた描画データを出力するグラフ生成手段
を備えたことを特徴とするプログラム表示装置。
【請求項２】
前記影響情報は、前記コードにおける前記影響箇所の位置を示す座標を含む
ことを特徴とする請求項１に記載のプログラム表示装置。
【請求項３】
前記グラフ生成手段は、前記各ノードが、各前記ノードに対応する前記影響箇所が含まれる、ファイル名及び関数名に対応付けられた前記グラフを出力する
ことを特徴とする請求項１又は請求項２に記載のプログラム表示装置。
【請求項４】
前記グラフ生成手段は、特定のファイル及び特定の関数に含まれる前記影響箇所に対応する前記ノードが、１つの前記ノードに縮約された前記グラフを出力する
ことを特徴とする請求項１乃至３のいずれか１項に記載のプログラム表示装置。
【請求項５】
前記依存関係は、前記コードにおける、
代入式の代入元の前記影響箇所を前記依存先とし、当該代入式の代入先の前記影響箇所を前記依存元とする関係、又は
前記影響箇所の参照を前記依存元とし、当該影響箇所の定義における当該影響箇所、若しくは代入先が当該影響箇所である代入式の代入先のうち、当該影響箇所の参照の直前の１つを前記依存先とする関係を含む
ことを特徴とする請求項１乃至４のいずれか１項に記載のプログラム表示装置。
【請求項６】
関数名は変数に含まれ、前記依存関係は、前記コードにおける、
関数名の参照における引数である前記影響箇所を前記依存先とし、当該引数の定義における当該引数を前記依存元とする関係、
関数の戻り値の設定における前記影響箇所の参照を前記依存先とし、当該関数の定義における当該関数の関数名を前記依存元とする関係、
前記影響箇所である関数名の参照を前記依存先とし、当該関数名の参照における戻り値の設定先を前記依存元とする関係、又は
関数の定義における、前記影響箇所である関数名を前記依存先とし、当該関数名の参照を前記依存元とする関係を含む
ことを特徴とする請求項５に記載のプログラム表示装置。
【請求項７】
プログラムのコードにおいて変更がなされた際に前記変更による影響を受ける変数である影響箇所の間の、依存関係の情報を含む影響情報を生成するプログラム分析装置と、
前記影響情報に基づいて、前記影響箇所を示すノード、及び前記依存関係の依存先に対応する前記ノードから前記依存関係の依存元に対応する前記ノードへの有向辺である影響線を含む、グラフを、前記コードに重ね合わせた描画データ出力するグラフ生成手段を含むプログラム表示装置と、
前記描画データを描画する描画装置と、
を備えたことを特徴とするプログラム表示システム。
【請求項８】
プログラムのコードにおいて変更がなされた際に前記変更による影響を受ける変数である影響箇所の間の、依存関係の情報を含む影響情報に基づいて、前記影響箇所を示すノード、及び前記依存関係の依存先に対応する前記ノードから前記依存関係の依存元に対応する前記ノードへの有向辺である影響線を含む、グラフを、前記コードに重ね合わせた描画データを出力する
ことを特徴とするプログラム表示方法。
【請求項９】
プログラムのコードにおいて変更がなされた際に前記変更による影響を受ける変数である影響箇所の間の、依存関係の情報を含む影響情報に基づいて、前記影響箇所を示すノード、及び前記依存関係の依存先に対応する前記ノードから前記依存関係の依存元に対応する前記ノードへの有向辺である影響線を含む、グラフを、前記コードに重ね合わせた描画データを出力するグラフ生成処理
をコンピュータに実行させることを特徴とするプログラム表示プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム表示装置、プログラム表示システム、プログラム表示方法、及びプログラム表示プログラムに関する。
【背景技術】
【０００２】
ソフトウェア開発において、プログラムのコードの変更は頻繁に行われる。コードの変更が行われる際には、コードの変更による影響が及ぶ範囲が、静的解析ツールにより出力されたコードの構造図等を用いて、人手により確認されることが多い。
【０００３】
近年、コードの特定の箇所を変更した際の、変更の他の箇所への影響の伝播の仕方を調べるプログラム分析技術が開発されてきた。
【０００４】
コード変更の影響伝播を分析するプログラム分析技術の一例が、特許文献１に開示されている。特許文献１のプログラム解析装置は、以下のように動作する。特許文献１のプログラム解析装置は、ソースプログラムに記述されている代入式の、代入先の変数及び代入元の変数を矩形で表示する。また、特許文献１のプログラム解析装置は、代入元の変数と代入先の変数との依存関係を、代入元を示す矩形から代入先を示す矩形に向かう矢印で表示する。上記の動作の結果、特許文献１のプログラム解析装置は、ソースプログラムにおける変数間の依存関係を、図形で表示する。
【０００５】
また、コード変更の影響伝播を分析するプログラム分析技術の別の一例が、特許文献２に開示されている。特許文献２の影響範囲設定装置は、以下のように動作する。まず、特許文献２の影響範囲設定装置は、プログラムのソースコードの構文解析により命令文を検索し、検索された命令文間の依存関係に従って命令文の繋がりを形成する。次に、特許文献２の影響範囲設定装置は、特定の命令文を影響の基点とする、命令文間の繋がりによる依存関係グラフを形成し、依存関係にある影響波及範囲を設定する。上記の動作の結果、特許文献２の影響範囲設定装置は、特定の命令文を影響の基点とする、ソースコードにおける影響波及範囲を、図形で表示する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平０８−１９０４７５号公報
【特許文献２】ＷＯ２０１２／１３３６０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１や特許文献２のプログラム分析技術では、図形で表示された各箇所と、ソースコードの特定箇所との間の対応関係が表示されない。したがって、特許文献１や特許文献２のプログラム分析技術では、ユーザはソースコードの特定箇所と図形の各箇所との間の対応関係を別途確認しなければならないという問題点がある。
（発明の目的）
本発明の主たる目的は、プログラムのコードの特定の箇所を変更した際の、変更の他の箇所への影響の伝播の仕方を、コードにおける影響が及ぶ箇所に対応付けて表示することができるプログラム表示装置、プログラム表示システム、プログラム表示方法、及びプログラム表示プログラムを提供することにある。
【課題を解決するための手段】
【０００８】
本発明のプログラム表示装置は、プログラムのコードにおいて変更がなされた際に変更による影響を受ける変数である影響箇所の間の、依存関係の情報を含む影響情報に基づいて、影響箇所を示すノード、及び依存関係の依存先に対応するノードから依存関係の依存元に対応するノードへの有向辺である影響線を含む、グラフを、コードに重ね合わせた描画データを出力するグラフ生成手段を備えることを特徴とする。
【０００９】
本発明のプログラム表示システムは、プログラムのコードにおいて変更がなされた際に変更による影響を受ける変数である影響箇所の間の、依存関係の情報を含む影響情報を生成するプログラム分析装置と、影響情報に基づいて、影響箇所を示すノード、及び依存関係の依存先に対応するノードから依存関係の依存元に対応するノードへの有向辺である影響線を含む、グラフを、コードに重ね合わせた描画データ出力するグラフ生成手段を含むプログラム表示装置と、描画データを描画する描画装置と、を備えることを特徴とする。
【００１０】
本発明のプログラム表示方法は、プログラムのコードにおいて変更がなされた際に変更による影響を受ける変数である影響箇所の間の、依存関係の情報を含む影響情報に基づいて、影響箇所を示すノード、及び依存関係の依存先に対応するノードから依存関係の依存元に対応するノードへの有向辺である影響線を含む、グラフを、コードに重ね合わせた描画データを出力することを特徴とする。
【００１１】
本発明のプログラム表示プログラムは、プログラムのコードにおいて変更がなされた際に変更による影響を受ける変数である影響箇所の間の、依存関係の情報を含む影響情報に基づいて、影響箇所を示すノード、及び依存関係の依存先に対応するノードから依存関係の依存元に対応するノードへの有向辺である影響線を含む、グラフを、コードに重ね合わせた描画データを出力するグラフ生成処理をコンピュータに実行させることを特徴とする。
【発明の効果】
【００１２】
本発明によれば、プログラムのコードの特定の箇所を変更した際の、変更の他の箇所への影響の伝播の仕方を、コードにおける影響が及ぶ箇所に対応付けて表示することができるという効果がある。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施形態のプログラム表示装置の構成の一例を示すブロック図である。
【図２】本発明の実施形態のプログラム表示装置の動作を示すフローチャートである。
【図３】本発明の実施形態のプログラム表示装置の処理対象のプログラムのコードの具体例を説明するための図である。
【図４】本発明の実施形態のプログラム表示装置の影響情報に含まれる影響箇所の座標の具体例を説明するための図である。
【図５】本発明の実施形態のプログラム表示装置の影響情報に含まれる影響箇所の依存関係の具体例を説明するための図である。
【図６】本発明の実施形態のプログラム表示装置の影響の伝わり方を示す描画データの具体例を説明するための図である。
【図７】本発明の実施形態のプログラム表示装置の処理対象のプログラムのコードの別の具体例を説明するための図である。
【図８】本発明の実施形態のプログラム表示装置の影響の伝わり方を示す描画データの別の具体例を説明するための図である。
【図９】本発明の実施形態のプログラム表示装置の、グラフが関数ノードを含む場合の影響の伝わり方を示す描画データの具体例を説明するための図である。
【図１０】本発明の実施形態のプログラム表示装置の、グラフが関数ノードを含む場合の動作を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、本発明の実施形態について、図面を参照して詳細に説明する。なお、すべての図面において、同等の構成要素には同じ符号を付し、適宜説明を省略する。
【００１５】
まず、以下の説明で用いられる用語について説明する。
【００１６】
プログラムのコードの「変更」とは、変数や値を新たにコードに追加したり、コードに記述されていた変数や値を削除したり、またはコードに記述されていた変数や値を別の変数や値に変更することである。なお、変数には、関数名（関数の戻り値を示す）や、関数の引数が含まれてもよい。
【００１７】
変更の「影響」とは、コードの変更により、コード中の変数や関数の値や関数の動作が変化することである。
【００１８】
「影響箇所」とは、コードにおける特定の変更による影響が及ぶ、コード中の変数や関数名の記述箇所のことである。
【００１９】
「影響情報」とは、影響箇所の座標、影響箇所間の依存関係の情報を含む情報である。影響情報は、関数間の依存関係の情報や、コードを更に含んでもよい。
【００２０】
影響箇所の「座標」とは、影響箇所のコード上の位置を特定することができる任意の情報である。影響箇所の座標は、例えば、影響箇所のコード上の開始行及び開始桁を含み、影響箇所のコード上の終了行及び終了桁を更に含んでもよい。
【００２１】
影響箇所間の「依存関係」とは、コードの特定の変更の直接の影響が及ぶ影響箇所（以下、「影響の基点」という）から、特定の変更の影響が及ぶ末端の影響箇所までの一連の影響箇所に含まれる、直接の影響を及ぼす影響箇所の対の全体である。すなわち、依存関係は、影響の基点をルートとするデータフローグラフと等価である。なお、データフローグラフについては、広く知られているので、ここでは詳述しない。
【００２２】
「影響伝播グラフ」（以下、単に「グラフ」という）とは、プログラムのコードに重ね合わされて表示される、変更の影響の伝わり方を示す図形である。グラフは、「ノード」と「影響線」とを含む。
【００２３】
「ノード」とは、各影響箇所を示す図形である。なお、「関数ノード」とは、１つの関数定義に含まれる影響箇所が縮約された（複数の要素が１つの要素にまとめられた）図形である。また、関数ノードを含むグラフを「縮約グラフ」という。
【００２４】
「影響線」とは、依存関係の依存先に対応するノードから依存関係の依存元に対応するノードへの有向辺である。なお、縮約グラフでは、依存先に対応するノードと依存関係の依存元に対応するノードとを共有する複数の影響線は、縮約されてもよい。
【００２５】
以上が、用語についての説明である。
【００２６】
本実施形態における構成について説明する。
【００２７】
図１は、本発明の本実施形態のプログラム表示装置１００の構成の一例を示すブロック図である。
【００２８】
まず、プログラム表示装置１００を含むプログラム表示システム５００の構成について説明する。プログラム表示システム５００は、プログラム分析装置２００と、プログラム表示装置１００と、描画装置３００とを含む。
【００２９】
プログラム分析装置２００は、プログラムのコードを分析して、コードにおいて特定の変更がなされた際の影響情報を出力する。
【００３０】
プログラム表示装置１００は、プログラム分析装置２００により出力された影響情報に基づいて、特定の変更がなされた際の、コードにおける影響の伝わり方を示す描画データを生成し、生成した描画データとコードの描画データとを重ね合わせた描画データを出力する。
【００３１】
描画装置３００は、プログラム表示装置１００により出力された描画データを画面、用紙等に描画する。描画装置３００は、例えば、ディスプレイ、プリンタである。
【００３２】
プログラム表示装置１００は、グラフ生成手段１１０を含む。
【００３３】
グラフ生成手段１１０は、入力した影響情報に基づいて、グラフの描画データを生成して、グラフの描画データとコードの描画データとを重ね合わせた描画データを出力する。なお、グラフ生成手段１１０は、縮約グラフの描画データを生成してもよい。縮約グラフでは、関数ノードの部分は、コードに重ね合わされない。
【００３４】
次に、本実施形態における動作について説明する。
【００３５】
図２は、本発明の本実施形態のプログラム表示装置１００の動作を示すフローチャートである。具体的には、図２には、グラフ生成手段１１０の動作が示される。なお、図２に示されるフローチャート及び以下の説明は一例であり、適宜求める処理に応じて、処理順等を入れ替えたり、処理を戻したり、又は処理を繰り返したりしてもよい。
【００３６】
まず、グラフ生成手段１１０は、プログラムのコードと、コードにおける特定の変更による影響情報とを入力する（ステップＳ１０１）。
【００３７】
次に、グラフ生成手段１１０は、影響情報から影響箇所の座標を抽出する（ステップＳ１０２）。
【００３８】
次に、グラフ生成手段１１０は、影響情報から影響箇所間の依存関係を抽出する（ステップＳ１０３）。
【００３９】
次に、グラフ生成手段１１０は、抽出した影響箇所の座標と影響箇所間の依存関係から、影響線の描画データを生成する（ステップＳ１０４）。
【００４０】
次に、グラフ生成手段１１０は、抽出した影響箇所の座標から、ノードの描画データを生成する（ステップＳ１０５）。
【００４１】
次に、グラフ生成手段１１０は、生成した影響線とノードの描画データとをコードの描画データに重ね合わせた描画データを生成する（ステップＳ１０６）。
【００４２】
次に、グラフ生成手段１１０は、重ね合わせられた描画データをディスプレイやプリンタ等へ出力する（ステップＳ１０７）。
【００４３】
次に、本実施形態における処理の具体例について説明する。
【００４４】
図３は、本発明の本実施形態のプログラム表示装置１００の処理対象のプログラムのコードの具体例を説明するための図である。具体的には、図３には、Ｃ言語による関数“ｍａｉｎ”の定義が示される。なお、図３には、左端にコード上の行番号が、上端にコード上の桁番号が示される。
【００４５】
図３では、２行目において、変数“data1”が定義され、初期値として“５”が代入されている。４行目において、変数“data2”（１１〜１５桁目）が定義され、初期値として変数“data1”（１９〜２３桁目）の値（参照）が代入されている。６行目において、変数“data3”（１１〜１５桁目）が定義され、初期値として変数“data2”（１９〜２３桁目）の値（参照）の演算結果が代入されている。８行目において、変数“data3”（１４〜１８桁目）の値が参照されている。
【００４６】
図４は、本発明の本実施形態のプログラム表示装置１００の影響情報に含まれる影響箇所の座標の具体例を説明するための図である。具体的には、図４には、図３に示されたコードにおいて、変数“data1”の変更がなされた際の影響箇所の座標の具体例が示される。なお、図４には、“ＩＤ”列には影響箇所の識別番号が、“変数名”列には影響箇所に対応する変数名が示される。影響箇所の変数名は、説明の都合上記載されているが、以下の処理において必要な要素ではない。また、図４では、影響箇所の座標は、表形式で示されているが、表に記載の内容を記述可能な任意の形式（ＸＭＬ（Extensible Markup Language）形式、ＣＳＶ（Comma-separated Values）形式等）で表現されてよい。
【００４７】
図４では、“開始行”列、“終了行”列、“開始桁”列、“終了桁”列にはそれぞれ、影響箇所の座標の、開始位置の行成分、終了位置の行成分、開始位置の桁成分、終了位置の桁成分が示される。１行目において、識別番号“１”、変数名“data1”、座標（“４”，“４”，“１９”，“２３”）である影響箇所が記述されている。同様に、２〜５行目のそれぞれに、各々１つの影響箇所が記述されている。
【００４８】
図５は、本発明の本実施形態のプログラム表示装置１００の影響情報に含まれる影響箇所間の依存関係の具体例を説明するための図である。具体的には、図５には、図３に示されたコードにおいて、変数“data1”の変更がなされた際の影響箇所間の依存関係の具体例が示される。なお、図５において、四角形の枠は１つの影響箇所を、四角形の枠間の矢印は影響箇所間の依存関係を示す。矢印の向きは影響が伝播する向きである。また、四角形の枠内の上側には影響箇所の識別番号が、四角形の枠内の下側には影響箇所に対応する変数名が示される。影響箇所の変数名は、説明の都合上記載されているが、以下の処理において必要な要素ではない。また、図５では、影響箇所の依存関係は、グラフ形式で示されているが、グラフに記載の内容を記述可能な任意の形式（ＸＭＬ形式等）で表現されてよい。
【００４９】
図５では、識別番号“２”、変数名“data2”である影響箇所が、ＩＤ“１”、変数名“data1”である影響箇所に依存することが記述されている。同様に、更に３つの依存関係が記述されており、変更の影響は、ＩＤ“１”、変数“data1”である影響箇所から、ＩＤ“２”、変数“data2”である影響箇所、ＩＤ“３”、変数“data2”である影響箇所、ＩＤ“４”、変数“data3”である影響箇所、ＩＤ“５”、変数“data3”である影響箇所の順で直列に伝播することが記述されている。
【００５０】
なお、依存関係は、例えば、コードにおける、代入式の代入元の影響箇所を依存先とし、代入式の代入先の影響箇所を依存元とする関係を含む。また、依存関係は、例えば、コードにおける、影響箇所の参照を依存元とし、影響箇所の定義における影響箇所、若しくは代入先が影響箇所である代入式の代入先のうち、影響箇所の参照の直前の１つを依存先とする関係を含む。
【００５１】
図６は、本発明の本実施形態のプログラム表示装置１００の影響の伝わり方を示す描画データの具体例を説明するための図である。具体的には、図６には、図３に示されたコードにおいて、４行目の変数“data1”の変更がなされた際の影響の伝わり方を示す描画データの具体例が示される。なお、図６において、四角形の枠はノードを示し、矢印は影響線を示している。
【００５２】
図６では、ノードＡ３がノードＡ１に依存することが、ノードＡ１、ノードＡ３、及びノードＡ１からノードＡ３への影響線Ａ２を含む、グラフにより示される。また、ノードＡ１が変数“data1”に対応し、ノードＡ３が変数“data2”に対応することが、グラフとコードとが重ね合わせられて表示されることにより示される。同様に、更に３つの依存関係が示されており、変更の影響は、ノードＡ１（変数“data1”）から、ノードＡ３（変数“data2”）、ノードＡ５（変数“data2”）、ノードＡ７（変数“data3”）、ノードＡ９（変数“data3”）の順で直列に伝播することが示されている。
【００５３】
図２から図６を用いて、グラフ生成手段１１０の処理の具体例について説明する。
【００５４】
まず、グラフ生成手段１１０は、図３のコードの４行目の変数“data1”が変更された場合の影響情報を入力する（ステップＳ１０１）。影響情報には、図３のコード、図５の影響箇所間の依存関係、図４の影響箇所の座標が含まれる。
【００５５】
次に、グラフ生成手段１１０は、影響情報から影響箇所の座標を抽出する（ステップＳ１０２）。本具体例では、座標は、図４に示された、各変数の開始行、終了行、開始桁、終了桁を含む。
【００５６】
次に、グラフ生成手段１１０は、影響情報から影響箇所間の依存関係を抽出する（ステップＳ１０３）。図５に示された影響箇所の依存関係から、変数“data1”（ＩＤ：１）は、変数“data2”（ＩＤ：２）に影響を及ぼすことが分かるため、グラフ生成手段１１０は、変数“data1”（ＩＤ：１）から変数“data2”（ＩＤ：２）への依存関係を抽出する。同様に、グラフ生成手段１１０は、変数“data2”（ＩＤ：２）から変数“data2”（ＩＤ：３）、変数“data2”（ＩＤ：３）から変数“data3”（ＩＤ：４）、変数“data3”（ＩＤ：４）から変数“data3”（ＩＤ：５）への依存関係を抽出する。
【００５７】
次に、グラフ生成手段１１０は、ステップＳ１０２で抽出した各変数の座標と、ステップＳ１０３で抽出した影響箇所間の依存関係から、影響線の描画データを生成する（ステップＳ１０４）。グラフ生成手段１１０は、例えば、変数“data1”（ＩＤ：１）と変数“data2”（ＩＤ：２）との間の依存関係から、ノードＡ１からノードＡ３への影響線Ａ２の描画データを生成する。同様に、グラフ生成手段１１０は、変数“data2”（ＩＤ：２）と変数“data2”（ＩＤ：３）との間の依存関係から影響線Ａ４を、変数“data2”（ＩＤ：３）と変数“data3”（ＩＤ：４）との間の依存関係から影響線Ａ６を、変数“data3”（ＩＤ：４）と変数“data3”（ＩＤ：５）との間の依存関係から影響線Ａ８の描画データを生成する。なお、グラフ生成手段１１０は、ステップＳ１０２で抽出した変数“data1”（ＩＤ：１）と変数“data2”（ＩＤ：２）の座標から、影響線の始点をコードの４行目の１９〜２３桁目に、影響線の終点を４行目の１１〜１５桁目に設定する。同様に、グラフ生成手段１１０は、影響線Ａ４、影響線Ａ６、影響線Ａ８の始点及び終点を設定する。
【００５８】
次に、グラフ生成手段１１０は、抽出した影響箇所の座標から、ノードの描画データを生成する（ステップＳ１０５）。例えば、変数“data1”（ＩＤ：１）について、グラフ生成手段１１０は、ノードＡ１の描画データを生成する。なお、グラフ生成手段１１０は、ノードＡ１の四角形の枠がコードの４行目の１９〜２３桁目を囲むような大きさに設定する。同様に、グラフ生成手段１１０は、影響箇所である変数“data2”（ＩＤ：２）についてノードＡ３の、影響箇所である変数“data2”（ＩＤ：３）についてノードＡ５の、影響箇所である変数“data3”（ＩＤ：４）についてノードＡ７の、影響箇所である変数“data3”（ＩＤ：５）についてノードＡ９の描画データを生成する。また、グラフ生成手段１１０は、ノードＡ１の描画位置に変数“data1”（ＩＤ：１）の座標を設定する。同様に、グラフ生成手段１１０は、ノードＡ３の描画位置に変数“data2”（ＩＤ：２）の座標を、ノードＡ５の描画位置に変数“data2”（ＩＤ：３）の座標を、ノードＡ７の描画位置に変数“data3”（ＩＤ：４）の座標を、ノードＡ９の描画位置に変数“data3”（ＩＤ：５）の座標を設定する。
【００５９】
次に、グラフ生成手段１１０は、ステップＳ１０４で生成した影響線の描画データと、ステップＳ１０５で生成したノードの描画データとを、ステップＳ１０１で入力した影響情報に含まれるコードの描画データと重ね合わせた描画データを生成する（ステップＳ１０６）。なお、コードが複数の部分に分割され、コードの各部分の描画位置が描画の基点に対するオフセットを有する場合には、グラフ生成手段１１０は、オフセットに合わせてノードの描画位置を移動し、移動したノードの描画位置に合わせて、影響線の起点及び終点を決定することにより、グラフとコードとを重ね合わせる。
【００６０】
次に、グラフ生成手段１１０は、ステップＳ１０６で生成した、重ね合わせられた描画データをディスプレイやプリンタ等へ出力する（ステップＳ１０７）。なお、グラフ生成手段１１０により出力される描画データによる画像イメージは、図６に示される。
【００６１】
次に、影響箇所が複数の関数間にまたがる場合の本実施形態における処理の具体例について説明する。
【００６２】
図７は、本発明の本実施形態のプログラム表示装置１００の処理対象のプログラムのコードの別の具体例を説明するための図である。具体的には、図７には、Ｃ言語による６つの関数の定義が、３つのファイルに分かれて示される。図７（ａ）は、関数“main”及び関数“functionA”が定義されたファイル“Sample1.c”を示す。図７（ｂ）は、関数“functionB”及び関数“functionD”が定義されたファイル“Sample2.c”を示す。図７（c）は、関数“functionC”及び関数“functionE”が定義されたファイル“Sample3.c”を示す。なお、図７には、左端にコード上の行番号が示される。
【００６３】
図８は、本発明の本実施形態のプログラム表示装置１００の影響の伝わり方を示す描画データの具体例を説明するための図である。具体的には、図８には、図７に示されたコードにおいて、ファイル“Sample1.c”の６行目の変数“alpha”の変更がなされた際の影響の伝わり方を示す描画データの具体例が示される。
【００６４】
図８において、プログラム表示装置１００は、コードを、１つの関数定義に含まれる部分と関数定義に含まれない部分とに分割した描画データを出力している。また、図８において、プログラム表示装置１００は、分割したコードの各部分に、コードを含むファイル名を表示した描画データを出力している。なお、プログラム表示装置１００は、コードがファイル毎に分割された描画データを出力してもよい。また、プログラム表示装置１００は、分割したコードの各部分を、移動したり、拡大したり、縮小したり、他の部分の上に重ねて表示したり、他の部分の下に一部を隠して表示したりした描画データを出力してもよい。また、プログラム表示装置１００は、影響箇所を含まないコードの部分の表示を省略してもよい。また、影響の伝播順序を分かり易くするために、プログラム表示装置１００は、各影響線に、影響が伝播される順序を示す数字を重ね合わせて表示してもよい。また、プログラム表示装置１００は、特定のコードの部分に含まれるコードの代わりに、関数名又は関数外である旨を表示し、特定のコードの部分に閉じた部分グラフの代わりに、１つのノード（関数ノード）を表示した描画データを出力してもよい。
【００６５】
なお、依存関係は、例えば、コードにおける、代入式の代入元の影響箇所を依存先とし、代入式の代入先の影響箇所を依存元とする関係を含む。また、依存関係は、例えば、コードにおける、影響箇所の参照を依存元とし、影響箇所の定義における影響箇所、若しくは代入先が影響箇所である代入式の代入先のうち、影響箇所の参照の直前の１つを依存先とする関係を含む。また、依存関係は、例えば、コードにおける、関数名の参照における引数である影響箇所を依存先とし、引数の定義における引数を依存元とする関係を含む。また、依存関係は、例えば、前記コードにおける、関数の戻り値の設定における影響箇所の参照を依存先とし、関数の定義における関数の関数名を依存元とする関係を含む。また、依存関係は、例えば、コードにおける、影響箇所である関数名の参照を依存先とし、関数名の参照における戻り値の設定先を依存元とする関係を含む。また、依存関係は、例えば、前記コードにおける、関数の定義における、影響箇所である関数名を依存先とし、関数名の参照を依存元とする関係を含む。ただし、関数名は変数に含まれるものとする。
【００６６】
図９は、本発明の本実施形態のプログラム表示装置１００の、グラフが関数ノードを含む場合の影響の伝わり方を示す描画データの具体例を説明するための図である。具体的には、図９には、図８に示された影響の伝わり方を示す描画データにおいて、ノードがすべて関数ノードに縮約された場合の影響の伝わり方を示す描画データの具体例が示される。
【００６７】
図９において、関数ノードＢ１には、ファイル名“Sample1.c”と関数名“main”が示される。関数ノードＢ２には、ファイル名“Sample1.c”と関数名“functionA”が示される。関数ノードＢ３には、ファイル名“Sample2.c”と関数名“functionB”が示される。関数ノードＢ４には、ファイル名“Sample3.c”と関数名“functionC”が示される。関数ノードＢ５には、ファイル名“Sample2.c”と関数名“functionD”が示される。
【００６８】
また、図９において、影響線Ｂ６は、呼出し元である関数ノードＢ１から呼出し先である関数ノードＢ２へ影響が及ぶことを示す。影響線Ｂ７は、呼出し元である関数ノードＢ２から呼出し先である関数ノードＢ３へ影響が及ぶことを示す。影響線Ｂ８は、呼出し元である関数ノードＢ３から呼出し先である関数ノードＢ４へ影響が及ぶことを示す。影響線Ｂ９は、呼出し先である関数ノードＢ４から呼出し元である関数ノードＢ３へ影響が及ぶことを示す。影響線Ｂ１０は、呼出し先である関数ノードＢ３から呼出し元である関数ノードＢ２へ影響が及ぶことを示す。影響線Ｂ１１は、呼出し元である関数ノードＢ２から呼出し先である関数ノードＢ５へ影響が及ぶことを示す。
【００６９】
具体的には、プログラム表示装置１００は、以下のように関数ノードを表示する描画データを出力してもよい。
【００７０】
図１０は、本発明の本実施形態のプログラム表示装置１００の、グラフが関数ノードを含む場合の動作を示すフローチャートである。具体的には、図１０には、グラフ生成手段１１０の関数ノードのみを表示する描画データを出力する際の動作が示される。なお、図１０に示されるフローチャート及び以下の説明は一例であり、適宜求める処理に応じて、処理順等を入れ替えたり、処理を戻したり、又は処理を繰り返したりしてもよい。
【００７１】
まず、グラフ生成手段１１０は、プログラムのコードにおける特定の変更による影響情報を入力する（ステップＳ２０１）。
【００７２】
次に、グラフ生成手段１１０は、影響情報から影響箇所間の依存関係を抽出する（ステップＳ２０２）。
【００７３】
次に、グラフ生成手段１１０は、依存関係に基づいて、特定の変更の影響が関数呼出しの引数へ及ぶ場合に、呼び出し元の関数ノード、呼び出し先の関数ノード、及び呼出元の関数ノードから呼び出し先の関数ノードへ向かう影響線の描画データを生成する（ステップＳ２０３）。
【００７４】
次に、グラフ生成手段１１０は、影響情報から影響先である関数における影響箇所間の依存関係を抽出する（ステップＳ２０４）。
【００７５】
次に、グラフ生成手段１１０は、関数の戻り値に影響が及ぶならば、呼出し先の関数ノードから呼出し元の関数ノードへ向かう影響線の描画データを生成する（ステップＳ２０５）。
【００７６】
次に、グラフ生成手段１１０は、関数ノードと影響線の描画データをディスプレイやプリンタ等へ出力する（ステップＳ２０６）。
【００７７】
次に、図７のコードを用いて、グラフが関数ノードを含む場合のグラフ生成手段１１０の処理の具体例について説明する。
【００７８】
まず、グラフ生成手段１１０は、図７の“Sample1.c”の５行目の定数“100”が変更された際の影響情報を入力する（ステップＳ２０１）。
【００７９】
次に、グラフ生成手段１１０は、影響情報から影響箇所間の依存関係を抽出する（ステップＳ２０２）。
【００８０】
次に、グラフ生成手段１１０は、依存関係に基づいて、変更の影響が、ファイル“Sample1.c”の６行目の関数呼出し“functionA”の引数“alpha”へ及ぶため、呼び出し元の関数ノードＢ１、呼び出し先の関数ノードＢ２、及び関数ノードＢ１から関数ノードＢ２へ向かう影響線Ｂ６の描画データを生成する（ステップＳ２０３）。
【００８１】
次に、グラフ生成手段１１０は、影響情報から影響先である関数“functionA”の定義における影響箇所間の依存関係を抽出する（ステップＳ２０４）。具体的には、影響先である関数“functionA”の定義における引数“ａ”からのデータフローが繋がっている他の影響箇所への依存関係が抽出される。
【００８２】
次に、関数“functionA”の定義における引数“ａ”を起点とし、同様にして、影響が及ぶ先の座標と影響箇所の依存関係に基づいて、関数ノードＢ３、関数ノードＢ４、影響線Ｂ７、及び影響線Ｂ８を生成する（ステップＳ２０２〜Ｓ２０４）。
【００８３】
更に、ファイル“Sample3.c”の２行目“return (g * 100)”において変数“g”へ影響が及ぶため、グラフ生成手段１１０は、呼出し先関数のノードＢ４から呼出し元関数のノードＢ３へ向かう影響線Ｂ９を生成する。同様に、グラフ生成手段１１０は、影響線Ｂ１０を生成する（ステップＳ２０５）。
【００８４】
更に、データフローをたどることにより、グラフ生成手段１１０は、関数ノードＢ５と影響線Ｂ１１を生成する（ステップＳ２０２〜Ｓ２０４）。
【００８５】
次に、グラフ生成手段１１０は、生成した関数ノードＢ１〜Ｂ５と影響線Ｂ６〜Ｂ１１の描画データをディスプレイやプリンタ等へ通知出力する（ステップＳ２０６）。
【００８６】
上記の動作の結果、グラフ生成手段１１０は、図９に示される、グラフが関数ノードを含む描画データを出力する。
【００８７】
以上説明したように、本実施形態のプログラム表示装置１００は、コードの特定の変更の影響の伝わり方を示すグラフを、コード上に重ね合わせて表示する描画データを出力する。従って、本実施形態のプログラム表示装置１００では、プログラムのコードの特定の箇所を変更した際の、変更の他の箇所への影響の伝播の仕方を、コードにおける影響が及ぶ箇所に対応付けて表示することができるという効果がある。
【００８８】
すなわち、本実施形態のプログラム表示装置１００によれば、コードにおける変更の影響の伝わり方が一つの画像で確認できるので、ユーザはコードの変更の影響を把握すること容易である。
【００８９】
また、本実施形態のプログラム表示装置１００によれば、コードと変更の影響の伝わり方を示す図形との対応関係を調べる手間不要であるため、ユーザはコードの変更の影響を把握する時間を短縮することができる。
【００９０】
また、グラフが関数ノードを含む場合には、本実施形態のプログラム表示装置１００は、特定の関数における、コードや、コードの変更の影響の詳細を隠ぺいした描画データを生成する。従って、本実施形態のプログラム表示装置１００によれば、ユーザは、特定の関数に注目することにより、コードの変更の影響の詳細を容易に把握できる。
【００９１】
なお、上述した本発明の各実施形態のプログラム表示装置は、専用の装置によって実現してもよいが、コンピュータ（情報処理装置）によっても実現可能である。この場合、係るコンピュータは、メモリ（不図示）に格納されたソフトウェア・プログラムをＣＰＵ（Ｃｅｎｔｒａｌ＿Ｐｒｏｃｅｓｓｉｎｇ＿Ｕｎｉｔ、不図示）に読み出し、読み出したソフトウェア・プログラムをＣＰＵにおいて実行することにより、実行結果を、例えば、ユーザ・インタフェースに出力する。上述した各実施形態の場合、係るソフトウェア・プログラムには、上述したところの、図１に示したプログラム表示装置１００の各手段の機能を実現可能な記述がなされていればよい。ただし、プログラム表示装置１００の各手段には、適宜ハードウェアを含むことも想定される。そして、このような場合、係るソフトウェア・プログラム（コンピュータ・プログラム）は、本発明を構成すると捉えることができる。更に、係るソフトウェア・プログラムを格納した、コンピュータ読み取り可能な記憶媒体も、本発明を構成すると捉えることができる。
【００９２】
以上、本発明を、上述した各実施形態およびその変形例によって例示的に説明した。しかしながら、本発明の技術的範囲は、上述した各実施形態およびその変形例に記載した範囲には限定されない。当業者には、係る実施形態に対して多様な変更又は改良を加えることが可能であることは明らかである。そのような場合、係る変更又は改良を加えた新たな実施形態も、本発明の技術的範囲に含まれ得る。そしてこのことは、特許請求の範囲に記載した事項から明らかである。
【産業上の利用可能性】
【００９３】
本発明は、ソフトウェア開発の用途において、利用できる。
【符号の説明】
【００９４】
１００  プログラム表示装置
１１０  グラフ生成手段
２００  プログラム分析装置
３００  描画装置
５００  プログラム表示システム
Ａ１、Ａ３、Ａ５、Ａ７、Ａ９  ノード
Ａ２、Ａ４、Ａ６、Ａ８  影響線
Ｂ１、Ｂ２、Ｂ３、Ｂ４、Ｂ５  ノード
Ｂ６、Ｂ７、Ｂ８、Ｂ９、Ｂ１０、Ｂ１１  影響線
【図１】
0006506108.tif 000002
【図２】
0006506108.tif 000003
【図３】
0006506108.tif 000004
【図４】
0006506108.tif 000005
【図５】
0006506108.tif 000006
【図６】
0006506108.tif 000007
【図７】
0006506108.tif 000008
【図８】
0006506108.tif 000009
【図９】
0006506108.tif 000010
【図１０】
0006506108.tif 000011