(57)【要約】【課題】大量の呼び出しが発生するような大規模プログラムにおいても、プログラム実行時全体の情報をユーザに把握させる。【解決手段】実施形態にかかるシステムにおいて、プログラム構造情報は、１つ以上の区間情報を含む。各区間情報は、対象プログラムのソースコード上の連続領域を示すソースコード位置情報と、当該区間情報に対する親子関係を特定するための親子関係情報とを含む。前記プログラム構造情報は、親を持たない基準区間を少なくとも１つ含む。処理部は、各区間情報から前記基準区間までにそれぞれ存在する親の数を各区間情報の前記基準区間からの深さとして特定するとともに、前記基準区間からの深さを表す第１の軸と前記親子関係を表す第２の軸との座標系に、前記基準区間からの深さと前記親子関係情報とに基づいて前記１つ以上の区間情報を配置することで表示用情報を生成する。【選択図】図１
2015022665.tif 000002
【特許請求の範囲】
【請求項１】
プログラム構造情報に基づいてプログラム情報を表示するプログラム情報表示システムであって、
前記プログラム構造情報を入力する入力部と、
前記プログラム構造情報から前記プログラム情報を可視化するための表示用情報を生成する処理部と、
前記プログラム情報を表示する表示部と
を備え、
前記プログラム構造情報は、１つ以上の区間情報を含み、
前記区間情報は、第１情報と第２情報とを含み、
前記第１情報は、対象プログラムのソースコード上の連続する領域を示す情報であり、
前記第２情報は、自己が含まれる区間情報と包含関係がある他の区間情報を特定するための情報であり、
第１の区間情報に含まれる前記第２情報は、第２の区間情報の存在の有無、または第３の区間情報の存在の有無を示す第３情報を含み、
前記第１の区間情報に含まれる前記第１情報の示す連続区間は、前記第２の区間情報に含まれる第１情報の示す連続区間を包含し、
さらに、前記第１の区間情報に含まれる前記第１情報の示す連続区間は、前記第３の区間情報に含まれる第１情報の示す連続区間に包含され、
前記第２および第３の区間情報のうちの少なくとも１つが存在する場合には、前記第２情報は、前記第２の区間情報を特定するための第４情報あるいは前記第３の区間情報を特定するための第５情報の少なくともいずれか１つをさらに含み、
前記第４情報は、前記第２の区間情報に含まれる前記第１情報の示す連続区間によって包含される前記第１情報の示す連続区間を含む第４の区間情報は含まず、
前記第５情報は、前記第３の区間情報に含まれる前記第１情報の示す連続区間を包含する前記第１情報の示す連続区間を含む第５の区間情報は含まず、
前記プログラム構造情報は、全区間情報の中でいずれにも包含されない前記第１情報の示す連続区間を含む区間情報を少なくとも１つ含み、
前記いずれにも包含されない前記第１情報の示す連続区間を含む区間情報を基準区間とし、
前記処理部は、各区間情報に含まれる前記第４情報を前記基準区間から各区間情報まで辿る間に存在する区間情報の数、あるいは各区間情報に含まれる前記第５情報を各区間情報から前記基準区間まで辿る間に存在する区間情報の数のどちらかを各区間情報の前記基準区間からの深さとして特定し、
同じ深さの区間情報同士は、包含関係を持たず、
前記処理部は、前記基準区間からの深さを表す第１の軸と前記包含関係を表す第２の軸との座標系に、前記基準区間からの深さと前記第２情報とに基づいて前記１つ以上の区間情報を配置することで、前記第１の軸については前記基準区間からの深さが同一である区間情報が同じ位置かつ深さ順に配置され、前記第２の軸については前記第１の区間情報が表している範囲内に当該第１の区間情報に含まれる全ての第４情報で特定される区間情報が配置された前記表示用情報、あるいは前記第１の区間情報に含まれる前記第５情報で特定される区間情報が表している範囲内に前記第１の区間情報が配置された前記表示用情報を生成し、
前記表示部は、生成された前記表示用情報に基づいて前記プログラム情報を表示する
ことを特徴とするプログラム情報表示システム。
【請求項２】
前記プログラム構造情報は、前記基準区間からの深さが同じ区間情報の中から選択された起点区間を少なくとも１つ含み、
前記処理部は、前記起点区間から前記第４情報を辿って各区間情報までに存在する区間情報の数、あるいは各区間情報から前記第５情報を辿って前記起点区間までに存在する区間情報の数を各区間情報の前記起点区間からの深さとして特定し、前記第４情報を前記起点区間から辿ったとしても到達しない区間情報、あるいは前記第５情報を辿ったとしても前記起点区間に到達しない区間情報に対しては前記起点区間からの深さを持たない区間情報であるとして前記座標系に配置しない
ことを特徴とする請求項１に記載のプログラム情報表示システム。
【請求項３】
各区間情報は、前記第１情報が示す区間内のソースコード実行中の特定のタイミングにおいて取得可能な内部の状態を示す第１の特徴量情報をさらに含み、
前記第１の特徴量情報は、特徴量の内容を示す第１の特徴量と、特徴量の属性を示す第１の属性情報とを含み、
前記処理部は、前記表示用情報に前記第１の特徴量を含める
ことを特徴とする請求項１または２に記載のプログラム情報表示システム。
【請求項４】
前記入力部は、さらに表示方式情報を入力し、
前記処理部は、前記表示方式情報に基づいて前記プログラム情報を可視化するための前記表示用情報を生成し、
前記表示方式情報は、前記第１の属性情報に対応する前記第１の特徴量を表示する際に用いる第１の表示方式情報を含み、
前記処理部は、前記第１の表示方式情報に基づいて、前記表示用情報に前記第１の特徴量およびその表示方法を含める
ことを特徴とする請求項３に記載のプログラム情報表示システム。
【請求項５】
各区間情報は、前記第１情報が示す区間内のソースコードの特徴を示す第２の特徴量情報をさらに含み、
前記第２の特徴量情報は、特徴量の内容を示す第２の特徴量と、特徴量の属性を示す第２の属性情報とを含み、
前記表示方式情報は、前記第２の属性情報に対応する前記第２の特徴量を表示する際に用いる第２の表示方式情報を含み、
前記処理部は、前記第２の表示方式情報に基づいて、前記表示用情報に前記第２の特徴量およびその表示方法を含める
ことを特徴とする請求項４に記載のプログラム情報表示システム。
【請求項６】
各区間情報は、特徴量の内容を示す第３の特徴量と、特徴量の属性を示す第３の属性情報とをさらに含み、
前記表示方式情報は、前記第３の属性情報に対応する前記第３の特徴量に基づいて、同一の区間情報に対する前記第４情報によって特定される全ての区間情報、あるいは同一の前記第５情報によって特定される区間情報に対する、前記同一の第５情報を持つ全ての区間情報の前記第２の軸における配置位置を決定する第３の表示方式情報を含み、
前記処理部は、前記第３の表示方式情報に基づき、前記第３の特徴量情報から前記同一の区間情報に対する前記第４情報によって特定される全ての区間情報、あるいは同一の前記第５情報によって特定される区間情報に対する、前記同一の第５情報を持つ全ての区間情報の前記第２の軸における位置を決定する
請求項５に記載のプログラム情報表示システム。
【請求項７】
各区間情報は、特徴量の内容を示す第４の特徴量と、特徴量の属性を示す第４の属性情報とをさらに含み、
前記表示方式情報は、前記第４の属性情報に対応する前記第４の特徴量に基づいて、各区間情報の前記第２の軸における長さを決定する第４の表示方式情報を含み、
前記処理部は、前記第４の表示方式情報に基づき、前記第４の特徴量情報から各区間情報の前記第２の軸における長さを決定する
請求項５または６に記載のプログラム情報表示システム。
【請求項８】
プログラム構造情報を入力する入力部と、前記プログラム構造情報から前記プログラム情報を可視化するための表示用情報を生成する処理部と、前記プログラム情報を表示する表示部とを備えるシステムによって実行されるプログラム情報表示方法であって、
前記プログラム構造情報は、１つ以上の区間情報を含み、
前記区間情報は、第１情報と第２情報とを含み、
前記第１情報は、対象プログラムのソースコード上の連続する領域を示す情報であり、
前記第２情報は、自己が含まれる区間情報と包含関係がある他の区間情報を特定するための情報であり、
第１の区間情報に含まれる前記第２情報は、第２の区間情報の存在の有無、または第３の区間情報の存在の有無を示す第３情報を含み、
前記第１の区間情報に含まれる前記第１情報の示す連続区間は、前記第２の区間情報に含まれる第１情報の示す連続区間を包含し、
さらに、前記第１の区間情報に含まれる前記第１情報の示す連続区間は、前記第３の区間情報に含まれる第１情報の示す連続区間に包含され、
前記第２および第３の区間情報のうちの少なくとも１つが存在する場合には、前記第２情報は、第２の区間情報を特定するための第４情報あるいは第３の区間情報を特定するための第５情報の少なくともいずれか１つをさらに含み、
前記第４情報は、前記第２の区間情報に含まれる前記第１情報の示す連続区間によって包含される前記第１情報の示す連続区間を含む第４の区間情報は含まず、
前記第５情報は、前記第３の区間情報に含まれる前記第１情報の示す連続区間を包含する前記第１情報の示す連続区間を含む第５の区間情報は含まず、
前記プログラム構造情報は、全区間情報の中でいずれにも包含されない前記第１情報の示す連続区間を含む区間情報を少なくとも１つ含み、
前記いずれにも包含されない前記第１情報の示す連続区間を含む区間情報を基準区間とし、
前記処理部は、各区間情報に含まれる前記第４情報を前記基準区間から各区間情報まで辿る間に存在する区間情報の数、あるいは各区間情報に含まれる前記第５情報を各区間情報から前記基準区間まで辿る間に存在する区間情報の数のどちらかを各区間情報の前記基準区間からの深さとして特定し、
同じ深さの区間情報同士は、包含関係を持たず、
前記処理部は、前記基準区間からの深さを表す第１の軸と前記包含関係を表す第２の軸との座標系に、前記基準区間からの深さと前記第２情報とに基づいて前記１つ以上の区間情報を配置することで、前記第１の軸については前記基準区間からの深さが同一である区間情報が同じ位置かつ深さ順に配置され、前記第２の軸については前記第１の区間情報が表している範囲内に当該第１の区間情報に含まれる全ての第４情報で特定される区間情報が配置された前記表示用情報、あるいは前記第１の区間情報に含まれる前記第５情報で特定される区間情報が表している範囲内に前記第１の区間情報が配置された前記表示用情報を生成し、
前記表示部は、生成された前記表示用情報に基づいて前記プログラム情報を表示する
ことを特徴とするプログラム情報表示方法。
【請求項９】
プログラム構造情報を解析して得られたプログラム情報を可視化する表示用情報を生成する処理をコンピュータに実行させるためのプログラムであって、
前記プログラム構造情報は、１つ以上の区間情報を含み、
前記区間情報は、第１情報と第２情報とを含み、
前記第１情報は、対象プログラムのソースコード上の連続する領域を示す情報であり、
前記第２情報は、自己が含まれる区間情報と包含関係がある他の区間情報を特定するための情報であり、
第１の区間情報に含まれる前記第２情報は、第２の区間情報の存在の有無、または第３の区間情報の存在の有無を示す第３情報を含み、
前記第１の区間情報に含まれる前記第１情報の示す連続区間は、前記第２の区間情報に含まれる第１情報の示す連続区間を包含し、
さらに、前記第１の区間情報に含まれる前記第１情報の示す連続区間は、前記第３の区間情報に含まれる第１情報の示す連続区間に包含され、
前記第２および第３の区間情報のうちの少なくとも１つが存在する場合には、前記第２情報は、第２の区間情報を特定するための第４情報あるいは第３の区間情報を特定するための第５情報の少なくともいずれか１つをさらに含み、
前記第４情報は、前記第２の区間情報に含まれる前記第１情報の示す連続区間によって包含される前記第１情報の示す連続区間を含む第４の区間情報は含まず、
前記第５情報は、前記第３の区間情報に含まれる前記第１情報の示す連続区間を包含する前記第１情報の示す連続区間を含む第５の区間情報は含まず、
前記プログラム構造情報は、全区間情報の中でいずれにも包含されない前記第１情報の示す連続区間を含む区間情報を少なくとも１つ含み、
前記いずれにも包含されない前記第１情報の示す連続区間を含む区間情報を基準区間とし、
前記処理は、各区間情報に含まれる前記第４情報を前記基準区間から各区間情報まで辿る間に存在する区間情報の数、あるいは各区間情報に含まれる前記第５情報を各区間情報から前記基準区間まで辿る間に存在する区間情報の数のどちらかを各区間情報の前記基準区間からの深さとして特定し、
同じ深さの区間情報同士は、包含関係を持たず、
前記処理は、前記基準区間からの深さを表す第１の軸と前記包含関係を表す第２の軸との座標系に、前記基準区間からの深さと前記第２情報とに基づいて前記１つ以上の区間情報を配置することで、前記第１の軸については前記基準区間からの深さが同一である区間情報が同じ位置かつ深さ順に配置され、前記第２の軸については前記第１の区間情報が表している範囲内に当該第１の区間情報に含まれる全ての第４情報で特定される区間情報が配置された前記表示用情報、あるいは前記第１の区間情報に含まれる前記第５情報で特定される区間情報が表している範囲内に前記第１の区間情報が配置された前記表示用情報を生成する
ことを含むことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、プログラム情報表示システム、その方法およびプログラムに関する。
【背景技術】
【０００２】
従来、プログラム実行の関数やメソッドの呼び出し関係を時間軸と呼び出された関数およびメソッドを示す軸とで表現することで、プログラム実行時の呼び出し関係の階層構造を表示する技術がある。この技術では、ある関数およびメソッドが他のどの関数およびメソッドから呼び出されたのか、また他のどの関数およびメソッドを呼び出しているのかといった情報を、プログラム実行時における呼び出しごとに収集し、収集した情報をもとに呼び出し関係を可視化することを実現している。
【０００３】
また、プログラム実行時の情報を解析し、情報を圧縮・抽象化してシーケンス図として表示する技術も存在する。この技術では、１回１回の呼び出し情報をそのまま可視化するのではなく、冗長な部分を圧縮することによって、より簡潔でかつ可読性の高いシーケンス図を表示することを可能としている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許第７８０２２３３号明細書
【非特許文献】
【０００５】
【非特許文献１】谷口考治、石尾隆、神谷年洋、楠本真二、井上克郎、“プログラム実行履歴からの簡潔なシーケンス図の生成手法”、コンピュータソフトウェア、Ｖｏｌ．２４、Ｎｏ．３、ｐｐ．１５３−１６９
【発明の概要】
【発明が解決しようとする課題】
【０００６】
以下の実施形態では、大量の呼び出しが発生するような大規模プログラムにおいても、プログラム実行時全体の情報をユーザに把握させることが可能なプログラム情報表示システム、その方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
実施形態にかかるプログラム情報表示システムは、プログラム構造情報に基づいてプログラム情報を表示するプログラム情報表示システムであって、前記プログラム構造情報を入力する入力部と、前記プログラム構造情報から前記プログラム情報を可視化するための表示用情報を生成する処理部と、前記プログラム情報を表示する表示部とを備え、前記プログラム構造情報は、１つ以上の区間情報を含み、前記区間情報は、第１情報と第２情報とを含み、前記第１情報は、対象プログラムのソースコード上の連続する領域を示す情報であり、前記第２情報は、自己が含まれる区間情報と包含関係がある他の区間情報を特定するための情報であり、第１の区間情報に含まれる前記第２情報は、第２の区間情報の存在の有無、または第３の区間情報の存在の有無を示す第３情報を含み、前記第１の区間情報に含まれる前記第１情報の示す連続区間は、前記第２の区間情報に含まれる第１情報の示す連続区間を包含し、さらに、前記第１の区間情報に含まれる前記第１情報の示す連続区間は、前記第３の区間情報に含まれる第１情報の示す連続区間に包含され、前記第２および第３の区間情報のうちの少なくとも１つが存在する場合には、前記第２情報は、前記第２の区間情報を特定するための第４情報あるいは前記第３の区間情報を特定するための第５情報の少なくともいずれか１つをさらに含み、前記第４情報は、前記第２の区間情報に含まれる前記第１情報の示す連続区間によって包含される前記第１情報の示す連続区間を含む第４の区間情報は含まず、前記第５情報は、前記第３の区間情報に含まれる前記第１情報の示す連続区間を包含する前記第１情報の示す連続区間を含む第５の区間情報は含まず、前記プログラム構造情報は、全区間情報の中でいずれにも包含されない前記第１情報の示す連続区間を含む区間情報を少なくとも１つ含み、前記いずれにも包含されない前記第１情報の示す連続区間を含む区間情報を基準区間とし、前記処理部は、各区間情報に含まれる前記第４情報を前記基準区間から各区間情報まで辿る間に存在する区間情報の数、あるいは各区間情報に含まれる前記第５情報を各区間情報から前記基準区間まで辿る間に存在する区間情報の数のどちらかを各区間情報の前記基準区間からの深さとして特定し、同じ深さの区間情報同士は、包含関係を持たず、前記処理部は、前記基準区間からの深さを表す第１の軸と前記包含関係を表す第２の軸との座標系に、前記基準区間からの深さと前記第２情報とに基づいて前記１つ以上の区間情報を配置することで、前記第１の軸については前記基準区間からの深さが同一である区間情報が同じ位置かつ深さ順に配置され、前記第２の軸については前記第１の区間情報が表している範囲内に当該第１の区間情報に含まれる全ての第４情報で特定される区間情報が配置された前記表示用情報、あるいは前記第１の区間情報に含まれる前記第５情報で特定される区間情報が表している範囲内に前記第１の区間情報が配置された前記表示用情報を生成し、前記表示部は、生成された前記表示用情報に基づいて前記プログラム情報を表示する。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施形態にかかるシステムの概略構成例を示すブロック図。
【図２】図２は、実施形態において表示対象とするソースコードの例。
【図３】図３は、実施形態において表示対象とする他のソースコードの例。
【図４】図４は、図２に示すソースコード全体の区間情報の例。
【図５】図５は、図３に示すソースコード全体の区間情報の例。
【図６】図６は、図２に示すソースコードにおける第２層の区間情報の例。
【図７】図７は、図２に示すソースコードにおける第２層の他の区間情報の例。
【図８】図８は、図３に示すソースコードにおける第２層の他の区間情報の例。
【図９】図９は、図３に示すソースコードにおける第２層の他の区間情報の例。
【図１０】図１０は、図３に示すソースコードにおける第２層の他の区間情報の例。
【図１１】図１１は、図２に示すソースコードにおける第３層の区間情報の例。
【図１２】図１２は、図２に示すソースコードにおける第４層の区間情報の例。
【図１３】図１３は、図２に示すソースコードにおける第４層の他の区間情報の例。
【図１４】図１４は、図３に示すソースコードにおける第３層の区間情報の例。
【図１５】図１５は、図３に示すソースコードにおける第３層の他の区間情報の例。
【図１６】図１６は、図３に示すソースコードにおける第３層の他の区間情報の例。
【図１７】図１７は、図３に示すソースコードにおける第４層の区間情報の例。
【図１８】図１８は、実施形態にかかる表示方式情報の例。
【図１９】図１９は、実施形態にかかる表示部による表示方式の例。
【図２０】図２０は、実施形態にかかるシステムの動作例を示すフローチャート。
【図２１】図２１は、実施形態にかかる表示方式の他の例。
【図２２】図２２は、実施形態にかかる表示方式のさらに他の例。
【発明を実施するための形態】
【０００９】
以下、添付図面を参照しながら、例示する実施形態にかかるプログラム情報表示システム、その方法およびプログラムを詳細に説明する。
【００１０】
以下、実施形態について、図面を参照しながら詳細に説明する。図１は、プログラム情報表示システムの概略構成を示す機能ブロック図である。図１に示すように、プログラム情報表示システムは、入力部１０１と処理部１０２と表示部１０３とが接続された構成を備える。
【００１１】
入力部１０１は、プログラム構造情報と表示方式情報とを処理部１０２に入力する。ここで、プログラム構造情報とは、解析の対象となるプログラムの情報を格納した情報であって、１つ以上の区間に関する情報を含んでいる。以下では、区間に関する情報を区間情報という。すなわち、区間情報とは、ソースコード中のある連続領域に関する情報をまとめたものである。また、表示方式情報とはプログラム構造情報に含まれているプログラムの情報をどのように表示するのかを格納した情報である。
【００１２】
本説明において、プログラム構造情報を構築する際のもとになるプログラムは、例えばＣ言語やＪａｖａ（登録商標）言語のようなプログラミング言語で記述されているソースコードである。図２および図３に、本実施形態においてプログラム構造情報を構築する際のもととするプログラムのソースコードの例を示す。
【００１３】
本説明で例示するプログラムは、ファイル名が“ｈｏｇｅ１．ｃ”のファイル（図２）と、ファイル名が“ｈｏｇｅ２．ｃ”のファイル（図３）との２つのファイルより成り立っている。図２および図３のファイルのソースコードの左側に記載されている数字はソースコード上の行番号を示している。この行番号は、本実施例の説明のために記載したものであり、実際のソースコードには明示的に記載されない。
【００１４】
図２のファイルのソースコードは、区間２０１と区間２０２とを含んでいる。区間とは、ソースコードにおいて一つのまとまりとして分割できる連続領域である。区間２０１は区間２１１を含んでおり、区間２１１は区間２２１および区間２２２を含んでいる。同様に、図３に示すように、図３のファイルのソースコードは、区間３０１と区間３０２と区間３０３とを含んでいる。区間３０１は区間３１１および区間３１２を含み、区間３１１はさらに区間３２１を含んでいる。また、区間３０３は区間３１３を含んでいる。また、図２および図３のファイル自体もそれぞれ１つの区間として扱うことができる。
【００１５】
以上のように、図２および図３のファイルのソースコードは、１つ以上の区間が階層的に配置されるように記述されている。そこで、以下の説明では、図２および図３のファイル自体をそれぞれ第１層とし、区間２０１、２０２、３０１、３０２および３０３を第２層とし、区間２１１、３１１、３１２および３１３を第３層とし、区間２２１、２２２および３２１を第４層とする。すなわち、図２および図３のソースコード（第１層）から数えてｎ（ｎは正の整数）番目の層を第ｎ層という。このように、プログラム構造情報では、上記のように、各区間情報とソースコードの階層が対応付けられるようになっている。
【００１６】
区間情報は、ソースコード位置情報（第１情報）と、親子関係情報（第２情報）と、特徴量情報とを含む。ソースコード位置情報は、区間情報が示す区間がソースコード上のどの部分にあたるのかを示す。親子関係情報は、区間情報同士の親子関係を示す。特徴量情報は、ソースコード位置情報が示す区間内で取得可能な情報を示す。
【００１７】
区間情報同士の親子関係とは、上下階層との関係を示す情報である。たとえば２つの区間情報があったときに、第１の区間情報に含まれるソースコード位置情報の示す領域が第２の区間情報に含まれるソースコード位置情報の示す領域を包含しているとすると、第１の区間情報は第２の区間情報の親であるとし、第２の区間情報は第１の区間情報の子であるとする。同様に、たとえば２つの区間情報があったときに、第１の区間情報に含まれるソースコード位置情報の示す領域が第３の区間情報に含まれるソースコード位置情報の示す連続区間に包含されているとすると、第１の区間情報は第３の区間情報の子であるとし、第３の区間情報は、第１の区間情報の親であるとする。
【００１８】
親子関係情報は、このような親子関係（または包含関係ともいう）を特定するために用いられる。そこで、親子関係情報には、ある区間情報に対して親子関係を有する区間情報の存在の有無を示す情報（第３情報）、および、親子関係を有する区間情報が存在する場合にはそれを特定するための情報（第４情報および第５情報）が含まれる。この親子関係を有する区間情報を特定するための情報において、子の区間情報を特定するための情報（第４情報）には、たとえば上述の２つの区間情報の例を用いて説明すると、第２の区間情報に含まれるソースコード位置情報の示す連続区間によって包含されるソースコード位置情報の示す連続区間を含む区間情報（第４の区間情報）は含まれない。また、親の区間情報を特定するための情報（第５情報）には、第３の区間情報に含まれるソースコード位置情報の示す連続区間を包含するソースコード位置情報の示す連続区間を含む区間情報（第５の区間情報）は含まれない。
【００１９】
なお、親子関係を有する区間情報の存在の有無を示す情報（第３情報）には、それぞれ独立な情報として用意するだけでなく、たとえば親子関係を有する区間情報を特定するための情報（第４情報および第５情報）と空データ（ｎｕｌｌ等）との組み合わせを用いることができる。
【００２０】
特徴量情報は、ソースコード位置情報が示す区間内を実行中の特定のタイミングにおいて取得可能な内部状態、あるいはソースコード位置情報が示す区間内のソースコードそのものおよびそれを解析することによって取得できる情報を示す。前者には、例えば、ソースコード位置情報が示す区間内のプログラム実行時の実行時間が含まれ得る。後者には、例えば、ソースコード位置情報が示す領域内のソースコードの行数が含まれ得る。
【００２１】
図４〜図１７に、図２または図３に示す各区間（ソースコードも含む）についての区間情報の一例を示す。図４は、図２のファイル全体の区間情報の一例を示す。図５は、図３のファイル全体の区間情報の一例を示す。図６は、図２のソースコードにおける区間２０１の区間情報の一例を示す。図７は、図２のソースコードにおける区間２０２の区間情報の一例を示す。図８は、図３のソースコードにおける区間３０１の区間情報の一例を示す。図９は、図３のソースコードにおける区間３０２の区間情報の一例を示す。図１０は、図３のソースコードにおける区間３０３の区間情報の一例を示す。図１１は、図２のソースコードにおける区間２１１の区間情報の一例を示す。図１２は、図２のソースコードにおける区間２２１の区間情報の一例を示す。図１３は、図２のソースコードにおける区間２２２の区間情報の一例を示す。図１４は、図３のソースコードにおける区間３１１の区間情報の一例を示す。図１５は、図３のソースコードにおける区間３１２の区間情報の一例を示す。図１６は、図３のソースコードにおける区間３１３の区間情報の一例を示す。図１７は、図３のソースコードにおける区間３２１の区間情報の一例を示す。図４〜図１７に示す例において、左側に記載されている数字は各情報の行番号を示している。この行番号は、本実施形態の説明のために記載したものであり、実際の情報には明示的に記載されない。
【００２２】
図４〜図１７に示す例では、１行目がソースコード位置情報を示し、２行目が親子関係情報のうち親の情報（親情報）を示し、３行目が親子関係情報のうち子の情報（子情報）を示し、４行目以降（たとえば図４〜１０までは４〜７行目、図１１〜１７では３〜６行目まで）が特徴量情報を示している。
【００２３】
図４に示す図２のファイル全体に対応する区間情報の例を用いてより詳細に説明すると、１行目のソースコード位置情報は、当該区間情報と対応する区間（以下、該当区間という）が“ｈｏｇｅ１．ｃ”というファイルの１行目から３００行目まで（ファイル全体）と対応していることを示している。２行目の親情報には、親の区間情報がないことを示す“ｎｏｎｅ”という情報が示されている。３行目の子情報には、ファイル“ｈｏｇｅ１．ｃ”の１行目から１００行目に対応する区間情報と、ファイル“ｈｏｇｅ１．ｃ”の１０２行目から３００行目までに対応する区間情報との２つの区間情報が子であることが示されている。図２のファイルに記載されている区間を参照すると、図４と対応しているファイル全体（１行目から３００行目まで）の中に、１行目から１００行目までに対応する区間２０１と１０２行目から３００行目までに対応する区間２０２が存在している。また、区間２０１と対応する図６の区間情報の親情報を示す２行目には、“ｈｏｇｅ１．ｃ”の１行目から３００行目までに対応する区間情報（つまりは図４の区間情報）が親であることが示されている。また、４行目以降７行目までの特徴量情報のうち、４行目には、ファイルや関数の名前を示す属性情報を表す“ｎａｍｅ”と、そのファイル名が“ｈｏｇｅ１．ｃ”であることが示されている。５行目には、区間情報の種類を示す属性情報を表す“ｔｙｐｅ”と、その種類がソースコードを含むファイルを示す“ｆｉｌｅ”であることが示されている。６行目には、区間情報と対応する区間がソースコードの何行分に対応しているのかを示す属性情報を表す“ｌｉｎｅ”と、その行数が３００行であることが示されている。７行目には、区間情報と対応する区間がどの程度の時間実行されていたのかを示す属性情報を表す“ｔｉｍｅ”と、その時間が１０００ミリ秒であったことが示されている。
【００２４】
ファイル名“ｈｏｇｅ１．ｃ”と対応する図２のファイルを確認すると、“ｈｏｇｅ１．ｃ”のファイルは３００行のソースコードから構成されており、ファイル全体がソースコード位置情報によって対応付けられていること、および、３００行の行数といった情報がわかる。
【００２５】
また、たとえば図６〜図１０に示されている区間情報では、５行目に、区間情報の種類がソースコード上の関数であることを表す“ｆｕｎｃｔｉｏｎ”が示されている。さらに、図１１、図１６および図１７に示されている区間情報では、４行目に、区間情報の種類がソースコード上の繰り返し（ループ）を表す“ｌｏｏｐ”が示されている。さらにまた、図１２〜図１５に示されている区間情報では、４行目に、区間情報の種類がソースコード上にある条件分岐であることを表す“ｃｏｎｄｉｔｉｏｎ”が示されている。
【００２６】
なお、区間情報の種類を示す属性情報が“ｌｏｏｐ”と“ｃｏｎｄｉｔｉｏｎ”の２種類の区間情報については、図２または図３のファイルを参照すると分かるように、明示的な名称が付与されていない。そのため、図４〜図１０に示す区間情報の４行目に存在していたファイルや関数の名前を示す“ｎａｍｅ”という特徴量情報が省略されている。
【００２７】
以上のように、図４〜図１７に示した区間情報から、図２および図３に示すソースコードを対象としたプログラム構造情報がそれぞれ構成される。そこで、図２および図３のファイル上の特定の区間と各種特徴量とを対応付けることで、詳細な特徴量の情報を図２および図３のファイルのソースコードと関連付けて抽象化することが可能となる。その結果、図２および図３のファイルのソースコード上の各区間がどういった状況になっているかを辿ることができる。
【００２８】
さらに、各区間情報が親子関係を持つことで、下層の区間から上層の区間までの親子関係を管理することが可能となるため、下層の区間の情報をより上層の区間の情報によって抽象化することも可能となる。例えば、ループが多重に入り組んだ構造を表示する場合、最上位のループの情報に下層の区間の情報もまとめて表示することで、より見やすく表示することもできる。逆に、上層の区間の情報をより下層の区間の情報によって詳細化することも可能となる。
【００２９】
また、表示方式情報とは、特徴量情報の属性ごとに各特徴量をどのように表示するのかを示す情報である。図１８に、本実施形態にかかる表示方式情報の一例を示す。なお、以下の説明では、図４〜図１７に示す区間情報からなるプログラム構造情報を図１８に示す表示方式情報にしたがって表示する場合を例に挙げる。
【００３０】
図１８に示すように、表示方式情報では、１行目に、“ｎａｍｅ”という属性情報を持つ特徴量をテキスト形式で表示することが示されている。また、２行目には、もし“ｎａｍｅ”という属性情報を持つ特徴量を持たない区間情報の場合、“ｔｙｐｅ”という属性情報を持つ特徴量をテキスト形式で表示することが示されている。
【００３１】
なお、これら以外にも、ソースコード位置情報に対して同じ親を持ち且つ同じ深さの区間情報を昇順に表示することを示す“ｐｏｓｉｔｉｏｎ：ｏｒｄｅｒ”や、“ｔｉｍｅ”という属性情報を持つ特徴量に応じて区間情報を表示する際の長さを変化させて表示することを示す“ｔｉｍｅ：ｌｅｎｇｔｈ”などの記述が表示方式情報に含まれていてもよい。
【００３２】
たとえば、“ｐｏｓｉｔｉｏｎ：ｏｒｄｅｒ”の記述は、ソースコード位置情報を示す開始位置をソートし、昇順に並べることを示す。ソースコード位置情報には、ソースコードのファイルを示すテキスト情報とソースコード上のライン数を示す整数の情報とが含まれている。そこで、たとえば表示対象の区間情報をテキスト情報でソートし、同じファイルのものはさらにライン数でソートした結果を昇順で表示してもよい。
【００３３】
また、“ｔｉｍｅ：ｌｅｎｇｔｈ”の記述を含む場合、例えば、同じ親を持ち且つ同じ深さの区間情報を並べる際に、区間情報がそれぞれ持っている“ｔｉｍｅ”という属性情報を持つ特徴量を比較し、時間が長いものに関しては対応している軸に対して長く表示し、短いものに関しては短く表示してもよい。
【００３４】
入力部１０１が取得したプログラム構造情報と表示方式情報は、処理部１０２に入力される。処理部１０２は、表示方式情報に基づき、プログラム構造情報を利用した表示を行うための配置位置を決定する。配置位置の決定方法としては、例えば、横軸に起点区間からの深さ、縦軸にソースコード上の位置関係をとる座標系に、区間情報を配置する方法などとしてよい。起点区間とは、表示する区間情報の範囲を設定するための区間情報である。起点区間は、基準区間からの深さが同一である１つ以上の区間情報のことを示す。基準区間とは、区間情報の中で親を持たない区間情報のことを示す。
【００３５】
図４〜図１７の区間情報の中で基準区間となるのは、図２および図３のファイル全体に対応する、図４および図５に示す区間情報である。これらの区間情報を参照すると、親情報が“ｎｏｎｅ”となっているため、親となる区間が存在しないことがわかる。
【００３６】
基準区間からの深さというのは、ある区間情報から親をたどっていった結果、基準区間に至るまでにある親の数、あるいは基準区間からある区間情報まで子をたどっていった結果、ある区間情報に至るまでにある子の数のどちらかを示す。ここでは、ある区間情報から親をたどっていく場合を利用して説明する。例えば、図１２に示す区間情報の場合では、親情報が“ｈｏｇｅ１．ｃ  １０−８０”となっているので、図１２の区間情報の親は、図１１に示す区間情報であることがわかる。また、図１１の区間情報の親情報が“ｈｏｇｅ１．ｃ  １−１００”となっているので、図１１の区間情報の親は、図６に示す区間情報であることがわかる。さらに、図６の区間情報の親情報が“ｈｏｇｅ１．ｃ  １−３００”となっているので、図６の区間情報の親は、図４に示す区間情報であることがわかる。図４の区間情報は基準区間であるので、図１２の区間情報から基準区間までの親の数は図１１、図６および図４の区間情報の合計３つとなる。よって、図１２の区間情報における基準区間からの深さは３となる。なお、基準区間である図４の区間情報の基準区間からの深さは０である。
【００３７】
起点区間からの深さは、上記した基準区間からの深さの算出方式において、基準区間の替わりに起点区間を用いたものである。ただし、起点区間の選択によっては親をたどっていっても起点区間に到達しないものや、子をたどっていっても各区間情報に到達しないものもあり得る。このような区間情報については深さを持たないこととし、表示対象から除外してよい。
【００３８】
つづいて、処理部１０２において実行される区間情報の配置位置を決定する方法について説明する。なお、以下の説明では、基準区間（図４および図５の区間情報）を起点区間と設定したと仮定する。本実施形態では、横軸に起点区間からの深さをとるため、全ての区間情報について起点区間からの深さを算出する必要がある。
【００３９】
上述した図１２の区間情報の深さ（３）を算出した場合の例と同様に各区間情報の深さを算出すると、図４の区間情報の深さは０、図５の区間情報の深さは０、図６の区間情報の深さは１、図７の区間情報の深さは１、図８の区間情報の深さは１、図９の区間情報の深さは１、図１０の区間情報の深さは１、図１１の区間情報の深さは２、図１２の区間情報の深さは３、図１３の区間情報の深さは３、図１４の区間情報の深さは２、図１５の区間情報の深さは２、図１６の区間情報の深さは２、図１７の区間情報の深さは３となる。
【００４０】
そこで、本実施形態では、表示対象の区間情報（本例では全ての区間情報）を、横軸方向に深さ順に並べる。この段階では、同じ深さを持つものは同じ場所に配置される。
【００４１】
次に、縦軸方向に親子関係を示す。ここで、各区間情報を長方形の領域で表現する場合、親子関係を示すために、親の区間情報の縦軸方向の長さはすべての子の区間情報の縦軸の長さを足し合わせたもの以上の長さに設定される。そして、親の区間情報の縦軸の範囲内に全ての子の区間情報の縦軸が入るようにする。このようにすることで、ソースコード全体の親子関係をユーザが容易に把握できるように配置することが可能になる。
【００４２】
次に、特徴量情報を表示する。特徴量情報の表示形式については表示方式情報（図１８参照）に記述されているので、本実施形態ではその通りに表示方式が変更される。
【００４３】
具体的には、まず、区間情報の中で“ｎａｍｅ”という属性情報を持つ特徴量を持っている図４〜図１０の区間情報については、“ｎａｍｅ”の情報をテキストとしてそのまま区間情報を表す長方形の中に表示する。例えば、図４の区間情報の場合、特徴量情報の“ｎａｍｅ”には、“ｈｏｇｅ１．ｃ”という情報が入っているので、これをテキスト情報として長方形の中に表示する。
【００４４】
次に、区間情報の中で“ｎａｍｅ”という属性情報を持つ特徴量を持っていない図１１〜図１７の区間情報については、“ｔｙｐｅ”という属性情報を持つ特徴量の情報をテキストとして区間情報を表す長方形の中に表示する。例えば、図１１の区間情報の場合、特徴量情報の“ｔｙｐｅ”には、“ｃｏｎｄｉｔｉｏｎ”という情報が入っているので、これをテキスト情報として長方形の中に表示する。このように、単一的な表示方法だけでなく、区間情報に合わせて表示方式を選択可能な記述も可能である。
【００４５】
次に、各区間情報の中に存在するソースコード位置情報の開始位置の順番で、同じ親を持ち且つ同じ深さの区間情報を縦軸方向に並べる。具体的には、まず、深さ０、つまり親がない区間情報は図４の区間情報および図５の区間情報であるため、これらのソースコード位置情報の開始位置を比較する。ただし、図４および図５の区間情報は両方ともファイルを示す区間情報であるため、開始位置の比較では順番を決めることができない。そこで、本実施形態では、“ｎａｍｅ”の属性情報を持つ特徴量“ｈｏｇｅ１．ｃ”と“ｈｏｇｅ２．ｃ”とをテキストとしてソートした結果を利用する。その場合、図４の区間情報（ｈｏｇｅ１．ｃ）が縦軸方向で上に配置され、図５の区間情報（ｈｏｇｅ２．ｃ）が下に配置される。ここではあらかじめ表示方法が決められているとしているが、前記“ｐｏｓｉｔｉｏｎ：ｏｒｄｅｒ”のような記述を利用することで、表示方式情報を参照して表示方式を決めることも可能である。
【００４６】
次に、深さが１である区間情報は、図６〜図１０の区間情報である。これらのうち、図４の区間情報が親であるのは図６および図７の区間情報であり、図５の区間情報が親であるのは図８、図９および図１０の区間情報である。そこで、親の縦軸の長さの中に子の縦軸が入るようにするためには、図４の区間情報と図５の区間情報との位置関係から、図６および図７の区間情報が縦軸方向で上に配置され、図８、図９および図１０の区間情報が縦軸方向で下に配置されることが決定される。
【００４７】
さらに、ソースコード位置情報の開始位置を、図４の区間情報の子と図５の区間情報の子とでそれぞれで別々に比較する。すると、図６の区間情報の開始位置は１行目であり、図７の区間情報の開始位置は１０２行目であるため、図４の区間情報の子として表示する図６および図７の区間情報については、図６の区間情報が縦軸方向で上に配置され、図７の区間情報が縦軸方向で下に配置されることが決定される。同様に、図８の区間情報の開始位置は１行目であり、図９の区間情報の開始位置は１６２行目であり、図１０の区間情報の開始位置は２５２行目であるため、図５の区間情報の子として表示する図８、図９および図１０の区間情報については、図８の区間情報が縦軸方向で上に配置され、図１０の区間情報が縦軸方向で下に配置され、図９の区間情報が縦軸方向で図８の区間情報と図１０の区間情報との間に配置されることが決定される。
【００４８】
また、深さが２以上である区間情報についても、同様の方法で、縦軸方向の配置順が決定される。
【００４９】
次に、各区間情報の中に存在する“ｔｉｍｅ”という属性情報を持つ特徴量によって、各区間情報を表現する長方形の縦軸の長さを変化させる。例えば、同じ親を持ち且つ同じ深さの区間情報の縦軸の長さを“ｔｉｍｅ”の比率に合わせて変化させる。具体的には、深さ０の図４および図５の区間情報の場合、“ｔｉｍｅ”の特徴量はそれぞれ１０００、９０００である。そこで、縦軸の長さの比が１：９になるように、それぞれを表現する長方形を設定する。ここではあらかじめ表示方式が決められているとしているが、前記“ｔｉｍｅ：ｌｅｎｇｔｈ”のような記述を利用することで、表示方式情報を参照して表示方式を決めることも可能である。
【００５０】
また、深さ１の図６〜図１０の区間情報の場合、まずは図４の区間情報を親とする図６および図７の区間情報について、“ｔｉｍｅ”の特徴量を参照する。図６の区間情報の“ｔｉｍｅ”の特徴量は８００であり、図７の区間情報の“ｔｉｍｅ”の特徴量は２００である。そこで、図６および図７の区間情報については、図４の区間情報の縦軸の長さの範囲内で、その長さの比が４：１になるように、それぞれを表現する長方形を設定する。同様に、図５の区間情報を親とする図８、図９および図１０の区間情報については、それぞれの“ｔｉｍｅ”の特徴量が２０００、１０００、６０００であるので、図５の区間情報の縦軸の長さの範囲内で、その長さの比が２：１：６になるように、それぞれを表現する長方形が設定される。
【００５１】
また、深さが２以上である区間情報についても、同様の方法で、縦軸の長さが決定される。
【００５２】
以上のように各区間情報を表現する長方形の配置や長さ（以下、配置情報という）を決定すると、処理部１０２は、この配置情報に基づいて、プログラム構造情報の表示方式を示す表示用情報を生成する。図１９に、本実施形態において処理部１０２が生成した表示用情報を用い、表示部１０３が表示したプログラム情報の一例を示す。なお、図１９に示すプログラム情報の表示例は、図２および図３に示すファイルに対して生成されたものである。また、図１９における括弧内の参照番号は、対応する区間を特定するためのものであって、表示される情報ではない。
【００５３】
図１９の表示例では、第１層の図４および図５の区間情報を示す長方形が、横軸方向で同じ位置に配置され、縦軸方向で上下に配置されている。また、第２層の図６〜図１０の区間情報を示す長方形は、横軸方向で同じ位置に配置される。その際、図４の区間情報を親とする図６および図７の区間情報を示す長方形は、縦軸方向において図４の区間情報を示す長方形の範囲内となるように上下に配置され、図５の区間情報を親とする図８、図９および図１０の区間情報を示す長方形は、縦軸方向において図５の区間情報を示す長方形の範囲内となるように上中下に配置される。以降、第２層より下位の層に対しても、同様に、各区間情報を示す長方形が配置されている。
【００５４】
また、各区間情報を示す長方形内には、それぞれの区間の特徴量情報がテキスト形式で記述されている。図１９に示す例では、特徴量情報のうち、属性情報“ｎａｍｅ”がテキスト形式で記述されている。なお、特徴量情報が属性情報“ｎａｍｅ”を含まない場合には、属性情報“ｔｙｐｅ”がテキスト形式で記述されている。
【００５５】
以上のようにプログラム情報を表示するための指示が表示用情報に含まれており、これらの情報が処理部１０２から表示部１０３に入力される。表示部１０３は、入力された表示用情報に基づいてプログラム情報をディスプレイ等に表示することで、ユーザへ提供する。
【００５６】
以上のように、区間情報が階層的に配列する図１９のプログラム情報を表示することで、ユーザは、図２および図３に挙げたファイルのソースコード中のどの部分の実行時間が支配的なのかや、その支配的な部分のソースコード中の位置等を一目で把握できる。その結果、改良や問題の修正が必要な部分を一目で把握することが可能となる。
【００５７】
つづいて、プログラム情報表示システムの動作の概略を説明する。図２０は、プログラム情報表示システムの動作例を示すフローチャートである。プログラム情報表示システムでは、まず、入力部１０１が、プログラム構造情報と表示方式情報とを入力する（ステップＳ１０１）。
【００５８】
次に、処理部１０２が、第１軸（たとえば横軸）上の位置について、表示対象となる区間情報の基準区間からの深さに基づき決定する（ステップＳ１０２）。次に、処理部１０２は、第２軸（たとえば縦軸）上の位置について、親子関係情報に基づき決定する（ステップＳ１０３）。
【００５９】
具体的には、処理部１０２は、基準区間からの深さを表す第１軸と包含関係を表す第２軸との座標系に、基準区間からの深さと親子関係情報とに基づいて１つ以上の区間情報を配置することで、第１軸については基準区間からの深さが同一である区間情報を同じ位置かつ深さ順に配置する。また、第２軸については、処理部１０２は、親となる区間情報が表している範囲内に当該親となる区間情報に対して子となる全ての区間情報を配置する。あるいは、第２軸については、処理部１０２は、子となる区間情報に対して親として特定される区間情報が表している範囲内に、当該区間情報を親とする全ての子の区間情報を配置する。
【００６０】
次に、処理部１０２は、表示方式情報に基づいて、各区間情報のオブジェクトに対する特徴量情報の表示方法を決定する（ステップＳ１０４）。これにより、図１９に示すような表現を実現するための表示用情報が生成される。
【００６１】
次に、処理部１０２が生成した表示用情報を表示部１０３へ出力し、表示部１０３が入力された表示用情報に基づいてプログラム情報を表示する（ステップＳ１０５）。その後、プログラム情報表示システムは、本動作を終了する。
【００６２】
以上のように、本実施形態によれば、大量の呼び出しが発生するような大規模プログラムにおいても、プログラム実行時の全体情報の表示、複数の情報の同時表示、属性の異なる情報の統合表示、複数言語の組み合わせによるシステムに対する情報の表示、階層構造間の特徴情報の表示などが可能である。その結果、プログラム実行時の全体情報の把握、複数の情報の同時把握、属性の異なる情報の統合的な把握、複数言語の組み合わせによるシステムに対する情報の把握、階層構造間の特徴情報の把握などが容易となる環境をユーザに提供することが可能となる。
【００６３】
たとえば、ソースコードの包含関係を利用した階層構造を２つの軸にマッピングすることによる可視化を行うことで、プログラム全体の情報を容易に把握することが可能となる。また、マッピングされた画像に特徴量情報を表示することで、プログラム全体の特徴も同時に把握することが可能となる。
【００６４】
さらに、起点区間を付加することで表示する区間情報を任意に選択することが可能となる。その結果、より細かい情報を参照する際の拡大、およびより広い情報を参照する際の縮小が可能となる。
【００６５】
さらにまた、特徴量情報としてソースコード実行時に取得可能な動的情報を付加することで、ソースコードの構造情報と動的情報を組み合わせて表示することが可能となる。
【００６６】
さらにまた、特徴量情報として、ソースコードそのものを解析した結果から取得可能な静的情報を付加することで、動的情報と静的情報を組み合わせて表示することが可能となる。
【００６７】
さらにまた、第２の軸（たとえば縦軸）における場所を特徴量に基づいて決定することで、第２の軸における場所を任意の特徴量に応じて一意に決めることができる。
【００６８】
さらにまた、第２の軸における長さを特徴量に基づいて決定することで、第２の軸における長さを任意の特徴量に応じて一意に決めることができる。
【００６９】
なお、図１には、プログラム情報表示システムの各機能部品を処理手順の順番で接続した最も基本的な構成が示されている。しかしながら、実施形態はこれに限らない。例えば、複数の機能ブロックが協調しながら動作を行う構成、一部の機能ブロックの順番を入れ替える構成、ある機能ブロックを他の機能ブロックに分割する構成、これら３つの実施形態を組み合わせる構成等で実施することもできる。また、機能ブロックを複数のモジュールに分割して実施することもできる。
【００７０】
また、入力部１０１は、単なるキーボードやマウス等の入力デバイスであってもよいし、ＰＣなどで構成された端末装置であってもよい。さらに、入力部１０１への入力方法は、ユーザがプログラム構造情報と表示方式情報とを入力部１０１に直接入力してもよいし、入力部１０１がネットワーク上のストレージ（不図示）に予め登録されている情報を取得してもよい。このように、必要な情報を処理部１０２に受け渡すことが可能であれば、様々な入力方法を採用することが可能である。
【００７１】
また、処理対象とするプログラムは、図２および図３で例示したようなものに限られない。例えば、特定の処理装置独自のプログラミング言語であっても良いし、何らかのコンパイラ装置等でコンパイルされ、特定のコンピュータ装置上で実行可能なバイナリ形式であっても良い。もしくは、それらの中で用いられる中間表現の形式であってもよいし、アセンブリ言語のような形に変換された結果であっても良い。さらには、何らかのオペレーションシステムなどの環境下で動作するアプリケーションプログラムであってもよいし、オペレーションシステムや基盤システムそのもののプログラムや、ハードウェアを動作させるためのデバイスドライバのようなプログラムであっても良い。
【００７２】
このように、何らかの方法で特徴量情報が対応でき、ソースコードと同様の親子関係が成り立つ形式であれば、如何なるプログラムも対象とすることが可能である。また、プログラムは１つのファイルに全ての情報が入っている必要はなく、情報が複数のファイルに分割されていてもよい。
【００７３】
また、ソースコード位置情報も上述において例示したものに限られない。例えば、ソースコードが存在する場所のパス情報を含めても良いし、ソースコードが存在するサーバの情報を含めても良い。ソースコードのライン数の替わりに、ソースコードの連続区間をプログラミング言語のブロックのような構造で囲い、囲われた領域に名前をつけて、その名前を利用しても良い。もしくは、区間情報ごとに識別子（ＩＤ）を付与し、そのＩＤを利用しても良い。さらには、ソフトウェア管理システム上で発行されるＩＤ番号等を用いてバージョンを特定した情報を付加しても良い。このように、対象となるソースコードの領域を指し示すことができれば、様々な形式を採用することが可能である。
【００７４】
さらに、親子関係情報も上述において例示したものに限られない。各区間情報の親の情報のみ、あるいは子の情報のみを保持していても良いし、区間情報ごとにＩＤを付与し、そのＩＤによって親子関係を表しても良いし、区間情報の持つ特徴量の中に区間情報ごとにユニークな情報が含まれているならば、それを流用しても良い。または、親子関係情報をあらかじめ持っておかずに、要求があった際に全区間情報のソースコード位置情報から計算した結果を用いても良い。また、アプリケーション全体を表すような区間情報や、モジュール全体を示すようなファイルにまたがる区間情報を追加し、それぞれに親子関係を設定して利用しても良い。このように、これらの情報から各区間情報の深さを計算することができれば、様々な形式を採用することが可能である。
【００７５】
さらにまた、特徴量情報も上述において例示したものに限られない。例えば、ソースコード位置情報の示す区間内において、メモリアクセスが何回発生しているのか、どのメモリへアクセスされているのか、どのタイミングでどの程度メモリが利用されているのか、メモリがいつ確保され、いつ解放されているのかといった情報であっても良い。または、ソースコード位置情報の示す区間内を実行中のあるタイミングにおいて各変数等に格納されている実際の値であっても良い。もしくは、ソースコード位置情報の示す区間内を実行中に、このプログラムを動作させているほかのソフトウェアのどれが動作していたのかや、ハードウェアから得られる動作情報であっても良い。このように、ソースコード位置情報の示す区間内を実行中、あるいは解析した結果、収集可能な情報であれば、様々な形式を採用することが可能である。
【００７６】
さらにまた、“ｔｉｍｅ”という属性情報の示す実行時間も上述において例示した単純にその区間情報を示す区間内を実行している時間を示したものでなくてもよい。たとえば、ある区間情報の区間内で関数呼び出しなどが行われ、その区間情報の持つ区間外に実行が移ってしまった場合、区間外の実行時間については加えなくてもよい。逆に、たとえば関数呼び出し等が含まれていた場合には、区間情報の区間内であればその実行時間を加算してもよい。このように、区間情報の親子関係を利用して各種特徴量情報の算出方法も変化させることも可能である。
【００７７】
さらにまた、表示方式情報も上述において例示したものに限られない。例えば、区間情報を示す図形を塗りつぶす色を変えてもいいし、区間情報を示す図形の枠線の色を変えても良い。または、区間情報を示す図形自体を変えても良いし、区間情報を示す図形に影を付けたり、立体的に見せたり、光が当たっているように見せたり、塗りつぶし方を変えてみたりしても良い。このように、表示方式として他との差分が明示できるのであれば、様々な方式を採用することが可能である。
【００７８】
さらに、これらの表示形式を１つの属性情報に対して複数割り当てることも可能である。例えば、ある特徴量をテキストで表示しつつ、区間情報を塗りつぶす色を特徴量に応じて変更しても良い。
【００７９】
プログラム構造情報の保存形式についても、図４〜図１７で例示したようなテキスト形式に限られない。既存のデータベースシステムに合わせた形式でも良いし、その他の保存形式を選択しても良い。
【００８０】
ソースコード位置情報、親子関係情報および特徴量情報は、上述の例では、区間情報ごとに単一のファイルに記録されているように扱っていたが、このような例に限られない。たとえば、全ての情報を単一のファイルに記録しても良いし、より細かい単位に分割して保存しても良い。このように、ある特定の区間情報がシステム側から読み込み可能であれば、様々な保存形式を採用することが可能である。
【００８１】
また、上述の例では、ある特定の区間情報に対し、１つの属性情報につき１つずつの情報のみを保持していたが、このような例に限られない。たとえば、複数の情報を保持していても良い。また、ソースコードのバージョンや入力、テストコードや動作スレッド、実行環境等の違いによって得られた複数の情報を保持していても良い。このように、ソースコード位置情報の示す区間を結びつけることが可能であれば、保持する特徴量情報は制限されない。
【００８２】
さらにまた、表示方式情報は、上述の例では、単一のファイルに記録されているように扱っていたが、このような例に限らない。例えば、特徴量毎に別々のファイルに記録しても良いし、特徴量情報に対して表示方式情報を付与しても良い。また、上述の例では、表示方式の一部はあらかじめ決められている方式、残りを表示方式情報に保存しておく方法を採用していたが、全ての表示方式についてこのように扱っても良いし、逆に全ての表示方式の情報を表示方式情報に含めても良い。このように、表示様式情報がシステム側から読み込み可能であれば、様々な保存形式を採用することが可能である。
【００８３】
さらにまた、処理部１０２は、単一のＰＣやサーバで構成されてもよいし、複数のＰＣやサーバで構成されていてもよい。本システムのための専用のハードウェアで構成されていても良い。複数のＰＣやサーバで構成される場合、処理部１０２は、各処理モジュールがネットワーク上に分散配置された、いわゆるクラウドシステムであってもよい。
【００８４】
さらにまた、プログラム情報を表示用情報を用いて表示する方法も、上述において例示したものに限られない。たとえば、上述の例における横軸と縦軸との関係を逆にしても良い。または、３次元表示を利用することでさらにもう１つ軸を追加し、特徴量の表現に利用しても良いし、軸自体を回転させても良い。このように、最低でも２つの軸が確保されており、そのうちの片方に起点区間からの深さが対応付けられていれば、様々な表示方法を採用することが可能である。
【００８５】
さらにまた、起点区間からの深さ情報は、上述の例では表示の際に計算していたが、あらかじめ計算しておき、表示時にはそれを参照するように構成されてもよい。また、上述の例では起点区間と基準区間とを同一として扱っていたが、これらが異なっていても良い。表示を行う中で、最初は基準区間と起点区間とを同一としておき、表示結果をユーザが操作することで起点区間が変化するように構成してもよい。その場合、表示部分の拡大・縮小（ズームイン・ズームアウト）のような効果を得ることが可能である。
【００８６】
さらにまた、表示する区間情報を起点区間からの深さで規定しておき、それ以下の区間情報を表示しなくても良いし、何らかの情報を用いて指定された深さの区間情報や特定の区間情報を表示しなくても良い。ある深さの区間情報全てを表示させず、一部のみを省略する場合、最も大きい深さを持つ情報を削除せず、それまでの中間の情報を削除するなどの方法により、深さと第２軸の対応関係が一部で崩れてしまう可能性があるが、ある特定階層まで深さと第２軸の対応関係を保った状態であればそれでも良い。逆に、ある特定の深さの区間情報を包含する、あるいは包含されるような区間情報を作成し、それらを追加表示しても良い。このようにすることで、表示する情報の粒度をコントロールすることができ、情報を適切に圧縮することも可能となる。
【００８７】
さらにまた、図１９の例では、親の区間情報の縦軸の長さを全て子の区間情報の縦軸の長さとして使っていたが、子の区間情報の縦軸の長さの合計が親の区間情報の縦軸の長さの合計に達していなくても良い。横軸の長さについても一定になっているが、深さが大きくなっていくに従って横軸の長さを短くしたり、長くしたり、深さによらず任意の長さを設定しても良い。
【００８８】
さらにまた、特徴量に対する軸の長さについても、特徴量を示す数値の比率に対応していなくてもよい。たとえば、その逆数をとっても良いし、所定の値を足したり、引いたり、かけ合わせたり、割ったりすることで決まる値を採用しても良い。このように、最終的に表示する画像に対して、１つの軸が起点区間からの深さを表し、別にある１つの軸が区間情報の親子関係を表していれば、軸の長さや表現方法については種々変形することが可能である。
【００８９】
さらにまた、上述の例では、各区間情報を長方形で表現していたが、これ以外の図形を用いても良い。例えば、正方形やひし形、三角形や円形、それらの組み合わせなど、種々変形することが可能である。その場合、長方形による表現の場合と同じく、図形中のどこかの長さを２つの軸に対応させればよい。
【００９０】
さらにまた、上述の例では、特徴量情報に含まれる値をそのまま表示に利用していたが、それに限られない。特徴量情報に入っている特徴量の値を利用して解析や変換等を行い、その結果を表示に利用しても良い。
【００９１】
図２１に、プログラム情報の表示方式の他の形態を例示する。図２１に示すプログラム情報の表示例では、第１層の図４および図５の区間情報については、縦軸が均等に分割され、第２層以下の区間情報については、それぞれの親となる区間情報の縦軸方向の長さが子となる区間情報の数に応じて均等に分割されている。
【００９２】
また、図２１に示す例では、“ｔｉｍｅ”という属性情報を持つ特徴量に応じて、各区間情報を表現するオブジェクト（長方形）の色（背景の色や文字色を含む）や形状（枠形状を含む）が変化している。図２〜図１７に示した例では、全体の実行時間が１００００であるのに対し、区間情報２００、２１１、２１３および２２３の実行時間は、それぞれ２０００以上となっている。そこで、図２１に示すように、このような実行時間が全体の実行時間に対して所定割合（この例では２割）以上である図５、図８、図１０および図１６の区間情報については、それぞれを表現するオブジェクト（長方形）に、他の区間情報とは異なる色をマッピングしてもよい。
【００９３】
また、図２２に、プログラム情報の表示方式のさらに他の形態を例示する。図２２に示すプログラム情報の表示例では、図２１に示すプログラム情報画像と同様の構成において、各区間情報を表現するオブジェクト（長方形）の中に、特徴量情報（図２１では属性情報“ｎａｍｅ”または“ｔｙｐｅ”）の代わりに、ソースコード位置情報が記述されている。このように、各区間情報を表現するオブジェクト（長方形）の中に記述する情報は、特徴量情報に限られるものではなく、区間情報に含まれる情報のうちでユーザにとって有用となり得る種々の情報を記述することができる。
【００９４】
さらにまた、表示部１０３は、ディスプレイ単体であってもよいし、ディスプレイを含むＰＣなどで構成された端末装置であってもよい。
【００９５】
なお、上述では、ソフトウェアを対象とした場合に、プログラム実行時全体の情報の把握および複数の情報の同時表示が可能になることを説明したが、上述した実施形態による効果はそのようなケースに限られるものではなく、それ以外のケースについても得ることが可能である。
【００９６】
たとえば、複数のプログラミング言語で構成されているシステムにおける情報表示に対しても、上述した実施形態を適用することが可能である。オブジェクト指向型言語と手続型言語では、クラスという概念の有無など、プログラム構造に差異がある。これらの差異により、呼び出し関係の表示時にクラスの情報を出すのか、メソッドの情報を出すのかなど、差異を吸収する必要が生じる。また、関数型言語やアスペクト志向言語などの新しいプログラム構造も出てきており、既存の方法では使用する言語に合わせた改良が必要になる。それに対して、上述した実施形態では、ソースコード上の階層構造に着目し、それを表示する際には区間情報の親子関係を利用しているので、たとえプログラム構造が異なっていても、ソースコード上の包含関係のみで構造を可視化することが可能である。そのため、プログラム構造ごとの対応を必要とすることなく、適用することが可能である。
【００９７】
さらに、上述した実施形態は、複数のデータを利用した情報表示というケースにも適用することが可能である。既存の技術では、１つの情報に対して最低でも１つの画面を出すことになる。そのため、複数の情報を表示しようとすると、それらすべての情報に対して画面を生成することになる。それに対し、上述した実施形態では、複数の情報に対して、取得した情報の時間や、取得したユーザ、取得した環境などによって表示方式を変更したり、情報をまたいで同じ属性情報をまとめたりすることが可能であるため、１つの画面上に表示することが可能となる。
【００９８】
さらにまた、上述した実施形態は、階層構造間の特徴情報の把握する目的にも効果がある。既存の技術では、例えば、実行時間に注目した場合、１回１回の数値を出すか、平均値のような全体の特徴を示す数値を出すことになる。そのため、ある関数の実行時間が大きい場合、それが特定の子の区間の実行時間の大きさが問題なのか、子の区間の１つ１つの実行時間は大きくないものの、ライン数が大きいためにまとめた際に実行時間が大きく見えているのかという違いを判別することができなかった。それに対し、上述した実施形態では、階層間で実行時間の特徴量を表示するため、こうした違いを１つの画面で把握することが可能となる。
【００９９】
なお、上記実施形態およびその変形例は本発明を実施するための例にすぎず、本発明はこれらに限定されるものではなく、仕様等に応じて種々変形することは本発明の範囲内であり、更に本発明の範囲内において、他の様々な実施形態が可能であることは上記記載から自明である。例えば実施形態に対して適宜例示した変形例は、他の実施形態と組み合わせることも可能であることは言うまでもない。
【符号の説明】
【０１００】
１０１…入力部、１０２…処理部、１０３…表示部
【図１】
2015022665.tif 000003
【図２】
2015022665.tif 000004
【図３】
2015022665.tif 000005
【図４】
2015022665.tif 000006
【図５】
2015022665.tif 000007
【図６】
2015022665.tif 000008
【図７】
2015022665.tif 000009
【図８】
2015022665.tif 000010
【図９】
2015022665.tif 000011
【図１０】
2015022665.tif 000012
【図１１】
2015022665.tif 000013
【図１２】
2015022665.tif 000014
【図１３】
2015022665.tif 000015
【図１４】
2015022665.tif 000016
【図１５】
2015022665.tif 000017
【図１６】
2015022665.tif 000018
【図１７】
2015022665.tif 000019
【図１８】
2015022665.tif 000020
【図１９】
2015022665.tif 000021
【図２０】
2015022665.tif 000022
【図２１】
2015022665.tif 000023
【図２２】
2015022665.tif 000024
【手続補正書】
【提出日】平成26年7月22日(2014.7.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プログラム構造情報に基づいてプログラム情報を表示するプログラム情報表示システムであって、
前記プログラム構造情報を入力する入力部と、
前記プログラム構造情報から前記プログラム情報を可視化するための表示用情報を生成する処理部と、
前記プログラム情報を表示する表示部と
を備え、
前記プログラム構造情報は、１つ以上の区間情報を含み、
前記区間情報は、第１情報と第２情報とを含み、
前記第１情報は、対象プログラムのソースコード上の連続する領域を示す情報であり、
前記第２情報は、自己が含まれる区間情報と包含関係がある他の区間情報を特定するための情報であり、
第１の区間情報に含まれる前記第２情報は、第２の区間情報の存在の有無、または第３の区間情報の存在の有無を示す第３情報を含み、
前記第１の区間情報に含まれる前記第１情報の示す連続区間は、前記第２の区間情報に含まれる第１情報の示す連続区間を包含し、
さらに、前記第１の区間情報に含まれる前記第１情報の示す連続区間は、前記第３の区間情報に含まれる第１情報の示す連続区間に包含され、
前記第２および第３の区間情報のうちの少なくとも１つが存在する場合には、前記第２情報は、前記第２の区間情報を特定するための第４情報あるいは前記第３の区間情報を特定するための第５情報の少なくともいずれか１つをさらに含み、
前記第４情報は、前記第２の区間情報に含まれる前記第１情報の示す連続区間によって包含される前記第１情報の示す連続区間を含む第４の区間情報は含まず、
前記第５情報は、前記第３の区間情報に含まれる前記第１情報の示す連続区間を包含する前記第１情報の示す連続区間を含む第５の区間情報は含まず、
前記プログラム構造情報は、全区間情報の中でいずれにも包含されない前記第１情報の示す連続区間を含む区間情報を少なくとも１つ含み、
前記いずれにも包含されない前記第１情報の示す連続区間を含む区間情報を基準区間とし、
前記処理部は、各区間情報に含まれる前記第４情報を前記基準区間から各区間情報まで辿る間に存在する区間情報の数、あるいは各区間情報に含まれる前記第５情報を各区間情報から前記基準区間まで辿る間に存在する区間情報の数のどちらかを各区間情報の前記基準区間からの深さとして特定し、
同じ深さの区間情報同士は、包含関係を持たず、
前記処理部は、前記基準区間からの深さを表す第１の軸と前記包含関係を表す第２の軸との座標系に、前記基準区間からの深さと前記第２情報とに基づいて前記１つ以上の区間情報を配置することで、前記第１の軸については前記基準区間からの深さが同一である区間情報が同じ位置かつ深さ順に配置され、前記第２の軸については前記第１の区間情報が表している範囲内に当該第１の区間情報に含まれる全ての第４情報で特定される区間情報が配置された前記表示用情報、あるいは前記第１の区間情報に含まれる前記第５情報で特定される区間情報が表している範囲内に前記第１の区間情報が配置された前記表示用情報を生成し、
前記表示部は、生成された前記表示用情報に基づいて前記プログラム情報を表示する
ことを特徴とするプログラム情報表示システム。
【請求項２】
前記プログラム構造情報は、前記基準区間からの深さが同じ区間情報の中から選択された起点区間を少なくとも１つ含み、
前記処理部は、前記起点区間から前記第４情報を辿って各区間情報までに存在する区間情報の数、あるいは各区間情報から前記第５情報を辿って前記起点区間までに存在する区間情報の数を各区間情報の前記起点区間からの深さとして特定し、前記第４情報を前記起点区間から辿ったとしても到達しない区間情報、あるいは前記第５情報を辿ったとしても前記起点区間に到達しない区間情報に対しては前記起点区間からの深さを持たない区間情報であるとして前記座標系に配置しない
ことを特徴とする請求項１に記載のプログラム情報表示システム。
【請求項３】
各区間情報は、前記第１情報が示す区間内のソースコード実行中の特定のタイミングにおいて取得可能な内部の状態を示す第１の特徴量情報をさらに含み、
前記第１の特徴量情報は、特徴量の内容を示す第１の特徴量と、特徴量の属性を示す第１の属性情報とを含み、
前記処理部は、前記第１の特徴量に基づいて、前記表示用情報を生成する
ことを特徴とする請求項１または２に記載のプログラム情報表示システム。
【請求項４】
前記入力部は、前記第１の属性情報に対応する前記第１の特徴量を表示する際に用いる第１の表示方式情報を入力し、
前記処理部は、前記第１の特徴量および前記第１の表示方式情報に基づいて、前記表示用情報を生成する
ことを特徴とする請求項３に記載のプログラム情報表示システム。
【請求項５】
各区間情報は、前記第１情報が示す区間内のソースコードの特徴を示す第２の特徴量情報をさらに含み、
前記第２の特徴量情報は、特徴量の内容を示す第２の特徴量と、特徴量の属性を示す第２の属性情報とを含み、
前記表示方式情報は、前記第２の属性情報に対応する前記第２の特徴量を表示する際に用いる第２の表示方式情報を含み、
前記処理部は、前記第２の表示方式情報に基づいて、前記表示用情報に前記第２の特徴量およびその表示方法を含める
ことを特徴とする請求項４に記載のプログラム情報表示システム。
【請求項６】
各区間情報は、特徴量の内容を示す第３の特徴量と、特徴量の属性を示す第３の属性情報とをさらに含み、
前記表示方式情報は、前記第３の属性情報に対応する前記第３の特徴量に基づいて、同一の区間情報に対する前記第４情報によって特定される全ての区間情報、あるいは同一の前記第５情報によって特定される区間情報に対する、前記同一の第５情報を持つ全ての区間情報の前記第２の軸における配置位置を決定する第３の表示方式情報を含み、
前記処理部は、前記第３の表示方式情報に基づき、前記第３の特徴量情報から前記同一の区間情報に対する前記第４情報によって特定される全ての区間情報、あるいは同一の前記第５情報によって特定される区間情報に対する、前記同一の第５情報を持つ全ての区間情報の前記第２の軸における位置を決定する
請求項５に記載のプログラム情報表示システム。
【請求項７】
各区間情報は、特徴量の内容を示す第４の特徴量と、特徴量の属性を示す第４の属性情報とをさらに含み、
前記表示方式情報は、前記第４の属性情報に対応する前記第４の特徴量に基づいて、各区間情報の前記第２の軸における長さを決定する第４の表示方式情報を含み、
前記処理部は、前記第４の表示方式情報に基づき、前記第４の特徴量情報から各区間情報の前記第２の軸における長さを決定する
請求項５または６に記載のプログラム情報表示システム。
【請求項８】
プログラム構造情報を入力する入力部と、前記プログラム構造情報から前記プログラム情報を可視化するための表示用情報を生成する処理部と、前記プログラム情報を表示する表示部とを備えるシステムによって実行されるプログラム情報表示方法であって、
前記プログラム構造情報は、１つ以上の区間情報を含み、
前記区間情報は、第１情報と第２情報とを含み、
前記第１情報は、対象プログラムのソースコード上の連続する領域を示す情報であり、
前記第２情報は、自己が含まれる区間情報と包含関係がある他の区間情報を特定するための情報であり、
第１の区間情報に含まれる前記第２情報は、第２の区間情報の存在の有無、または第３の区間情報の存在の有無を示す第３情報を含み、
前記第１の区間情報に含まれる前記第１情報の示す連続区間は、前記第２の区間情報に含まれる第１情報の示す連続区間を包含し、
さらに、前記第１の区間情報に含まれる前記第１情報の示す連続区間は、前記第３の区間情報に含まれる第１情報の示す連続区間に包含され、
前記第２および第３の区間情報のうちの少なくとも１つが存在する場合には、前記第２情報は、第２の区間情報を特定するための第４情報あるいは第３の区間情報を特定するための第５情報の少なくともいずれか１つをさらに含み、
前記第４情報は、前記第２の区間情報に含まれる前記第１情報の示す連続区間によって包含される前記第１情報の示す連続区間を含む第４の区間情報は含まず、
前記第５情報は、前記第３の区間情報に含まれる前記第１情報の示す連続区間を包含する前記第１情報の示す連続区間を含む第５の区間情報は含まず、
前記プログラム構造情報は、全区間情報の中でいずれにも包含されない前記第１情報の示す連続区間を含む区間情報を少なくとも１つ含み、
前記いずれにも包含されない前記第１情報の示す連続区間を含む区間情報を基準区間とし、
前記処理部は、各区間情報に含まれる前記第４情報を前記基準区間から各区間情報まで辿る間に存在する区間情報の数、あるいは各区間情報に含まれる前記第５情報を各区間情報から前記基準区間まで辿る間に存在する区間情報の数のどちらかを各区間情報の前記基準区間からの深さとして特定し、
同じ深さの区間情報同士は、包含関係を持たず、
前記処理部は、前記基準区間からの深さを表す第１の軸と前記包含関係を表す第２の軸との座標系に、前記基準区間からの深さと前記第２情報とに基づいて前記１つ以上の区間情報を配置することで、前記第１の軸については前記基準区間からの深さが同一である区間情報が同じ位置かつ深さ順に配置され、前記第２の軸については前記第１の区間情報が表している範囲内に当該第１の区間情報に含まれる全ての第４情報で特定される区間情報が配置された前記表示用情報、あるいは前記第１の区間情報に含まれる前記第５情報で特定される区間情報が表している範囲内に前記第１の区間情報が配置された前記表示用情報を生成し、
前記表示部は、生成された前記表示用情報に基づいて前記プログラム情報を表示する
ことを特徴とするプログラム情報表示方法。
【請求項９】
プログラム構造情報を解析して得られたプログラム情報を可視化する表示用情報を生成する処理をコンピュータに実行させるためのプログラムであって、
前記プログラム構造情報は、１つ以上の区間情報を含み、
前記区間情報は、第１情報と第２情報とを含み、
前記第１情報は、対象プログラムのソースコード上の連続する領域を示す情報であり、
前記第２情報は、自己が含まれる区間情報と包含関係がある他の区間情報を特定するための情報であり、
第１の区間情報に含まれる前記第２情報は、第２の区間情報の存在の有無、または第３の区間情報の存在の有無を示す第３情報を含み、
前記第１の区間情報に含まれる前記第１情報の示す連続区間は、前記第２の区間情報に含まれる第１情報の示す連続区間を包含し、
さらに、前記第１の区間情報に含まれる前記第１情報の示す連続区間は、前記第３の区間情報に含まれる第１情報の示す連続区間に包含され、
前記第２および第３の区間情報のうちの少なくとも１つが存在する場合には、前記第２情報は、第２の区間情報を特定するための第４情報あるいは第３の区間情報を特定するための第５情報の少なくともいずれか１つをさらに含み、
前記第４情報は、前記第２の区間情報に含まれる前記第１情報の示す連続区間によって包含される前記第１情報の示す連続区間を含む第４の区間情報は含まず、
前記第５情報は、前記第３の区間情報に含まれる前記第１情報の示す連続区間を包含する前記第１情報の示す連続区間を含む第５の区間情報は含まず、
前記プログラム構造情報は、全区間情報の中でいずれにも包含されない前記第１情報の示す連続区間を含む区間情報を少なくとも１つ含み、
前記いずれにも包含されない前記第１情報の示す連続区間を含む区間情報を基準区間とし、
前記処理は、各区間情報に含まれる前記第４情報を前記基準区間から各区間情報まで辿る間に存在する区間情報の数、あるいは各区間情報に含まれる前記第５情報を各区間情報から前記基準区間まで辿る間に存在する区間情報の数のどちらかを各区間情報の前記基準区間からの深さとして特定し、
同じ深さの区間情報同士は、包含関係を持たず、
前記処理は、前記基準区間からの深さを表す第１の軸と前記包含関係を表す第２の軸との座標系に、前記基準区間からの深さと前記第２情報とに基づいて前記１つ以上の区間情報を配置することで、前記第１の軸については前記基準区間からの深さが同一である区間情報が同じ位置かつ深さ順に配置され、前記第２の軸については前記第１の区間情報が表している範囲内に当該第１の区間情報に含まれる全ての第４情報で特定される区間情報が配置された前記表示用情報、あるいは前記第１の区間情報に含まれる前記第５情報で特定される区間情報が表している範囲内に前記第１の区間情報が配置された前記表示用情報を生成する
ことを含むことを特徴とするプログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】変更
【補正の内容】
【０００８】
【図１】図１は、実施形態にかかるシステムの概略構成例を示すブロック図。
【図２】図２は、実施形態において表示対象とするソースコードの例。
【図３】図３は、実施形態において表示対象とする他のソースコードの例。
【図４】図４は、図２に示すソースコード全体の区間情報の例。
【図５】図５は、図３に示すソースコード全体の区間情報の例。
【図６】図６は、図２に示すソースコードにおける第２層の区間情報の例。
【図７】図７は、図２に示すソースコードにおける第２層の他の区間情報の例。
【図８】図８は、図３に示すソースコードにおける第２層の区間情報の例。
【図９】図９は、図３に示すソースコードにおける第２層の他の区間情報の例。
【図１０】図１０は、図３に示すソースコードにおける第２層の他の区間情報の例。
【図１１】図１１は、図２に示すソースコードにおける第３層の区間情報の例。
【図１２】図１２は、図２に示すソースコードにおける第４層の区間情報の例。
【図１３】図１３は、図２に示すソースコードにおける第４層の他の区間情報の例。
【図１４】図１４は、図３に示すソースコードにおける第３層の区間情報の例。
【図１５】図１５は、図３に示すソースコードにおける第３層の他の区間情報の例。
【図１６】図１６は、図３に示すソースコードにおける第３層の他の区間情報の例。
【図１７】図１７は、図３に示すソースコードにおける第４層の区間情報の例。
【図１８】図１８は、実施形態にかかる表示方式情報の例。
【図１９】図１９は、実施形態にかかる表示部による表示方式の例。
【図２０】図２０は、実施形態にかかるシステムの動作例を示すフローチャート。
【図２１】図２１は、実施形態にかかる表示方式の他の例。
【図２２】図２２は、実施形態にかかる表示方式のさらに他の例。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００５６
【補正方法】変更
【補正の内容】
【００５６】
以上のように、区間情報が階層的に配置された図１９のプログラム情報を表示することで、ユーザは、図２および図３に挙げたファイルのソースコード中のどの部分の実行時間が支配的なのかや、その支配的な部分のソースコード中の位置等を一目で把握できる。その結果、改良や問題の修正が必要な部分を一目で把握することが可能となる。