(57)【要約】  直接関係抽出部（１１０）は、ソースコードを用いて、直接依存元と直接依存先と直接依存種類との組を示す直接関係情報を含んだ直接関係リストを生成する。記憶部（１９１）は、複数の直接依存種類と要素関係と依存元要素と依存先要素とを含んだ間接関係ルールを記憶する。間接関係抽出部（１２０）は、間接関係ルールに含まれる複数の直接依存種類と要素関係とに対応する複数の直接関係情報を直接関係リストから抽出し、抽出された複数の直接関係情報から間接関係ルール内の依存元要素に対応する要素である間接依存元を抽出し、抽出された複数の直接関係情報から間接関係ルール内の依存先要素に対応する要素である間接依存先を抽出する。
2017187537.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアに含まれる要素のうち前記ソフトウェアに含まれる他の要素を使用する要素である直接依存元と、前記ソフトウェアに含まれる要素のうち直接依存元に使用される要素である直接依存先と、直接依存元が直接依存先を使用する方法を示す直接依存種類との組を含んだ直接関係リストを記憶する記憶部と、
前記ソフトウェアに含まれる要素のうち前記ソフトウェアに含まれる他の要素から影響を受ける要素である間接依存元と、前記ソフトウェアに含まれる要素のうち間接依存元に影響を与える要素である間接依存先とのルールである間接関係ルールと、前記直接関係リストとを用いて、前記間接依存元と前記間接依存先との組を抽出する間接関係抽出部と
を備える依存関係抽出装置。
【請求項２】
前記直接関係リストは、直接依存元と直接依存先と直接依存種類との組を示す直接関係情報を含み、
前記間接関係ルールは、複数の直接依存種類と、複数の要素に成り立つ要素関係と、間接依存元となる依存元要素と、間接依存先となる依存先要素とを含み、
前記間接関係抽出部は、前記間接関係ルールに含まれる複数の直接依存種類と要素関係とに対応する複数の直接関係情報を前記直接関係リストから抽出し、抽出された複数の直接関係情報に含まれる複数の直接依存元と複数の直接依存先との中から、前記間接関係ルールに含まれる依存元要素に対応する要素を前記間接依存元として抽出し、抽出された複数の直接関係情報に含まれる複数の直接依存元と複数の直接依存先との中から、前記間接関係ルールに含まれる依存先要素に対応する要素を前記間接依存先として抽出する
請求項１に記載の依存関係抽出装置。
【請求項３】
前記複数の直接関係情報は、前記複数の直接依存種類に含まれる直接依存種類の数と同じ数の直接関係情報から成り、且つ、複数の直接依存元と複数の直接依存先と前記複数の直接依存種類とを含み、且つ、前記複数の直接依存元と前記複数の直接依存先とのうち前記要素関係に対応する複数の要素に前記要素関係がある
請求項２に記載の依存関係抽出装置。
【請求項４】
前記複数の直接依存種類は、第１直接依存種類と第２直接依存種類とを含み、
前記要素関係は、前記第１直接依存種類に対応する直接依存先と前記第２直接依存種類に対応する直接依存先との関係であり、
前記依存元要素は、前記第２直接依存種類に対応する直接依存元であり、
前記依存先要素は、前記第１直接依存種類に対応する直接依存元である
請求項３に記載の依存関係抽出装置。
【請求項５】
前記第１直接依存種類は、直接依存元である第１関数から直接依存先である第１変数への書込みであり、
前記第２直接依存種類は、直接依存元である第２関数から直接依存先である第２変数の参照であり、
前記要素関係は、前記第１変数と前記第２変数との一致であり、
前記依存元要素は、前記第２関数であり、
前記依存先要素は、前記第１関数である
請求項４に記載の依存関係抽出装置。
【請求項６】
前記記憶部は、前記直接関係リストとして、互いに通信する複数のシステムに対応する複数の直接関係リストを記憶し、
前記複数の直接関係リストそれぞれは、直接依存元と直接依存先と直接依存種類との組を示す直接関係情報を含み、
前記記憶部は、複数の直接依存種類と、システム間に成り立つ関係を示すシステム関係と、間接依存元となる依存元要素と、間接依存先となる依存先要素と、を含んだ間接関係ルールを記憶し、
前記間接関係抽出部は、前記間接関係ルールに含まれる複数の直接依存種類とシステム関係とに対応する複数の直接関係情報を前記複数の直接関係リストから抽出し、抽出された複数の直接関係情報に含まれる複数の直接依存元と複数の直接依存先との中から、前記間接関係ルールに含まれる依存元要素に対応する要素を前記間接依存元として抽出し、抽出された複数の直接関係情報に含まれる複数の直接依存元と複数の直接依存先との中から、前記間接関係ルールに含まれる依存先要素に対応する要素を前記間接依存先として抽出する
請求項１に記載の依存関係抽出装置。
【請求項７】
前記複数の直接依存種類は、第１直接依存種類と第２直接依存種類とを含み、
前記第１直接依存種類は、直接依存元である第１関数から直接依存先である送信関数の呼出しであり、
前記第２直接依存種類は、直接依存元である第２関数から直接依存先である受信関数の呼出しであり、
前記システム関係は、前記第１直接依存種類を含む直接関係情報に対応するシステムと前記第２直接依存種類を含む直接関係情報に対応するシステムとの不一致であり、
前記依存元要素は、前記第２関数であり、
前記依存先要素は、前記第１関数である
請求項６に記載の依存関係抽出装置。
【請求項８】
前記記憶部は、互いに通信する２つのシステムのうちの一方のシステムである第１通信システムと、互いに通信する２つのシステムのうちの他方のシステムである第２通信システムとを示す事象データを記憶し、
前記依存関係抽出装置は、
前記事象データを用いて、抽出された間接依存元と抽出された間接依存先との組から、前記第１通信システムと前記第２通信システムとの組み合わせに対応しない組を除去する無効関係除去部を備える
請求項６に記載の依存関係抽出装置。
【請求項９】
直接関係リストと間接関係ルールとを用いる依存関係抽出プログラムであって、
前記直接関係リストは、ソフトウェアに含まれる要素のうち前記ソフトウェアに含まれる他の要素を使用する要素である直接依存元と、前記ソフトウェアに含まれる要素のうち直接依存元に使用される要素である直接依存先と、直接依存元が直接依存先を使用する方法を示す直接依存種類との組を含んだリストであり、
前記間接関係ルールは、前記ソフトウェアに含まれる要素のうち前記ソフトウェアに含まれる他の要素から影響を受ける要素である間接依存元と、前記ソフトウェアに含まれる要素のうち間接依存元に影響を与える要素である間接依存先とのルールであり、
前記直接関係リストと前記間接関係ルールとを用いて、前記間接依存元と前記間接依存先との組を抽出する間接関係抽出部として
コンピュータを機能させるための依存関係抽出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアに含まれる要素間の間接的な依存関係を抽出するための技術に関するものである。
【背景技術】
【０００２】
ソフトウェアを変更する際、変更箇所とは別の箇所に変更の影響が及ぶ場合がある。変更の影響が及ぶ箇所の抽出漏れは、障害の作り込みの要因となりうる。そのため、変更の影響が及ぶ箇所を漏れなく抽出する必要がある。
しかし、ソフトウェアの複雑化および大規模化により、変更の影響が及ぶ箇所を目視で漏れなく抽出することは困難である。【０００３】
特許文献１、特許文献２および特許文献３には、変更の影響が及ぶ直接的な依存関係を抽出する技術が開示されている。また、直接的な依存関係を順に辿って間接的な依存関係を抽出する技術も開示されている。
これら特許文献に開示された技術では、直接的な依存関係を順に辿ることで到達可能な間接的な依存関係を抽出することはできるが、直接的な依存関係を順に辿っても到達しない間接的な依存関係を抽出することはできない。
例えば、部品Ａから部品Ｂへ依存関係があり、かつ、部品Ｂから部品Ｃへの依存関係がある場合、部品Ａから部品Ｃへの間接的な依存関係を抽出することは可能である。しかし、部品Ａから部品Ｂへ依存関係があり、かつ、部品Ｃから部品Ｂへの依存関係がある場合、部品Ａから部品Ｃへの間接的な依存関係を抽出することはできない。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１５−０６９３３２号公報
【特許文献２】特開２０１３−０６９０８６号公報
【特許文献３】特開２０１２−２３０５３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、直接的な依存関係を順に辿っても到達しない間接的な依存関係を抽出できるようにすることを目的とする。
【課題を解決するための手段】
【０００６】
本発明の依存関係抽出装置は、
ソフトウェアに含まれる要素のうち前記ソフトウェアに含まれる他の要素を使用する要素である直接依存元と、前記ソフトウェアに含まれる要素のうち直接依存元に使用される要素である直接依存先と、直接依存元が直接依存先を使用する方法を示す直接依存種類との組を含んだ直接関係リストを記憶する記憶部と、
前記ソフトウェアに含まれる要素のうち前記ソフトウェアに含まれる他の要素から影響を受ける要素である間接依存元と、前記ソフトウェアに含まれる要素のうち間接依存元に影響を与える要素である間接依存先とのルールである間接関係ルールと、前記直接関係リストとを用いて、前記間接依存元と前記間接依存先との組を抽出する間接関係抽出部とを備える。
【発明の効果】
【０００７】
本発明によれば、間接関係ルールに従って間接的な依存関係を有する間接依存元と間接依存先との組を抽出することができる。
したがって、直接的な依存関係を順に辿っても到達しない間接的な依存関係に対応する間接関係ルールを用意すれば、直接的な依存関係を順に辿っても到達しない間接的な依存関係を有する間接依存元と間接依存先との組を抽出することが可能となる。
【図面の簡単な説明】
【０００８】
【図１】実施の形態１における依存関係抽出装置１００の構成図。
【図２】実施の形態１における依存関係抽出方法のフローチャート。
【図３】実施の形態１におけるソースコード２１０を示す図。
【図４】実施の形態１における直接関係リスト２２０を示す図。
【図５】実施の形態１における間接関係ルールリスト２３０を示す図。
【図６】実施の形態１における間接関係リスト２４０を示す図。
【図７】実施の形態１における間接関係抽出処理（Ｓ２１０）のフローチャート。
【図８】実施の形態１における直接関係情報と到達不可の間接関係ルールとの関係図。
【図９】実施の形態１における直接関係情報と到達可能な間接関係ルールとの関係図。
【図１０】実施の形態２における依存関係抽出方法のフローチャート。
【図１１】実施の形態２におけるシステム毎のソースコード２１０を示す図。
【図１２】実施の形態２におけるシステム毎の直接関係リスト２２０を示す図。
【図１３】実施の形態２における間接関係ルールリスト２５０を示す図。
【図１４】実施の形態２における間接関係リスト２４０を示す図。
【図１５】実施の形態２における間接関係抽出処理（Ｓ２２０）のフローチャート。
【図１６】実施の形態３における依存関係抽出装置１００の構成図。
【図１７】実施の形態３における依存関係抽出方法のフローチャート。
【図１８】実施の形態３における事象データ２６０を示す図。
【図１９】実施の形態３における間接関係リスト２４０を示す図。
【図２０】実施の形態３における無効関係抽出処理（Ｓ２３０）のフローチャート。
【図２１】実施の形態における依存関係抽出装置１００のハードウェア構成図。
【発明を実施するための形態】
【０００９】
実施の形態および図面において、同じ要素または互いに相当する要素には同じ符号を付している。同じ符号が付された要素の説明は適宜に省略または簡略する。
【００１０】
実施の形態１．
間接的な依存関係を抽出する依存関係抽出装置１００について、図１から図９に基づいて説明する。
【００１１】
＊＊＊構成の説明＊＊＊
図１に基づいて、依存関係抽出装置１００の構成を説明する。
依存関係抽出装置１００は、プロセッサ９０１とメモリ９０２と補助記憶装置９０３といったハードウェアを備えるコンピュータである。これらのハードウェアは、信号線を介して互いに接続されている。
【００１２】
プロセッサ９０１は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）であり、他のハードウェアを制御する。具体的には、プロセッサ９０１は、ＣＰＵ、ＤＳＰまたはＧＰＵである。ＣＰＵはＣｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔの略称であり、ＤＳＰはＤｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒの略称であり、ＧＰＵはＧｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔの略称である。
メモリ９０２は揮発性の記憶装置である。メモリ９０２は、主記憶装置またはメインメモリとも呼ばれる。具体的には、メモリ９０２はＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
補助記憶装置９０３は不揮発性の記憶装置である。具体的には、補助記憶装置９０３は、ＲＯＭ、ＨＤＤまたはフラッシュメモリである。ＲＯＭはＲｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙの略称であり、ＨＤＤはＨａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅの略称である。
プロセッサ９０１とメモリ９０２と補助記憶装置９０３とをまとめたハードウェアを「プロセッシングサーキットリ」という。
【００１３】
依存関係抽出装置１００は、直接関係抽出部１１０と間接関係抽出部１２０といった「部」を機能構成の要素として備える。「部」の機能はソフトウェアで実現される。「部」の機能については後述する。
【００１４】
補助記憶装置９０３には、「部」の機能を実現するプログラムが記憶されている。「部」の機能を実現するプログラムは、メモリ９０２にロードされて、プロセッサ９０１によって実行される。
さらに、補助記憶装置９０３にはＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が記憶されている。ＯＳの少なくとも一部は、メモリ９０２にロードされて、プロセッサ９０１によって実行される。
つまり、プロセッサ９０１は、ＯＳを実行しながら、「部」の機能を実現するプログラムを実行する。
「部」の機能を実現するプログラムを実行して得られるデータは、メモリ９０２、補助記憶装置９０３、プロセッサ９０１内のレジスタまたはプロセッサ９０１内のキャッシュメモリといった記憶装置に記憶される。
【００１５】
メモリ９０２は、依存関係抽出装置１００で使用、生成、入出力または送受信されるデータが記憶される記憶部１９１として機能する。但し、他の記憶装置が記憶部１９１として機能してもよい。
【００１６】
依存関係抽出装置１００は、プロセッサ９０１を代替する複数のプロセッサを備えてもよい。複数のプロセッサは、「部」の機能を実現するプログラムの実行を分担する。
「部」の機能を実現するプログラムは、磁気ディスク、光ディスクまたはフラッシュメモリ等の不揮発性の記憶媒体にコンピュータ読み取り可能に記憶することができる。不揮発性の記憶媒体は、一時的でない有形の媒体である。
「部」は「処理」または「工程」に読み替えてもよい。「部」の機能はファームウェアで実現してもよい。
【００１７】
＊＊＊動作の説明＊＊＊
依存関係抽出装置１００の動作は依存関係抽出方法に相当する。また、依存関係抽出方法の手順は依存関係抽出プログラムの手順に相当する。
【００１８】
図２に基づいて、依存関係抽出方法を説明する。
ステップＳ１１０は直接関係抽出処理である。
ステップＳ１１０において、直接関係抽出部１１０は、ソースコード２１０から直接関係を抽出し、抽出された直接関係を示す直接関係リスト２２０を生成する。
ソースコード２１０は、記憶部１９１に予め記憶される。記憶部１９１は、生成された直接関係リスト２２０を記憶する。
【００１９】
ソースコード２１０は、ソフトウェアの処理が記載されたファイルであり、ソースプログラムまたはソースファイルともいう。ソースコード２１０には、ソフトウェアを構成する要素を使用するための記載が含まれる。ソフトウェアを構成する具体的な要素は、ソースコード、関数、変数および定数などである。
【００２０】
直接関係は、ソフトウェアを構成する要素間の直接的な依存関係を意味する。
【００２１】
直接関係リスト２２０は、直接関係情報のリストである。直接関係情報は、直接関係を示す情報である。具体的な直接関係情報は、直接依存元と直接依存先と直接依存種類と直接依存頻度との組である。
直接依存元は、ソフトウェアに含まれる要素のうちソフトウェアに含まれる他の要素を使用する要素である。
直接依存先は、ソフトウェアに含まれる要素のうち直接依存元に使用される要素である。
直接依存種類は、直接依存元が直接依存先を使用する方法の種類である。
直接依存頻度は、直接依存元が直接依存先を使用する回数に対応する値である。
【００２２】
具体的には、直接関係抽出部１１０は、ソースコード２１０に対して構文解析および字句解析などの解析を行い、解析結果に基づいて直接関係を抽出する。そして、直接関係抽出部１１０は、抽出された直接関係を示す直接関係リスト２２０を生成する。
直接関係を抽出する方法は従来技術であるため、直接関係を抽出する方法の詳細については説明を省略する。
【００２３】
図３に、具体的なソースコード２１０を示す。
図３の（１）は、「ｆｉｌｅ１．ｃ」というファイル名を持つソースコード２１０である。「ｆｉｌｅ１．ｃ」のソースコード２１０には、ソースコード「ｆｉｌｅ２．ｈ」、関数「ｆｕｎｃ１（）」、「ｆｕｎｃ２（）」、「ｆｕｎｃ３（）」、「ｆｕｎｃ４（）」、変数「ｖａｒｉａｂｌｅ１」および定数「ＭＡＸ」などの要素を使用するための記載が含まれている。
図３の（２）は、「ｆｉｌｅ２．ｈ」というファイル名を持つソースコード２１０である。「ｆｉｌｅ２．ｈ」のソースコード２１０には、定数「ＭＡＸ」という要素を使用するための記載が含まれている。
【００２４】
図４に、図３のソースコード２１０を用いて生成される直接関係リスト２２０を示す。
直接関係リスト２２０は、６つの直接関係情報を含んでいる。直接関係情報は、直接依存元と直接依存先と直接依存種類と直接依存頻度との組である。
１つ目の直接関係情報は、ソースコード「ｆｉｌｅ１．ｃ」がソースコード「ｆｉｌｅ２．ｈ」をインクルードする、という直接関係を示している。直接依存頻度は１である。
２つ目の直接関係情報は、ソースコード「ｆｉｌｅ１．ｃ」がソースコード「ｆｉｌｅ２．ｈ」の定数「ＭＡＸ」をマクロで読み込む、という直接関係を示している。直接依存頻度は２である。
３つ目の直接関係情報は、ソースコード「ｆｉｌｅ１．ｃ」の関数「ｆｕｎｃ１（）」がソースコード「ｆｉｌｅ１．ｃ」の変数「ｖａｒｉａｂｌｅ１」に対して書込みを行う、という直接関係を示している。直接依存頻度は１である。
４つ目の直接関係情報は、ソースコード「ｆｉｌｅ１．ｃ」の関数「ｆｕｎｃ２（）」がソースコード「ｆｉｌｅ１．ｃ」の変数「ｖａｒｉａｂｌｅ１」を参照する、という直接関係を示している。直接依存頻度は１である。
５つ目の直接関係情報は、ソースコード「ｆｉｌｅ１．ｃ」の関数「ｆｕｎｃ２（）」がソースコード「ｆｉｌｅ１．ｃ」の関数「ｆｕｎｃ３（）」を呼び出す、という直接関係を示している。直接依存頻度は３である。
６つ目の直接関係情報は、ソースコード「ｆｉｌｅ１．ｃ」の関数「ｆｕｎｃ３（）」がソースコード「ｆｉｌｅ１．ｃ」の関数「ｆｕｎｃ４（）」を呼び出す、という直接関係を示している。直接依存頻度は１である。
【００２５】
図２に戻り、ステップＳ１２０を説明する。
ステップＳ１２０は間接関係抽出処理である。
ステップＳ１２０において、間接関係抽出部１２０は、直接関係リスト２２０を用いて間接関係を抽出し、抽出された間接関係を示す間接関係リスト２４０を生成する。記憶部１９１は、生成された間接関係リスト２４０を記憶する。
【００２６】
間接関係は、ソフトウェアを構成する要素間の間接的な依存関係を意味する。
【００２７】
間接関係リスト２４０は、間接関係情報のリストである。間接関係情報は、間接関係を示す情報である。具体的な間接関係情報は、間接依存元と間接依存先と間接依存種類と間接依存頻度との組である。
間接依存元は、ソフトウェアに含まれる要素のうちソフトウェアに含まれる他の要素から影響を受ける要素である。但し、直接依存元は除く。
間接依存先は、ソフトウェアに含まれる要素のうち間接依存元に影響を与える要素である。但し、直接依存先は除く。
間接依存種類は、間接依存先が間接依存元に影響を与える方法の種類である。
間接依存頻度は、間接依存先が間接依存元に影響を与える回数に対応する値である。
【００２８】
具体的には、間接関係抽出部１２０は、直接関係リスト２２０と間接関係ルールリスト２３０とを用いて、間接関係を抽出する。そして、間接関係抽出部１２０は、抽出された間接関係を示す間接関係リスト２４０を生成する。間接関係ルールリスト２３０は、記憶部１９１に予め記憶される。
間接関係ルールリスト２３０は、間接関係ルールのリストである。
間接関係ルールは、間接関係がある要素間におけるルールである。
間接関係ルールは、複数の直接依存種類と、要素関係と、依存元要素と、依存先要素と、間接依存種類とを含む。
要素関係は、複数の要素に成り立つ関係である。
依存元要素は、間接依存元となる要素である。
依存先要素は、間接依存先となる要素である。
【００２９】
具体的には、間接関係抽出部１２０は、以下のように間接依存元と間接依存先とを抽出する。
間接関係抽出部１２０は、間接関係ルールに含まれる複数の直接依存種類と要素関係とに対応する複数の直接関係情報を直接関係リスト２２０から抽出する。
そして、間接関係抽出部１２０は、抽出された複数の直接関係情報に含まれる複数の直接依存元と複数の直接依存先との中から、間接関係ルールに含まれる依存元要素に対応する要素を間接依存元として抽出する。
また、間接関係抽出部１２０は、抽出された複数の直接関係情報に含まれる複数の直接依存元と複数の直接依存先との中から、間接関係ルールに含まれる依存先要素に対応する要素を間接依存先として抽出する。
【００３０】
直接関係リスト２２０から抽出される複数の直接関係情報は、以下の（１）から（３）の全ての条件を満たす。
（１）複数の直接関係情報は、間接関係ルール内の複数の直接依存種類に含まれる直接依存種類の数と同じ数の直接関係情報から成る。
（２）複数の直接関係情報は、複数の直接依存元と複数の直接依存先と間接関係ルール内の複数の直接依存種類とを含む。
（３）複数の直接関係条件は、複数の直接依存元と複数の直接依存先とのうち間接関係ルール内の要素関係に対応する複数の要素に要素関係がある。
【００３１】
図５に、具体的な間接関係ルールリスト２３０を示す。
間接関係ルールリスト２３０は、２つの間接関係ルールを含んでいる。
それぞれの間接関係ルールは、間接関係条件と間接関係とを含んでいる。
間接関係条件は、複数の直接依存種類と要素関係とを含んでいる。
間接関係は、依存元要素と依存先要素と間接依存種類とを含んでいる。
【００３２】
「Ｎｏ．１」の間接関係ルールを説明する。
第１直接依存種類は、関数αから変数γへの書込みである。関数αは第１直接依存種類に対応する直接依存元であり、変数γは第１直接依存種類に対応する直接依存先である。
第２直接依存種類は、関数βから変数ωの参照である。関数βは第２直接依存種類に対応する直接依存元であり、変数ωは第２直接依存種類に対応する直接依存先である。
要素関係は、第１直接依存種類に対応する直接依存先と第２直接依存種類に対応する直接依存先との関係である。具体的には、要素関係は、変数γと変数ωとの一致である。
依存元要素は、第２直接依存種類に対応する直接依存元である。具体的には、依存元要素は、関数βである。
依存先要素は、第１直接依存種類に対応する直接依存元である。具体的には、依存先要素は、関数αである。
間接依存種類は、変数媒介である。変数媒介は、変数を媒介とする間接的な依存関係を意味する。
【００３３】
「Ｎｏ．２」の間接関係ルールを説明する。
第１直接依存種類は、関数αから関数γの呼出しである。関数αは第１直接依存種類に対応する直接依存元であり、関数γは第１直接依存種類に対応する直接依存先である。
第２直接依存種類は、関数βから関数ωの呼出しである。関数βは第２直接依存種類に対応する直接依存元であり、関数ωは第２直接依存種類に対応する直接依存先である。
要素関係は、第１直接依存種類に対応する直接依存先と第２直接依存種類に対応する直接依存元との関係である。具体的には、要素関係は、関数γと関数βとの一致である。
依存元要素は、第１直接依存種類に対応する直接依存元である。具体的には、依存元要素は、関数αである。
依存先要素は、第２直接依存種類に対応する直接依存先である。具体的には、依存先要素は、関数ωである。
間接依存種類は、関数媒介である。関数媒介は、関数を媒介とする間接的な依存関係を意味する。
【００３４】
図６に、図５の間接関係ルールリスト２３０を用いて生成される間接関係リスト２４０を示す。
間接関係リスト２４０は、２つの間接関係情報を含んでいる。
それぞれの間接関係情報は、間接依存元と間接依存先と間接依存種類と間接依存頻度との組である。
【００３５】
１つ目の間接関係情報は、ソースコード「ｆｉｌｅ１．ｃ」の関数「ｆｕｎｃ２（）」が、変数を媒介にして、ソースコード「ｆｉｌｅ１．ｃ」の関数「ｆｕｎｃ１（）」から影響を受ける、という間接関係を示している。間接依存頻度は１である。
２つ目の間接関係情報は、ソースコード「ｆｉｌｅ１．ｃ」の関数「ｆｕｎｃ２（）」が、関数を媒介にして、ソースコード「ｆｉｌｅ１．ｃ」の関数「ｆｕｎｃ４（）」から影響を受ける、という間接関係を示している。間接依存頻度は３である。
【００３６】
図７に基づいて、間接関係抽出処理（Ｓ１２０）の手順を説明する。
ステップＳ１２１において、間接関係抽出部１２０は、間接関係ルールリスト２３０から、未選択の間接関係ルールを１つ選択する。
【００３７】
ステップＳ１２２からステップＳ１２７は、ステップＳ１２１で選択された間接関係ルールを対象に実行される。
【００３８】
ステップＳ１２２において、間接関係抽出部１２０は、直接関係リスト２２０から、対応情報群を抽出する。
対応情報群は、間接関係ルール内の複数の直接依存種類に対応する複数の直接関係情報である。つまり、対応情報群は、間接関係ルール内の直接依存種類と同じ数の直接関係情報から成る。そして、対応情報群には、間接関係ルール内の直接依存種類毎に、間接関係ルール内の直接依存種類と同じ直接依存種類を含んだ直接関係情報が１つ含まれる。
対応情報群が複数ある場合、間接関係抽出部１２０は複数の対応情報群を抽出する。
【００３９】
具体的には、間接関係抽出部１２０は、対応情報群を以下のように抽出する。
間接関係抽出部１２０は、間接関係ルール内の直接依存種類毎に、直接依存種類に対応する直接関係情報を直接関係リスト２２０から抽出する。直接依存種類に対応する直接関係情報とは、その直接依存種類を含んだ直接関係情報である。
そして、間接関係抽出部１２０は、間接関係ルール内の直接依存種類毎に、抽出された直接関係情報から直接関係情報を１つ選択する。選択された直接関係情報の組が対応情報群を成す。
【００４０】
図４および図５に基づいて、ステップＳ１２２を具体的に説明する。
図５に含まれる「Ｎｏ．１」の間接関係ルールにおいて、第１直接依存種類は「変数への書込み」である。したがって、間接関係抽出部１２０は、図４の直接関係リスト２２０から、３つ目の直接関係情報を第１直接関係情報として抽出する。
図５に含まれる「Ｎｏ．１」の間接関係ルールにおいて、第２直接依存種類は「変数の参照」である。したがって、間接関係抽出部１２０は、図４の直接関係リスト２２０から、４つ目の直接関係情報を第２直接関係情報として抽出する。
その結果、第１直接関係情報と第２直接関係情報とが対応情報群を成す。
【００４１】
図７に戻り、ステップＳ１２３から説明を続ける。
ステップＳ１２３において、間接関係抽出部１２０は、対応情報群があるか判定する。Ｓ１２２で少なくとも１つの対応情報群が抽出された場合、間接関係抽出部１２０は、対応情報群があると判定する。
対応情報群がある場合、処理はステップＳ１２４に進む。
対応情報群がない場合、処理はステップＳ１２８に進む。
【００４２】
ステップＳ１２４において、間接関係抽出部１２０は、未選択の対応情報群を１つ選択する。
【００４３】
ステップＳ１２５およびステップＳ１２６は、ステップＳ１２４で選択された対応情報群を対象に実行される。
【００４４】
ステップＳ１２５において、間接関係抽出部１２０は、間接関係ルール内の要素関係に対応する複数の要素に、間接関係ルール内の要素関係があるか判定する。
具体的には、間接関係抽出部１２０は、間接関係ルール内の要素関係に対応する複数の要素を対応情報群から抽出する。そして、間接関係抽出部１２０は、間接関係ルール内の要素関係が、抽出された複数の要素にあるか判定する。
間接関係ルール内の要素関係に対応する複数の要素に、間接関係ルール内の要素関係がある場合、処理はステップＳ１２６に進む。
間接関係ルール内の要素関係に対応する複数の要素に、間接関係ルール内の要素関係がない場合、処理はステップＳ１２７に進む。
【００４５】
図４および図５に基づいて、ステップＳ１２５を具体的に説明する。
図５に含まれる「Ｎｏ．１」の間接関係ルールにおいて、第１直接依存種類に対応する第１直接関係情報は図４に含まれる３つ目の直接関係情報であり、第２直接依存種類に対応する第２直接関係情報は図４に含まれる４つ目の直接関係情報である。
「Ｎｏ．１」の間接関係ルールにおいて、要素関係に対応する複数の要素は変数γと変数ωとの２つの要素である。
変数γは、第１直接依存種類に対応する直接依存先である。第１直接依存種類に対応する直接依存先とは、第１直接関係情報に含まれる直接依存先である。つまり、変数γは、ソースコード「ｆｉｌｅ１．ｃ」の変数「ｖａｒｉａｂｌｅ１」である。
変数ωは、第２直接依存種類に対応する直接依存先である。第２直接依存種類に対応する直接依存先とは、第２直接関係情報に含まれる直接依存先である。つまり、変数ωは、ソースコード「ｆｉｌｅ１．ｃ」の変数「ｖａｒｉａｂｌｅ１」である。
「Ｎｏ．１」の間接関係ルールにおいて、要素関係は変数γと変数ωとの一致である。上記の通り、変数γと変数ωとは一致するため、要素関係が変数γと変数ωとにある。
したがって、間接関係抽出部１２０は、間接関係ルール内の要素関係が、抽出された複数の要素にあると判定する。
【００４６】
図７に戻り、ステップＳ１２６から説明を続ける。
ステップＳ１２６において、間接関係抽出部１２０は、間接関係情報を生成し、生成された間接関係情報を間接関係リスト２４０に追加する。
【００４７】
具体的には、間接関係抽出部１２０は、間接関係情報を以下のように生成する。
まず、間接関係抽出部１２０は、間接関係ルール内の依存元要素に対応する要素と、間接関係ルール内の依存先要素に対応する要素と、を対応情報群から抽出する。間接関係ルール内の依存元要素に対応する要素は間接依存元となり、間接関係ルール内の依存先要素に対応する要素は間接依存先となる。
また、間接関係抽出部１２０は、間接関係ルールから間接依存種類を抽出する。
さらに、間接関係抽出部１２０は、対応情報群に含まれるそれぞれの直接関係情報から直接依存頻度を抽出し、抽出された直接依存頻度を用いて間接依存頻度を算出する。
そして、間接関係抽出部１２０は、間接依存元と間接依存先と間接依存種類と間接依存頻度とを含んだ間接関係情報を生成する。
【００４８】
図４、図５および図６に基づいて、ステップＳ１２６を具体的に説明する。
図５に含まれる「Ｎｏ．１」の間接関係ルールにおいて、第１直接依存種類に対応する第１直接関係情報は図４に含まれる３つ目の直接関係情報であり、第２直接依存種類に対応する第２直接関係情報は図４に含まれる４つ目の直接関係情報である。
第１直接関係情報に含まれる直接依存頻度は１であり、第２直接関係情報に含まれる直接依存頻度は１であり、これらの直接依存頻度を用いて算出される間接依存頻度は１（＝１×１）である。
「Ｎｏ．１」の間接関係ルールにおいて、依存元要素は関数βであり、依存先要素は関数αである。
関数βは、第２直接依存種類に対応する直接依存元である。第２直接依存種類に対応する直接依存元とは、第２直接関係情報に含まれる直接依存元である。つまり、変数βは、ソースコード「ｆｉｌｅ１．ｃ」の関数「ｆｕｎｃ２（）」である。
変数αは、第１直接依存種類に対応する直接依存元である。第１直接依存種類に対応する直接依存元とは、第１直接関係情報に含まれる直接依存元である。つまり、変数αは、ソースコード「ｆｉｌｅ１．ｃ」の関数「ｆｕｎｃ１（）」である。
間接関係抽出部１２０は、間接依存元と間接依存先と間接依存種類と間接依存頻度とを含んだ間接関係情報を生成し、生成された間接関係情報を間接関係リスト２４０に追加する。これにより、図６の間接関係リスト２４０に１つ目の間接関係情報が追加される。
【００４９】
図７に戻り、ステップＳ１２７から説明を続ける。
ステップＳ１２７において、間接関係抽出部１２０は、未選択の対応情報群があるか判定する。
未選択の対応情報群がある場合、処理はステップＳ１２４に戻る。
未選択の対応情報群がない場合、処理はステップＳ１２８に進む。
【００５０】
ステップＳ１２８において、間接関係抽出部１２０は、未選択の間接関係ルールがあるか判定する。
未選択の間接関係ルールがある場合、処理はステップＳ１２１に戻る。
未選択の間接関係ルールがない場合、間接関係抽出処理（Ｓ１２０）は終了する。
【００５１】
＊＊＊実施の形態１の効果＊＊＊
直接的な依存関係を順に辿っても到達しない間接的な依存関係を抽出することが可能になる。
具体的には、図８に示すような間接関係を抽出することが可能である。実線の矢印は直接関係を意味し、上下矢印はパターンマッチを意味し、一点鎖線の矢印は間接関係を意味する。
図８において、直接関係情報は、関数「ｆｕｎｃ１（）」から変数「ｖａｒｉａｂｌｅ」への書込み、および、関数「ｆｕｎｃ２（）」から変数「ｖａｒｉａｂｌｅ１」の参照である。
また、間接関係ルールは、関数αから変数γへの書込み、関数βから変数ωの参照、および、変数γと変数ωとの一致である。この間接関係ルールが成立する場合の間接関係は、関数βから関数αへの間接関係である。
直接関係情報を間接関係ルールとパターンマッチングすると、関数「ｆｕｎｃ２（）」から関数「ｆｕｎｃ１（）」への間接関係が得られる。
【００５２】
さらに、直接的な依存関係を順に辿ることで到達可能な間接的な依存関係を抽出することも可能である。
具体的には、図９に示すような間接関係を抽出することが可能である。実線の矢印、上下矢印および一点鎖線の矢印の意味は、図８と同じである。
図９において、直接関係情報は、関数「ｆｕｎｃ２（）」から関数「ｆｕｎｃ３（）」の呼出し、および、関数「ｆｕｎｃ３（）」から関数「ｆｕｎｃ４（）」の呼出しである。
また、間接関係ルールは、関数αから関数γの呼出し、関数βから関数ωの呼出し、および、関数γと関数βとの一致である。この間接関係ルールが成立する場合の間接関係は、関数αから関数ωへの間接関係である。
直接関係情報を間接関係ルールとパターンマッチングすると、関数「ｆｕｎｃ２（）」から関数「ｆｕｎｃ４（）」への間接関係が得られる。
【００５３】
＊＊＊他の構成＊＊＊
間接関係ルールは、図５に示したルールに限られるものではない。
間接関係ルール内の直接依存種類の数は、３つ以上であってもよい。
間接関係ルール内の要素関係は、３つ以上の要素の関係であってもよい。
間接関係ルール内の依存元要素と依存先要素とのそれぞれは、複数の要素であってもよい。
間接関係ルールリスト２３０に含まれる間接関係ルールの種類は、到達不可の間接関係ルールと到達可能な間接関係ルールとのいずれか一方であってもよい。到達不可の間接関係ルールとは、直接的な依存関係を順に辿っても到達しない間接的な依存関係を対象とする間接関係ルールであり、到達可能な間接関係ルールとは、直接的な依存関係を順に辿ることで到達可能な間接的な依存関係を対象とする間接関係ルールである。
【００５４】
実施の形態２．
システム間の間接的な依存関係を抽出する形態について、主に実施の形態１と異なる点を、図１０から図１５に基づいて説明する。
【００５５】
＊＊＊構成の説明＊＊＊
依存関係抽出装置１００の構成は、実施の形態１と同じである。
但し、記憶部１９１には、互いに通信する複数のシステムに対応する複数のソースコード２１０が予め記憶される。
＊＊＊動作の説明＊＊＊
図１０に基づいて、依存関係抽出方法を説明する。
ステップＳ２１０は直接関係抽出処理である。
ステップＳ２１０において、直接関係抽出部１１０は、複数のソースコード２１０を用いて、複数のシステムに対応する複数の直接関係リスト２２０を生成する。記憶部１９１は、生成された複数の直接関係リスト２２０を記憶する。
具体的には、直接関係抽出部１１０は、システム毎に、システムに対応するソースコード２１０を用いて、システムに対応する直接関係リスト２２０を生成する。これにより、システム毎の直接関係リスト２２０が生成される。
それぞれの直接関係リスト２２０を生成する方法は、実施の形態１と同じである。
それぞれの直接関係リスト２２０の構成は、実施の形態１と同じである。
【００５６】
図１１に、具体的なソースコード２１０を示す。
図１１の（１）は、システム１のソースコード２１０である。システム１のソースコード２１０には、関数「ｆｕｎｃ５（）」および関数「ｓｅｎｄ（）」といった要素を使用するための記載が含まれている。関数「ｓｅｎｄ（）」は、データを送信するための送信関数である。
図１１の（２）は、システム２のソースコード２１０である。システム２のソースコード２１０には、関数「ｆｕｎｃ６（）」、関数「ｆｕｎｃ７（）」、関数「ｒｅｃｖ（）」および関数「ｓｅｎｄ（）」といった要素を使用するための記載が含まれている。関数「ｒｅｃｖ（）」は、データを受信するための受信関数である。
図１１の（３）は、システム３のソースコード２１０である。システム３のソースコード２１０には、関数「ｆｕｎｃ８（）」および関数「ｒｅｃｖ（）」といった要素を使用するための記載が含まれている。
【００５７】
図１２に、図１１のソースコード２１０を用いて生成される直接関係リスト２２０を示す。
図１２の（１）は、システム１に対応する直接関係リスト２２０である。システム１に対応する直接関係リスト２２０は、１つの直接関係情報を含んでいる。その直接関係情報は、ソースコード「ｆｉｌｅ３．ｃ」の関数「ｆｕｎｃ５（）」が送信関数「ｓｅｎｄ（）」を呼び出す、という直接関係を示している。直接依存頻度は１である。
図１２の（２）は、システム２に対応する直接関係リスト２２０である。システム２に対応する直接関係リスト２２０は、２つの直接関係情報を含んでいる。１つ目の直接関係情報は、ソースコード「ｆｉｌｅ４．ｃ」の関数「ｆｕｎｃ６（）」が受信関数「ｒｅｃｖ（）」を呼び出す、という直接関係を示している。直接依存頻度は１である。２つ目の直接関係情報は、ソースコード「ｆｉｌｅ４．ｃ」の関数「ｆｕｎｃ７（）」が送信関数「ｓｅｎｄ（）」を呼び出す、という直接関係を示している。直接依存頻度は１である。  図１２の（３）は、システム３に対応する直接関係リスト２２０である。システム３に対応する直接関係リスト２２０は、１つの直接関係情報を含んでいる。その直接関係情報は、ソースコード「ｆｉｌｅ５．ｃ」の関数「ｆｕｎｃ８（）」が受信関数「ｒｅｃｖ（）」を呼び出す、という直接関係を示している。直接依存頻度は１である。
【００５８】
ステップＳ２２０は間接関係抽出処理である。
ステップＳ２２０において、間接関係抽出部１２０は、複数の直接関係リスト２２０と間接関係ルールリスト２５０とを用いてシステム間の間接関係を抽出し、抽出された間接関係を示す間接関係リスト２４０を生成する。記憶部１９１は、生成された間接関係リスト２４０を記憶する。間接関係ルールリスト２５０は、記憶部１９１に予め記憶される。
【００５９】
間接関係ルールリスト２５０は、実施の形態１で説明した間接関係ルールリスト２３０と同じく、間接関係ルールのリストである。
間接関係ルールは、複数の直接依存種類と、システム関係と、依存元要素と、間接依存先となる依存先要素とを含む。
システム関係は、システム間に成り立つ関係である。
【００６０】
具体的には、間接関係抽出部１２０は、以下のように間接依存元と間接依存先とを抽出する。
間接関係抽出部１２０は、間接関係ルールに含まれる複数の直接依存種類とシステム関係とに対応する複数の直接関係情報を複数の直接関係リスト２２０から抽出する。
そして、間接関係抽出部１２０は、抽出された複数の直接関係情報に含まれる複数の直接依存元と複数の直接依存先との中から、間接関係ルールに含まれる依存元要素に対応する要素を前記間接依存元として抽出する。
また、間接関係抽出部１２０は、抽出された複数の直接関係情報に含まれる複数の直接依存元と複数の直接依存先との中から、間接関係ルールに含まれる依存先要素に対応する要素を間接依存先として抽出する。
【００６１】
図１３に、具体的な間接関係ルールリスト２５０を示す。
間接関係ルールリスト２５０は、１つの間接関係ルールを含んでいる。
その間接関係ルールは、間接関係条件と間接関係とを含んでいる。
間接関係条件は、複数の直接依存種類とシステム関係とを含んでいる。
間接関係は、依存元要素と依存先要素と間接依存種類とを含んでいる。
【００６２】
第１直接依存種類は、システムＡの関数Ｂから送信関数Ｃの呼出しである。システムＡは第１直接依存種類を含む第１直接関係情報に対応するシステムであり、関数Ｂは第１直接関係情報に含まれる直接依存元であり、送信関数Ｃは第１直接関係情報に含まれる直接依存先である。
第２直接依存種類は、システムＤの関数Ｅから受信関数Ｆの呼出しである。システムＤは第２直接依存種類を含む第２直接関係情報に対応するシステムであり、関数Ｅは第２直接関係情報に含まれる直接依存元であり、受信関数Ｆは第２直接関係情報に含まれる直接依存先である。
システム関係は、第１直接関係情報に対応するシステムと第２直接関係情報に対応するシステムとの関係である。具体的には、システム関係は、システムＡとシステムＤとの不一致である。
依存元要素は、第２直接関係情報に含まれる直接依存元である。具体的には、依存元要素は、関数Ｅである。
依存先要素は、第１直接関係情報に含まれる直接依存元である。具体的には、依存先要素は、関数Ｂである。
間接依存種類は、通信媒介である。通信媒介は、通信を媒介とする間接的な依存関係を意味する。
【００６３】
図１４に、図１３の間接関係ルールリスト２５０を用いて生成される間接関係リスト２４０を示す。
間接関係リスト２４０は、３つの間接関係情報を含んでいる。
それぞれの間接関係情報は、間接依存元と間接依存先と間接依存種類と間接依存頻度との組である。
【００６４】
１つ目の間接関係情報は、システム２のソースコード「ｆｉｌｅ４．ｃ」の関数「ｆｕｎｃ６（）」が、通信を媒介にして、システム１のソースコード「ｆｉｌｅ３．ｃ」の関数「ｆｕｎｃ５（）」から影響を受ける、という間接関係を示している。間接依存頻度は１である。
２つ目の間接関係情報は、システム３のソースコード「ｆｉｌｅ５．ｃ」の関数「ｆｕｎｃ８（）」が、通信を媒介にして、システム１のソースコード「ｆｉｌｅ３．ｃ」の関数「ｆｕｎｃ５（）」から影響を受ける、という間接関係を示している。間接依存頻度は１である。
３つ目の間接関係情報は、システム３のソースコード「ｆｉｌｅ５．ｃ」の関数「ｆｕｎｃ８（）」が、通信を媒介にして、システム２のソースコード「ｆｉｌｅ４．ｃ」の関数「ｆｕｎｃ７（）」から影響を受ける、という間接関係を示している。間接依存頻度は１である。
【００６５】
図１５に基づいて、間接関係抽出処理（Ｓ２２０）の手順を説明する。
ステップＳ２２１において、間接関係抽出部１２０は、間接関係ルールリスト２５０から、未選択の間接関係ルールを１つ選択する。
【００６６】
ステップＳ２２２からステップＳ２２７は、ステップＳ２２１で選択された間接関係ルールを対象に実行される。
【００６７】
ステップＳ２２２において、間接関係抽出部１２０は、複数の直接関係リスト２２０から、対応情報群を抽出する。対応情報群を抽出する方法は、実施の形態１で説明したステップＳ１２２と同じである。
【００６８】
ステップＳ２２３において、間接関係抽出部１２０は、対応情報群があるか判定する。Ｓ２２２で少なくとも１つの対応情報群が抽出された場合、間接関係抽出部１２０は、対応情報群があると判定する。
対応情報群がある場合、処理はステップＳ２２４に進む。
対応情報群がない場合、処理はステップＳ２２８に進む。
【００６９】
ステップＳ２２４において、間接関係抽出部１２０は、未選択の対応情報群を１つ選択する。
【００７０】
ステップＳ２２５およびステップＳ２２６は、ステップＳ２２４で選択された対応情報群を対象に実行される。
【００７１】
ステップＳ２２５において、間接関係抽出部１２０は、間接関係ルール内のシステム関係に対応する複数のシステムに、間接関係ルール内のシステム関係があるか判定する。
具体的には、間接関係抽出部１２０は、間接関係ルール内のシステム関係に対応する複数のシステムを選択する。そして、間接関係抽出部１２０は、間接関係ルール内の要素関係が、選択された複数のシステムにあるか判定する。
間接関係ルール内のシステム関係に対応する複数のシステムに、間接関係ルール内のシステム関係がある場合、処理はステップＳ２２６に進む。
間接関係ルール内のシステム関係に対応する複数のシステムに、間接関係ルール内のシステム関係がない場合、処理はステップＳ２２７に進む。
【００７２】
ステップＳ２２６において、間接関係抽出部１２０は、間接関係情報を生成し、生成された間接関係情報を間接関係リスト２４０に追加する。間接関係情報を生成する方法は、実施の形態１で説明したステップＳ１２６と同じである。
【００７３】
ステップＳ２２７において、間接関係抽出部１２０は、未選択の対応情報群があるか判定する。
未選択の対応情報群がある場合、処理はステップＳ２２４に戻る。
未選択の対応情報群がない場合、処理はステップＳ２２８に進む。
【００７４】
ステップＳ２２８において、間接関係抽出部１２０は、未選択の間接関係ルールがあるか判定する。
未選択の間接関係ルールがある場合、処理はステップＳ２２１に戻る。
未選択の間接関係ルールがない場合、間接関係抽出処理（Ｓ２２０）は終了する。
【００７５】
＊＊＊実施の形態２の効果＊＊＊
システム間の間接的な依存関係を抽出することが可能になる。
【００７６】
＊＊＊他の構成＊＊＊
一般的に、システムは、コンピュータまたはコンピュータの集合である。但し、実施の形態２におけるシステムは、タスク、プロセスまたはスレッドであってもよい。つまり、実施の形態２は、タスク間、プロセス間またはスレッド間の間接的な依存関係を抽出するために利用することも可能である。
【００７７】
実施の形態３．
システム間の間接的な依存関係から、通信が行われないシステム間の間接的な依存関係を除去する形態について、主に実施の形態２と異なる点を、図１６から図２０に基づいて説明する。
【００７８】
＊＊＊構成の説明＊＊＊
図１６に基づいて、依存関係抽出装置１００の構成を説明する。
依存関係抽出装置１００は、無効関係除去部１３０を機能構成の要素として備える。無効関係除去部１３０の機能については後述する。
【００７９】
＊＊＊動作の説明＊＊＊
図１７に基づいて、依存関係抽出方法を説明する。
ステップＳ２１０およびステップＳ２２０は、実施の形態２と同じである。
【００８０】
ステップＳ２３０は無効関係抽出処理である。
ステップＳ２３０において、無効関係除去部１３０は、事象データ２６０を用いて、間接関係リスト２４０から、無効関係を除去する。
【００８１】
事象データ２６０は、第１通信システムと第２通信システムとの組を示すデータである。事象データ２６０は、記憶部１９１に予め記憶される。
第１通信システムは、互いに通信する２つのシステムのうちの一方のシステムである。具体的には、第１通信システムは、通信相手のシステムにデータを送信する通信元システムである。
第２通信システムは、互いに通信する２つのシステムのうちの他方のシステムである。具体的には、第２通信システムは、通信相手のシステムからデータを受信する通信先システムである。
【００８２】
無効関係は、間接依存元と間接依存先との組のうち、第１通信システムと第２通信システムとの組み合わせに対応しない組の間接関係である。
第１通信システムと第２通信システムとの組み合わせに対応しない組は、第１通信システムに対応する直接関係情報から抽出された要素と第２通信システムに対応する直接関係情報から抽出された要素との組み合わせとは異なる組である。具体的には、第１通信システムに対応する直接関係情報から抽出される要素は間接依存先であり、第２通信システムに対応する直接関係情報から抽出される要素は間接依存元である。
【００８３】
具体的には、無効関係除去部１３０は、間接関係リスト２４０に含まれる間接関係情報毎に、間接関係情報に含まれる間接依存元と間接依存先との組が、事象データ２６０に含まれる第１通信システムと第２通信システムとの組み合わせに対応するか判定する。そして、無効関係除去部１３０は、第１通信システムと第２通信システムとのいずれの組み合わせとも対応しない間接依存元と間接依存先との組を含んだ間接関係情報を、間接関係リスト２４０から除去する。
【００８４】
図１８に、具体的な事象データ２６０を示す。
事象データ２６０は、２つの事象情報を含んでいる。
それぞれの事象情報は、第１通信システムと第２通信システムとを含んでいる。
「Ｎｏ．１」の事象情報は、システム１からシステム２への送信を示している。
「Ｎｏ．２」の事象情報は、システム２からシステム３への送信を示している。
【００８５】
事象データ２６０は、動的なデータを元に生成することができる。
動的なデータとは、システムを動作させることによって得られるデータである。具体的には、動的なデータは、システム間で通信される通信データである。
【００８６】
図１９に、図１４の間接関係リスト２４０と図１８の事象データ２６０とを用いて生成される間接関係リスト２４０を示す。
図１４において、１つ目の間接関係情報に含まれる間接依存元と間接依存先との組に対応するシステムの組み合わせは、システム２とシステム１との組み合わせである。システム２とシステム１との組み合わせは、図１８において、「Ｎｏ．１」の事象情報が示す組み合わせと同じである。したがって、１つ目の間接関係情報は除去されない。
図１４において、２つ目の間接関係情報に含まれる間接依存元と間接依存先との組に対応するシステムの組み合わせは、システム３とシステム１との組み合わせである。システム３とシステム１との組み合わせは、図１８において、いずれの事象情報が示す組み合わせとも異なる。したがって、２つ目の間接関係情報は除去される。
図１４において、３つ目の間接関係情報に含まれる間接依存元と間接依存先との組に対応するシステムの組み合わせは、システム３とシステム２との組み合わせである。システム３とシステム２との組み合わせは、図１８において、「Ｎｏ．２」の事象情報が示す組み合わせと同じである。したがって、３つ目の間接関係情報は除去されない。
その結果、図１９の間接関係リスト２４０が生成される。
【００８７】
図２０に基づいて、無効関係抽出処理（Ｓ２３０）の手順を説明する。
ステップＳ２３１において、無効関係除去部１３０は、間接関係リスト２４０から、未選択の間接関係情報を１つ選択する。
【００８８】
ステップＳ２３２からステップＳ２３５は、ステップＳ２３１で選択された間接関係情報を対象に実行される。
【００８９】
ステップＳ２３２において、無効関係除去部１３０は、事象データ２６０から、未選択の事象情報を１つ選択する。
【００９０】
ステップＳ２３３は、ステップＳ２３２で選択された事象情報を対象に実行される。
【００９１】
ステップＳ２３３において、無効関係除去部１３０は、間接関係情報が示す間接関係が有効関係であるか判定する。
具体的には、無効関係除去部１３０は、間接関係情報に含まれる間接依存元と間接依存先との組が、事象情報に含まれる第１通信システムと第２通信システムとの組み合わせに対応する組であるか判定する。間接依存元と間接依存先との組が第１通信システムと第２通信システムとの組み合わせに対応する組である場合、間接関係情報が示す間接関係は有効関係である。
間接関係情報が示す間接関係が有効関係である場合、処理はステップＳ２３６に進む。
間接関係情報が示す間接関係が有効関係でない場合、処理はステップＳ２３４に進む。
【００９２】
ステップＳ２３４において、無効関係除去部１３０は、未選択の事象情報があるか判定する。
未選択の事象情報がある場合、処理はステップＳ２３２に戻る。
未選択の事象情報がない場合、処理はステップＳ２３５に進む。
【００９３】
ステップＳ２３５において、無効関係除去部１３０は、間接関係情報を間接関係リスト２４０から除去する。
【００９４】
ステップＳ２３６において、無効関係除去部１３０は、未選択の間接関係情報があるか判定する。
未選択の間接関係情報がある場合、処理はステップＳ２３１に戻る。
未選択の間接関係情報がない場合、無効関係抽出処理（Ｓ２３０）は終了する。
【００９５】
＊＊＊実施の形態３の構成＊＊＊
システム間の間接的な依存関係から、通信が行われないシステム間の間接的な依存関係を除去することが可能になる。
つまり、通信が行われるシステム間の間接的な依存関係を抽出することが可能になる。
【００９６】
＊＊＊実施の形態の補足＊＊＊
実施の形態において、依存関係抽出装置１００の機能はハードウェアで実現してもよい。
図２１に、依存関係抽出装置１００の機能がハードウェアで実現される場合の構成を示す。
依存関係抽出装置１００は処理回路９９０を備える。処理回路９９０はプロセッシングサーキットリともいう。
処理回路９９０は、実施の形態で説明した「部」の機能を実現する専用の電子回路である。この「部」には記憶部１９１も含まれる。
具体的には、処理回路９９０は、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックＩＣ、ＧＡ、ＡＳＩＣ、ＦＰＧＡまたはこれらの組み合わせである。ＧＡはＧａｔｅ  Ａｒｒａｙの略称であり、ＡＳＩＣはＡｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔの略称であり、ＦＰＧＡはＦｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙの略称である。
【００９７】
依存関係抽出装置１００は、処理回路９９０を代替する複数の処理回路を備えてもよい。複数の処理回路は、「部」の機能を分担する。
【００９８】
依存関係抽出装置１００の機能は、ソフトウェアとハードウェアとの組み合わせで実現してもよい。つまり、「部」の機能の一部をソフトウェアで実現し、「部」の機能の残りをハードウェアで実現してもよい。
【００９９】
実施の形態は、好ましい形態の例示であり、本発明の技術的範囲を制限することを意図するものではない。実施の形態は、部分的に実施してもよいし、他の形態と組み合わせて実施してもよい。フローチャート等を用いて説明した手順は、適宜に変更してもよい。
【符号の説明】
【０１００】
１００  依存関係抽出装置、１１０  直接関係抽出部、１２０  間接関係抽出部、１３０  無効関係除去部、１９１  記憶部、２１０  ソースコード、２２０  直接関係リスト、２３０  間接関係ルールリスト、２４０  間接関係リスト、２５０  間接関係ルールリスト、２６０  事象データ、９０１  プロセッサ、９０２  メモリ、９０３  補助記憶装置、９９０  処理回路。
【図１】
2017187537.tif 000003
【図２】
2017187537.tif 000004
【図３】
2017187537.tif 000005
【図４】
2017187537.tif 000006
【図５】
2017187537.tif 000007
【図６】
2017187537.tif 000008
【図７】
2017187537.tif 000009
【図８】
2017187537.tif 000010
【図９】
2017187537.tif 000011
【図１０】
2017187537.tif 000012
【図１１】
2017187537.tif 000013
【図１２】
2017187537.tif 000014
【図１３】
2017187537.tif 000015
【図１４】
2017187537.tif 000016
【図１５】
2017187537.tif 000017
【図１６】
2017187537.tif 000018
【図１７】
2017187537.tif 000019
【図１８】
2017187537.tif 000020
【図１９】
2017187537.tif 000021
【図２０】
2017187537.tif 000022
【図２１】
2017187537.tif 000023
【国際調査報告】
2017187537.tif 000024
2017187537.tif 000025
2017187537.tif 000026
2017187537.tif 000027