(57)【要約】【課題】プログラムを変更した場合の、変更後のプログラムの妥当性の検証を効率化できるプログラム解析装置を提供する。【解決手段】第１のプログラムについて行われたテストの結果がエラーになったテスト項目に関する、第１のプログラム上の実行経路に基づいて、第１のプログラムと共通のコードを含む第２のプログラムに、実行経路上の第１の通過位置に対応する第２の通過位置が含まれるかどうかを検索する検索手段と、変更後通過位置に対応する第１のプログラムの第１の部分と、変更前通過位置に対応する第２のプログラムの第２の部分との差分の有無に基づいて、第１の部分又は第２の部分を出力する出力手段と、を備える。【選択図】      図１
2014126900.tif 000002
【特許請求の範囲】
【請求項１】
第１のプログラムについて行われたテストの結果がエラーになったテスト項目に関する、前記第１のプログラム上の実行経路に基づいて、前記第１のプログラムと共通のコードを含む第２のプログラムに、前記実行経路上の第１の通過位置に対応する第２の通過位置が含まれるかどうかを検索する検索手段と、
前記変更後通過位置に対応する前記第１のプログラムの第１の部分と、前記第２の通過位置に対応する前記第２のプログラムの第２の部分との差分の有無に基づいて、前記第１の部分又は前記第２の部分を出力する出力手段と、
を備えることを特徴とするプログラム解析装置。
【請求項２】
前記変更後通過位置は、前記第１のプログラムに含まれる第１のメソッドの定義部分である
ことを特徴とする請求項１に記載のプログラム解析装置。
【請求項３】
前記変更前通過位置は、前記第２のプログラムに含まれる第２のメソッドの定義部分である
ことを特徴とする請求項１又は２に記載のプログラム解析装置。
【請求項４】
前記変更後通過位置に対応する前記変更前通過位置は、前記第１のメソッドと同じ名称を持つ前記第２のメソッドの定義部分である
ことを特徴とする請求項３に記載のプログラム解析装置。
【請求項５】
第１のプログラムについて行われたテストの結果がエラーになったテスト項目に関する、前記第１のプログラム上の実行経路に基づいて、前記第１のプログラムと共通のコードを含む第２のプログラムに、前記実行経路上の第１の通過位置に対応する第２の通過位置が含まれるかどうかを検索し、
前記変更後通過位置に対応する前記第１のプログラムの第１の部分と、前記第２の通過位置に対応する前記第２のプログラムの第２の部分との差分の有無に基づいて、前記第１の部分又は前記第２の部分を出力する
ことを特徴とするプログラム解析方法。
【請求項６】
プログラム解析装置が備えるコンピュータを、
第１のプログラムについて行われたテストの結果がエラーになったテスト項目に関する、前記第１のプログラム上の実行経路に基づいて、前記第１のプログラムと共通のコードを含む第２のプログラムに、前記実行経路上の第１の通過位置に対応する第２の通過位置が含まれるかどうかを検索する検索手段と、
前記変更後通過位置に対応する前記第１のプログラムの第１の部分と、前記第２の通過位置に対応する前記第２のプログラムの第２の部分との差分の有無に基づいて、前記第１の部分又は前記第２の部分を出力する出力手段と、
として機能させるためのプログラム解析プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テストの実行結果を利用してプログラムの差分を抽出するプログラム解析装置、プログラム解析方法、及び、プログラム解析プログラムに関する。
【背景技術】
【０００２】
ソフトウェア開発では、新規開発だけでなく、既存システムの保守・改善開発がなされることが多い。保守・改善開発では、保守・改善によって仕様が変わらない箇所が、ソフトウェアの変更前と変更後とで同じ動作をすることを確認しなければならない。そのため、変更前に実施したものと同じテスト項目が、変更後にも実施されることがある。このようなテストは、回帰テスト（リグレッションテスト）と呼ばれる。
【０００３】
回帰テストは、テスト支援ツール等を使うことにより自動化されることが多い。このとき、テスト結果を確認し、テスト結果がエラーになった原因を特定する作業（デバッグ作業）は人手で行われる必要がある。そのため、エラーが多く発生した場合は、デバッグ作業に大きな時間を要するという問題があった。
【０００４】
デバッグ支援技術の一例が、特許文献１に開示されている。特許文献１のデバッグ支援技術では、正常に動作していたソースコードと、正常に動作していたソースコードに変更が加えられ、実行時にエラーを発生するようになったソースコードとの差分情報を提示することにより、テスト結果がエラーになった原因である変更箇所を特定する作業の効率化を図っている。
【０００５】
デバッグ支援技術の別の一例が、特許文献２に開示されている。特許文献２のテスト支援システムは、ソースコード比較手段と、修正前ソースコード記憶手段と、修正後ソースコード記憶手段と、通過モジュール情報記憶手段と、テスト項目抽出手段と、通過モジュール情報記憶手段とを備える。特許文献２のテスト支援システムは、以下のように動作する。
【０００６】
ソースコード比較手段は、修正前ソースコード記憶手段が記憶する修正前ソースコードと、修正後ソースコード記憶手段が記憶する修正後のソースコードとを比較し、変更が行われたモジュールを特定する。通過モジュール情報記憶手段は、修正前のソースコードに対して複数のテスト項目のテストを実行した際に、実行すべき対象を示す指示が通過する、すなわち実行対象として呼び出され実行されるモジュールを、テスト項目と対応付けて記憶する。テスト項目抽出手段は、通過モジュール情報記憶手段を参照し、変更が行われたモジュールを通過するテスト項目を抽出する。
【０００７】
以上のように、「実行対象の位置を示す指示が移動すること」を「処理が通過する」という。したがって、「通過位置」とは、「過去に実行対象として指定された位置」を意味する。又、プログラムを構成する部分処理が実行対象としてたどられるときの通過位置の並びを、以降、「実行経路」という。
【０００８】
上記の動作の結果、このテスト支援システムでは、プログラムの詳細な解析を必要とせず、また、ユーザが変更箇所を指定しなくても、修正後のソースコードについて実行すべきテスト項目を抽出できる。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００７−４２５５号公報（第４−１０ページ、図１）
【特許文献２】特開２０１０−１２２９５９号公報（第４−５ページ、図１）
【発明の概要】
【発明が解決しようとする課題】
【００１０】
特許文献１に開示されている技術では、テスト結果がエラーになったテスト項目に関係ない情報も差分情報に含まれるため、関係する部分だけを抽出するという作業が必要となるという問題がある。
【００１１】
特許文献２に開示されているテスト支援システムでは、プログラムの詳細な解析を必要とせず、また、ユーザが変更箇所を指定しなくても、修正後のソースコードについて実行すべきテスト項目を抽出できる。
【００１２】
ところで、プログラムを変更した場合は、変更後のプログラムの、変更された部分のみ、すなわちプログラムの差分に着目して、変更後のプログラムの妥当性を検証することができれば、効率的である。ところが、特許文献２のテスト支援システムは、修正前及び修正後のソースコードの差分に着目した処理を行わない。特許文献２のテスト支援システムは、そもそも、修正後のソースコードについて実行したテスト結果を利用していない。
【００１３】
本発明の目的は、プログラムを変更した場合の、変更後のプログラムの妥当性の検証を効率化できる、プログラム解析装置、プログラム解析方法、及び、プログラム解析プログラムを提供することにある。
【課題を解決するための手段】
【００１４】
本発明のプログラム解析装置は、第１のプログラムについて行われたテストの結果がエラーになったテスト項目に関する、第１のプログラム上の実行経路に基づいて、第１のプログラムと共通のコードを含む第２のプログラムに、実行経路上の第１の通過位置に対応する第２の通過位置が含まれるかどうかを検索する検索手段と、変更後通過位置に対応する第１のプログラムの第１の部分と、変更前通過位置に対応する第２のプログラムの第２の部分との差分の有無に基づいて、第１の部分又は第２の部分を出力する出力手段と、を備えることを特徴とする。
【００１５】
本発明のプログラム解析方法は、第１のプログラムについて行われたテストの結果がエラーになったテスト項目に関する、第１のプログラム上の実行経路に基づいて、第１のプログラムと共通のコードを含む第２のプログラムに、実行経路上の第１の通過位置に対応する第２の通過位置が含まれるかどうかを検索し、変更後通過位置に対応する第１のプログラムの第１の部分と、第２の通過位置に対応する第２のプログラムの第２の部分との差分の有無に基づいて、第１の部分又は第２の部分を出力することを特徴とする。
【００１６】
本発明のプログラム解析プログラムは、プログラム解析装置が備えるコンピュータを、
第１のプログラムについて行われたテストの結果がエラーになったテスト項目に関する、第１のプログラム上の実行経路に基づいて、第１のプログラムと共通のコードを含む第２のプログラムに、実行経路上の第１の通過位置に対応する第２の通過位置が含まれるかどうかを検索する検索手段と、変更後通過位置に対応する第１のプログラムの第１の部分と、第２の通過位置に対応する第２のプログラムの第２の部分との差分の有無に基づいて、第１の部分又は第２の部分を出力する出力手段、として機能させることを特徴とする。
【発明の効果】
【００１７】
本発明によれば、プログラムを変更した場合の、変更後のプログラムの妥当性の検証を効率化できるという効果がある。
【図面の簡単な説明】
【００１８】
【図１】本発明の第１の実施形態におけるプログラム解析装置の構成を示すブロック図である。
【図２】本発明の第１の実施形態における変更前プログラムの一例を示す図である。
【図３】本発明の第１の実施形態における変更後プログラムの一例を示す図である。
【図４】本発明の第１の実施形態における回帰テスト項目の一例を示す図である。
【図５】本発明の第１の実施形態における実行経路情報の一例を示す図である。
【図６】本発明の第１の実施形態における実行経路情報の別の一例を示す図である。
【図７】本発明の第１の実施形態における差分情報の一例を示す図である。
【図８】本発明の第１の実施形態における差分情報の別の一例を示す図である。
【図９】本発明の第１の実施形態におけるプログラム解析装置のハードウェア構成の一例を示すブロック図である。
【図１０】本発明の第１の実施形態におけるプログラム解析装置の動作を示すフローチャートである。
【発明を実施するための形態】
【００１９】
以下、本発明の実施形態について図面を参照して詳細に説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。
（第１の実施形態）
図１は、本発明の第１の実施形態におけるプログラム解析装置の構成を示すブロック図である。
【００２０】
まず、プログラム解析装置の構成を説明するための前提について説明する。
【００２１】
あるコンピュータプログラム（以下、「変更前プログラム」という。）がコンピュータ上で動作可能であるものとする。尚、変更前プログラム１３０が、ソースコードである場合等、そのままではコンピュータ上で動作可能ではないときには、変更前プログラム１３０を実行可能形式に変換後に、コンピュータ上で動作させてもよい。変更前プログラム１３０は、一群のテスト項目に対して、正常に動作することが確認されている。
【００２２】
図２は、本実施形態における変更前プログラムの一例を示す図である。
【００２３】
１〜１０行において“Ｍａｉｎ．ｆｕｎｃ”メソッドが、１１〜１６行において“ＳｕｂＡ．ｍ”メソッドが、１７〜２２行において“ＳｕｂＢ．ｍ”メソッドが、定義されている。
【００２４】
変更前プログラム１３０に変更が加えられた、別のプログラム（以下、「変更後プログラム」という。）が存在し、コンピュータ上で動作可能であるものとする。尚、変更後プログラム１５０も、そのままではコンピュータ上で動作可能ではないときには、変更後プログラム１５０を実行可能形式に変換後に、コンピュータ上で動作させてもよい。なお、変更前プログラム１３０、変更後プログラム１５０のそれぞれの記述に用いられる言語は、共通の言語であってもよいし、別個の言語であってもよい。
【００２５】
図３は、本実施形態における変更後プログラムの一例を示す図である。
【００２６】
“Ｍａｉｎ．ｆｕｎｃ”メソッドは変更されておらず、１４行において“ＳｕｂＡ．ｍ”メソッドが変更され、２０行において“ＳｕｂＢ．ｍ”メソッドが変更され、２３〜３２行において“ＳｕｂＣ．ｍ”メソッドが新たに定義されている。
【００２７】
尚、ここでは、変更前プログラムが変更されて、変更後プログラムが作成されたものとして説明した。しかし、変更後プログラムは、変更前プログラムが変更されて、作成されたものには限定されない。第１のプログラムが、一群のテスト項目に対して、正常に動作することが確認されていて、かつ、第２のプログラムが、第１のプログラムに対して、コードが一致する部分と、コードが一致しない部分とに分割できれば、第１のプログラムが変更されて、第２のプログラムが作成されたものとみなすことができる。従って、第１のプログラムと第２のプログラムとが、独立して作られた２つのプログラムであってもよい。
【００２８】
変更前プログラムと変更後プログラムは、例えば、１つのアプリケーション・プログラミング・インタフェース仕様に従って、共通するメソッドの名称及び機能を含むように、独立して作られた２つのプログラムであってもよい。この場合、どちらか一方のプログラムが、一群のテスト項目に対して、正常に動作することが確認されていれば、一方のプログラムは、他方のプログラムが変更されて作成されたものとみなすことができる。
【００２９】
例えば、第１のアプリケーション・プログラミング・インタフェース仕様に規定されるメソッドの名称及び機能を含むように作られた第１のプログラムがあるものとする。又、第１のアプリケーション・プログラミング・インタフェース仕様と共通するメソッドの名称及び機能を含む第２のアプリケーション・プログラミング・インタフェース仕様があるものとする。更に、第２のアプリケーション・プログラミング・インタフェース仕様に規定されたメソッドの名称及び機能を含むように、第１のプログラムとは独立して作られた第２のプログラムがあるものとする。このとき、第１のプログラムと第２のプログラムのどちらか一方が、一群のテスト項目に対して、正常に動作することが確認されていれば、一方のプログラムは、他方のプログラムが変更されて作成されたものとみなすことができる。
【００３０】
変更後プログラム１５０は、変更前プログラム１３０が正常に動作した一群のテスト項目の一部項目（以下、「回帰テスト項目」という。）に対して、正常又は異常に動作することが確認されている。回帰テスト項目１７０の各テスト項目は、例えば、テスト内容と、テスト内容を実行したときの期待結果と、各テスト項目を識別するためのテスト項目名を含んでもよい。
【００３１】
図４は、本実施形態における回帰テスト項目の一例を示す図である。
【００３２】
図４の回帰テスト項目１７０は、３番目のテスト項目は、テスト項目名が“３”で、テスト内容が“Ｍａｉｎ．ｆｕｎｃ”メソッドに引数“−１”を与えて実行するテストで、期待結果が“Ｍａｉｎ．ｆｕｎｃ”メソッドの戻り値が“２”であることを示している。
【００３３】
回帰テスト項目１７０を実行するときの変更後プログラム１５０上の実行経路を示す実行経路情報１８０は、異常に動作したテスト項目毎に記録されている。実行経路情報１８０によって示される実行経路は、回帰テスト項目１７０の実行時に、変更後プログラム１５０が実行された、変更後プログラム１５０上の一連の部分（以下、「変更後通過位置」という。）を１個以上含む。各変更後通過位置は、テスト項目の実行時に実行された変更後プログラム１５０上のメソッド名、関数名、ラベル名、デバッグ命令文、行番号、行番号の範囲、又は、コメント等により識別されてもよい。又、実行経路情報１８０は、テスト項目名等を更に含んでもよい。
【００３４】
例えば、図３に示した変更後プログラム１５０中の、３行、１３行、１９行、２５行にある“Ｓｙｓｔｅｍ．ｏｕｔ．ｐｒｉｎｔｌｎ”メッソドが実行されることにより、実行されたメソッド名が出力される。異常に動作したテスト項目について、メソッド名のリストを記録することで、実行経路情報１８０を得ることができる。
【００３５】
あるいは、例えば、プログラミング言語にＪａｖａ（登録商標）を用いる場合、ＪＵｎｉｔ等のテストツールを用いることができる。この場合には、ｊｃｏｖｅｒａｇｅ等のカバレッジツールを用いて、実行経路情報１８０を得ることができる。
【００３６】
図５は、本実施形態における実行経路情報１８０の一例を示す図である。
【００３７】
図５の実行経路情報１８０は、テスト項目名が“３”のテスト項目に対応する、“Ｍａｉｎ．ｆｕｎｃ”、“ＳｕｂＢ．ｍ”、“ＳｕｂＣ．ｍ”メソッドの変更後通過位置を含む実行経路であることを示す。
【００３８】
実行経路情報１８０は、変更後プログラム１５０が異常に動作したテスト項目に対してのみ生成されてもよいし、あるいは、変更後プログラム１５０が正常又は異常に動作したテスト項目に対して生成され、動作が正常又は異常のどちらかの情報（以下、「テスト結果」という。）を含んでもよい。
【００３９】
図６は、本実施形態における実行経路情報の別の一例を示す図である。
【００４０】
図６の実行経路情報１８０は、テスト項目名が“３”のテスト項目に対応し、テスト結果が“ＮＧ”で、“Ｍａｉｎ．ｆｕｎｃ”、“ＳｕｂＢ．ｍ”、“ＳｕｂＣ．ｍ”メソッドの変更後通過位置を含む実行経路であることを示す。
【００４１】
以上の前提のもとに、プログラム解析装置の構成について説明する。
【００４２】
本実施形態のプログラム解析装置１００は、通過位置検索手段１１０と、差分出力手段１２０とを備える。
【００４３】
通過位置検索手段１１０は、入力された実行経路情報１８０に基づいて、実行経路情報１８０に含まれる各変更後通過位置について、入力された変更前プログラム１３０から、変更後通過位置に対応する変更前プログラム１３０上の通過位置（以下、「変更前通過位置」という。）を検索して、変更後通過位置と変更前通過位置との組を出力する。尚、通過位置検索手段１１０は、変更後プログラム１５０が正常に動作したテスト項目に対する実行経路情報を無視する。又、変更後通過位置に対応する変更前通過位置は、変更前プログラム１３０上に、変更後通過位置と同じ、メソッド名、関数名、ラベル名、デバッグ命令文、行番号、行番号の範囲、又は、コメント等をもつ部分があるか否か等に基づいて検索されてもよい。又、変更後通過位置に対応する変更前通過位置が見つからなかったときは、通過位置検索手段１１０は、変更前通過位置として、「空」であることを示す値を出力する。
【００４４】
差分出力手段１２０は、まず、変更後通過位置と変更前通過位置との組と、変更後プログラム１５０と、変更前プログラム１３０とに基づいて、変更前通過位置に対応する変更前プログラム１３０の部分と、変更後通過位置に対応する変更後プログラム１５０の部分とに差分があるか否かを検査する。差分出力手段１２０は、つづいて、差分があれば、変更後通過位置に対応する変更後プログラム１５０の部分を含む差分情報１９０を出力する。尚、入力された変更前通過位置の値が“空”のときは、変更後通過位置に対応する変更後プログラム１５０の部分を出力する。又、差分情報１９０には、変更前通過位置に対応する変更前プログラム１３０の部分や、テスト項目名等が更に含まれてもよい。
【００４５】
尚、差分出力手段１２０は、変更前プログラム１３０と変更後プログラム１５０のコードの部分が、完全に一致しなくても、差分がないと判定してもよい。例えば、コード中のコメント、スペース、タブ、改行等の、プログラムの実行結果に影響しないコードの違いは無視してもよい。
【００４６】
又、差分情報１９０に含まれる、変更後通過位置に対応する変更後プログラム１５０の部分や、変更前通過位置に対応する変更前プログラム１３０の部分は、コードの差分がある部分のみでなくてもよい。例えば、差分情報１９０には、コードの差分があるメソッドの定義全体が含まれてもよい。
【００４７】
図７は、本実施形態における差分情報の一例を示す図である。
【００４８】
図７の差分情報１９０は、１番目の差分情報は、テスト項目名が“３”のテスト項目に対応し、変更後通過位置“Ｍａｉｎ．ｆｕｎｃ”、“ＳｕｂＢ．ｍ”、“ＳｕｂＣ．ｍ”メソッドのうち、変更前通過位置に対応する変更前プログラム１３０の部分と、変更後通過位置に対応する変更後プログラム１５０の部分とに差分がある“ＳｕｂＢ．ｍ”及び“ＳｕｂＣ．ｍ”メソッドに対応する変更後プログラム１５０の部分を含んでいる。
【００４９】
図８は、本実施形態における差分情報の別の一例を示す図である。
【００５０】
図８の差分情報１９０は、１番目の差分情報は、テスト項目名が“３”のテスト項目に対応し、変更後通過位置“Ｍａｉｎ．ｆｕｎｃ”、“ＳｕｂＢ．ｍ”、“ＳｕｂＣ．ｍ”メソッドのうち、変更前通過位置に対応する変更前プログラム１３０の部分と、変更後通過位置に対応する変更後プログラム１５０の部分とに差分がある“ＳｕｂＢ．ｍ”及び“ＳｕｂＣ．ｍ”メソッドに対応する変更後プログラム１５０の部分、並びに、変更前通過位置に対応する変更前プログラム１３０の部分と、変更後通過位置に対応する変更後プログラム１５０の部分とに差分がある“ＳｕｂＢ．ｍ”メソッドに対応する変更前プログラム１３０の部分を含んでいる。
【００５１】
図９は、本実施形態におけるプログラム解析装置のハードウェア構成の一例を示すブロック図である。
【００５２】
プログラム解析装置９０７は、記憶装置９０２と、ＣＰＵ（Central Processing Unit）９０３と、キーボード９０４と、モニタ９０５と、Ｉ／Ｏ（Input/Output）９０８とを備え、これらが内部バス９０６で接続されている。記憶装置９０２は、差分出力手段１２０等のＣＰＵ９０３の動作プログラムを格納する。ＣＰＵ９０３は、プログラム解析装置９０７全体を制御し、記憶装置９０２に格納された動作プログラムを実行し、Ｉ／Ｏ９０８を介して差分出力手段１２０等のプログラムの実行やデータの送受信を行なう。なお、上記のプログラム解析装置９０７の内部構成は一例である。プログラム解析装置９０７は、ＣＰＵ９０３のみを備え、外部に備えられた、記憶装置９０２、キーボード９０４、モニタ９０５、及びＩ／Ｏ９０８を用いて動作してもよい。
【００５３】
次に、本実施形態の動作を説明する。
【００５４】
図１０は、本実施形態におけるプログラム解析装置の動作を示すフローチャートである。但し、実行経路情報１８０に含まれる１個の変更後通過位置に対する動作を示す。実行経路情報１８０に複数の変更後通過位置が含まれる場合には、１個の変更後通過位置に対する動作が繰り返される。
【００５５】
通過位置検索手段１１０は、入力された実行経路情報１８０に含まれる各変更後通過位置について、入力された変更前プログラム１３０から、変更後通過位置に対応する変更前通過位置を検索して、変更後通過位置と変更前通過位置との組を出力する（ステップＳ１１０）。
【００５６】
差分出力手段１２０は、変更前通過位置の有無を調べる（ステップＳ１２０）。
【００５７】
差分出力手段１２０は、変更前通過位置がなければ（ステップＳ１２０：Ｎｏ）、次のステップＳ１５０へ進む。
【００５８】
変更前通過位置があれば（ステップＳ１２０：Ｙｅｓ）、差分出力手段１２０は、変更前通過位置に対応する変更前プログラム１３０の部分と、変更後通過位置に対応する変更後プログラム１５０の部分とに差分があるか否かを検査する（ステップＳ１３０）。
【００５９】
差分出力手段１２０は、差分がなければ（ステップＳ１４０：Ｎｏ）、その変更後通過位置に対する処理を終了する。
【００６０】
差分出力手段１２０は、差分があれば（ステップＳ１４０：Ｙｅｓ）、変更後通過位置に対応する変更後プログラム１５０の部分を含む差分情報１９０を出力する。
【００６１】
以上説明したように、本実施形態におけるプログラム解析装置１００は、回帰テストの特定のテスト項目でエラーが発生したとき、変更前後でのプログラムの差分の情報のうち、特定のテスト項目の実行経路に含まれるプログラムの差分の情報のみを抽出できる。その理由は、通過位置検索手段１１０が、特定のテスト項目に関連したプログラムの部分を検索し、差分出力手段１２０が、特定のテスト項目に関連したプログラムの部分から、プログラムの変更前後で差分がある部分を抽出するからである。
【００６２】
又、本実施形態におけるプログラム解析装置１００は、回帰テストの特定のテスト項目でエラーが発生したとき、変更後プログラムのデバッグ作業の支援に利用できる。その理由は、プログラム解析装置１００が、回帰テストの特定のテスト項目でエラーが発生したとき、特定のテスト項目に関連した変更前後でのプログラムの差分の情報のみを抽出し、デバッグ作業者は、バグが存在する差分の情報を参照できるからである。
【００６３】
尚、本実施形態では、差分情報１９０は、変更後通過位置に対応する変更後プログラム１５０の部分を含むものとして説明した。しかし、差分情報１９０は、変更後通過位置に対応する変更後プログラム１５０の部分を含むものには限定されない。すなわち、差分情報１９０は、変更後通過位置に対応する変更前プログラム１３０の部分を含むものでもよい。この場合、プログラム解析装置１００は、バグが存在する変更後プログラム１５０の部分に対応する、バグが存在しない変更前プログラム１３０の部分を抽出できる。従って、差分情報１９０は、変更後通過位置に対応する変更前プログラム１３０の部分を含むものでもよい。
【００６４】
尚、本実施例では、プログラムを記述するプログラミング言語として、Ｊａｖａ（登録商標）を用いた例を挙げたが、これに限られず、Ｃ、アセンブリ言語等の任意の手続き型プログラミング言語であってもよい。
【００６５】
尚、本願発明は、上述の実施形態に限定されるものではなく、本願発明の要旨を逸脱しない範囲で種々変更、変形して実施することができる。
【図１】
2014126900.tif 000003
【図２】
2014126900.tif 000004
【図３】
2014126900.tif 000005
【図４】
2014126900.tif 000006
【図５】
2014126900.tif 000007
【図６】
2014126900.tif 000008
【図７】
2014126900.tif 000009
【図８】
2014126900.tif 000010
【図９】
2014126900.tif 000011
【図１０】
2014126900.tif 000012