(57)【要約】【課題】実行時にインスタンス・メソッドの呼び出し先となる可能性があるメソッドの一覧を提示すると共に、一覧に含まれるメソッドそれぞれについてコンテキストの情報を提示できるプログラム閲覧支援装置を提供する。【解決手段】プログラム閲覧支援装置１は、利用者によって選択されたインスタンスメソッドの定義情報を表示するプログラム閲覧支援装置であって、利用者によって選択されたインスタンスメソッドの呼び出しによって実行時に呼び出される可能性があるメソッドの一覧を作成するメソッド一覧作成部２と、メソッドの一覧に含まれる各メソッドについて、実行時に各メソッドが呼び出される可能性がある特定のコンテキストを示すコンテキスト情報を収集するコンテキスト情報収集部３と、メソッドの一覧を出力し、かつ、コンテキスト情報を出力する出力部４とを備えたことを特徴とする。【選択図】図６
2010122989.tif 000002
【特許請求の範囲】
【請求項１】
利用者によって選択されたインスタンスメソッドの定義情報を表示するプログラム閲覧支援装置であって、
利用者によって選択されたインスタンスメソッドの呼び出しによって実行時に呼び出される可能性があるメソッドの一覧を作成するメソッド一覧作成部と、
前記メソッド一覧作成部によって作成されたメソッドの一覧に含まれる各メソッドについて、実行時に各メソッドが呼び出される可能性がある特定のコンテキストを示すコンテキスト情報を収集するコンテキスト情報収集部と、
前記メソッド一覧作成部によって作成されたメソッドの一覧を出力し、かつ、前記コンテキスト情報収集部によって収集されたコンテキスト情報を出力する出力部とを
備えたことを特徴とするプログラム閲覧支援装置。
【請求項２】
コンテキストを考慮したポインタ解析情報を格納する記憶部を備え、
メソッド一覧作成部は、
前記記憶部に格納されたポインタ解析情報から、利用者によって選択されたインスタンスメソッドのレシーバオブジェクトを参照する変数に関係するポインタ解析情報を抽出する解析情報抽出部と、
前記解析情報抽出部によって抽出されたポインタ解析情報を用いて、実行時に前記インスタンスメソッド呼び出しによって呼び出される可能性がある型の集合を計算し、前記型の集合に含まれる各型について前記インスタンスメソッド呼び出しのメソッドを解決し、解決されたメソッドと当該メソッドのコンテキスト情報の集合とからなる表を作成するメソッド解決部とを含む
請求項１記載のプログラム閲覧支援装置。
【請求項３】
コンテキストとしてメソッド列が利用され、メソッド列の長さがあらかじめ定められた長さに制限されている
請求項１または請求項２記載のプログラム閲覧支援装置。
【請求項４】
コンテキストとしてメソッド列が利用され、メソッド列の長さが利用者に指定された長さに制限されている
請求項１または請求項２記載のプログラム閲覧支援装置。
【請求項５】
コンテキストとしてメソッド呼び出し場所の列が利用され、メソッド呼び出し場所の列の長さがあらかじめ定められた長さに制限されている
請求項１または請求項２記載のプログラム閲覧支援装置。
【請求項６】
コンテキストとしてメソッド呼び出し場所の列が利用され、メソッド呼び出し場所の列の長さが利用者に指定された長さに制限されている
請求項１または請求項２記載のプログラム閲覧支援装置。
【請求項７】
出力部は、
メソッドの一覧をまず表示し、
メソッドの一覧の中からひとつまたは複数のメソッドがユーザによって選択された場合に、メソッドの一覧の中から選択されたメソッドが実行時に呼び出される可能性があるコンテキストを示すコンテキスト情報を出力する
請求項１から請求項６のうちいずれか１項に記載のプログラム閲覧支援装置。
【請求項８】
利用者によって選択されたインスタンスメソッドの定義情報を表示するプログラム閲覧支援方法であって、
利用者によって選択されたインスタンスメソッドの呼び出しによって実行時に呼び出される可能性があるメソッドの一覧を作成し、
作成されたメソッドの一覧に含まれる各メソッドについて、実行時に各メソッドが呼び出される可能性がある特定のコンテキストを示すコンテキスト情報を収集し、
作成したメソッドの一覧を出力し、
収集したコンテキスト情報を出力する
ことを特徴とするプログラム閲覧支援方法。
【請求項９】
記憶部に格納されているポインタ解析情報から、利用者によって選択されたインスタンスメソッドのレシーバオブジェクトを参照する変数に関係するポインタ解析情報を抽出し、
抽出したポインタ解析情報を用いて、実行時に前記インスタンスメソッド呼び出しによって呼び出される可能性がある型の集合を計算し、
前記型の集合に含まれる各型について前記インスタンスメソッド呼び出しのメソッドを解決し、
解決されたメソッドと当該メソッドのコンテキスト情報の集合とからなる表を作成する  請求項８記載のプログラム閲覧支援方法。
【請求項１０】
コンテキストとしてメソッド列を利用し、メソッド列の長さをあらかじめ定められた長さに制限する
請求項８または請求項９記載のプログラム閲覧支援方法。
【請求項１１】
コンテキストとしてメソッド列を利用し、メソッド列の長さを利用者に指定された長さに制限する
請求項８または請求項９記載のプログラム閲覧支援方法。
【請求項１２】
コンテキストとしてメソッド呼び出し場所の列を利用し、メソッド呼び出し場所の列の長さをあらかじめ定められた長さに制限する
請求項８または請求項９記載のプログラム閲覧支援方法。
【請求項１３】
コンテキストとしてメソッド呼び出し場所の列を利用し、メソッド呼び出し場所の列の長さを利用者に指定された長さに制限する
請求項８または請求項９記載のプログラム閲覧支援方法。
【請求項１４】
メソッドの一覧をまず出力部に出力し、
メソッドの一覧の中からひとつまたは複数のメソッドがユーザによって選択された場合に、メソッドの一覧の中から選択されたメソッドが実行時に呼び出される可能性があるコンテキストを示すコンテキスト情報を前記出力部に出力する
請求項８から請求項１３のうちいずれか１項に記載のプログラム閲覧支援方法。
【請求項１５】
利用者によって選択されたインスタンスメソッドの定義情報を表示するコンピュータに、
利用者によって選択されたインスタンスメソッドの呼び出しによって実行時に呼び出される可能性があるメソッドの一覧を作成する処理と、
作成されたメソッドの一覧に含まれる各メソッドについて、実行時に各メソッドが呼び出される可能性がある特定のコンテキストを示すコンテキスト情報を収集する処理と、
作成したメソッドの一覧を出力する処理と、
収集したコンテキスト情報を出力する処理とを実行させるための
プログラム閲覧支援プログラム。
【請求項１６】
コンピュータに、
記憶部に格納されているポインタ解析情報から、利用者によって選択されたインスタンスメソッドのレシーバオブジェクトを参照する変数に関係するポインタ解析情報を抽出する処理と、
抽出したポインタ解析情報を用いて、実行時に前記インスタンスメソッド呼び出しによって呼び出される可能性がある型の集合を計算する処理と、
前記型の集合に含まれる各型について前記インスタンスメソッド呼び出しのメソッドを解決する処理と、
解決されたメソッドと当該メソッドのコンテキスト情報の集合とからなる表を作成する処理とを実行させるための
請求項１５記載のプログラム閲覧支援プログラム。
【請求項１７】
コンピュータに、
メソッドの一覧をまず出力させ、メソッドの一覧の中からひとつまたは複数のメソッドがユーザによって選択された場合に、
メソッドの一覧の中から選択されたメソッドが実行時に呼び出される可能性があるコンテキストを示すコンテキスト情報を出力させる
請求項１５記載または請求項１６記載のプログラム閲覧支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム閲覧支援装置、プログラム閲覧支援方法およびプログラム閲覧支援プログラムに関し、特に、コンテキストを考慮したポインタ解析情報を利用して、オブジェクト指向型言語で記述されたプログラムのソースコードに含まれるメソッド呼び出しの呼び出し先メソッドに関する情報を表示する、プログラム閲覧支援装置、プログラム閲覧支援方法およびプログラム閲覧支援プログラムに関する。
【背景技術】
【０００２】
プログラム閲覧支援装置の一例が、非特許文献１に記載されている。図７は、非特許文献１に示されたプログラム閲覧支援装置の構成を示すブロック図である。図７に示すように、プログラム閲覧支援装置９０は、入力装置９１、定義型収集装置９２、出力装置９３および記憶装置９７から構成されている。記憶装置９７は、定義型情報９４およびソースコード９６を格納している。
【０００３】
プログラム閲覧支援装置９０の動作を説明する。プログラムのソースコードの閲覧および編集を行う機能を有するエディタがすでに動作しているとする。すなわち、ソースコードの閲覧および編集を行うことができる状態であるとする。入力装置９１は、マウスやキーボードから利用者からの入力を受け付ける。利用者は、エディタを操作してソースコード中の任意のコードを選択することができる。入力装置９１は、画面に表示されているソースコードに含まれる特定のインスタンスメソッド呼び出しが選択された状態で、「宣言を開ける」という機能に対応する入力（例えば、ファンクションキー３）を受け付けると、当該インスタンスメソッドの情報を定義型収集装置９２に送信する。
【０００４】
定義型情報装置９２は、インスタンスメソッドの情報を受信すると、記憶装置９７に格納されている定義型情報９４から、受信したインスタンスメソッドのレシーバオブジェクトを参照する変数の型情報を読み込む。定義型情報９５は、定義型情報９４の構成の具体例である。定義型情報９５は、変数および当該変数が定義された型を示す。このような情報を、型解析と呼ばれる手法により生成できる。定義型情報装置９２は、レシーバオブジェクトを参照する変数の型情報を定義型情報９４から取得すると、取得した型に対応する情報（クラス定義）をソースコード９６から取得し、当該クラス定義に含まれるメソッドに対応する情報（メソッド定義）を出力装置９３によって出力する。
【０００５】
図８は、プログラムのソースコードの一例を示す説明図である。図８に示されたソースコード例を用いて、図７に示すプログラム閲覧支援装置の動作を具体的に説明する。ソースコードの各行の左端に付された数字は、ソースコードの行数を示す。
【０００６】
図８に示されたソースコードはエディタに表示されている。利用者は、４行目”ｐ．ｆｏｏ（）；”を選択し、「宣言を開ける」機能を呼び出す入力を行ったとする。このとき、変数はｐ、メソッドはｆｏｏ（）であり、入力装置９１から定義型収集装置９２に変数およびメソッドに関する情報が送信される。
【０００７】
定義型収集装置９２は、変数ｐに対応する型を定義型情報９４から取得する。図８に示す例の場合、型解析によりｐの型はＰと判定される。従って、定義型収集装置９２は、変数ｐに対応する型としてＰを定義型情報９４から取得する。そして、定義型収集装置９２は、Ｐのクラス定義をソースコード９６より取得する。９行目を参照すると、Ｐのクラス定義の中にメソッド定義として、メソッドｆｏｏ（）が定義されている。したがって、出力装置９３により９行目のメソッドｆｏｏ（）の定義が利用者に提示される。
【０００８】
このように、非特許文献１に示されたプログラム閲覧支援装置は、変数の型の情報を利用してインスタンスメソッド呼び出しの情報を表示する。
【０００９】
【非特許文献１】宮本  信二著、“第４回：Eclipseの便利な機能”、[online]、２００５年２月９日、ｉｍｐｒｅｓｓ  ＩＴ  Ｃｏｒｐｏｒａｔｉｏｎ、[２００７年１２月１３日検索]、インターネット＜ＵＲＬ：http://www.thinkit.co.jp/free/tech/3/4/1.html ＞
【発明の開示】
【発明が解決しようとする課題】
【００１０】
非特許文献１に示されたプログラム閲覧支援システムでは、利用者によって選択されたインスタンスメソッドの呼び出しに対応するメソッド定義を表示する際に、変数に割り当てられた型におけるメソッド定義が表示される。しかし、変数の代入などが行われると、変数の参照先が変わる場合もある。そのような場合には、変数に割り当てられた型と、変数によってプログラムの実行時に参照されるオブジェクトの型とが異なってしまう可能性がある。その結果、利用者に表示されるメソッド定義は、プログラムの実行時に実際に対応するメソッド定義と異なってしまい、利用者がプログラムの実行時におけるインスタンスメソッドの処理内容を把握することが困難になってしまうという課題が考えられる。
【００１１】
このような課題を解決するプログラム閲覧支援システムは、オブジェクト指向型言語で記述されたプログラムのソースコードをモニタなどの出力装置に表示する。利用者はソースコード中に含まれるあるインスタンスメソッドの呼出し先のメソッド定義を閲覧するために、画面上に表示されている当該インスタンスメソッドの部位を選択し、メソッド定義を表示させる機能を呼び出す。すると、プログラム支援システムは、プログラムを実行させた際に、実際に当該インスタンスメソッド呼出しによって呼び出される可能性があるメソッドの一覧を、実行時の型情報を参照して収集し、利用者に提示する。利用者が提示されたメソッド一覧から必要な情報を選択すると、当該メソッドに対応するソースコードの部位がモニタに出力される。
【００１２】
実行時の型情報は、プログラム・ソースコード中の変数がプログラム実行時にどのクラス（あるいは抽象オブジェクト）を参照するかに関する情報を有する。このような情報はポインタ解析などによって得られる。したがって、インスタンスメソッドのレシーバ・オブジェクトに対応する変数が実行時に参照するクラスの情報を、実行時の型情報を用いて収集し、その呼出し先となるメソッドの一覧を作成可能と考えられる。
【００１３】
図９は、Ｊａｖａ（登録商標）言語を用いて記述したプログラムのソースコードの一例を示す説明図である。図９に示されたソースコードを用いて、非特許文献１で示されたプログラム閲覧支援システムの課題を解決するプログラム閲覧支援装置の動作を具体的に説明する。
【００１４】
利用者が、図９の３行目を選択してｐ．ｍｅｔｈｏｄのメソッド定義の閲覧要求を行った場合の動作を考える。変数ｐは、５行目、７行目、９行目でそれぞれクラスＰ、Ｑ，Ｒのオブジェクトがｅｘａｍｐｌｅの引数として渡されていることより、クラスＰ，Ｑ，Ｒのオブジェクトを参照する可能性がある。ただし、クラスＲはメソッドｍｅｔｈｏｄを定義しておらず、また、クラスＲはＰのサブクラスであることから、実際に呼び出される可能性があるメソッドは１６行目のクラスＰのメソッドｍｅｔｈｏｄと１８行目のクラスＱのメソッドｍｅｔｈｏｄの二つである。したがって、このシステムは前記二つのメソッドの情報を利用者に提示する。利用者がクラスＱのメソッドｍｅｔｈｏｄを選択すると、このシステムは前記メソッドＱに対応するソースコードの部位（１８行目）をモニタに表示する。
【００１５】
このプログラム閲覧支援システムは、利用者がインスタンスメソッドの処理内容を容易に把握できるようにすることができるが、指定されたインスタンスメソッド呼出しに対応するメソッド呼出しの候補の中から閲覧するべきひとつのメソッド呼出しを選択することまでは考慮されていない。すなわち、複数の候補があった場合、どのような状況（コンテキスト）の場合にそれぞれ候補となるメソッドが呼び出されるのかといった情報を利用者に提示していない。
【００１６】
図９に示されたソースコードを用いた場合を例にすると、３行目のメソッド呼出しの候補となるメソッドは１６行目に定義されているＰのメソッドｍｅｔｈｏｄと１８行目に定義されているＱのメソッドｍｅｔｈｏｄの二つである。３行目の呼び出しを含むクラスＡｐｐのメソッドｅｘａｍｐｌｅが５行目、または９行目から呼び出された状況の下では、３行目のメソッド呼出し先は１６行目のＰのメソッドである。同様に、７行目から呼び出された状況の下では、メソッド呼出し先は１８行目のＱのメソッドｍｅｔｈｏｄとなる。
【００１７】
特に、選択するべきメソッドの数が多い場合や、ソースコードの構造が複雑な場合に、閲覧するべきメソッド定義を選択するために、上記のような「どこから呼び出された場合にどのメソッドが呼び出される」といった付加情報を利用者に提示することは、より好ましいことである。
【００１８】
そこで、本発明は、閲覧中のソースコードに登場するインスタンスメソッドの呼び出し先となるメソッド定義の閲覧要求が利用者から出された際に、実行時にインスタンスメソッドの呼び出し先となる可能性があるメソッドの一覧を提示すると共に、一覧に含まれるメソッドそれぞれについてコンテキストの情報を必要に応じて利用者に提示できるプログラム閲覧支援装置、プログラム閲覧支援方法およびプログラム閲覧支援プログラムを提供することを目的とする。
【００１９】
コンテキストとは、例えば、メソッド定義の閲覧要求が出されたインスタンスメソッド呼び出しを含むメソッドを呼び出す「メソッド呼び出し」、または「メソッド呼び出しを含むメソッドの集合」である。一般的に、インスタンスメソッドの呼び出し先は、コンテキストに依存する。例えば、図９に示されたソースコードでは、３行目のメソッド呼び出しのコンテキストは、５、７および９行目のメソッド呼び出し（またはメソッドｆｏｒＰ、ｆｏｒＱおよびｆｏｒＲ）になる。コンテキストを確認すると、３行目のメソッド呼び出しは、５行目と９行目のコンテキストでは１６行目のメソッドを呼び出し、７行目のコンテキストでは１８行目のメソッドを呼び出すことが分かる。
【課題を解決するための手段】
【００２０】
本発明におけるプログラム閲覧支援装置は、利用者によって選択されたインスタンスメソッドの定義情報を表示するプログラム閲覧支援装置であって、利用者によって選択されたインスタンスメソッドの呼び出しによって実行時に呼び出される可能性があるメソッドの一覧を作成するメソッド一覧作成部と、メソッド一覧作成部によって作成されたメソッドの一覧に含まれる各メソッドについて、実行時に各メソッドが呼び出される可能性がある特定のコンテキストを示すコンテキスト情報を収集するコンテキスト情報収集部と、メソッド一覧作成部によって作成されたメソッドの一覧を出力し、かつ、コンテキスト情報収集部によって収集されたコンテキスト情報を出力する出力部とを備えたことを特徴とする。
【００２１】
本発明におけるプログラム閲覧支援方法は、利用者によって選択されたインスタンスメソッドの定義情報を表示するプログラム閲覧支援方法であって、利用者によって選択されたインスタンスメソッドの呼び出しによって実行時に呼び出される可能性があるメソッドの一覧を作成し、作成されたメソッドの一覧に含まれる各メソッドについて、実行時に各メソッドが呼び出される可能性がある特定のコンテキストを示すコンテキスト情報を収集し、作成したメソッドの一覧を出力し、収集したコンテキスト情報を出力することを特徴とする。
【００２２】
本発明のプログラム閲覧支援プログラムは、利用者によって選択されたインスタンスメソッドの定義情報を表示するコンピュータに、利用者によって選択されたインスタンスメソッドの呼び出しによって実行時に呼び出される可能性があるメソッドの一覧を作成する処理と、作成されたメソッドの一覧に含まれる各メソッドについて、実行時に各メソッドが呼び出される可能性がある特定のコンテキストを示すコンテキスト情報を収集する処理と、作成したメソッドの一覧を出力する処理と、収集したコンテキスト情報を出力する処理とを実行させることを特徴とする。
【発明の効果】
【００２３】
本発明によれば、閲覧中のソースコードに登場するインスタンスメソッドの呼び出し先となるメソッド定義の閲覧要求が利用者から出された際に、実行時にインスタンスメソッドの呼び出し先となる可能性があるメソッドの一覧を提示すると共に、一覧に含まれるメソッドそれぞれについてコンテキストの情報を必要に応じて利用者に提示できるプログラム閲覧支援装置、プログラム閲覧支援方法およびプログラム閲覧支援プログラムを提供することができる。
【発明を実施するための最良の形態】
【００２４】
図１は、本発明によるプログラム閲覧支援装置の一実施形態の構成を示すブロック図である。プログラム閲覧支援装置１０は、プログラム制御により動作する計算機（中央処理装置；プロセッサ；データ処理装置）１１と、半導体メモリやハードディスクなどの記憶装置１２とを備えている。
【００２５】
計算機１１は、キーボードやマウスなどの入力機器を有する入力部１３と、モニタなどの表示機器を有する出力部１４とに接続される。計算機１１は、選別部１５、メソッド解決部１６、コンテキスト収集部１７および選択結果表示部１８を備える。記憶装置１２は、ポインタ解析情報１９、型情報２０、コンテキスト情報２１、ソースコード２２を保持する。
【００２６】
入力部１３は、出力部１４に表示されたソースコード閲覧／編集用のＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）などに基づいて、利用者が行う入力を受け付ける。本実施形態において、入力部１３は、出力部１４に表示された閲覧用のＧＵＩなどに基づいて、利用者が、インスタンスメソッドの呼び出し部分を選択し、かつ、選択したインスタンスメソッドの呼び出し部分の定義情報を表示させる旨の入力を行ったことを受け付ける。また、入力部１３は、利用者が、出力部１４に表示されたインスタンスメソッドの呼び出し先になる可能性があるメソッドの一覧の中から特定のメソッドを選択し、対応するコンテキストを表示する旨の指示、または対応するメソッド定義情報を表示する旨の入力を行ったことを受け付ける。入力部１３は、上記の入力を受け付けると、選択されたインスタンスメソッド呼び出しに関する情報（インスタンスメソッド呼び出し情報）を選別部１５に送信する。
【００２７】
選別部１５は、入力部１３からインスタンスメソッド呼び出し情報を受信すると、記憶装置１２からポインタ解析情報１９を読み込む。そして、選別部１５は、読み込んだポインタ解析情報１９のうち、当該インスタンスメソッド呼び出しのレシーバオブジェクトを参照する変数に関係するポインタ解析情報１９だけを取り出し、インスタンスメソッド呼び出し情報と併せてメソッド解決部１６に送信する。
【００２８】
メソッド解決部１６は、記憶装置１２から型情報２０を読み込むと、選別部１５から受信したポインタ解析情報１９に含まれる抽象オブジェクトの集合に対応する型の集合を算出する。さらに、メソッド解決部１６は、算出した型の集合の各型について、選別部１５から受信したインスタンスメソッド呼び出し情報に含まれるメソッド呼び出しに対応するメソッドを解決し、各型と解決されたメソッドとを対応付けた表Ａを生成する。そして、メソッド解決部１６は、記憶装置１２から読み込んだ型情報２０と生成した表Ａと選別部１５から受信したポインタ解析情報１９とを用いて、コンテキストと解決されたメソッドとを対応付けた表Ｂを生成し、表Ｂをコンテキスト収集部１７に送信する。
【００２９】
コンテキスト収集部１７は、記憶装置１２からコンテキスト情報２１を読み込むと、メソッド解決部１６から受信した表Ｂを用いて、解決されたメソッドと当該メソッドに対応するコンテキストとしてのメソッド（以降、コンテキスト・メソッドと記載する。）の集合とを対応付けた表Ｃを生成し、表Ｃを選択結果表示部１８に送信する。
【００３０】
選択結果表示部１８は、コンテキスト収集部１７から受信した表Ｃに含まれる解決されたメソッドの一覧を、出力部１４からＧＵＩなどに表示させる。また、入力部１３が、利用者からＧＵＩなどに表示中の特定のメソッドについてコンテキスト情報２１を表示する指示が行われたことを検知すると、選択結果表示部１８は、当該メソッドに対応するコンテキスト・メソッドの集合を表Ｃから求め、求めたコンテキスト・メソッドの集合を一覧として出力部１４からＧＵＩなどに表示させる。入力部１３が、利用者から特定のメソッドについて定義を表示する指示が行われたことを検知すると、選択結果表示部１８は、当該メソッド定義に対応する部位を記憶装置１２に含まれるソースコード２２から読み込み、出力部１４からＧＵＩなどに表示させる。
【００３１】
図２は、図１に示す実施形態のプログラム閲覧支援装置の動作を示すフローチャートである。図１および図２を参照して、本実施形態のプログラム閲覧支援装置における全体の動作について詳細に説明する。
【００３２】
まず、入力部１３は、利用者からのＧＵＩなどへの入力を検知する。ＧＵＩなどに表示されているソースコードのインスタンスメソッドの呼び出し部分が選択され、選択されたインスタンスメソッド呼び出しの定義の表示を求める利用者からの入力を検知した場合には、入力部１３は、インスタンスメソッド呼び出し情報を選別部１５に送信する。選別部１５は、入力部１３からインスタンスメソッド呼び出し情報を受信すると、記憶装置１２からポインタ解析情報１９を読み込む。
【００３３】
ポインタ解析情報１９は、コンテキストを考慮したポインタ解析の結果を表現したものである。図１には、ポインタ解析情報１９の具体例としてのポインタ解析情報２３が示されている。ポインタ解析情報２３は、コンテキスト、変数および抽象オブジェクトの３つの対データ組として構成される。（ｃ，ｖ，ａ）という組がポインタ解析情報２３に含まれる場合、選別部１５は、コンテキストｃで変数ｖは抽象オブジェクトａを参照すると解釈する。抽象オブジェクトとは、実行時に計算機のメモリ上に生成されるオブジェクトに対応する情報であり、一般に、ソースコード中に含まれるｎｅｗコマンドなどの呼び出しによるオブジェクト生成場所と対応付けられる。コンテキストについては後述する。なお、ポインタ解析情報１９に含まれる変数は、プログラム中に登場する変数を一意に示すものとする。このようなポインタ解析情報１９を得る方法は広く知られており、あらかじめ求めておいてもよいし、必要に応じてポインタ解析情報１９を生成してもよい。
【００３４】
選別部１５は、ポインタ解析情報１９の中から、選択されたインスタンスメソッド呼び出しのレシーバオブジェクトを参照する変数に対応する変数を含む組を抽出する（ステップＳ１１）。選別部１５は、インスタンスメソッド呼び出し情報と抽出したポインタ解析情報とをメソッド解決部１６に送信する。
【００３５】
メソッド解決部１６は、選別部１５から、インスタンスメソッド呼び出し情報と抽出されたポインタ解析情報とを受信すると、記憶装置１２から型情報２０を読み込む。
【００３６】
型情報２０は、抽象オブジェクトと抽象オブジェクトの対応する型（抽象オブジェクトは常に具象クラスと対応する）とを対応付けた表である。図１には、型情報２０の具体例が型情報２４として示されている。型情報２４は、抽象オブジェクトおよび型の２つのデータ組として構成される。
【００３７】
メソッド解決部１６は、抽出されたポインタ解析情報と型情報２０とを、抽象オブジェクトを軸に結合することによって、コンテキスト、変数、抽象オブジェクト、型の４つのデータを１つの組み合わせとする表（以下、この表を表Ｔという。）を生成する。表Ｔの生成によって、メソッド解決部１６は、選別部１５から受信したポインタ解析情報に含まれる抽象オブジェクトに対応する型の集合、すなわち、選択されたインスタンスメソッド呼び出しのレシーバオブジェクトを示す変数が実行時に参照する可能性があるオブジェクトの型の集合を得る。
【００３８】
メソッド解決部１６は、表Ｔに示されたオブジェクトの型のそれぞれについて、受信したインスタンスメソッド呼び出し情報に含まれるメソッド呼び出しに対応するメソッドを解決し、当該型と当該解決されたメソッドとを対応付けた表（以下、この表を表Ａという。）を生成する（ステップＳ１２）。
【００３９】
型（クラス）についてメソッドを解決するとは、端的には、クラス階層にしたがって、当該メソッドが定義されている最も下位（親クラスを上位、子クラスを下位とする）のクラスを見つけ出すことである。例えば、図９に示されたソースコード例の場合には、型Ｑに対してメソッドｍｅｔｈｏｄを解決すると、Ｑで定義されている１８行目のメソッド（Ｑ．ｍｅｔｈｏｄと記述する）が得られ、Ｒに対してｍｅｔｈｏｄを解決すると、Ｐで定義されている１６行目のメソッド（Ｐ．ｍｅｔｈｏｄ）が得られる。多重継承をサポートする言語などの場合には、より複雑な解決方法が必要となるが、このようなメソッド解決方法はプログラム記述に利用する言語の仕様で規定されている。
【００４０】
メソッド解決部１６は、抽出されたポインタ解析情報および型情報２０を抽象オブジェクトを軸にして結合して生成した表Ｔと表Ａとを、型を軸に結合し、コンテキスト、変数、抽象オブジェクト、型、解決されたメソッドからなる５つ組みの表を生成する。このとき、表に含まれる解決されたメソッドがすべて同じである場合、すなわち、呼び出し先の候補となるメソッドがひとつしかない場合には（ステップＳ１３）、メソッド解決部１６は、選択結果表示部１８に候補となるメソッドを送信する。選択結果表示部１８は、記憶装置１２からソースコード２２を読み込み、メソッド解決部１６から受信した候補となるメソッドに対応するソースコードの部位を表示する（ステップＳ１５）。
【００４１】
５つ組みの表に含まれる解決されたメソッドが複数のメソッドを含む場合、すなわち、呼び出し先の候補となるメソッドが複数ある場合には（ステップＳ１３）、メソッド解決部１６は、５つ組みの表からコンテキストと解決されたメソッドの項目を取り出し、解決されたメソッドと解決されたメソッドに対応するコンテキストの集合とからなる表（以下、この表を表Ｂという。）を作成する。メソッド解決部１６は、表Ｂをコンテキスト収集部１７に送信する。なお、ステップＳ１３において、呼び出し先の候補となるメソッドがひとつしかない場合であっても、呼び出し先の候補となるメソッドが複数ある場合と同じ処理を行ってもよい。
【００４２】
コンテキスト収集部１７は、表Ｂを受信すると、記憶装置１２からコンテキスト情報２１を読み込む。コンテキスト情報２１は、ポインタ解析情報１９に含まれるコンテキストと、そのコンテキストに対応するメソッドの列またはメソッド呼び出し場所の列とを対応付けた表である。図１には、コンテキスト情報２１の具体例がコンテキスト情報２５として示されている。コンテキスト情報２５は、コンテキストとコンテキストが対応するメソッド（コンテキスト・メソッド）とを対応付けた表である。なお、コンテキスト情報２１をあらかじめ計算しておいてもよいし、必要に応じて計算してもよい。
【００４３】
コンテキスト収集部１７は、表Ｂおよびコンテキスト情報２１を用いて、解決されたメソッドと当該メソッドに対応するコンテキスト・メソッドの集合とを対応付けた表（以下、この表を表Ｃという。）を生成する。コンテキスト収集部１７は、表Ｃを選択結果表示部１８に送信する（ステップＳ１４）。
【００４４】
図５は、本発明による実施形態のプログラム閲覧支援装置における各表（表Ｔ、表Ａ、表Ｂおよび表Ｃなど）の結合のモデルを示す説明図である。図５に示されたように、各表は結合されていき、表Ｃは、解決メソッドと当該メソッドに対応するコンテキスト・メソッドとの組み合わせを表す。
【００４５】
ここで、コンテキストについて説明する。コンテキストの内容は、ポインタ解析情報１９を生成するために利用するポインタ解析手法の種類に依存して決まる。コンテキストは、記憶装置１２に保持されている情報のうち、ポインタ解析情報１９およびコンテキスト情報２１において使用される。
【００４６】
コンテキスト情報２１を作成する方法の一例として、メソッド呼び出し場所の列、またはメソッド呼び出しの列をコンテキストとして利用するポインタ解析の手法を利用する場合におけるコンテキスト情報２１の作成方法を説明する。一般的に、コンテキストに利用する列の長さは、１または２に制限されることが多い。図９に示されたソースコード例にポインタ解析の手法を利用すると、３行目のインスタンスメソッド呼び出しのコンテキストとしてメソッド呼び出し場所の列を利用する場合には、例えば、｛１１行目の呼び出し場所、５行目の呼び出し場所｝がコンテキストになる。また、３行目のインスタンスメソッド呼び出しのコンテキストとしてメソッド呼び出しの列を利用する場合には、例えば、｛Ａｐｐ．ｍａｉｎ（Ｓｔｒｉｎｇ［］），Ａｐｐ．ｆｏｒＰ（）｝がコンテキストになる。なお、コンテキストを列として、列を利用者に提示すると、画面表示が煩雑になり見辛くなる可能性があるので、コンテキストの長さを１に、または利用者が指定した長さに制限してもよい。
【００４７】
メソッド呼び出し場所から当該メソッド呼び出しを含むメソッドを計算することは容易である。メソッド列は、当該メソッド呼び出しを含むメソッドをまとめたものであり、メソッドの呼び出し関係を示す列である。例えば、メソッド列の先頭（左側）の要素は、特定の辺数を含むメソッドへの呼び出しを行う最も古い呼び出しを示し、列の末端（右側）の要素は、当該変数を含むメソッドへの呼び出しを行う最も新しい呼び出しを示すようにまとめる。コンテキストの長さを制限する場合には、列の末端（右側）から指定された長さ分の要素を選択し、残りの要素を破棄する。このようにして、コンテキストを利用したポインタ解析の手法によって得られるポインタ解析情報１９から、ほぼ直接的にコンテキスト情報２５の構成要素が得られ、コンテキスト情報２１を作成することができる。
【００４８】
また、その他の種類のコンテキストを利用するポインタ解析の手法を利用した場合であっても、コンテキスト情報２１を構成する要素に相当する情報を生成し、本発明に利用することができる。
【００４９】
ステップＳ１４において表Ｃを受信すると、選択結果表示部１８は、受信した表Ｃに含まれる解決されたメソッドの一覧を、出力部１４を通してＧＵＩなどに表示する。また、選択結果表示部１８は、利用者から表示中の特定のメソッドについてのコンテキスト情報を表示する指示が行われたことを入力部１３より検知すると、当該メソッドに対応するコンテキスト・メソッドの集合を表Ｃから求める。選択結果表示部１８は、表Ｃから求めたコンテキスト・メソッドの集合を一覧で画面に表示する。一覧で表示する方法は、例えば、画面上で当該メソッドを表現している文字列の表示の近傍に、ポップアップを表示するなどの形にしてもよい。
【００５０】
コンテキストの数は、多い場合には数十を超える。利用者にとって表示が煩雑にならないように、本実施形態では利用者からの要求に応じてコンテキスト情報を表示するが、当該メソッド呼び出しの候補となるメソッド一覧、すなわち解決されたメソッドの一覧を画面に表示するときに、同時に一覧の各メソッドに対応するコンテキストを表示してもよい。
【００５１】
また、コンテキストとしてメソッド列を表示するのではなく、メソッド呼び出し場所の列を表示してもよい。この場合には、コンテキストとしてメソッド呼び出し場所の列を利用するポインタ解析を用いて、ポインタ解析情報１９およびコンテキスト情報２１を生成すればよい。利用者からの要求に応じてコンテキスト情報を表示する際には、メソッド呼び出し場所の列の長さを、あらかじめ定めた長さに制限して表示してもよいし、利用者が指定した長さに制限して表示してもよい。
【００５２】
選択結果表示部１８は、利用者から特定のメソッドについて定義を表示する指示が行われたことを入力部１３より検知すると、当該メソッド定義に対応するソースコードの部位を記憶装置１２に含まれるソースコード２２から読み込む。選択結果表示部１８は、ソースコード２２から読み込んだソースコードの部位を、出力装置１６を通じてモニタなどに表示する（ステップＳ１５）。
【００５３】
このようなプログラム閲覧支援装置では、コンテキストを考慮したポインタ解析情報を用いて、当該メソッド呼び出しがどのコンテキストでどのメソッドを呼び出す可能性があるかを識別することによって、呼び出し先の候補となるメソッド一覧を表示するだけでなく、呼び出し先の候補となった各メソッドに対応するコンテキストも表示するように構成されている。したがって、ソースコードを閲覧している利用者は、インスタンスメソッドの呼び出し先としてどのメソッド定義を参照すればよいかを、コンテキストの情報を参考にして、適切に決定することができる。
【００５４】
次に、本実施形態のプログラム閲覧支援装置の具体的な動作を、図９、図３および図４を参照して説明する。図３は、図９に示されたソースコード例におけるポインタ解析情報の一部を示す説明図である。ここでは、メソッド例をコンテキストとして利用している。図４は、図９に示すソースコード例における型情報の一部を示す説明図である。以下、「Ｘ行目」は、図９に示されたソースコード例における「Ｘ行目」を示す。
【００５５】
利用者が、３行目の「ｐ．ｍｅｔｈｏｄ（）」に対応するメソッド定義情報を要求したとする。入力部１３は、「ｐ．ｍｅｔｈｏｄ（）」に関する情報を選別部１５に送信する。選別部１５は、「ｐ．ｍｅｔｈｏｄ（）」に含まれる変数ｐに対応するポインタ解析情報１９を記憶装置１２から読み込む。抽出されたポインタ解析情報は、図３に示されたように、（｛ｍａｉｎ、Ａｐｐ．ｆｏｒＰ｝，ｐ，＜５：Ｐ＞）、（｛ｍａｉｎ、Ａｐｐ．ｆｏｒＱ｝，ｐ，＜７：Ｑ＞）および（｛ｍａｉｎ、Ａｐｐ．ｆｏｒＲ｝，ｐ，＜９：Ｒ＞）の３組になる。選別部１５は、抽出したポインタ解析情報をメソッド解決部１６に送信する。
【００５６】
メソッド解決部１６は、記憶装置１２から型情報２０を読み込み、抽出したポインタ解析情報と結合させて表Ｔを生成する。この場合、型情報２０のうち、図４に示されたように、（＜５：Ｐ＞，Ｐ）、（＜７：Ｑ＞，Ｑ）および（＜９：Ｒ＞，Ｒ）の３組が結合の対象となる。従って、表Ｔは、（｛ｍａｉｎ、Ａｐｐ．ｆｏｒＰ｝，ｐ，＜５：Ｐ＞，Ｐ）、（｛ｍａｉｎ、Ａｐｐ．ｆｏｒＱ｝，ｐ，＜７：Ｑ＞，Ｑ）および（｛ｍａｉｎ、Ａｐｐ．ｆｏｒＲ｝，ｐ，＜９：Ｒ＞，Ｒ）の３組になる。ここで、当該インスタンスメソッドの呼び出し先となるオブジェクトの実行時の型は、Ｐ、ＱまたはＲのいずれかの型であることがわかる。
【００５７】
メソッド解決部１６は、Ｐ、ＱおよびＲのそれぞれの型について、メソッドｍｅｔｈｏｄを解決する。ＰはＰのクラス定義の中にメソッドｍｅｔｈｏｄの定義（１６行目）を含むため、Ｐ．ｍｅｔｈｏｄに解決される。ＱはＱのクラス定義の中にメソッドｍｅｔｈｏｄの定義（1８行目）を含むため、Ｑ．ｍｅｔｈｏｄに解決される。Ｒは自身でｍｅｔｈｏｄを定義せず、親クラスであるＰのメソッド定義を利用しているため、Ｐ．ｍｅｔｈｏｄに解決される。したがって、メソッド解決部１６は、（Ｐ，Ｐ．ｍｅｔｈｏｄ）、（Ｑ，Ｑ．ｍｅｔｈｏｄ）および（Ｒ，Ｐ．ｍｅｔｈｏｄ）からなる表Ａを生成する。メソッド解決部１６は、表Ｔおよび表Ａを結合し、コンテキストと解決されたメソッドに関する項目のみを取り出した表Ｂを作成する。表Ｂは（｛ｍａｉｎ、Ａｐｐ．ｆｏｒＰ｝，Ｐ．ｍｅｔｈｏｄ）、（｛ｍａｉｎ、Ａｐｐ．ｆｏｒＱ｝，Ｑ．ｍｅｔｈｏｄ）および（｛ｍａｉｎ、Ａｐｐ．ｆｏｒＲ｝，Ｐ．ｍｅｔｈｏｄ）から構成される。メソッド解決部１６は、表Ｂをコンテキスト収集部１７に送信する。
【００５８】
コンテキスト収集部１７は、記憶装置１２からコンテキスト情報２１を読み込み、コンテキストをメソッド列に置き換える。本例ではコンテキストはメソッド列とするため、コンテキストの値をそのままメソッド列として利用できるが、表示する列の長さを１に制限するものとし、コンテキストに含まれる列の一番末端（右端）の要素のみをコンテキストとして利用する。例えば、｛ｍａｉｎ、Ａｐｐ．ｆｏｒＲ｝では、｛Ａｐｐ．ｆｏｒＰ｝をコンテキストとして利用する。
【００５９】
コンテキスト収集部１７は、表Ｂおよびコンテキスト情報２１を基にして、各解決されたメソッドと当該メソッドに対応するコンテキストとを集めた表Ｃを生成する。表Ｂに示された解決されたメソッドは、Ｐ．ｍｅｔｈｏｄおよびＱ．ｍｅｔｈｏｄの２つである。コンテキスト情報２１から２つのメソッドに対応するコンテキストを集めると表Ｃができる。表Ｃは、（Ｐ．ｍｅｔｈｏｄ、｛｛Ａｐｐ．ｆｏｒＰ｝、｛Ａｐｐ．ｆｏｒＲ｝｝）、（Ｑ．ｍｅｔｈｏｄ，｛｛Ａｐｐ．ｆｏｒＱ｝｝）の２組で構成される。コンテキスト収集部１７は、表Ｃを選択結果表示部１８に送信する。
【００６０】
選択結果表示部１８は、表Ｃを受信すると、画面に表示されているソースコード中の選択されたインスタンスメソッド呼び出し部分の近傍にＧＵＩのリストを出力部１４を通して表示させる。リストにはメソッド呼び出しの候補（解決されたメソッド）であるＰ．ｍｅｔｈｏｄとＱ．ｍｅｔｈｏｄが表示される。利用者がＰ．ｍｅｔｈｏｄに対応するリストのアイテムを選択して「コンテキストを表示」という指示を出した場合には、選択結果表示部１８はコンテキストの情報としてＡｐｐ．ｆｏｒＰおよびＡｐｐ．ｆｏｒＲをリストの近傍に表示させる。利用者がＱ．ｍｅｔｈｏｄに対応するリストのアイテムを選択して「コンテキストを表示」という指示を出した場合には、選択結果表示部１８はＡｐｐ．ｆｏｒＱを表示させる。利用者がＰ．ｍｅｔｈｏｄに対応するリストのアイテムを選択して「メソッド定義を表示」という指示を出した場合には、選択結果表示部１８は画面にソースコードの１６行目を表示させる。利用者がＱ．ｍｅｔｈｏｄに対応するリストのアイテムを選択して「メソッド定義を表示」という指示を出した場合には、選択結果表示部１８は画面にソースコードの１８行目を表示させる。
【００６１】
図６は本発明によるプログラム閲覧支援装置の主要部を示すブロック図である。図６に示すように、プログラム閲覧支援装置１（図１に示すプログラム閲覧支援装置１０に相当）は、利用者によって選択されたインスタンスメソッドの定義情報を表示するプログラム閲覧支援装置であって、利用者によって選択されたインスタンスメソッドの呼び出しによって実行時に呼び出される可能性があるメソッドの一覧を作成するメソッド一覧作成部２（図１に示す選別部１５およびメソッド解決部１６に相当）と、メソッド一覧作成部２によって作成されたメソッドの一覧に含まれる各メソッドについて、実行時に各メソッドが呼び出される可能性がある特定のコンテキストを示すコンテキスト情報を収集するコンテキスト情報収集部３（図１に示すコンテキスト収集部１７および選択結果表示部１８に相当）と、メソッド一覧作成部２によって作成されたメソッドの一覧を出力し、かつ、コンテキスト情報収集部３によって収集されたコンテキスト情報を出力する出力部４（図１に示す出力部１４および選択結果表示部１８に相当）とを備えたことを特徴とする。このようなプログラム閲覧支援装置では、利用者が閲覧中のソースコードに登場するインスタンスメソッドの呼び出し先となるメソッド定義の閲覧を要求した場合に、実行時にインスタンスメソッドの呼び出し先となる可能性があるメソッドの一覧を提示すると共に、一覧に含まれるメソッドそれぞれについてコンテキストの情報を提示することができる。
【００６２】
また、上記の実施形態のプログラム閲覧支援装置には、以下の（１）〜（６）に示すようなプログラム閲覧支援装置も示されている。
【００６３】
（１）コンテキストを考慮したポインタ解析情報を格納する記憶部（図１に示す記憶装置１２に相当）を備え、メソッド一覧作成部は、記憶部に格納されたポインタ解析情報から、利用者によって選択されたインスタンスメソッドのレシーバオブジェクトを参照する変数に関係するポインタ解析情報を抽出する解析情報抽出部（図１に示す選別部１５に相当）と、解析情報抽出部によって抽出されたポインタ解析情報を用いて、実行時にインスタンスメソッド呼び出しによって呼び出される可能性がある型の集合を計算し、型の集合に含まれる各型についてインスタンスメソッド呼び出しのメソッドを解決し、解決されたメソッドと当該メソッドのコンテキスト情報の集合とからなる表を作成するメソッド解決部（図１に示すメソッド解決部１６に相当）とを含むプログラム閲覧支援装置。そのように構成されたプログラム閲覧支援装置では、利用者が閲覧中のソースコードに登場するインスタンスメソッドの呼び出し先となるメソッド定義の閲覧を要求した場合に、実行時にインスタンスメソッドの呼び出し先となる可能性があるメソッドの一覧を提示すると共に、一覧に含まれるメソッドそれぞれについてコンテキストの情報を提示することができる。
【００６４】
（２）コンテキストとしてメソッド列が利用され、メソッド列の長さがをあらかじめ定められた長さに制限されているプログラム閲覧支援装置（例えば、メソッド呼び出しの列をコンテキストとして利用する場合におけるコンテキスト情報２１の作成方法で示された方法によって実現できる。）。そのように構成されたプログラム閲覧支援装置では、利用者はメソッド呼び出しが行われる可能性のあるメソッドを直接コンテキスト情報から確認することができる。また、あらかじめ長さを定められているメソッド列をコンテキストとして表示することによって、煩雑な表示を防止する効果が期待できる。
【００６５】
（３）コンテキストとしてメソッド列が利用され、メソッド列の長さが利用者に指定された長さに制限されているプログラム閲覧支援装置（例えば、メソッド呼び出しの列をコンテキストとして利用する場合におけるコンテキスト情報２１の作成方法で示された方法によって実現できる。）。そのように構成されたプログラム閲覧支援装置では、利用者はメソッド呼び出しが行われる可能性のあるメソッドを直接コンテキスト情報から確認することができる。また、コンテキストの長さを制限することによって、煩雑な表示を防止する効果が期待できる。
【００６６】
（４）コンテキストとしてメソッド呼び出し場所の列が利用され、メソッド呼び出し場所の列の長さがあらかじめ定められた長さに制限されているプログラム閲覧支援装置（例えば、メソッド呼び出しの場所の列をコンテキストとして利用する場合におけるコンテキスト情報２１の作成方法で示された方法によって実現できる。）。そのように構成されたプログラム閲覧支援装置では、利用者はメソッド呼び出しが行われている場所をコンテキスト情報から確認できる。また、あらかじめ長さを定められているメソッド呼び出し場所をコンテキストとして表示することによって、煩雑な表示を防止する効果が期待できる。
【００６７】
（５）コンテキストとしてメソッド呼び出し場所の列が利用され、メソッド呼び出し場所の列の長さが利用者に指定された長さに制限されているプログラム閲覧支援装置（例えば、メソッド呼び出しの場所の列をコンテキストとして利用する場合におけるコンテキスト情報２１の作成方法で示された方法によって実現できる。）。そのように構成されたプログラム閲覧支援装置では、利用者はメソッド呼び出しが行われている場所をコンテキスト情報から確認できる。また、コンテキストの長さを制限することによって、煩雑な表示を防止する効果が期待できる。
【００６８】
（６）出力部は、メソッドの一覧をまず表示し、メソッドの一覧の中からひとつまたは複数のメソッドがユーザによって選択された場合に、メソッドの一覧の中から選択されたメソッドが実行時に呼び出される可能性があるコンテキストを示すコンテキスト情報を出力するプログラム閲覧支援装置（例えば、ステップＳ１４〜Ｓ１５の動作によって実現される。）。そのように構成されたプログラム閲覧支援装置では、選択されたメソッドの呼び出し先候補のメソッドが複数表示されて、利用者にとってどのメソッドを閲覧すべきか判断が難しい場合であっても、各呼び出し先候補のメソッドについてのコンテキスト情報を確認することができ、利用者に対して適切なメソッドの閲覧に貢献できる。
【産業上の利用可能性】
【００６９】
本発明を、プログラムの開発を支援するプログラム開発環境のプログラム閲覧機能といった用途に適用できる。また、プログラムの閲覧を支援するプログラム閲覧支援ツールといった用途にも適用可能である。
【図面の簡単な説明】
【００７０】
【図１】本発明による実施形態のプログラム閲覧支援装置の構成の一例を示すブロック図である。
【図２】本発明による実施形態のプログラム閲覧支援装置における全体の動作を示すフローチャートである。
【図３】図９に示されたソースコード例におけるポインタ解析情報の一部を示す説明図である。
【図４】図９に示されたソースコード例における型情報の一部を示す説明図である。
【図５】本発明による実施形態のプログラム閲覧支援装置における各表の結合のモデルを示す説明図である。
【図６】本発明によるプログラム閲覧支援装置の主要部を示すブロック図である。
【図７】プログラム閲覧支援装置の構成の一例を示すブロック図である。
【図８】プログラムのソースコードの一例を示す説明図である。
【図９】Ｊａｖａ（登録商標）言語を用いて記述したプログラムのソースコードの一例を示す説明図である。
【符号の説明】
【００７１】
１    プログラム閲覧支援装置
２    メソッド一覧作成部
３    コンテキスト情報収集部
４    出力部
１０  プログラム閲覧支援装置
１１  計算機
１２  記憶装置
１３  入力部
１４  出力部
１５  選別部
１６  メソッド解決部
１７  コンテキスト収集部
１８  選択結果表示部
１９、２３  ポインタ解析情報
２０、２４  型情報
２１、２５  コンテキスト情報
２２  ソースコード
９０  プログラム閲覧支援装置
９１  入力装置
９２  定義型収集装置
９３  出力装置
９４、９５  定義型情報
９６  ソースコード
９７  記憶装置
【図１】
2010122989.tif 000003
【図２】
2010122989.tif 000004
【図３】
2010122989.tif 000005
【図４】
2010122989.tif 000006
【図５】
2010122989.tif 000007
【図６】
2010122989.tif 000008
【図７】
2010122989.tif 000009
【図８】
2010122989.tif 000010
【図９】
2010122989.tif 000011