(57)【要約】【課題】プログラムの変更がなされた際に、関数や変数などのシンボル単位で、関係のあるユーザに変更の通知をおこなって、プログラムのメインテナンス性を高める。【解決手段】プログラム解析装置において、シンボル情報解析部は登録されたプログラムを読み込み、プログラム中のシンボルを抽出し、シンボル間の参照箇所を抽出する。通知ユーザ情報指定部は、プログラムの部位ごとの通知先を指定する。そして、通知部は、プログラムが変更された際に、シンボル情報解析部にて抽出したシンボル間の参照箇所から変更の影響箇所を算出し、前記通知情報指定部にて指定したプログラム部位ごとに影響箇所が含まれるか否かを判定し、含まれた場合には通知ユーザ情報指定部により指定された通知先に通知をおこなう。【選択図】図１
2009053767.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータにより、プログラム解析プログラムを実行してプログラムのソースコードの変更箇所を解析するプログラム解析装置において、
解析の対象となるプログラムを登録するプログラム登録部と、
登録されたプログラムが変更された際の通知先を指定する通知情報指定部と、
登録されたプログラムが変更された際に通知の有無の判定をおこない、判定の結果により前記通知情報指定部にて指定された通知先に通知する通知部とを有することを特徴とするプログラム解析装置。
【請求項２】
コンピュータにより、プログラム解析プログラムを実行してプログラムのソースコードの変更箇所を解析するプログラム解析装置において、
解析の対象となるプログラムを登録するプログラム登録部と、
登録されたプログラムが変更された際の通知先を指定する通知情報指定部と、
登録されたプログラムを読み込み、前記プログラム中のシンボルを抽出し、シンボル間の参照箇所を抽出するシンボル情報解析部と、
登録されたプログラムの部位ごとの通知先を指定する通知情報指定部と、
プログラムが変更された際に、前記シンボル情報解析部にて抽出したシンボル間の参照箇所から変更の影響箇所を算出し、前記通知情報指定部にて指定したプログラム部位ごとに影響箇所が含まれるか否かを判定し、含まれる場合には、前記通知情報指定部により指定した通知先に通知をおこなう通知部とを有することを特徴とするプログラム解析装置。
【請求項３】
前記通知情報指定部は、プログラム部位の指定の際に変更通知をおこなわない非通知部位を指定する機能を有し、
前記通知部は、前記非通知部位が変更されていた場合には、前記非通知部位を除外して変更の影響箇所の算出をおこなうことを特徴とする請求項２記載のプログラム解析装置。
【請求項４】
コンピュータにより、プログラム解析プログラムを実行してプログラムのソースコードの変更箇所を解析するプログラム解析方法において、
解析の対象となるプログラムをユーザが登録するプログラム登録ステップと、
登録されたプログラムを読み込み、前記プログラム中のシンボルを抽出し、シンボル間の参照箇所を抽出するシンボル情報解析ステップと、
登録されたプログラムの部位ごとの通知先を指定する通知情報指定ステップと、
登録されたプログラムが変更された際に、前記シンボル情報解析ステップにより抽出したシンボル間の参照箇所から変更の影響箇所を算出し、前記通知情報指定部にて指定したプログラム部位ごとに影響箇所が含まれるか否かを判定し、含まれる場合には前記通知情報指定ステップにより指定した通知先に通知をおこなう通知ステップとを有することを特徴とするプログラム解析方法。
【請求項５】
前記通知情報指定ステップにより、プログラム部位の指定の際に変更通知をおこなわない非通知部位が指定されたときに、
前記通知ステップは、前記非通知部位が変更されていた場合には、前記非通知部位を除外して変更の影響箇所算出をおこなうことを特徴とする請求項４記載のプログラム解析方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム解析装置、および、プログラム解析方法に係り、特に、複数のソフトウェア開発者が関わるソフトウェア開発における保守、機能拡張業務等でプログラムの変更を把握することができ、プログラムのメインテナンス性の向上に大きく寄与させるのに好適なプログラム解析装置、および、プログラム解析方法に関する。
【背景技術】
【０００２】
Ｃ言語をはじめとするプログラム言語により記述されたプログラムは、関数やメソッド等のプログラム言語の持つ機能によりプログラムをモジュール化することによって、モジュール内部の実装を意識せず利用することが可能である。
【０００３】
しかしながら、大人数の開発者が関わり機能拡張を続けた大規模なソフトウェアは、モジュールが入れ子状になり、またモジュール同士が相互参照しあうことで、モジュール同士依存関係が複雑になることが多い。
【０００４】
その結果、ある一部のモジュールの修正が、修正した開発者の予想を超えて広範囲に影響を及ぼしてしまい、プログラムを広範囲に修正しなくてはならなくなる場合がある。
【０００５】
また、あるモジュールの修正が、開発者の予想した範囲外で、疎であったモジュール間の依存関係を密にしてしまうケースもある。
【０００６】
上記のようなケースを起さないためには、モジュールに変更を加えた際の影響箇所を認識しながら開発を進めることが重要であり、ソフトウェア開発の課題の一つとなっている。
【０００７】
こうした課題に対して、プログラムのソースコードを解析しソースコード中の参照関係をユーザに提示する技術や、ファイルが変更された場合にそのファイルに関係するファイルを参照しているユーザに通知する技術が提案されている。
【０００８】
例えば、特許文献１では、プログラムを構成する特定の部分(プログラム断片)と外部とのインタフェースに関する情報の理解を容易にすることを目的として、ユーザがソースコード中の任意のプログラム断片を指定すると、そのプログラム断片の依存関係を抽出して、外部との変数参照関係の情報を変数ごとに抽出する技術が開示されている。
【０００９】
また、特許文献２では、ユーザがあるファイルを参照している際に、そのファイルの関連ファイルが他のユーザにより変更された場合、関連ファイルの変更をユーザに通知する技術が開示されている。
【００１０】
【特許文献１】特開２００５−１８１１４号公報
【特許文献２】特開平７−４４４４１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
上記特許文献１では、プログラム中の指定した箇所と外部とのインタフェース情報を抽出することはできるが、ソースコードの修正前・修正後というような時間軸の変化に関しては考慮がされていない。さらに、複数箇所での変数、関数、領域の選択と参照関係の抽出に関しては考慮がされていない。このためユーザがソースコードの修正によるインタフェース情報の変化を知るためには、修正前後でインタフェース情報の抽出をおこない、さらにそのインタフェース情報の比較をおこなう必要があった。
【００１２】
また、上記特許文献２では、関連ファイルリストによりファイル同士の参照関係を保持しておき、ファイルに変更があった際には、そのファイルに関連するファイルを参照しているユーザに通知をおこなう。しかしながら、その反面、ファイルの参照関係はユーザ自身が指定するため、ユーザが認識していないファイル間に依存関係があった場合は、通知をおこなうことができなかった。さらに、参照関係の指定はファイル単位でおこなうため、プログラムソースコードのように関数単位、変数単位で参照関係が生じる場合には適用することができなかった。
【００１３】
さらに、特許文献１と特許文献２を組み合わせようとした場合には、ソースコードのインタフェース情報が変更された際に、ユーザに通知することが可能となるが、変更点のインタフェース以外の箇所への影響は把握できない上に、変更時に全て通知していては煩雑となってしまうため、どのような変更が生じた場合に通知をおこなうかという課題が残る。
【００１４】
本発明は、上記問題点を解決するためになされたもので、その目的は、プログラムの変更がなされた際に、関数や変数などのシンボル単位で、関係のあるユーザに変更の通知をおこなって、メインテナンス性を高めることのできるプログラム解析装置、および、プログラム解析方法を提供することにある。
【課題を解決するための手段】
【００１５】
本発明に係るプログラム解析装置は、コンピュータにより、プログラム解析プログラムを実行してプログラムのソースコードの変更箇所を解析するプログラム解析装置において、解析の対象となるプログラムを登録するためのプログラム登録部と、登録されたプログラムが変更された際の通知先を指定する通知情報指定部と、登録されたプログラムを読み込み、前記プログラム中のシンボルを抽出し、シンボル間の参照箇所を抽出するシンボル情報解析部と、登録されたプログラムの部位ごとの通知先を指定する通知情報指定部と、プログラムが変更された際に、前記プログラム解析部にて抽出したシンボル間の参照箇所から変更の影響箇所を算出し、前記通知情報指定部にて指定したプログラム部位ごとに影響箇所が含まれるか否かを判定し、含まれる場合には、前記通知情報指定部により指定した通知先に通知をおこなう通知部とを有するようにしたものである。
【００１６】
また、より詳しくは、上記プログラム解析装置において、前記通知情報指定部は、プログラム部位の指定の際に変更通知をおこなわない非通知部位を指定する機能を有し、前記通知部は、前記非通知部位が変更されていた場合には、前記非通知部位を除外して変更の影響箇所の算出をおこなうようにしたものである。
【００１７】
これによって、ユーザがソースコードを修正・改変する場合に、ユーザによって指定されたソースコードに影響を及ぼす場合に、ユーザに対して 変更通知をおこなうことができるようになるので、モジュールを変更した際の影響箇所の把握をすることが可能となり、その結果としてプログラムのメインテナンス性を高めることが可能となる
【発明の効果】
【００１８】
本発明によれば、プログラムの変更がなされた際に、関数や変数などのシンボル単位で、関係のあるユーザに変更の通知をおこなって、メインテナンス性を高めることのできるプログラム解析装置、および、プログラム解析方法を提供することができる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明に係る一実施形態を、図１ないし図１２を用いて説明する。
先ず、図１および図２を用いて本発明の一実施形態に係るプログラム解析装置の構成について説明する。
図１は、本発明の一実施形態に係るプログラム解析装置のブロック構成図である。
図２は、本発明の一実施形態に係るプログラム解析装置のハードウェア構成図である。
【００２０】
本発明の一実施形態に係るプログラム解析装置のハードウェア構成としては、例えば、図２に示されるような一般的なパーソナルコンピュータで実現される。
【００２１】
プログラム解析装置１００は、ＣＰＵ（Central Processing Unit）１０１、主記憶装置１０２、ネットワークＩ／Ｆ１０３、グラフィックＩ／Ｆ１０４、入出力Ｉ／Ｆ１０５、補助記憶装置Ｉ／Ｆ１０６が、バスにより結合された形態になっている。
【００２２】
ＣＰＵ１０１は、プログラム解析装置１００の各部を制御し、主記憶装置１０２にロードされるプログラム解析プログラムをロードして実行する。
【００２３】
主記憶装置１０２は、通常、ＲＡＭなどの揮発メモリで構成され、ＣＰＵ１０１が実行するプログラム、参照するデータが記憶される。
【００２４】
ネットワークＩ／Ｆ１０３は、外部ネットワーク５０と接続するためのインタフェースである。
【００２５】
グラフィックＩ／Ｆ１０４は、ＬＣＤ（Liquid Crystal Display）などの表示装置２０を接続するためのインタフェースである。
【００２６】
入出力Ｉ／Ｆ１０５は、入出力装置を接続するためのインタフェースである。図２の例では、キーボード３１とポインティングデバイスのマウス３２が接続されている。
【００２７】
補助記憶装置Ｉ／Ｆ１０６は、ＨＤＤ（Hard Disk Drive）４１やＤＶＤドライブ（Digital Versatile Disk）４２などの補助記憶装置を接続するためのインタフェースである。
【００２８】
ＨＤＤ４１は、大容量の記憶容量を有しており、本実施形態を実行するためのプログラム解析プログラム６０が格納されている。
【００２９】
ＤＶＤドライブ４２は、ＤＶＤやＣＤなどの光学ディスクにデータを書き込んだり、光学ディスクからデータを読み込んだりする装置であり、プログラム解析プログラム６０は、例えば、ＣＤ−ＲＯＭにより提供されたものをインストールすることができる。
【００３０】
本実施形態のプログラム解析装置１００は、上記のようなパーソナルコンピュータに、プログラム解析プログラム６０をインストールして、各機能を実行するものである。
【００３１】
初めに、本実施形態で用いる用語の定義をすると、「シンボル」とは関数名や変数名である。「リビジョン」とは変更登録の際の通し番号である。
【００３２】
次に、図１を用いて本実施形態のプログラム解析装置１００の各機能ブロックごとの説明する。
【００３３】
ユーザ入力部１１は、ユーザからのデータ入力や処理要求を受け付ける。対象プログラム登録部１２は解析対象となるプログラムを登録する。プログラムの変更を行った際も対象プログラム登録部１２に登録をおこなう。プログラム記憶部１３は登録されたプログラムを記憶する。
【００３４】
シンボル情報解析部１４は、プログラム記憶部１３に記憶されたプログラムを参照し、関数、変数といったシンボル情報を解析する。あわせて、プログラムの変更箇所も解析する。その後、解析したシンボル情報を用いて、シンボル間の参照関係を解析する。シンボル情報記憶部１５には、解析したシンボル情報をシンボルテーブル（後に、図３により説明）として記憶する。
【００３５】
参照関係記憶部１６には、解析したシンボル間の参照関係をシンボル間参照関係テーブル（後に、図４により説明）として記憶する。
【００３６】
通知ユーザ情報指定部１７は、シンボル情報記憶部１５に記憶されたシンボル情報と、そのシンボルに対応して変更を通知するユーザを指定する。通知ユーザ情報記憶部１８は、その指定された通知ユーザ情報を記憶する。
【００３７】
通知部１９は、参照関係記憶部１６を参照し、変更箇所と変更箇所が参照している、あるいは、変更箇所から参照されるシンボルとを抽出したうえで、通知ユーザ情報記憶部１８を参照し、通知するユーザを判定して、通知する。
【００３８】
次に、図３ないし図５を用いて本実施形態のプログラム解析装置に関わるデータ構造について説明する。
図３は、シンボルテーブルの一例を示す図である。
【００３９】
シンボルテーブルは、シンボル情報解析部１４によりプログラム中にでてくるシンボルを解析した結果を格納するテーブルであり、図３に示されるように、 revision毎に保持され、ID、SYMBOL_NAME、KINDの各フィールドを有する。
【００４０】
IDは、対象プログラムから抽出したシンボルごとに一意に割り振られた識別子を示すフィールドである。
【００４１】
SYMBOL_NAMEは、プログラム言語により記述されたシンボルの名称を示すフィールドである。
【００４２】
KINDは、抽出されたシンボルの種別が、関数であるか変数であるかを示すフィールドである。
【００４３】
revisionは、シンボルテーブルがプログラム変更の際に、システム管理者またはソフトウェア開発のプロジェクトの管理者がつけた一意的な識別子を用いることを表している。
【００４４】
ここで、revisionが、002のプログラム変更のシンボルテーブルには、IDが１のレコードには、SYMBOL_NAMEがfunc1、種類は関数のシンボルが記憶されていることを示している。
図４は、シンボル間参照関係テーブルの一例を示す図である。
【００４５】
シンボルテーブルは、参照関係記憶部１６によりプログラム中にでてくるシンボル間の参照関係を解析した結果を格納するテーブルであり、図４に示されるように、revision毎に保持され、ID、SYMBOL_NAME、REFERENCEの各フィールドを有する。
【００４６】
IDと、SYMBOL_NAMEは、図３に示したシンボルテーブルと同じ意味である。
【００４７】
REFERENCEは、このrevisionのプログラム変更のSYMBOL_NAMEが参照するSYMBOL_NAMEに対応するIDを格納するフィールドである。
【００４８】
例えば、IDが1のレコードには、SYMBOL_NAMEがfunc1、 REFERENCEが3が記憶されており、これは、func1がID=3に該当するfunc3を参照することを示している。
【００４９】
図５は、更新ファイル差分テーブルの一例を示す図である。
【００５０】
更新ファイル差分テーブルは、リビジョン毎に更新されたファイルを示すテーブルである。
【００５１】
図５の例では、例えば、Revision002においてsourceB.cが変更、sourceD.cが追加されており、Revision003においてsourceB.cが変更されていることがわかる。
【００５２】
図６は、通知ユーザ情報テーブルの一例を示す図である。
【００５３】
通知ユーザ情報テーブルは、変更のあったシンボルに対して通知するユーザ情報を指定するためのテーブルであり、図６に示されるように、ID、SYMBOL_NAME、各ユーザの指定をするフィールドを有する。
【００５４】
IDは、シンボル情報解析部により付与されたシンボルごとに一意に割り振られた識別子を示すフィールドであり、SYMBOL_NAMEは、シンボルの名称を示すフィールドである。
【００５５】
各ユーザの指定をするフィールドは、図６に示される例では、USER1,USER2,USER3となっており、これはこのプログラムの開発、保守などに関わるユーザの名称である。
【００５６】
各ユーザは、通知ユーザ情報指定部１７にて、本テーブルにマーク（○、×）印を付与する。○印は、そのシンボルに影響が及ぶ変更がなされた際に通知することを示している。×印は、そのシンボルに起因する変更による通知は、そのユーザにおこなわないことを示している。
【００５７】
図の例では、USER1列ではfunc1,func2に○印が付与されている。よって、func1、func2に影響が及ぶ変更がプログラムになされた際には、USER1に通知がなされる。また、USER3列では、func3に○印が、func4に×印が付与されている。よって、func4の変更以外で、func3に影響が及ぶ変更がなされた場合、USER3に通知がなされる。
【００５８】
次に、図７ないし図１２を用いて本発明の一実施形態に係るプログラム解析装置の処理について説明する。
先ず、図７および図８を用いて本発明の一実施形態に係るプログラム解析装置の全体の処理について説明する。
図７は、本発明の一実施形態に係るプログラム解析装置の全体の処理を示すゼネラルチャートである。
図８は、func5が変更されたときに、ユーザに通知される通知画面の一例である。
【００５９】
先ず、ユーザは、ユーザ入力部１１より、解析対象とするプログラムを指定し、対象プログラム登録部１２は、その指定されたプログラムを登録する（Ｓ１０１）。
【００６０】
次に、シンボル情報解析部１４において、シンボルの抽出をおこなう（Ｓ１０２）。シンボルの抽出では、プログラム中で使われている関数名と、全ての関数から参照可能なグローバル変数の変数名を抽出する。具体的には、ソースコードの軸解析をおこない単語列に分割し、単語列を基に、言語の構文規則から構文を解釈することにより抽出する。抽出したシンボルには、それぞれIDを割り当てる。抽出した結果は、図３に示されたシンボルテーブルとしてシンボル情報記憶部１５に記憶する。
【００６１】
なお、ここで、その関数の中だけで参照されるローカル変数は、解析の対象外である。
【００６２】
次に、シンボル情報解析部１４において、シンボル間の参照関係の解析をおこなう（Ｓ１０３）。プログラム中全ての関数において、関数内で参照しているシンボルを抽出し、図４に示されるシンボル間参照関係テーブルを作成し、参照関係記憶部１６に記憶する。
【００６３】
また、シンボル間の参照関係は、プログラムを実行させてメモリアクセスのログを取り、メモリアドレスとシンボルの対応付けを取る、動的解析手法を用いて求めることもできる。
【００６４】
次に、通知ユーザ情報指定部１７は、Ｓ１０２でおこなったシンボル抽出により抽出されたシンボルを、情報記憶部１５から読み出し、シンボルごとに、そのシンボルに影響が及ぶ変更がなされた場合に通知するユーザを指定する（Ｓ１０４）。
【００６５】
ユーザの指定は、シンボルごとに、通知先を指定するウィンドウを表示して、ユーザが○印、または、×印をつけることでなされる。
【００６６】
結果は、図６に示す通知ユーザ情報テーブルに格納される。この例では、USER1がシンボルfunc1とfunc2が変更されたとき、通知するように指定がなされている。
【００６７】
なお、ユーザの指定はシンボル単位ではなく、ソースファイル単位、ソースディレクトリ単位でおこなってもよい。この場合、対応するシンボルをソースファイル、ソースディレクトリ情報からシンボル情報解析部１４が取得する。
【００６８】
次に、対象プログラム登録部１２は、ユーザが加えたプログラムの変更を受け付け、プログラム記憶部１３に記憶する（Ｓ１０５）。登録の際には、図５に示したように、更新ファイルテーブルに変更差分のファイルのみ登録し、登録のたびにリビジョンを付与する。
【００６９】
次に、シンボル情報解析部１４は、プログラム記憶部１３の更新ファイルテーブルを参照し、変更差分のファイルを解析し、追加・削除されたシンボル名を抽出する（Ｓ１０６）。抽出されたシンボルは、シンボル情報記憶部１５にリビジョンとともに格納される。同時に、関数の実装変更など、変更の加えられたシンボルも抽出し、シンボル情報記憶部１５に記憶する。
【００７０】
次に、シンボル情報解析部１４により、シンボル間の参照関係の解析をおこなう（Ｓ１０７）。追加・削除・変更されたシンボルをシンボル情報記憶部１５から参照し、変更されたシンボルに対し、図４に示したシンボル間参照関係テーブルを作成し、リビジョンとともに参照関係記憶部１６に記憶する。
【００７１】
また、シンボル間の参照関係は、プログラムを実行させてメモリアクセスのログを取り、メモリアドレスとシンボルの対応付けを取る、動的解析手法を用いて求めることもできる。
【００７２】
次に、通知部１９は、参照関係記憶部１６に記憶されたシンボル間参照関係テーブルの参照関係から、変更により影響を受けるシンボルを算出する。そして、算出した影響を受けるシンボルを取得した後、通知ユーザ情報記憶部１８に記憶された図６の通知ユーザ情報テーブルより、シンボルに対応するユーザを特定する（Ｓ１０８）。
【００７３】
最後に、ステップＳ１０８で特定したユーザに対し通知をおこなう（Ｓ１０９）。例えば、func5が変更されたときに、図８に示されるような通知画面が表示される。この通知は、予め通知するコンピュータとユーザを結びつけて定義しておいてもよいし、通知するユーザの電子メールアドレスに、電子メールを送信してもよい。また、グループウェアなどを利用して、そのユーザに通知するようにしてもよい。
【００７４】
このように本実施形態の処理によれば、ユーザは、ステップＳ１０４において通知するユーザの指定をおこなうことができ、プログラムが変更された際には、ステップＳ１０８において通知判定をおこなった後、指定されたユーザに通知をおこなうことに特徴がある。
【００７５】
次に、図９を用いてステップＳ１０８の処理を詳細に説明する。
図９は、図７におけるステップＳ１０８の処理を詳細に記述したフローチャートである。
【００７６】
先ず、プログラムの変更で変更されたシンボルを取得する（Ｓ１０８１）。変更されたシンボルは、参照関係記憶部１６に保持するシンボル間参照関係テーブルから取得する。
【００７７】
次に、変更されたシンボルを参照しているシンボルを、連鎖的に取得する（Ｓ１０８２）。なお、シンボルの参照関係を解析する際の具体例は、後に説明する。
【００７８】
最後に、ステップＳ１０８２において取得したシンボルに対応するユーザを、通知ユーザ情報記憶部１８の通知ユーザ情報テーブルから取得する（Ｓ１０８３）。
【００７９】
この処理は、図６に示した通知ユーザ情報テーブルから、シンボルとシンボルに対応するユーザを参照することで求める処理である。
【００８０】
次に、図１０ないし図１２を用いてシンボルの参照関係の解析と通知ユーザを求める処理を具体的な例に基づいて説明する。
図１０は、解析対象プログラムのソースコードとそこにおけるシンボル参照関係を模式的に示した図である。
図１１は、図１０に示された解析対象プログラムのシンボル間の参照関係を解析して作成したシンボル参照関係テーブルの例を示す図である。
図１２は、各リビジョンでの参照関係を模式的に示した図である。
【００８１】
図１０（ａ）は、解析対象プログラムのソースコードの抜粋を記載したもので、プログラムはＣ言語で記述された場合である。また、図１０（ｂ）は、（ａ）のソースコードにおけるシンボル参照関係を示している。図の記法では、一つの関数（例えば、func3）に着目し、内部で参照しているシンボルの参照関係を示している。ここでは、関数を四角形、変数を楕円形で表記し、参照元から参照先に向け矢印を引いている。
【００８２】
上のような解析対象プログラムのソースコードに対して、図７のステップＳ１０３で、シンボル間の参照関係を解析すると、図１１に示すシンボル参照関係テーブルが生成される。図４と同様に、Revisionは変更ごとの通し番号、IDはシンボルごとに割り振られた番号、SYMBOL_NAMEは抽出されたシンボル名である。図中のイタリックの部分は、直前のRevisionから変更されたシンボルを示している。例えば、Revision003では、func4に変更が加えられたことがわかる。
【００８３】
REFERENCEは、当該シンボルが参照する参照先のシンボルのIDを示し、カッコ付き数値は本Revisionにて追加されたシンボル、カッコ付きマイナス数値は、削除されたシンボルであることを示している。例えば、シンボルfunc4は、本Revisionでの変更によりID6への参照がなくなり、ID5への参照が追加され、結果としてID5とID８、すなわち、func5とvar２を参照していることがわかる。
【００８４】
図１２には、Revision002からRevision003からシンボル間の参照関係が変化したことをビジュアルに表示した一例が示されている。
【００８５】
図１２の記法は、図１０（ｂ）と同様であるが、変更のあったシンボルを２重枠で囲み、さらに、そのシンボルを参照するシンボルへの矢印を連鎖的に太線で記してある。すなわち、func4が変更されており、func1,func2,func3がfunc4を参照していることがわかる。
【００８６】
図９のステップＳ１０９２の変更されたシンボルを参照しているシンボルを、連鎖的に取得する処理は、変更されたシンボルへの参照を、順次逆にたどることによりおこなうことができる。図１２では、例えば、func4から太線の矢印をたどり、func1,func2,func3を求めることができる。
【００８７】
このように、本実施形態では、ユーザは自分が関係するシンボルを指定しておくことで、プログラムが変更された際に、変更箇所の参照関係をたどり、変更箇所の影響するシンボルを取得することで、変更に影響のあるユーザに通知をおこなうことが可能となる。
【図面の簡単な説明】
【００８８】
【図１】本発明の一実施形態に係るプログラム解析装置のブロック構成図である。
【図２】本発明の一実施形態に係るプログラム解析装置のハードウェア構成図である。
【図３】シンボルテーブルの一例を示す図である。
【図４】シンボル間参照関係テーブルの一例を示す図である。
【図５】更新ファイル差分テーブルの一例を示す図である。
【図６】通知ユーザ情報テーブルの一例を示す図である。
【図７】本発明の一実施形態に係るプログラム解析装置の全体の処理を示すゼネラルチャートである。
【図８】USER1に通知される通知画面の一例である。
【図９】図２におけるステップＳ１０８の処理を詳細に記述したフローチャートである。
【図１０】解析対象プログラムのソースコードとそこにおけるシンボル参照関係を模式的に示した図である。
【図１１】図１０に示された解析対象プログラムのシンボル間の参照関係を解析して作成したシンボル参照関係テーブルの例を示す図である。
【図１２】各リビジョンでの参照関係を模式的に示した図である。
【符号の説明】
【００８９】
１１…ユーザ入力部、１２…対象プログラム登録部、１３…プログラム記憶部、１４シンボル情報解析部、１５…シンボル情報記憶部、１６…参照関係記憶部、１７…通知ユーザ情報指定部、１８…通知ユーザ情報記憶部、１９…通知部。
【図１】
2009053767.tif 000003
【図２】
2009053767.tif 000004
【図３】
2009053767.tif 000005
【図４】
2009053767.tif 000006
【図５】
2009053767.tif 000007
【図６】
2009053767.tif 000008
【図７】
2009053767.tif 000009
【図８】
2009053767.tif 000010
【図９】
2009053767.tif 000011
【図１０】
2009053767.tif 000012
【図１１】
2009053767.tif 000013
【図１２】
2009053767.tif 000014