(57)【特許請求の範囲】
【請求項１】
アクセス権の制限に基づいて実行される所定のプログラムについて、該プログラムの実行時に使用されるアクセス権を集めた実行時アクセス権リストと設計時に付与されたアクセス権を集めた設計時アクセス権リストとの間で生じた矛盾を検出するアクセス権矛盾検出装置であって、
入力手段から入力された前記プログラムのソースコードを解析して該プログラムに含まれるメソッドのメソッド名および該メソッドに対する引数の数並びに型を示すメソッドシグネチャを順次検出する検出手段と、
前記プログラムに含まれ得るメソッドシグネチャとアクセス権とを対応付けて規定した所定の解析ルールを記憶手段から読み出し、読み出された解析ルールに基づいて、前記検出手段によって検出されたメソッドシグネチャを順次解析して前記実行時アクセス権リストを求める解析手段と、
前記プログラムに含まれ得るアクセス権の制限に関する広狭を規定した所定の比較ルールを記憶手段から読み出し、読み出された比較ルールに基づいて、前記解析手段によって求められた実行時アクセス権リストと前記設計時アクセス権リストとの間で制限の広狭を比較する比較手段と、
前記比較手段による比較結果を出力手段から報知する報知手段と、
を備えたことを特徴とするアクセス権矛盾検出装置。
【請求項２】
前記報知手段は、前記実行時アクセス権リストのなかから、前記比較手段によって実行時の制限が前記設計時のアクセス権の制限よりも広いと比較されたアクセス権を報知することを特徴とする請求項１に記載のアクセス権矛盾検出装置。
【請求項３】
前記プログラムのソースコードのなかから、前記比較手段によって実行時の制限が前記設計時のアクセス権の制限よりも広いと比較されたアクセス権に対応する部分ソースコードを検出する部分ソースコード検出手段をさらに備え、
前記報知手段は、前記部分ソースコード検出手段によって検出された部分ソースコードを報知することを特徴とする請求項１または２に記載のアクセス権矛盾検出装置。
【請求項４】
前記所定の比較ルールを記憶手段から読み出し、読み出された比較ルールに基づいて前記設計時アクセス権リストに含まれる各アクセス権の間で制限の広狭を比較し、当該設計時アクセス権リストのなかから他のアクセス権の制限よりも狭い制限を有するアクセス権を削除した新たな設計時アクセス権リストを作成する第１のリスト作成手段をさらに備え、
前記比較手段は、前記第１のリスト作成手段によって作成された新たな設計時アクセス権リストと前記解析手段によって求められた実行時アクセス権リストとの間で制限の広狭を比較することを特徴とする請求項１、２または３に記載のアクセス権矛盾検出装置。
【請求項５】
前記所定の比較ルールを記憶手段から読み出し、読み出された比較ルールに基づいて前記実行時アクセス権リストに含まれる各アクセス権の間で制限の広狭を比較し、当該実行時アクセス権リストのなかから他のアクセス権の制限よりも狭い制限を有するアクセス権を削除した新たな実行時アクセス権リストを作成する第２のリスト作成手段をさらに備え、
前記比較手段は、前記第２のリスト作成手段によって作成された新たな実行時アクセス権リストと前記設計時アクセス権リストとの間で制限の広狭を比較することを特徴とする請求項１、２または３に記載のアクセス権矛盾検出装置。
【請求項６】
前記所定の比較ルールを記憶手段から読み出し、読み出された比較ルールに基づいて前記設計時アクセス権リストに含まれる各アクセス権の間で制限の広狭を比較し、当該設計時アクセス権リストのなかから他のアクセス権の制限よりも狭い制限を有するアクセス権を削除した新たな設計時アクセス権リストを作成する第１のリスト作成手段と、前記所定の比較ルールを記憶手段から読み出し、読み出された比較ルールに基づいて前記実行時アクセス権リストに含まれる各アクセス権の間で制限の広狭を比較し、当該実行時アクセス権リストのなかから他のアクセス権の制限よりも狭い制限を有するアクセス権を削除した新たな実行時アクセス権リストを作成する第２のリスト作成手段とをさらに備え、
前記比較手段は、前記第１のリスト作成手段によって作成された新たな設計時アクセス権リストと前記第２のリスト作成手段によって作成された新たな実行時アクセス権リストとの間で制限の広狭を比較することを特徴とする請求項１、２または３に記載のアクセス権矛盾検出装置。
【請求項７】
前記解析手段は、前記検出手段によって検出されたメソッドシグネチャが前記所定の解析ルールに規定されていないものであるが、当該所定の解析ルールに規定されたメソッドシグネチャを内部で呼び出している場合には、当該内部で呼び出されるメソッドシグネチャを解析して実行時のアクセス権を求めることを特徴とする請求項１〜６のいずれか一つに記載のアクセス権矛盾検出装置。
【請求項８】
前記解析手段によって前記内部で呼び出されるメソッドシグネチャを解析して実行時のアクセス権が求められた場合に、当該求められたアクセス権と前記検出手段によって検出されたメソッドシグネチャとを対応付けて規定した新たな解析ルールを作成する解析ルール作成手段をさらに備えたことを特徴とする請求項７に記載のアクセス権矛盾検出装置。
【請求項９】
前記解析ルール作成手段によって新たな解析ルールが作成された場合に、当該新たな解析ルールを前記記憶手段に記憶された所定の解析ルールに追加して規定する解析ルール追加手段をさらに備えたことを特徴とする請求項８に記載のアクセス権矛盾検出装置。
【請求項１０】
アクセス権の制限に基づいて実行される所定のプログラムについて、該プログラムに含まれ得るメソッドのメソッド名および該メソッドに対する引数の数並びに型を示すメソッドシグネチャとアクセス権とを対応付けて規定した所定の解析ルールを作成する解析ルール作成装置であって、
入力手段から入力された前記プログラムのソースコードを解析して該プログラムに含まれるメソッドシグネチャを順次検出する検出手段と、
前記所定の解析ルールを記憶手段から読み出し、前記検出手段によって検出されたメソッドシグネチャが前記所定の解析ルールに既に規定されている場合には、当該規定されたメソッドシグネチャを解析してアクセス権を求め、前記検出手段によって検出されたメソッドシグネチャが前記所定の解析ルールに規定されていないものであるが、当該所定の解析ルールに規定されたメソッドシグネチャを内部で呼び出している場合には、当該内部で呼び出されるメソッドシグネチャを解析してアクセス権を求める解析手段と、
前記解析手段によって前記内部で呼び出されるメソッドシグネチャを解析してアクセス権が求められた場合に、当該求められたアクセス権と前記検出手段によって検出されたメソッドシグネチャとを対応付けて規定した新たな解析ルールを作成する解析ルール作成手段と、
を備えたことを特徴とする解析ルール作成装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、アクセス権の制限に基づいて実行される所定のプログラムについて、該プログラムの実行時に使用されるアクセス権を集めた実行時アクセス権リストと設計時に付与されたアクセス権を集めた設計時アクセス権リストとの間で生じた矛盾を検出するアクセス権矛盾検出装置、および該アクセス権矛盾検出装置に用いられる所定の解析ルールを作成する解析ルール作成装置に関する。
【０００２】
近時、ネットワーク技術の進展に伴って、仮想マシンと呼ばれるソフト上で実行され、ＯＳや機種ごとのプラットフォームに依存しないプログラムが急激に普及している。例えば、オブジェクト指向のプログラミング言語であるＪａｖａ（登録商標、以下同様）で作成されたＪａｖａプログラムである。
【０００３】
このＪａｖａプログラムには、ファイル操作やネットワーク接続などに関するアクセス制御をおこなうことができるという特徴がある。すなわち、ファイルの読み込みやネットワークへの接続など、セキュリティ上の危険をともなうプログラムの実行に対して、それぞれ必要なアクセス権を定義することによって、アクセス制御をおこなっている。
【０００４】
具体的に説明すると、図１８に示すように、アクセス権は、Ｊａｖａ２の標準ポリシーファイルに準じた表現形式にしたがって、その種類ごとに異なるクラスが定義され、ターゲットおよびアクションによって細かく表現される。例えば、アクセス制御として「/tmp/hogeファイルの読み込みを許可する」場合には、「java.io.FilePermission "/tmp/hoge","read"」というアクセス権が定義される。
【０００５】
また、セキュリティ上の危険をともなうプログラムの実行は、特定のメソッドの呼び出しに対応しておこなわれるため、図１９に示すように、アクセス権が必要なメソッドについては、それぞれ所定のアクセス権が対応付けられる。例えば、「java.io.FileInputStream.FileInputStream(String name)」というメソッドについては、「java.io.FilePermission"[name]", "read"」というアクセス権が対応付けられる。
【０００６】
そして、プログラムの実行に際してメソッドが呼び出されると、メソッドの呼び出しをおこなった者に許可されたアクセス権を参照し、メソッドの呼び出しに必要なアクセス権を有する場合に限り、メソッドの実行を許可する。このようにして、Ｊａｖａプログラムに対しては、実行に際してアクセス権の制限に基づいたアクセス制御がおこなわれる。
【０００７】
【従来の技術】
従来より、上記したようなアクセス権の制限に基づいて実行されるプログラムについては、プログラムの実行時に使用されるアクセス権とプログラムの設計時に付与されたアクセス権との間でセキュリティ例外が発生しないようにするために、一般的にプログラムの実行テストを実施している。
【０００８】
具体的に説明すると、上記したＪａｖａプログラムの設計時には、そのＪａｖａプログラムが必要とするアクセス権が前もって付与され、この前もって付与されたアクセス権を考慮してプログラムが作成される。しかしながら、実際に作成されたＪａｖａプログラムにあっては、実装のミスなどから、必ずしも設計時に付与されたアクセス権だけを使用しているとは限らない。
【０００９】
例えば、実装されたＪａｖａプログラムが設計時に付与されたアクセス権よりも広いアクセス権を使用していたような場合には、プログラムの実行時にセキュリティ例外が発生してしまう。すなわち、「/tmp/hogeファイルの読み込みを許可する」というアクセス権が設計時に付与されたにもかかわらず、実装されたＪａｖａプログラムが「全てのファイルの読み込みを許可する」というアクセス権を使用しているような場合である。
【００１０】
このようなことから、Ｊａｖａプログラムについては、プログラムの実行テストを実施することによって、実行時に使用されるアクセス権と設計時に付与されたアクセス権との間で矛盾（制限の広狭）が生じているか否かを調査している。そして、この実行テストによって両者のアクセス権の間で矛盾が検出された場合には、設計時に付与されたアクセス権に適合するようにプログラムを修正することによって、セキュリティ例外を排除するようにしている。
【００１１】
【発明が解決しようとする課題】
しかしながら、上記の従来技術は、実行時に使用されるアクセス権と設計時に付与されたアクセス権との間で生じた矛盾を、精度良く検出することができないという問題点があった。すなわち、上記の従来技術は、設計時に付与されたアクセス権を考慮して作成されたプログラムに対して、単純に実行テストを実施するものに過ぎず、実行テストの結果に全ての矛盾が反映される訳ではないので、仮に実行テストを繰り返して実施したとしても、全ての矛盾を検出するには自ずと限界があった。
【００１２】
このため、実行時に使用されるアクセス権と設計時に付与されたアクセス権との間で生じた矛盾を如何にして検出するかが極めて重要な課題となっており、望ましくは、実行テストを繰り返して実施するといった面倒な手法ではなく、簡便かつ確実に矛盾を検出する手法が必要とされている。
【００１３】
そこで、この発明は、上述した従来技術による問題点を解消するためになされたものであり、実行時に使用されるアクセス権と設計時に付与されたアクセス権との間で生じた矛盾を簡便かつ確実に検出することができるアクセス権矛盾検出装置を提供することを目的とする。また、この発明は、上記のアクセス権矛盾検出装置に用いられる所定の解析ルールを自動的に作成して、アクセス権矛盾検出処理の効率を向上させることができる解析ルール作成装置を提供することを目的とする。
【００１４】
【課題を解決するための手段】
上述した課題を解決し、目的を達成するため、請求項１の発明によれば、図１に示すように、メソッドシグネチャ検出部１４は、ソースコード入力部１３から入力されたプログラムのソースコードを解析して該プログラムに含まれるメソッドシグネチャを順次検出し、アクセス権解析部１５は、プログラムに含まれ得るメソッドシグネチャとアクセス権とを対応付けて規定した所定の解析ルール１５ａに基づいて、検出されたメソッドシグネチャを順次解析して実行時アクセス権リストを求め、アクセス権比較部１６は、プログラムに含まれ得るアクセス権の制限に関する広狭を規定した所定の比較ルール１６ａに基づいて、実行時アクセス権リストとアクセス権リスト格納部１２に格納された設計時アクセス権リストとの間で制限の広狭を比較し、出力部１７は、この比較結果を報知することとしたので、実行時に使用されるアクセス権と設計時に付与されたアクセス権との間で生じた矛盾を簡便かつ確実に検出することができる。
【００１５】
また、請求項２の発明によれば、図１に示す出力部１７は、実行時アクセス権リストのなかから、アクセス権比較部１６によって実行時の制限が設計時のアクセス権の制限よりも広いと比較されたアクセス権を報知することとしたので、矛盾が生じているアクセス権を明確に報知することができる。これによって、設計時に付与されたアクセス権に適合するようにするプログラムの修正を補助することもできる。
【００１６】
また、請求項３の発明によれば、図１３に示す部分ソースコード検出部４１は、プログラムのソースコードのなかから、アクセス権比較部１６によって実行時の制限が設計時のアクセス権の制限よりも広いと比較されたアクセス権に対応する部分ソースコードを検出し、出力部１７は、検出された部分ソースコードを報知することとしたので、矛盾の原因となった部分ソースコードを明確に報知することができる。これによって、設計時に付与されたアクセス権に適合するようにするプログラムの修正を容易にすることもできる。
【００１７】
また、請求項４の発明によれば、図９に示すアクセス権圧縮部２１は、所定の比較ルール１６ａに基づいて設計時アクセス権リストに含まれる各アクセス権の間で制限の広狭を比較し、当該設計時アクセス権リストのなかから他のアクセス権の制限よりも狭い制限を有するアクセス権を削除した新たな設計時アクセス権リストを作成し、アクセス権比較部１６は、作成された新たな設計時アクセス権リストと実行時アクセス権リストとの間で制限の広狭を比較することとしたので、アクセス権同士の比較を効率的におこなうことができる。これによって、実行時に使用されるアクセス権と設計時に付与されたアクセス権との間で生じた矛盾を迅速に検出することもできる。
【００１８】
また、請求項５の発明によれば、図１１に示すアクセス権圧縮部３１は、所定の比較ルール１６ａに基づいて実行時アクセス権リストに含まれる各アクセス権の間で制限の広狭を比較し、当該実行時アクセス権リストのなかから他のアクセス権の制限よりも狭い制限を有するアクセス権を削除した新たな実行時アクセス権リストを作成し、アクセス権比較部１６は、作成された新たな実行時アクセス権リストと設計時アクセス権リストとの間で制限の広狭を比較することとしたので、アクセス権同士の比較を効率的におこなうことができる。これによって、実行時に使用されるアクセス権と設計時に付与されたアクセス権との間で生じた矛盾を迅速に検出することもできる。
【００１９】
また、請求項６の発明によれば、図１１に示すアクセス権圧縮部２１は、所定の比較ルール１６ａに基づいて設計時アクセス権リストに含まれる各アクセス権の間で制限の広狭を比較し、当該設計時アクセス権リストのなかから他のアクセス権の制限よりも狭い制限を有するアクセス権を削除した新たな設計時アクセス権リストを作成し、アクセス権圧縮部３１は、所定の比較ルール１６ａに基づいて実行時アクセス権リストに含まれる各アクセス権の間で制限の広狭を比較し、当該実行時アクセス権リストのなかから他のアクセス権の制限よりも狭い制限を有するアクセス権を削除した新たな実行時アクセス権リストを作成し、アクセス権比較部１６は、新たな設計時アクセス権リストと新たな実行時アクセス権リストとの間で制限の広狭を比較することとしたので、アクセス権同士の比較を一層効率的におこなうことができる。これによって、実行時に使用されるアクセス権と設計時に付与されたアクセス権との間で生じた矛盾を一層迅速に検出することもできる。
【００２０】
また、請求項７の発明によれば、図１に示すアクセス権解析部１５は、メソッドシグネチャ検出部１４によって検出されたメソッドシグネチャが所定の解析ルール１５ａに規定されていないものであるが、当該所定の解析ルール１５ａに規定されたメソッドシグネチャを内部で呼び出している場合には、当該内部で呼び出されるメソッドシグネチャを解析して実行時のアクセス権を求めることとしたので、プログラムのソースコードから実行時のアクセス権を確実に求めることができる。これによって、実行時に使用されるアクセス権と設計時に付与されたアクセス権との間で生じた矛盾を一層確実に検出することもできる。
【００２１】
また、請求項８の発明によれば、図１７に示す解析ルール作成部５１は、アクセス権解析部１５によって内部で呼び出されるメソッドシグネチャを解析して実行時のアクセス権が求められた場合に、当該求められたアクセス権と検出されたメソッドシグネチャとを対応付けて規定した新たな解析ルールを作成するとしたので、実行時のアクセス権を効率的に求めることに寄与する効率的な解析ルールを作成することができる。
【００２２】
また、請求項９の発明によれば、図１７に示す解析ルール作成部５１は、新たな解析ルールが作成された場合に、当該新たな解析ルールを所定の解析ルール１５ａに追加して規定するとしたので、解析ルールを追加した直後から、実行時のアクセス権を効率的に求めることができる。
【００２３】
また、請求項１０の発明によれば、図１５に示すように、メソッドシグネチャ検出部１４は、ソースコード入力部１３から入力されたプログラムのソースコードを解析して該プログラムに含まれるメソッドシグネチャを順次検出し、アクセス権解析部１５は、検出されたメソッドシグネチャが所定の解析ルール１５ａに既に規定されている場合には、当該規定されたメソッドシグネチャを解析してアクセス権を求め、検出されたメソッドシグネチャが所定の解析ルール１５ａに規定されていないものであるが、当該所定の解析ルール１５ａに規定されたメソッドシグネチャを内部で呼び出している場合には、当該内部で呼び出されるメソッドシグネチャを解析してアクセス権を求め、解析ルール作成部５１は、アクセス権解析部１５によって内部で呼び出されるメソッドシグネチャを解析してアクセス権が求められた場合に、当該求められたアクセス権と検出されたメソッドシグネチャとを対応付けて規定した新たな解析ルールを作成することとしたので、実行時のアクセス権を効率的に求めることに寄与する効率的な解析ルールを作成することができる。
【００２４】
【発明の実施の形態】
以下に添付図面を参照して、この発明に係るアクセス権矛盾検出装置および解析ルール作成装置の好適な実施の形態を詳細に説明する。なお、下記に示す実施の形態では、Ｊａｖａプログラムに関してアクセス権の矛盾を検出する場合について説明する。
【００２５】
（実施の形態１）
まず最初に、本実施の形態１に係るアクセス権矛盾検出装置の概要および主たる特徴を説明する。図１は、本実施の形態１に係るアクセス権矛盾検出装置の構成を示すブロック図である。同図に示すアクセス権矛盾検出装置１０は、概略的に、アクセス権の制限に基づいて実行されるＪａｖａプログラムについて、該プログラムの実行時に使用されるアクセス権を集めた実行時アクセス権リストと設計時に付与されたアクセス権を集めた設計時アクセス権リストとの間で生じた矛盾を検出するものである。
【００２６】
そして、このアクセス権矛盾検出装置１０は、アクセス権矛盾検出処理に主たる特徴がある。具体的には、プログラムのソースコードから実行時アクセス権リストを求め、プログラムに含まれ得るアクセス権の制限に関する広狭を規定した所定の比較ルールに基づいて、実行時アクセス権リストと設計時アクセス権リストとの間で制限の広狭を比較し、この比較結果を報知することによって、実行時に使用されるアクセス権と設計時に付与されたアクセス権との間で生じた矛盾を簡便かつ確実に検出することができるようにしている。
【００２７】
次に、本実施の形態１に係るアクセス権矛盾検出装置の構成を説明する。このアクセス権矛盾検出装置１０は、図１に示すように、アクセス権リスト入力部１１と、アクセス権リスト格納部１２と、ソースコード入力部１３と、メソッドシグネチャ検出部１４と、アクセス権解析部１５と、アクセス権比較部１６と、出力部１７とを備える。
【００２８】
このうち、アクセス権リスト入力部１１は、プログラムの設計時に付与されたアクセス権を集めた設計時アクセス権リストをアクセス権矛盾検出装置１０内に入力する処理部である。具体的には、図１８に示したような各アクセス権の一覧データを入力する。
【００２９】
アクセス権リスト格納部１２は、アクセス権リスト入力部１１によって入力された設計時アクセス権リストを記憶するメモリである。なお、アクセス権リスト入力部１１によって複数の設計時アクセス権リストが入力された場合には、各設計時アクセス権リストを一意に特定するためのＩＤ情報を付与して、それぞれの設計時アクセス権リストを記憶することになる。
【００３０】
ソースコード入力部１３は、プログラムのソースコードをアクセス権矛盾検出装置１０内に入力する処理部である。具体的には、図２、図１４および図１６に示すようなソースコードのデータを入力する。なお、このソースコードの元となるプログラムは、上記した設計時アクセス権リストを考慮して作成されたプログラムである。
【００３１】
メソッドシグネチャ検出部１４は、ソースコード入力部１３から入力されたプログラムのソースコードを解析して該プログラムに含まれるメソッドシグネチャを順次検出する処理部である。具体的には、ソースコード解析器として、ソースコードを解析してメソッド呼び出しを検出し、Ｊａｖａ言語仕様における呼び出しメソッドを特定する方法に基づいて、メソッド呼び出しから「型名．メソッド名（パラメータ型名１，パラメータ型名２，…）」という形式のメソッドシグネチャを解析する。なお、ここでは動的バインディングについては考慮しないものとする。
【００３２】
ここで、このメソッドシグネチャ検出処理を具体的に説明する。図２は、本実施の形態１によるメソッドシグネチャ検出処理の具体例を示す図である。メソッドシグネチャ検出部１４は、同図に示すように、例えば、ソースコード「import java.io.*;FileInputStream fis = new FileInputStream("/tmp/hoge");」を解析して、メソッドシグネチャ「java.io.FileInputStream.FileInputStream(java.lang.String)」を検出する。
【００３３】
図１の説明に戻ると、アクセス権解析部１５は、所定の解析ルール１５ａに基づいて、メソッドシグネチャ検出部１４によって検出されたメソッドシグネチャを順次解析して実行時アクセス権リストを求める処理部である。そして、このアクセス権解析部１５が参照する解析ルール１５ａは、Ｊａｖａプログラムに含まれ得るメソッドシグネチャとアクセス権とを対応付けて規定したメモリである。
【００３４】
ここで、この解析ルール１５ａを具体的に説明する。図３は、解析ルール１５ａに規定される情報の構成例を示す図である。Ｊａｖａにおいては、標準で定義されているアクセス権に対しては、全てアクセス権の解析ルールが存在する。そして、通常の解析ルールによれば、メソッドシグネチャに対して、対応するアクセス権が決定される。
【００３５】
このため、解析ルール１５ａは、図３に示すように、Ｊａｖａプログラムに含まれ得るメソッドシグネチャとアクセス権とを対応付けて規定している。例えば、メソッドシグネチャ「java.lang.System.exit(int)」に対しては、アクセス権「java.lang.RuntimePermission "exitVM"」が対応付けられて規定される。
【００３６】
かかる解析ルール１５ａに基づいて、アクセス権解析部１５は、メソッドシグネチャを順次解析して対応するアクセス権を求める。この際、アクセス権解析部１５は、パラメータを有するアクセス権については、メソッド呼び出し時の各パラメータの値に基づいて、アクセス権のパラメータも決定する。このようにして順次求められたアクセス権が、プログラムの実行時に使用されるアクセス権であり、かかるアクセス権を集めたものが、実行時アクセス権リストとなる。
【００３７】
ここで、このアクセス権解析処理を具体的に説明する。図４および５は、本実施の形態１によるアクセス権解析処理の具体例を示す図である。具体的には、図４は、メソッドシグネチャが「java.io.FileInputStream.FileInputStream(java.lang.String)」であって、ソースコード内に「strを任意の文字列とする」旨のパラメータの値が定義されている場合における具体例を挙げたものである。
【００３８】
すなわち、この場合には、アクセス権解析部１５は、解析ルール１５ａに基づいて、メソッドシグネチャ「java.io.FileInputStream.FileInputStream(java.lang.String)」に対応するアクセス権「java.io.FilePermission "パラメータ", "read"」を求める。そして、メソッド呼び出し時の各パラメータの値に基づいて、アクセス権のパラメータも決定する。
【００３９】
ここで、「strを任意の文字列とする」旨を考慮してアクセス権のパラメータも決定すると、例えば、パラメータに関するソースコードが「new FileInputStream(str)」である場合には、アクセス権「java.io.FilePermission "<<ALL FILES>>", "read"」が求められる（図４に示すアクセス権▲１▼参照）。同様に、パラメータに関するソースコードが「new FileInputStream("/tmp/hoge")」である場合には、アクセス権「java.io.FilePermission "/tmp/hoge", "read"」が求められる（同図に示すアクセス権▲２▼参照）。さらに、パラメータに関するソースコードが「new FileInputStream("/tmp/" + str)」である場合には、アクセス権「java.io.FilePermission "/tmp/-", "read"」が求められる（同図に示すアクセス権▲３▼参照）。
【００４０】
また、図５は、メソッドシグネチャが「java.net.Socket.Socket(java.lang.String host, int port)」であって、ソースコード内に「str を任意の文字列、num を任意の整数とする」旨のパラメータの値が定義されている場合における具体例を挙げたものである。
【００４１】
すなわち、この場合には、アクセス権解析部１５は、解析ルール１５ａに基づいて、メソッドシグネチャ「java.io.FileInputStream.FileInputStream(java.lang.String)」に対応するアクセス権「java.net.SocketPermission "パラメータ", "connect"」を求める。そして、メソッド呼び出し時の各パラメータの値に基づいて、アクセス権のパラメータも決定する。
【００４２】
ここで、「str を任意の文字列、num を任意の整数とする」旨を考慮してアクセス権のパラメータも決定すると、例えば、パラメータに関するソースコードが「new Socket(str, num)」である場合には、アクセス権「java.net.SocketPermission "*", "connect"」が求められる（図５に示すアクセス権▲１▼参照）。同様に、パラメータに関するソースコードが「new Socket(str + ".hogehoge.net", num)」である場合には、アクセス権「java.net.SocketPermission "*.hogehoge.net", "connect"」が求められる（同図に示すアクセス権▲２▼参照）。さらに、パラメータに関するソースコードが「new Socket(str, 80)」である場合には、アクセス権「java.io.SocketPermission "*:80", "connect"」が求められる（同図に示すアクセス権▲３▼参照）。
【００４３】
また、上述してきたアクセス権解析部１５は、メソッドシグネチャ検出部１４によって検出されたメソッドシグネチャが所定の解析ルール１５ａに規定されていないものであるが、当該所定の解析ルール１５ａに規定されたメソッドシグネチャを内部で呼び出している場合には、当該内部で呼び出されるメソッドシグネチャを解析して実行時のアクセス権を求めるものである。
【００４４】
ここで、図１６を参照して、かかるメソッドシグネチャの内部呼び出しによるアクセス権の解析を具体的に説明する。同図に示すように、例えば、解析ルール１５ａに、メソッドシグネチャ「java.io.FileInputStream.FileInputStream(java.lang.String)」とアクセス権「java.io.FilePermission "<<ALL FILES>>", "read"」とが対応したルールが規定されていたものと仮定する。
【００４５】
一方、ソースコード入力部１３から入力されたソースコードにおいては、同図に示すように、５行目で定義されるメソッド「Sample.foo(java.lang.String)」が、内部でメソッドシグネチャ「java.io.FileInputStream.FileInputStream(java.lang.String)」を呼び出している。このような場合には、メソッド「Sample.foo(java.lang.String)」に対応するアクセス権が解析ルール１５ａに規定されていないが、アクセス権解析部１５は、内部で呼び出しているメソッドシグネチャ「java.io.FileInputStream.FileInputStream(java.lang.String)」を解析して、このメソッドシグネチャに対応するアクセス権を解析ルール１５ａに基づいて求める。
【００４６】
すなわち、内部で呼び出しているメソッドシグネチャ「java.io.FileInputStream.FileInputStream(java.lang.String)」については、アクセス権「java.io.FilePermission "<<ALL FILES>>", "read"」が解析ルール１５ａに規定されているので、アクセス権解析部１５は、アクセス権「java.io.FilePermission "<<ALL FILES>>", "read"」を実行時のアクセス権として求めることとなる。このように、内部呼び出しによるアクセス権の解析をおこなうことによって、実行時のアクセス権を確実に求めることができるようになる。
【００４７】
図１の説明に戻ると、アクセス権比較部１６は、比較ルール１６ａに基づいて、アクセス権解析部１５によって求められた実行時アクセス権リストとアクセス権リスト格納部１２に格納された設計時アクセス権リストとの間で制限の広狭を比較する処理部である。そして、このアクセス権比較部１６が参照する比較ルール１６ａは、Ｊａｖａプログラムに含まれ得るアクセス権の制限に関する広狭を規定したメモリである。
【００４８】
ここで、この比較ルール１６ａを具体的に説明する。図６は、比較ルール１６ａに規定される情報の構成例を示す図である。比較ルール１６ａは、アクセス権のクラスごとに（例えば、「java.io.FilePermission」など）、他の全てのアクセス権との間で制限の広狭を比較するためのルールを規定したものである。
【００４９】
すなわち、図６に示すように、例えば、クラス「java.security.AllPermission」については、「すべてのアクセス権を含む」旨が規定される。また、クラス「java.lang.RuntimePermission」については、「比較対象が「java.lang.RuntimePermission」の場合、ターゲットが同じならば等しいが、それ以外ならば等しくない。比較対象が「java.security.AllPermission」の場合、「java.security.AllPermission」に含まれる。比較対象が「java.lang.RuntimePermission」以外の場合、等しくない」旨のルールが規定される。
【００５０】
さらに、クラス「java.io.FilePermission」については、比較対象が「java.io.FilePermission」の場合、ターゲットおよびアクションにより比較関係が決まる。「java.io.FilePermission "*", "read"」>「java.io.FilePermission "/tmp/hoge", "read"」，「java.io.FilePermission "/tmp/hoge", "read,write"」>「java.io.FilePermission "/tmp/hoge", "read"」。比較対象が「java.security.AllPermission」の場合、「java.security.AllPermission」に含まれる。比較対象が「java.io.FilePermission」以外の場合、等しくない」旨のルールが規定される。
【００５１】
かかる比較ルール１６ａに基づいて、アクセス権比較部１６は、実行時アクセス権リストと設計時アクセス権リストとの間で制限の広狭を比較する。具体的には、実行時アクセス権リストに含まれる各アクセス権と、設計時アクセス権リストに含まれる各アクセス権との間で制限の広狭を比較する。例えば、実行時のアクセス権が「java.io.FilePermission "*", "read"」であって、比較対象である設計時のアクセス権が「java.io.FilePermission "/tmp/hoge", "read"」である場合には、アクセス権比較部１６は、比較ルール１６ａに基づいて両者の制限の広狭を比較して、「java.io.FilePermission "*", "read"> java.io.FilePermission "/tmp/hoge", "read"」を比較結果とする。
【００５２】
図１の説明に戻ると、出力部１７は、アクセス権比較部１６による比較結果をアクセス権矛盾検出装置１０の外部に報知する処理部である。具体的には、この出力部１７は、モニタ、プリンタ、スピーカなどの情報出力手段によって構成され、実行時アクセス権リストと設計時アクセス権リストとの間で生じた矛盾、すなわち、実行時アクセス権リストのなかから、アクセス権比較部１６によって実行時の制限が設計時のアクセス権の制限よりも広いと比較されたアクセス権を出力する。
【００５３】
ここで、この出力部１７によって出力される比較結果を具体的に説明する。図７は、本実施の形態１による比較結果の具体例を示す図である。同図に示すように、例えば、あらかじめ与えられたアクセス権（設計時アクセス権リスト）がアクセス権▲１▼「java.io.FilePermission "/tmp/hoge", "read"」およびアクセス権▲２▼「java.io.RuntimePermission "exitVM"」であって、解析されたアクセス権（実行時アクセス権リスト）がアクセス権▲３▼「java.io.FilePermission "*", "read"」およびアクセス権▲４▼「java.io.RuntimePermission "exitVM"」であると仮定する。
【００５４】
この場合には、アクセス権比較部１６によって、実行時アクセス権▲４▼は設計時アクセス権▲２▼と等しいが、実行時アクセス権▲３▼は設計時アクセス権▲１▼よりも広い制限を有するものと比較される。したがって、出力部１７は、同図に示すように、比較結果として「java.io.FilePermission "*", "read"> java.io.FilePermission "/tmp/hoge", "read"」を出力する。
【００５５】
次に、本実施の形態１によるアクセス権矛盾検出処理の手順を説明する。図８は、本実施の形態１によるアクセス権矛盾検出処理の手順を説明するフローチャートである。なお、以下では、アクセス権リスト入力部１１によって入力された設計時アクセス権リストが、既にアクセス権リスト格納部１２に記憶されているものとして説明する。
【００５６】
同図に示すように、本実施の形態１に係るアクセス権矛盾検出装置１０において、ソースコード入力部１３は、プログラムのソースコードをアクセス権矛盾検出装置１０内に入力する（ステップＳ８０１）。続いて、メソッドシグネチャ検出部１４は、図２に示したように、ソースコード入力部１３から入力されたプログラムのソースコードを解析して該プログラムに含まれるメソッドシグネチャを順次検出する（ステップＳ８０２）。
【００５７】
その後、アクセス権解析部１５は、図４および図５に示したように、所定の解析ルール１５ａに基づいて、メソッドシグネチャ検出部１４によって検出されたメソッドシグネチャを順次解析して実行時アクセス権リストを求める（ステップＳ８０３）。なお、このアクセス権の解析は、メソッドシグネチャ検出部１４によってメソッドシグネチャが順次検出される度に実行する場合に限定されず、全てのメソッドシグネチャが検出される後に、順次実行するようにしてもよい。
【００５８】
続いて、アクセス権比較部１６は、比較ルール１６ａに基づいて、アクセス権解析部１５によって求められた実行時アクセス権リストとアクセス権リスト格納部１２に格納された設計時アクセス権リストとの間で制限の広狭を比較する（ステップＳ８０４）。なお、このアクセス権の比較も、上記したアクセス権の解析と同様、アクセス権解析部１５によって実行時のアクセス権が順次求められる度に実行する場合に限定されず、全ての実行時のアクセス権が求められた後に、順次実行するようにしてもよい。
【００５９】
そして、出力部１７は、図７に示したように、アクセス権比較部１６による比較結果として、実行時アクセス権リストと設計時アクセス権リストとの間で生じた矛盾、すなわち、実行時アクセス権リストのなかから、アクセス権比較部１６によって実行時の制限が設計時のアクセス権の制限よりも広いと比較されたアクセス権を出力する（ステップＳ８０５）。なお、この比較結果の出力も、上記したアクセス権の解析および比較と同様、アクセス権比較部１６によって実行時のアクセス権それぞれに関する比較が実行される度に出力する場合に限定されず、全ての実行時のアクセス権に関する比較が実行された後に、比較結果の一覧として出力するようにしてもよい。
【００６０】
上記した一連の処理によって、実行時アクセス権リストと設計時アクセス権リストとの間で生じた矛盾が出力部１７を介して明確に報知される。そして、この報知内容は、設計時に付与されたアクセス権に適合するようにプログラムを修正する際の補助になる。
【００６１】
上述してきたように、本実施の形態１によれば、メソッドシグネチャ検出部１４は、ソースコード入力部１３から入力されたプログラムのソースコードを解析して該プログラムに含まれるメソッドシグネチャを順次検出し、アクセス権解析部１５は、所定の解析ルール１５ａに基づいて、検出されたメソッドシグネチャを順次解析して実行時アクセス権リストを求め、アクセス権比較部１６は、所定の比較ルール１６ａに基づいて、実行時アクセス権リストとアクセス権リスト格納部１２に格納された設計時アクセス権リストとの間で制限の広狭を比較し、出力部１７は、この比較結果を報知することとしたので、実行時に使用されるアクセス権と設計時に付与されたアクセス権との間で生じた矛盾を簡便かつ確実に検出することができる。
【００６２】
（実施の形態２）
ところで、上記実施の形態１では、アクセス権リスト入力部１１から入力された設計時アクセス権リストそのものを、実行時アクセス権リストの比較対象とする場合を説明したが、本発明はこれに限定されるものではなく、アクセス権リスト入力部１１から入力された設計時アクセス権リストを編集して、実行時アクセス権リストの比較対象とする場合にも同様に適用することができる。
【００６３】
そこで、本実施の形態２では、アクセス権リスト入力部１１から入力された設計時アクセス権リストを編集する場合を説明する。図９は、本実施の形態２に係るアクセス権矛盾検出装置の構成を示すブロック図である。なお、図１に示した各部と同様の機能を有する部位には同一符号を付すこととしてその詳細な説明を省略し、本実施の形態２の特徴部分であるアクセス権圧縮部２１について説明する。
【００６４】
アクセス権矛盾検出装置２０におけるアクセス権圧縮部２１は、所定の比較ルール１６ａに基づいて、設計時アクセス権リストに含まれる各アクセス権の間で制限の広狭を比較し、当該設計時アクセス権リストのなかから他のアクセス権の制限よりも狭い制限を有するアクセス権を削除した新たな設計時アクセス権リスト（圧縮されたアクセス権）を作成する処理部である。
【００６５】
ここで、この圧縮処理を具体的に説明する。図１０は、本実施の形態２による圧縮処理の具体例を示す図である。同図に示すように、あらかじめ与えられたアクセス権（アクセス権リスト入力部１１によって入力された設計時アクセス権リスト）が、例えば、アクセス権▲１▼「java.io.FilePermission "/tmp/hoge", "read"」およびアクセス権▲２▼「java.io.FilePermission "/tmp/*", "read"」であるものと仮定する。
【００６６】
この場合には、アクセス権圧縮部２１は、所定の比較ルール１６ａに基づいて、アクセス権▲２▼はアクセス権▲１▼よりも広い制限を有するものと比較される。すなわち、アクセス権▲１▼の制限内容は、アクセス権▲２▼の制限内容に含まれるので、このアクセス権▲２▼は、設計時アクセス権リストのなかでは、冗長なアクセス権である。したがって、アクセス権圧縮部２１は、設計時アクセス権リストのなかから、アクセス権▲２▼を削除した新たな設計時アクセス権リストを作成する（図１０参照）。
【００６７】
なお、このようにして作成された新たな設計時アクセス権リストは、アクセス権リスト格納部１２に格納され、アクセス権比較部１６において、実行時アクセス権リストの比較対象となる。
【００６８】
上述してきたように、本実施の形態２によれば、アクセス権圧縮部２１は、所定の比較ルール１６ａに基づいて設計時アクセス権リストに含まれる各アクセス権の間で制限の広狭を比較し、当該設計時アクセス権リストのなかから他のアクセス権の制限よりも狭い制限を有するアクセス権を削除した新たな設計時アクセス権リストを作成し、アクセス権比較部１６は、作成された新たな設計時アクセス権リストと実行時アクセス権リストとの間で制限の広狭を比較することとしたので、アクセス権同士の比較を効率的におこなうことができる。
【００６９】
（実施の形態３）
ところで、上記実施の形態２では、アクセス権リスト入力部１１から入力された設計時アクセス権リストを編集する場合を説明したが、本発明はこれに限定されるものではなく、アクセス解析部１５によって求められた実行時アクセス権リストを編集することもできる。
【００７０】
そこで、本実施の形態３では、アクセス解析部１５によって求められた実行時アクセス権リストを編集する場合を説明する。図１１は、本実施の形態３に係るアクセス権矛盾検出装置の構成を示すブロック図である。なお、図１および図２に示した各部と同様の機能を有する部位には同一符号を付すこととしてその詳細な説明を省略し、本実施の形態３の特徴部分であるアクセス権圧縮部３１について説明する。
【００７１】
アクセス権矛盾検出装置３０におけるアクセス権圧縮部３１は、所定の比較ルール１６ａに基づいて、実行時アクセス権リストに含まれる各アクセス権の間で制限の広狭を比較し、当該実行時アクセス権リストのなかから他のアクセス権の制限よりも狭い制限を有するアクセス権を削除した新たな実行時アクセス権リスト（圧縮されたアクセス権）を作成する処理部である。
【００７２】
この圧縮処理は、上記実施の形態２で説明したものと同様である。具体的に説明すると、図１２に示すように、アクセス権解析部１５によって解析されたアクセス権（実行時アクセス権リスト）が、例えば、アクセス権▲１▼「java.net.SocketPermission "www.hogehoge.net:80", "connect"」およびアクセス権▲２▼「java.net.SocketPermission "*:80", "connect"」であるものと仮定する。
【００７３】
この場合には、アクセス権圧縮部３１は、所定の比較ルール１６ａに基づいて、アクセス権▲２▼はアクセス権▲１▼よりも広い制限を有するものと比較される。すなわち、アクセス権▲１▼の制限内容は、アクセス権▲２▼の制限内容に含まれるので、このアクセス権▲２▼は、実行時アクセス権リストのなかでは、冗長なアクセス権である。したがって、アクセス権圧縮部３１は、実行時アクセス権リストのなかから、アクセス権▲２▼を削除した新たな実行時アクセス権リストを作成する（図１１参照）。
【００７４】
なお、このようにして作成された新たな実行時アクセス権リストは、アクセス権比較部１６において、設計時アクセス権リストの比較対象となる。すなわち、アクセス権比較部１６は、アクセス権圧縮部３１によって作成された新たな実行時アクセス権リストと、アクセス権圧縮部２１によって作成された新たな設計時アクセス権リストとの間で制限の広狭を比較することとなる。
【００７５】
上述してきたように、本実施の形態３では、アクセス権圧縮部２１による新たな設計時アクセス権リストの作成に加えて、アクセス権圧縮部３１は、所定の比較ルール１６ａに基づいて実行時アクセス権リストに含まれる各アクセス権の間で制限の広狭を比較し、当該実行時アクセス権リストのなかから他のアクセス権の制限よりも狭い制限を有するアクセス権を削除した新たな実行時アクセス権リストを作成し、アクセス権比較部１６は、新たな設計時アクセス権リストと新たな実行時アクセス権リストとの間で制限の広狭を比較することとしたので、アクセス権同士の比較を一層効率的におこなうことができる。
【００７６】
上記した圧縮処理は、アクセス権解析部１５によって全ての実行時のアクセス権が求められた後に実行することが望ましい。全ての実行時のアクセス権が求められた後に圧縮処理をおこなった方が、冗長なアクセス権を確実かつ効率的に除外することができると考えられるからである。
【００７７】
なお、本実施の形態３では、アクセス権圧縮部２１による新たな設計時アクセス権リストの作成に加えて、アクセス権圧縮部３１による新たな実行時アクセス権リストの作成をおこなう場合を説明したが、本発明はこれに限定されるものではなく、アクセス権圧縮部２１を設けることなく、アクセス権圧縮部３１のみが新たな実行時アクセス権リストの作成をおこなう場合にも同様に適用することができる。この場合にも、上記実施の形態１に比較して、アクセス権同士の比較を効率的におこなうことができる。
【００７８】
（実施の形態４）
ところで、上記実施の形態１〜３では、出力部１７による比較結果の出力として、制限の広狭が矛盾するアクセス権を出力する場合を説明したが、本発明はこれに限定されるものではなく、矛盾の原因となったソースコードを出力することもできる。
【００７９】
そこで、本実施の形態４では、出力部１７によって、アクセス権の矛盾の原因となったソースコードを出力する場合を説明する。図１３は、本実施の形態４に係るアクセス権矛盾検出装置の構成を示すブロック図である。なお、図１に示した各部と同様の機能を有する部位には同一符号を付すこととしてその詳細な説明を省略し、本実施の形態４の特徴部分である部分ソースコード検出部４１について説明する。
【００８０】
アクセス権矛盾検出装置４０における部分ソースコード検出部４１は、プログラムのソースコードのなかから、アクセス権比較部１６によって実行時の制限が設計時のアクセス権の制限よりも広いと比較されたアクセス権に対応する部分ソースコードを検出する処理部である。そして、出力部１７は、部分ソースコード検出部４１によって検出された部分ソースコードを出力する。
【００８１】
ここで、この出力処理を具体的に説明する。図１４は、本実施の形態４による出力処理の具体例を示す図である。同図に示すように、あらかじめ与えられたアクセス権（設計時のアクセス権）として、例えば、「Java.io.FilePermission "/tmp/-", "read"」がアクセス権リスト格納部１２に格納されているものと仮定する。
【００８２】
この場合に、同図に示すようなソースコードが、ソースコード入力部１３によって入力されると、アクセス権解析部１５は、ソースコードにおける６行目の「new FileInputStream(file)」に起因して、アクセス権「java.io.FilePermission "<<ALLFILES>>", "read"」を求める。続いて、アクセス権比較部１６は、アクセス権解析部１５によって求められた実行時のアクセス権と、アクセス権リスト格納部１２に格納された設計時のアクセス権との間で制限の広狭を比較するが、この場合には、実行時のアクセス権の制限が設計時のアクセス権の制限よりも広いものと比較される。すなわち、アクセス権の制限の広狭が矛盾している。
【００８３】
このため、部分ソースコード検出部４１は、プログラムのソースコードのなかから、矛盾の原因となった部分ソースコードを検出するが、この場合には、ソースコードにおける６行目の「new FileInputStream(file)」を、矛盾の原因として検出する。そして、出力部１７は、図１４に示すように、矛盾するアクセス権と、矛盾の原因となった部分ソースコードを出力する。
【００８４】
上述してきたように、本実施の形態４によれば、部分ソースコード検出部４１は、プログラムのソースコードのなかから、アクセス権比較部１６によって実行時の制限が設計時のアクセス権の制限よりも広いと比較されたアクセス権に対応する部分ソースコードを検出し、出力部１７は、検出された部分ソースコードを報知することとしたので、矛盾の原因となった部分ソースコードを明確に報知することができる。これによって、設計時に付与されたアクセス権に適合するようにするプログラムの修正を容易にすることもできる。
【００８５】
なお、本実施の形態４では、上記実施の形態２および３で説明した設計時アクセス権リストの圧縮や実行時アクセス権リストの圧縮を実行していない場合を説明したが、本発明はこれに限定されるものではなく、これらの圧縮を実行した上で、矛盾の原因となった部分ソースコードを検出および出力する場合にも同様に適用することができる。
【００８６】
ただし、実行時アクセス権リストの圧縮を実行した場合には、新たな実行時アクセス権から遡って、矛盾の原因となった部分ソースコードを検出することは煩雑であるので、設計時アクセス権リストの圧縮のみを実行するのが望ましいとも考えられる。
【００８７】
（実施の形態５）
ところで、上記実施の形態１〜４では、解析ルール１５ａに基づいてアクセス権を解析する場合を説明したが、この解析ルール１５ａは、アクセス権解析部１５によるアクセス権解析処理と同様の処理によって、新たに作成することができるものである。
【００８８】
そこで、本実施の形態５では、上記実施の形態１〜４で用いられる解析ルール１５ａを作成する解析ルール作成装置について説明する。図１５は、本実施の形態５に係る解析ルール作成装置の構成を示すブロック図である。同図に示すように、この解析ルール作成装置５０は、ソースコード入力部１３と、メソッドシグネチャ検出部１４と、アクセス権解析部１５と、解析ルール作成部５１と、出力部１７とを備える。
【００８９】
このうち、ソースコード入力部１３、メソッドシグネチャ検出部１４およびアクセス権解析部１５は、図１にて同一符号を付して説明した各部と同様の機能を有するものである。すなわち、プログラムのソースコードから実行時のアクセス権を解析する。
【００９０】
ところで、アクセス権解析部１５は、実施の形態１で説明したように、メソッドシグネチャ検出部１４によって検出されたメソッドシグネチャが解析ルール１５ａに既に規定されている場合には、当該規定されたメソッドシグネチャを解析してアクセス権を求める。一方、メソッドシグネチャ検出部１４によって検出されたメソッドシグネチャが解析ルール１５ａに規定されていないものであるが、当該所定の解析ルール１５ａに規定されたメソッドシグネチャを内部で呼び出している場合には、当該内部で呼び出されるメソッドシグネチャを解析してアクセス権を求める。
【００９１】
かかるメソッドシグネチャの内部呼び出しによるアクセス権の解析を具体的に説明すると、図１６に示すように、例えば、解析ルール１５ａに、メソッドシグネチャ「java.io.FileInputStream.FileInputStream(java.lang.String)」とアクセス権「java.io.FilePermission "<<ALL FILES>>", "read"」とが対応したルールが規定されていたものと仮定する。
【００９２】
一方、ソースコード入力部１３から入力されたソースコードにおいては、同図に示すように、５行目で定義されるメソッド「Sample.foo(java.lang.String)」が、内部でメソッドシグネチャ「java.io.FileInputStream.FileInputStream(java.lang.String)」を呼び出している。このような場合には、メソッド「Sample.foo(java.lang.String)」に対応するアクセス権が解析ルール１５ａに規定されていないが、アクセス権解析部１５は、内部で呼び出しているメソッドシグネチャ「java.io.FileInputStream.FileInputStream(java.lang.String)」を解析して、このメソッドシグネチャに対応するアクセス権を解析ルール１５ａに基づいて求める。
【００９３】
すなわち、内部で呼び出しているメソッドシグネチャ「java.io.FileInputStream.FileInputStream(java.lang.String)」については、アクセス権「java.io.FilePermission "<<ALL FILES>>", "read"」が解析ルール１５ａに規定されているので、アクセス権解析部１５は、アクセス権「java.io.FilePermission "<<ALL FILES>>", "read"」を実行時のアクセス権として求めることとなる。
【００９４】
このようにして、メソッドシグネチャの内部呼び出しによるアクセス権の解析がおこなわれた場合に、新たに解析ルールを作成するのが、図１５に示す解析ルール作成部５１である。すなわち、解析ルール作成部５１は、アクセス権解析部１５によって内部で呼び出されるメソッドシグネチャを解析してアクセス権が求められた場合に、当該求められたアクセス権と検出されたメソッドシグネチャとを対応付けて規定した新たな解析ルールを作成する。
【００９５】
例えば、図１６に示したような場合には、解析ルール作成部５１は、メソッドシグネチャ「Sample.foo(java.lang.String)」とアクセス権「java.io.FilePermission "<<ALL FILES>>", "read"」とが対応した解析ルールを作成することとなる。そして、出力部１７は、解析ルール作成部５１によって作成された解析ルールを、解析ルール作成装置５０の外部に出力する。
【００９６】
上述してきたように、本実施の形態５によれば、解析ルール作成部５１は、アクセス権解析部１５によって内部で呼び出されるメソッドシグネチャを解析してアクセス権が求められた場合に、当該求められたアクセス権と検出されたメソッドシグネチャとを対応付けて規定した新たな解析ルールを作成することとしたので、実行時のアクセス権を効率的に求めることに寄与する効率的な解析ルールを作成することができる。
【００９７】
すなわち、解析ルール作成部５１によって作成された解析ルールを、上記実施の形態１〜４で説明したアクセス権矛盾検出装置の解析ルール１５ａに新たに規定することによって、例えば、ライブラリとして使用されるプログラムの場合、各メソッドについてＪａｖａに標準で定義されているメソッドの呼び出しまでたどって解析する必要がなくなるので、実行時のアクセス権を効率的に求めることができるようになる。
【００９８】
（実施の形態６）
ところで、上記実施の形態５では、上記実施の形態１〜４で用いられる解析ルール１５ａを作成する解析ルール作成装置について説明したが、かかる解析ルール作成装置の機能をアクセス権矛盾検出装置に組み込んで、アクセス権矛盾検出装置を構成することもできる。
【００９９】
そこで、本実施の形態６では、新たに解析ルールを作成しつつアクセス権の矛盾を検出するアクセス権矛盾検出装置を説明する。図１７は、本実施の形態６に係るアクセス権矛盾検出装置の構成を示すブロック図である。なお、図１に示した各部と同様の機能を有する部位には同一符号を付すこととしてその詳細な説明を省略し、本実施の形態６の特徴部分である解析ルール作成部５１について説明する。
【０１００】
アクセス権矛盾検出装置６０における解析ルール作成部５１は、上記実施の形態５で説明した解析ルール作成部５１と同様の処理をおこなうものである。すなわち、解析ルール作成部５１は、アクセス権解析部１５によって内部で呼び出されるメソッドシグネチャを解析してアクセス権が求められた場合に、当該求められたアクセス権と検出されたメソッドシグネチャとを対応付けて規定した新たな解析ルールを作成する。
【０１０１】
さらに、この解析ルール作成部５１は、新たに作成したルールを解析ルール１５ａに追加して規定する。したがって、アクセス権解析部１５は、この新たなルールを参照することによって、アクセス権を効率的に解析することができ、Ｊａｖａに標準で定義されているメソッドの呼び出しまでたどって解析する必要がなくなる。
【０１０２】
上述してきたように、本実施の形態６によれば、解析ルール作成部５１は、アクセス権解析部１５によって内部で呼び出されるメソッドシグネチャを解析して実行時のアクセス権が求められた場合に、当該求められたアクセス権と検出されたメソッドシグネチャとを対応付けて規定した新たな解析ルールを作成し、当該新たな解析ルールを所定の解析ルール１５ａに追加して規定するとしたので、解析ルールを追加した直後から、実行時のアクセス権を効率的に求めることができる。
【０１０３】
（他の実施の形態）
さて、これまで本発明の実施の形態について説明したが、本発明は上述した実施の形態以外にも、上記特許請求の範囲に記載した技術的思想の範囲内において種々の異なる実施の形態にて実施されてもよいものである。
【０１０４】
例えば、本実施の形態では、Ｊａｖａプログラムに関してアクセス権の矛盾を検出する場合を説明するが、本発明はこれに限定されるものではなく、アクセス権の制限に基づいて実行されるプログラムであれば、同様に適用することができる。
【０１０５】
また、本実施の形態において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【０１０６】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【０１０７】
なお、本実施の形態で説明したアクセス権矛盾検出方法および解析ルール作成方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。
【０１０８】
（付記１）アクセス権の制限に基づいて実行される所定のプログラムについて、該プログラムの実行時に使用されるアクセス権を集めた実行時アクセス権リストと設計時に付与されたアクセス権を集めた設計時アクセス権リストとの間で生じた矛盾を検出するアクセス権矛盾検出装置であって、
前記プログラムのソースコードを解析して該プログラムに含まれるメソッドシグネチャを順次検出する検出手段と、
前記プログラムに含まれ得るメソッドシグネチャとアクセス権とを対応付けて規定した所定の解析ルールに基づいて、前記検出手段によって検出されたメソッドシグネチャを順次解析して前記実行時アクセス権リストを求める解析手段と、前記プログラムに含まれ得るアクセス権の制限に関する広狭を規定した所定の比較ルールに基づいて、前記解析手段によって求められた実行時アクセス権リストと前記設計時アクセス権リストとの間で制限の広狭を比較する比較手段と、
前記比較手段による比較結果を報知する報知手段と、
を備えたことを特徴とするアクセス権矛盾検出装置。
（付記２）前記報知手段は、前記実行時アクセス権リストのなかから、前記比較手段によって実行時の制限が前記設計時のアクセス権の制限よりも広いと比較されたアクセス権を報知することを特徴とする付記１に記載のアクセス権矛盾検出装置。
（付記３）前記プログラムのソースコードのなかから、前記比較手段によって実行時の制限が前記設計時のアクセス権の制限よりも広いと比較されたアクセス権に対応する部分ソースコードを検出する部分ソースコード検出手段をさらに備え、
前記報知手段は、前記部分ソースコード検出手段によって検出された部分ソースコードを報知することを特徴とする付記１または２に記載のアクセス権矛盾検出装置。
（付記４）前記所定の比較ルールに基づいて前記設計時アクセス権リストに含まれる各アクセス権の間で制限の広狭を比較し、当該設計時アクセス権リストのなかから他のアクセス権の制限よりも狭い制限を有するアクセス権を削除した新たな設計時アクセス権リストを作成する第１のリスト作成手段をさらに備え、
前記比較手段は、前記第１のリスト作成手段によって作成された新たな設計時アクセス権リストと前記解析手段によって求められた実行時アクセス権リストとの間で制限の広狭を比較することを特徴とする付記１、２または３に記載のアクセス権矛盾検出装置。
（付記５）前記所定の比較ルールに基づいて前記実行時アクセス権リストに含まれる各アクセス権の間で制限の広狭を比較し、当該実行時アクセス権リストのなかから他のアクセス権の制限よりも狭い制限を有するアクセス権を削除した新たな実行時アクセス権リストを作成する第２のリスト作成手段をさらに備え、
前記比較手段は、前記第２のリスト作成手段によって作成された新たな実行時アクセス権リストと前記設計時アクセス権リストとの間で制限の広狭を比較することを特徴とする付記１、２または３に記載のアクセス権矛盾検出装置。
（付記６）前記所定の比較ルールに基づいて前記設計時アクセス権リストに含まれる各アクセス権の間で制限の広狭を比較し、当該設計時アクセス権リストのなかから他のアクセス権の制限よりも狭い制限を有するアクセス権を削除した新たな設計時アクセス権リストを作成する第１のリスト作成手段と、前記所定の比較ルールに基づいて前記実行時アクセス権リストに含まれる各アクセス権の間で制限の広狭を比較し、当該実行時アクセス権リストのなかから他のアクセス権の制限よりも狭い制限を有するアクセス権を削除した新たな実行時アクセス権リストを作成する第２のリスト作成手段とをさらに備え、
前記比較手段は、前記第１のリスト作成手段によって作成された新たな設計時アクセス権リストと前記第２のリスト作成手段によって作成された新たな実行時アクセス権リストとの間で制限の広狭を比較することを特徴とする付記１、２または３に記載のアクセス権矛盾検出装置。
（付記７）前記解析手段は、前記検出手段によって検出されたメソッドシグネチャが前記所定の解析ルールに規定されていないものであるが、当該所定の解析ルールに規定されたメソッドシグネチャを内部で呼び出している場合には、当該内部で呼び出されるメソッドシグネチャを解析して実行時のアクセス権を求めることを特徴とする付記１〜６のいずれか一つに記載のアクセス権矛盾検出装置。
（付記８）前記解析手段によって前記内部で呼び出されるメソッドシグネチャを解析して実行時のアクセス権が求められた場合に、当該求められたアクセス権と前記検出手段によって検出されたメソッドシグネチャとを対応付けて規定した新たな解析ルールを作成する解析ルール作成手段をさらに備えたことを特徴とする付記７に記載のアクセス権矛盾検出装置。
（付記９）前記解析ルール作成手段によって新たな解析ルールが作成された場合に、当該新たな解析ルールを前記所定の解析ルールに追加して規定する解析ルール追加手段をさらに備えたことを特徴とする付記８に記載のアクセス権矛盾検出装置。
（付記１０）アクセス権の制限に基づいて実行される所定のプログラムについて、該プログラムに含まれ得るメソッドシグネチャとアクセス権とを対応付けて規定した所定の解析ルールを作成する解析ルール作成装置であって、
前記プログラムのソースコードを解析して該プログラムに含まれるメソッドシグネチャを順次検出する検出手段と、
前記検出手段によって検出されたメソッドシグネチャが前記所定の解析ルールに既に規定されている場合には、当該規定されたメソッドシグネチャを解析してアクセス権を求め、前記検出手段によって検出されたメソッドシグネチャが前記所定の解析ルールに規定されていないものであるが、当該所定の解析ルールに規定されたメソッドシグネチャを内部で呼び出している場合には、当該内部で呼び出されるメソッドシグネチャを解析してアクセス権を求める解析手段と、
前記解析手段によって前記内部で呼び出されるメソッドシグネチャを解析してアクセス権が求められた場合に、当該求められたアクセス権と前記検出手段によって検出されたメソッドシグネチャとを対応付けて規定した新たな解析ルールを作成する解析ルール作成手段と、
を備えたことを特徴とする解析ルール作成装置。
（付記１１）アクセス権の制限に基づいて実行される所定のプログラムについて、該プログラムの実行時に使用されるアクセス権を集めた実行時アクセス権リストと設計時に付与されたアクセス権を集めた設計時アクセス権リストとの間で生じた矛盾を検出するアクセス権矛盾検出方法であって、
前記プログラムのソースコードを解析して該プログラムに含まれるメソッドシグネチャを順次検出する検出工程と、
前記プログラムに含まれ得るメソッドシグネチャとアクセス権とを対応付けて規定した所定の解析ルールに基づいて、前記検出工程によって検出されたメソッドシグネチャを順次解析して前記実行時アクセス権リストを求める解析工程と、前記プログラムに含まれ得るアクセス権の制限に関する広狭を規定した所定の比較ルールに基づいて、前記解析工程によって求められた実行時アクセス権リストと前記設計時アクセス権リストとの間で制限の広狭を比較する比較工程と、
前記比較工程による比較結果を報知する報知工程と、
を含んだことを特徴とするアクセス権矛盾検出方法。
（付記１２）前記報知工程は、前記実行時アクセス権リストのなかから、前記比較工程によって実行時の制限が前記設計時のアクセス権の制限よりも広いと比較されたアクセス権を報知することを特徴とする付記１１に記載のアクセス権矛盾検出方法。
（付記１３）前記プログラムのソースコードのなかから、前記比較工程によって実行時の制限が前記設計時のアクセス権の制限よりも広いと比較されたアクセス権に対応する部分ソースコードを検出する部分ソースコード検出工程をさらに含み、
前記報知工程は、前記部分ソースコード検出工程によって検出された部分ソースコードを報知することを特徴とする付記１１または１２に記載のアクセス権矛盾検出方法。
（付記１４）前記所定の比較ルールに基づいて前記設計時アクセス権リストに含まれる各アクセス権の間で制限の広狭を比較し、当該設計時アクセス権リストのなかから他のアクセス権の制限よりも狭い制限を有するアクセス権を削除した新たな設計時アクセス権リストを作成する第１のリスト作成工程をさらに含み、
前記比較工程は、前記第１のリスト作成工程によって作成された新たな設計時アクセス権リストと前記解析工程によって求められた実行時アクセス権リストとの間で制限の広狭を比較することを特徴とする付記１１、１２または１３に記載のアクセス権矛盾検出方法。
（付記１５）前記所定の比較ルールに基づいて前記実行時アクセス権リストに含まれる各アクセス権の間で制限の広狭を比較し、当該実行時アクセス権リストのなかから他のアクセス権の制限よりも狭い制限を有するアクセス権を削除した新たな実行時アクセス権リストを作成する第２のリスト作成工程をさらに含み、
前記比較工程は、前記第２のリスト作成工程によって作成された新たな実行時アクセス権リストと前記設計時アクセス権リストとの間で制限の広狭を比較することを特徴とする付記１１、１２または１３に記載のアクセス権矛盾検出方法。
（付記１６）前記所定の比較ルールに基づいて前記設計時アクセス権リストに含まれる各アクセス権の間で制限の広狭を比較し、当該設計時アクセス権リストのなかから他のアクセス権の制限よりも狭い制限を有するアクセス権を削除した新たな設計時アクセス権リストを作成する第１のリスト作成工程と、前記所定の比較ルールに基づいて前記実行時アクセス権リストに含まれる各アクセス権の間で制限の広狭を比較し、当該実行時アクセス権リストのなかから他のアクセス権の制限よりも狭い制限を有するアクセス権を削除した新たな実行時アクセス権リストを作成する第２のリスト作成工程とをさらに含み、
前記比較工程は、前記第１のリスト作成工程によって作成された新たな設計時アクセス権リストと前記第２のリスト作成工程によって作成された新たな実行時アクセス権リストとの間で制限の広狭を比較することを特徴とする付記１１、１２または１３に記載のアクセス権矛盾検出方法。
（付記１７）前記解析工程は、前記検出工程によって検出されたメソッドシグネチャが前記所定の解析ルールに規定されていないものであるが、当該所定の解析ルールに規定されたメソッドシグネチャを内部で呼び出している場合には、当該内部で呼び出されるメソッドシグネチャを解析して実行時のアクセス権を求めることを特徴とする付記１１〜１６のいずれか一つに記載のアクセス権矛盾検出方法。
（付記１８）前記解析工程によって前記内部で呼び出されるメソッドシグネチャを解析して実行時のアクセス権が求められた場合に、当該求められたアクセス権と前記検出工程によって検出されたメソッドシグネチャとを対応付けて規定した新たな解析ルールを作成する解析ルール作成工程をさらに含んだことを特徴とする付記１７に記載のアクセス権矛盾検出方法。
（付記１９）前記解析ルール作成工程によって新たな解析ルールが作成された場合に、当該新たな解析ルールを前記所定の解析ルールに追加して規定する解析ルール追加工程をさらに含んだことを特徴とする付記１８に記載のアクセス権矛盾検出方法。
（付記２０）アクセス権の制限に基づいて実行される所定のプログラムについて、該プログラムに含まれ得るメソッドシグネチャとアクセス権とを対応付けて規定した所定の解析ルールを作成する解析ルール作成方法であって、
前記プログラムのソースコードを解析して該プログラムに含まれるメソッドシグネチャを順次検出する検出工程と、
前記検出工程によって検出されたメソッドシグネチャが前記所定の解析ルールに既に規定されている場合には、当該規定されたメソッドシグネチャを解析してアクセス権を求め、前記検出工程によって検出されたメソッドシグネチャが前記所定の解析ルールに規定されていないものであるが、当該所定の解析ルールに規定されたメソッドシグネチャを内部で呼び出している場合には、当該内部で呼び出されるメソッドシグネチャを解析してアクセス権を求める解析工程と、
前記解析工程によって前記内部で呼び出されるメソッドシグネチャを解析してアクセス権が求められた場合に、当該求められたアクセス権と前記検出工程によって検出されたメソッドシグネチャとを対応付けて規定した新たな解析ルールを作成する解析ルール作成工程と、
を含んだことを特徴とする解析ルール作成方法。
（付記２１）前記付記１１〜２０のいずれか一つに記載された方法をコンピュータに実行させるプログラム。
【０１０９】
【発明の効果】
以上説明したように、請求項１によれば、プログラムのソースコードを解析して該プログラムに含まれるメソッドシグネチャを順次検出し、プログラムに含まれ得るメソッドシグネチャとアクセス権とを対応付けて規定した所定の解析ルールに基づいて、検出されたメソッドシグネチャを順次解析して実行時アクセス権リストを求め、プログラムに含まれ得るアクセス権の制限に関する広狭を規定した所定の比較ルールに基づいて、実行時アクセス権リストと設計時アクセス権リストとの間で制限の広狭を比較し、この比較結果を報知することとしたので、実行時に使用されるアクセス権と設計時に付与されたアクセス権との間で生じた矛盾を簡便かつ確実に検出することができる。
【０１１０】
また、請求項２の発明によれば、実行時アクセス権リストのなかから、実行時の制限が設計時のアクセス権の制限よりも広いと比較されたアクセス権を報知することとしたので、矛盾が生じているアクセス権を明確に報知することができる。これによって、設計時に付与されたアクセス権に適合するようにするプログラムの修正を補助することもできる。
【０１１１】
また、請求項３の発明によれば、プログラムのソースコードのなかから、実行時の制限が設計時のアクセス権の制限よりも広いと比較されたアクセス権に対応する部分ソースコードを検出し、検出された部分ソースコードを報知することとしたので、矛盾の原因となった部分ソースコードを明確に報知することができる。これによって、設計時に付与されたアクセス権に適合するようにするプログラムの修正を容易にすることもできる。
【０１１２】
また、請求項４の発明によれば、所定の比較ルールに基づいて設計時アクセス権リストに含まれる各アクセス権の間で制限の広狭を比較し、当該設計時アクセス権リストのなかから他のアクセス権の制限よりも狭い制限を有するアクセス権を削除した新たな設計時アクセス権リストを作成し、作成された新たな設計時アクセス権リストと実行時アクセス権リストとの間で制限の広狭を比較することとしたので、アクセス権同士の比較を効率的におこなうことができる。これによって、実行時に使用されるアクセス権と設計時に付与されたアクセス権との間で生じた矛盾を迅速に検出することもできる。
【０１１３】
また、請求項５の発明によれば、所定の比較ルールに基づいて実行時アクセス権リストに含まれる各アクセス権の間で制限の広狭を比較し、当該実行時アクセス権リストのなかから他のアクセス権の制限よりも狭い制限を有するアクセス権を削除した新たな実行時アクセス権リストを作成し、作成された新たな実行時アクセス権リストと設計時アクセス権リストとの間で制限の広狭を比較することとしたので、アクセス権同士の比較を効率的におこなうことができる。これによって、実行時に使用されるアクセス権と設計時に付与されたアクセス権との間で生じた矛盾を迅速に検出することもできる。
【０１１４】
また、請求項６の発明によれば、所定の比較ルールに基づいて設計時アクセス権リストに含まれる各アクセス権の間で制限の広狭を比較し、当該設計時アクセス権リストのなかから他のアクセス権の制限よりも狭い制限を有するアクセス権を削除した新たな設計時アクセス権リストを作成し、所定の比較ルールに基づいて実行時アクセス権リストに含まれる各アクセス権の間で制限の広狭を比較し、当該実行時アクセス権リストのなかから他のアクセス権の制限よりも狭い制限を有するアクセス権を削除した新たな実行時アクセス権リストを作成し、新たな設計時アクセス権リストと新たな実行時アクセス権リストとの間で制限の広狭を比較することとしたので、アクセス権同士の比較を一層効率的におこなうことができる。これによって、実行時に使用されるアクセス権と設計時に付与されたアクセス権との間で生じた矛盾を一層迅速に検出することもできる。
【０１１５】
また、請求項７の発明によれば、検出されたメソッドシグネチャが所定の解析ルールに規定されていないものであるが、当該所定の解析ルールに規定されたメソッドシグネチャを内部で呼び出している場合には、当該内部で呼び出されるメソッドシグネチャを解析して実行時のアクセス権を求めることとしたので、プログラムのソースコードから実行時のアクセス権を確実に求めることができる。これによって、実行時に使用されるアクセス権と設計時に付与されたアクセス権との間で生じた矛盾を一層確実に検出することもできる。
【０１１６】
また、請求項８の発明によれば、内部で呼び出されるメソッドシグネチャを解析して実行時のアクセス権が求められた場合に、当該求められたアクセス権と検出されたメソッドシグネチャとを対応付けて規定した新たな解析ルールを作成するとしたので、実行時のアクセス権を効率的に求めることに寄与する効率的な解析ルールを作成することができる。
【０１１７】
また、請求項９の発明によれば、新たな解析ルールが作成された場合に、当該新たな解析ルールを所定の解析ルールに追加して規定するとしたので、解析ルールを追加した直後から、実行時のアクセス権を効率的に求めることができる。
【０１１８】
また、請求項１０の発明によれば、プログラムのソースコードを解析して該プログラムに含まれるメソッドシグネチャを順次検出し、検出されたメソッドシグネチャが所定の解析ルールに既に規定されている場合には、当該規定されたメソッドシグネチャを解析してアクセス権を求め、検出されたメソッドシグネチャが所定の解析ルールに規定されていないものであるが、当該所定の解析ルールに規定されたメソッドシグネチャを内部で呼び出している場合には、当該内部で呼び出されるメソッドシグネチャを解析してアクセス権を求め、内部で呼び出されるメソッドシグネチャを解析してアクセス権が求められた場合に、当該求められたアクセス権と検出されたメソッドシグネチャとを対応付けて規定した新たな解析ルールを作成することとしたので、実行時のアクセス権を効率的に求めることに寄与する効率的な解析ルールを作成することができる。
【図面の簡単な説明】
【図１】本実施の形態１に係るアクセス権矛盾検出装置の構成を示すブロック図である。
【図２】本実施の形態１によるメソッドシグネチャ検出処理の具体例を示す図である。
【図３】解析ルールに規定される情報の構成例を示す図である。
【図４】本実施の形態１によるアクセス権解析処理の具体例を示す図である。
【図５】本実施の形態１によるアクセス権解析処理の具体例を示す図である。
【図６】比較ルールに規定される情報の構成例を示す図である。
【図７】本実施の形態１による比較結果の具体例を示す図である。
【図８】本実施の形態１によるアクセス権矛盾検出処理の手順を説明するフローチャートである。
【図９】本実施の形態２に係るアクセス権矛盾検出装置の構成を示すブロック図である。
【図１０】本実施の形態２による圧縮処理の具体例を示す図である。
【図１１】本実施の形態３に係るアクセス権矛盾検出装置の構成を示すブロック図である。
【図１２】本実施の形態３による圧縮処理の具体例を示す図である。
【図１３】本実施の形態４に係るアクセス権矛盾検出装置の構成を示すブロック図である。
【図１４】本実施の形態４による出力処理の具体例を示す図である。
【図１５】本実施の形態５に係る解析ルール作成装置の構成を示すブロック図である。
【図１６】本実施の形態５による解析ルール作成処理の具体例を示す図である。
【図１７】本実施の形態６に係るアクセス権矛盾検出装置の構成を示すブロック図である。
【図１８】アクセス権の例を示す図である。
【図１９】アクセス権とメソッドの対応例を示す図である。
【符号の説明】
１０、２０、３０、４０、６０  アクセス権矛盾検出装置
１１  アクセス権リスト入力部
１２  アクセス権リスト格納部
１３  ソースコード入力部
１４  メソッドシグネチャ検出部
１５  アクセス権解析部
１５ａ  解析ルール
１６  アクセス権比較部
１６ａ  比較ルール
１７  出力部
２１、３１  アクセス権圧縮部
４１  部分ソースコード検出部
５１  解析ルール作成部
【図１】
0003939977.tif 000002
【図２】
0003939977.tif 000003
【図３】
0003939977.tif 000004
【図４】
0003939977.tif 000005
【図５】
0003939977.tif 000006
【図６】
0003939977.tif 000007
【図７】
0003939977.tif 000008
【図８】
0003939977.tif 000009
【図９】
0003939977.tif 000010
【図１０】
0003939977.tif 000011
【図１１】
0003939977.tif 000012
【図１２】
0003939977.tif 000013
【図１３】
0003939977.tif 000014
【図１４】
0003939977.tif 000015
【図１５】
0003939977.tif 000016
【図１６】
0003939977.tif 000017
【図１７】
0003939977.tif 000018
【図１８】
0003939977.tif 000019
【図１９】
0003939977.tif 000020