(57)【要約】【課題】層構造化されたシステムのモジュール間の関連情報を、層が異なるモジュール間の関連情報を含めて抽出する。【解決手段】ソースファイルに記述されているモジュールとシステムルールとして与えられる層構造情報によって示される層とを対応づける層対応付け手段１４と、対応付けによって層別に分けられるモジュールの記述内容から層内のモジュール間の呼出関係を示す層内関連情報を抽出する層内関連抽出手段１５と、システムルールとして与えられる層間呼出情報と設定ファイルとして与えられる層間呼出関係情報とに基づいて、層別に分けられるモジュールの記述内容から異なる層のモジュール間の呼出関係を示す層間関連情報を抽出する層間関連抽出手段１６と、層別のモジュール情報と層内関連情報と層間関連情報とを対応づけて、対象システム全体におけるモジュール間の呼出関係を示す情報を生成する関連情報マージ手段１７とを備える。【選択図】図１
2010122907.tif 000002
【特許請求の範囲】
【請求項１】
層構造化されたシステムのモジュール間の呼出関係を示す関連情報を抽出する層構造システム関連抽出装置であって、
少なくとも対象システムにおける層の構造と、異なる層のモジュール間の呼び出し方法とが定義されたシステムルールと、対象システムの実装ファイルであるソースファイルと、対象システムの実装ファイルであり異なる層のモジュールの呼び出しのためのモジュール間の呼出関係が定義される設定ファイルとが与えられ、
前記システムルールから対象システムにおける層の構造を示す層構造情報を読み出す層構造情報読出手段と、
前記システムルールから対象システムにおける異なる層のモジュール間の呼び出し方法を示す層間呼出情報を読み出す層間呼出情報読出手段と、
前記設定ファイルから対象システムにおけるモジュールの呼び出しのためのモジュール間の呼出関係を示す層間呼出関係情報を読み出す層間呼出関係情報読出手段と、
前記ソースファイルに記述されているモジュールと、前記層構造情報によって示される層とを対応づける層対応付け手段と、
前記層対応付け手段によって層別に分けられるモジュールの記述内容から、層内のモジュール間の呼出関係を示す層内関連情報を抽出する層内関連抽出手段と、
前記層間呼出情報読出手段によって読み出される層間呼出情報と、前記層間呼出関係情報読出手段によって読み出される層間呼出関係情報とに基づいて、前記層対応付け手段によって層別に分けられるモジュールの記述内容から、異なる層のモジュール間の呼出関係を示す層間関連情報を抽出する層間関連抽出手段と、
前記層対応付け手段によって得られる層別のモジュール情報と、前記層内関連抽出手段によって抽出される層内関連情報と、前記層間関連抽出手段によって抽出される層間関連情報とを対応づけて、対象システム全体におけるモジュール間の呼出関係を示す情報を生成する関連情報マージ手段とを備えた
ことを特徴とする層構造システム関連抽出装置。
【請求項２】
関連情報マージ手段によって生成された対象システム全体におけるモジュール間の呼出関係を示す情報に基づいて、層単位の呼び出し順序に従って、モジュール間の呼出関係を表示させる表示手段を備えた
請求項１に記載の層構造システム関連抽出装置。
【請求項３】
層間関連抽出手段は、層間呼出情報読出手段によって読み出される２以上の層間呼出情報を入力とする
請求項１または請求項２に記載の層構造システム関連抽出装置。
【請求項４】
少なくとも対象システムにおける層の構造と、異なる層のモジュール間の呼び出し方法と、対象システムにおけるモジュール間の呼び出し違反とが定義されたシステムルールが与えられ、
前記システムルールからモジュール間の呼び出し違反の定義を示す関連情報違反を読み出す関連情報違反読出手段と、
前記関連情報違反読出手段によって読み出される関連情報違反に基づき、抽出された層内関連情報または層間関連情報で示される呼出関係に対する違反を検出する関連違反検出手段とを備えた
請求項１から請求項３のうちのいずれか１項に記載の層構造システム関連抽出装置。
【請求項５】
関連違反検出手段は、違反を検出した呼出関係を示す関連情報に、違反である旨を示す情報を付加し、
表示手段は、違反である旨を示す情報が付加された関連情報が示すモジュール間の呼出関係を、違反である旨を示す情報が付加されていない関連情報が示すモジュール間の呼出関係と区別して表示する
請求項４に記載の層構造システム関連抽出装置。
【請求項６】
層構造化されたシステムのモジュール間の呼出関係を示す関連情報を抽出するための層構造システム関連抽出方法であって、
少なくとも対象システムにおける層の構造と、異なる層のモジュール間の呼び出し方法とが定義されたシステムルールから、対象システムにおける層の構造を示す層構造情報を読み出すステップと、
前記システムルールから、対象システムにおける異なる層のモジュール間の呼び出し方法を示す層間呼出情報を読み出すステップと、
対象システムの実装ファイルであり異なる層のモジュールの呼び出しのためのモジュール間の呼出関係が定義される設定ファイルから、対象システムにおけるモジュールの呼び出しのためのモジュール間の呼出関係を示す層間呼出関係情報を読み出すステップと、
対象システムの実装ファイルであるソースファイルに記述されているモジュールと、前記層構造情報によって示される層とを対応づけるステップと、
前記対応付けによって層別に分けられるモジュールの記述内容から、層内のモジュール間の呼出関係を示す層内関連情報を抽出するステップと、
前記層間呼出情報と前記層間呼出関係情報とに基づいて、前記対応付けによって層別に分けられるモジュールの記述内容から、異なる層のモジュール間の呼出関係を示す層間関連情報を抽出するステップと、
層別のモジュール情報と、前記抽出される層内関連情報と、前記層間関連抽出手段によって抽出される層間関連情報とを対応づけて、対象システム全体におけるモジュール間の呼出関係を示す情報を生成するステップとを含む
ことを特徴とする層構造システム関連抽出方法。
【請求項７】
生成された対象システム全体におけるモジュール間の呼出関係を示す情報に基づいて、層単位の呼び出し順序に従って、モジュール間の呼出関係を表示するステップを含む
請求項６に記載の層構造システム関連抽出方法。
【請求項８】
層構造化されたシステムのモジュール間の呼出関係を示す関連情報を抽出するための層構造システム関連抽出プログラムであって、
コンピュータに、
少なくとも対象システムにおける層の構造と、異なる層のモジュール間の呼び出し方法とが定義されたシステムルールから、対象システムにおける層の構造を示す層構造情報を読み出す処理と、
前記システムルールから対象システムにおける異なる層のモジュール間の呼び出し方法を示す層間呼出情報を読み出す処理と、
対象システムの実装ファイルであり異なる層のモジュールの呼び出しのためのモジュール間の呼出関係が定義される設定ファイルから、対象システムにおけるモジュールの呼び出しのためのモジュール間の呼出関係を示す層間呼出関係情報を読み出す処理と、
対象システムの実装ファイルであるソースファイルに記述されているモジュールと、前記層構造情報によって示される層とを対応づける処理と、
前記対応付けによって層別に分けられるモジュールの記述内容から、層内のモジュール間の呼出関係を示す層内関連情報を抽出する処理と、
前記層間呼出情報と前記層間呼出関係情報とに基づいて、前記対応付けによって層別に分けられるモジュールの記述内容から、異なる層のモジュール間の呼出関係を示す層間関連情報を抽出する処理と、
層別のモジュール情報と、前記抽出される層内関連情報と、前記層間関連抽出手段によって抽出される層間関連情報とを対応づけて、対象システム全体におけるモジュール間の呼出関係を示す情報を生成する処理とを
実行させるための層構造システム関連抽出プログラム。
【請求項９】
コンピュータに、
生成された対象システム全体におけるモジュール間の呼出関係を示す情報に基づいて、層単位の呼び出し順序に従って、モジュール間の呼出関係を表示させる処理を実行させる
請求項８に記載の層構造システム関連抽出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、層構造化されたシステムのモジュール間の関連情報を抽出する層構造システム関連抽出装置、層構造システム関連抽出方法および層構造システム関連抽出プログラムに関する。
【背景技術】
【０００２】
一般的に、層構造化されたシステムの資産は、アプリケーションフレームワークを用いて構成されているが、アプリケーションフレームワークの資産には、大きく３つの種類がある。第１に、汎用クラスといったアプリケーションフレームワークの自動生成ソースファイルに属する類のものである。第２に、実装クラスといったアプリケーションフレームワークの実装ソースファイルに属する類のものである。第３に、設定ファイルといったアプリケーションフレームワークの外部ファイルに属する類のものである。ここで、ソースファイルはあるプログラミング言語で記述される。また、外部ファイルはアプリケーションフレームワークごとの形式で記述される。
【０００３】
層構造化されたシステム（以下、層構造システムという。）のモジュール間の関連情報を抽出する技術に関連する事項を記載している文献として、例えば、特許文献１〜特許文献４がある。
【０００４】
例えば、特許文献１に記載されているリバースエンジニアリングシステムでは、次のように関連情報を抽出する。すなわち、ソースプログラムから仕様情報を抽出し、抽出した仕様情報を抽象化して階層化した抽象仕様情報を作成してメモリに格納する。メモリに格納した抽象仕様情報を選択的に読み出し、表示部に表示させる。
【０００５】
また、例えば特許文献２には、ソフトウェアを矛盾なくインストールするためのソフトウェアパッケージ管理方法が記載されている。特許文献２に記載されているソフトウェアパッケージ管理方法では、ソフトウェアパッケージ自身の情報と、そのソフトウェアパッケージが別のどのソフトウェアパッケージを必要としているかという依存情報と、またどのソフトウェアパッケージと同時にインストールできないかという排他情報とを保持し、この情報によりソフトウェア自身をノードに対応させ、ソフトウェア情報間の関連をブランチに対応させて、有効グラフで表す。
【０００６】
また、例えば特許文献３には、ソフトウェアシステムの構造を多角的に解析して、その結果を評価者に理解し易く表示するためのシステム構造評価方式が記載されている。特許文献３に記載されているシステム構造評価方式では、評価対象粗酒とウェアシステムから予め指定された呼出し・参照関係を示すキー情報を抽出し、抽出結果に基づきプログラムモジュール相互の階層構造を識別する。また、キー情報の抽出結果と識別結果に基づきプログラムモジュールおよびデータモジュール間の参照関係をクラスタ処理するとともに、プログラムモジュール相互の呼出し関係の正常性を確認し、処理結果を図表に表示する。
【０００７】
また、例えば特許文献４には、プログラムの階層構造を自動的に解析して、関連するプログラムをマルチ表示するプログラミング支援装置が記載されている。
【０００８】
【特許文献１】特開平９−１０１８８４号公報
【特許文献２】特開２００５−０４４０１１号公報
【特許文献３】特開昭６１−０６５３３３号公報
【特許文献４】特開平０２−２３６７２１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
問題点は、層構造化されたシステムを対象にした場合に、異なる層のモジュール間の関連情報の抽出がされないということである。その理由は、システムの大規模化により層化されたシステム構造が用いられる場合があるが、異なる層のモジュール間の呼び出し方法は、アプリケーションフレームワークにより設定または隠蔽され独自の呼び出し方法が用いられることから、同じ層内のモジュール間の関連情報の抽出方法では抽出できないからである。
【００１０】
すなわち、リバースエンジニアリングツールの多くは、上記第１の資産および第２の資産の情報を元に、関連情報の抽出を行っている。しかし、最近のアプリケーションフレームワークでは、プログラム実行時に呼び出し先のプログラムが初めて決定される仕組みや、上記第３の資産である外部ファイルに依存関係（呼び出しのためのモジュール間の呼出関係）を記述させ、メンテナンス性向上のためにソースファイル中に依存関係をなるべく記述させない仕組みをとっている場合がある。このため、ソースファイルのみの解析では、資産全般に渡る関連情報を復元することが難しくなっている。
【００１１】
設定ファイルでは、従来ソースファイル中に記述されていた外部ライブラリまたは他のソースファイルへの依存関係を抽出、形式化し、開発者にとって複雑になりがちな依存関係の管理を簡素化する目的がある。そこで、アプリケーションフレームワークで構成された資産の解析には、ソースファイルだけでなく、設定ファイルからも依存関係を抽出する必要がある。
【００１２】
そこで、本発明は、層構造化されたシステムのモジュール間の関連情報を、層が異なるモジュール間の関連情報を含めて抽出することが可能な層構造システム、関連抽出装置、層構造システム関連抽出方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明による層構造システム関連抽出装置は、層構造を持つシステムのモジュール間の呼出関係を示す関連情報を抽出する層構造システム関連抽出装置であって、少なくとも対象システムにおける層の構造と、異なる層のモジュール間の呼び出し方法とが定義されたシステムルールと、対象システムの実装ファイルであるソースファイルと、対象システムの実装ファイルであり異なる層のモジュールの呼び出しのためのモジュール間の呼出関係が定義される設定ファイルとが与えられ、システムルールから対象システムにおける層の構造を示す層構造情報を読み出す層構造情報読出手段と、システムルールから対象システムにおける異なる層のモジュール間の呼び出し方法を示す層間呼出情報を読み出す層間呼出情報読出手段と、設定ファイルから対象システムにおけるモジュールの呼び出しのためのモジュール間の呼出関係を示す層間呼出関係情報を読み出す層間呼出関係情報読出手段と、ソースファイルに記述されているモジュールと、層構造情報によって示される層とを対応づける層対応付け手段と、層対応付け手段によって層別に分けられるモジュールの記述内容から、層内のモジュール間の呼出関係を示す層内関連情報を抽出する層内関連抽出手段と、層間呼出情報読出手段によって読み出される層間呼出情報と、層間呼出関係情報読出手段によって読み出される層間呼出関係情報とに基づいて、層対応付け手段によって層別に分けられるモジュールの記述内容から、異なる層のモジュール間の呼出関係を示す層間関連情報を抽出する層間関連抽出手段と、層対応付け手段によって得られる層別のモジュール情報と、層内関連抽出手段によって抽出される層内関連情報と、層間関連抽出手段によって抽出される層間関連情報とを対応づけて、対象システム全体におけるモジュール間の呼出関係を示す情報を生成する関連情報マージ手段とを備えたことを特徴とする。
【００１４】
また、本発明による層構造システム関連抽出方法は、層構造を持つシステムのモジュール間の呼出関係を示す関連情報を抽出するための層構造システム関連抽出方法であって、少なくとも対象システムにおける層の構造と、異なる層のモジュール間の呼び出し方法とが定義されたシステムルールから、対象システムにおける層の構造を示す層構造情報を読み出すステップと、システムルールから、対象システムにおける異なる層のモジュール間の呼び出し方法を示す層間呼出情報を読み出すステップと、対象システムの実装ファイルであり異なる層のモジュールの呼び出しのためのモジュール間の呼出関係が定義される設定ファイルから、対象システムにおけるモジュールの呼び出しのためのモジュール間の呼出関係を示す層間呼出関係情報を読み出すステップと、対象システムの実装ファイルであるソースファイルに記述されているモジュールと、層構造情報によって示される層とを対応づけるステップと、対応付けによって層別に分けられるモジュールの記述内容から、層内のモジュール間の呼出関係を示す層内関連情報を抽出するステップと、層間呼出情報と層間呼出関係情報とに基づいて、対応付けによって層別に分けられるモジュールの記述内容から、異なる層のモジュール間の呼出関係を示す層間関連情報を抽出するステップと、層別のモジュール情報と、抽出される層内関連情報と、層間関連抽出手段によって抽出される層間関連情報とを対応づけて、対象システム全体におけるモジュール間の呼出関係を示す情報を生成するステップとを含むことを特徴とする。
【００１５】
また、本発明による層構造システム関連抽出プログラムは、層構造を持つシステムのモジュール間の呼出関係を示す関連情報を抽出するための層構造システム関連抽出プログラムであって、コンピュータに、少なくとも対象システムにおける層の構造と、異なる層のモジュール間の呼び出し方法とが定義されたシステムルールから、対象システムにおける層の構造を示す層構造情報を読み出す処理と、システムルールから対象システムにおける異なる層のモジュール間の呼び出し方法を示す層間呼出情報を読み出す処理と、対象システムの実装ファイルであり異なる層のモジュールの呼び出しのためのモジュール間の呼出関係が定義される設定ファイルから、対象システムにおけるモジュールの呼び出しのためのモジュール間の呼出関係を示す層間呼出関係情報を読み出す処理と、対象システムの実装ファイルであるソースファイルに記述されているモジュールと、層構造情報によって示される層とを対応づける処理と、対応付けによって層別に分けられるモジュールの記述内容から、層内のモジュール間の呼出関係を示す層内関連情報を抽出する処理と、層間呼出情報と層間呼出関係情報とに基づいて、対応付けによって層別に分けられるモジュールの記述内容から、異なる層のモジュール間の呼出関係を示す層間関連情報を抽出する処理と、層別のモジュール情報と、抽出される層内関連情報と、層間関連抽出手段によって抽出される層間関連情報とを対応づけて、対象システム全体におけるモジュール間の呼出関係を示す情報を生成する処理とを実行させることを特徴とする。
【発明の効果】
【００１６】
本発明によれば、層構造を持つシステムのモジュール間の関連情報を、層が異なるモジュール間の関連情報を含めて抽出することができる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施形態を図面を参照して説明する。まず、本発明の概要について説明する。図１は、本発明の概要を示すブロック図である。図１に示す層構造システム関連抽出装置１０は、層構造情報読出手段１１と、層間呼出情報読出手段１２と、層間呼出関係情報読出手段１３と、層対応付け手段１４と、層内関連抽出手段１５と、層間関連抽出手段１６と、関連情報マージ手段１７とを備えている。
【００１８】
なお、本層構造システム関連抽出装置１０には、少なくとも対象システムにおける層の構造と、異なる層のモジュール間の呼び出し方法とが定義されたシステムルールと、対象システムの実装ファイルであるソースファイルと、対象システムの実装ファイルであり異なる層のモジュールの呼び出しのためのモジュール間の呼出関係が定義される設定ファイルとが与えられるものとする。
【００１９】
層構造情報読出手段１１は、与えられるシステムルールから、対象システムにおける層の構造を示す層構造情報を読み出す。
【００２０】
層間呼出情報読出手段１２は、与えられるシステムルールから対象システムにおける異なる層のモジュール間の呼び出し方法を示す層間呼出情報を読み出す。
【００２１】
層間呼出関係情報読出手段１３は、与えられる設定ファイルから対象システムにおけるモジュールの呼び出しのためのモジュール間の呼出関係を示す層間呼出関係情報を読み出す。
【００２２】
層対応付け手段１４は、与えられるソースファイルに記述されているモジュールと、層構造情報によって示される層とを対応づける。
【００２３】
層内関連抽出手段１５は、層対応付け手段１４によって層別に分けられるモジュールの記述内容から、層内のモジュール間の呼出関係を示す層内関連情報を抽出する。
【００２４】
層間関連抽出手段１６は、層間呼出情報読出手段１２によって読み出される層間呼出情報と、層間呼出関係情報読出手段１３によって読み出される層間呼出関係情報とに基づいて、層対応付け手段１４によって層別に分けられるモジュールの記述内容から、異なる層のモジュール間の呼出関係を示す層間関連情報を抽出する。
【００２５】
関連情報マージ手段１７は、層対応付け手段１４によって得られる層別のモジュール情報と、層内関連抽出手段１５によって抽出される層内関連情報と、層間関連抽出手段１６によって抽出される層間関連情報とを対応づけて、対象システム全体におけるモジュール間の呼出関係を示す情報を生成する。
【００２６】
また、図２は、本発明による層構造システム関連抽出装置１０の他の構成例を示すブロック図である。図２に示すように、層構造システム関連抽出装置１０は、さらに、表示手段１８を備えていてもよい。
【００２７】
表示手段１８は、関連情報マージ手段１７によって生成された対象システム全体におけるモジュール間の呼出関係を示す情報に基づいて、層単位の呼び出し順序に従って、モジュール間の呼出関係を表示させる。
【００２８】
また、関連情報違反読出手段１９と関連違反検出手段２０とを備えていてもよい。関連情報違反読出手段１９は、システムルールからモジュール間の呼び出し違反の定義を示す関連情報違反を読み出す。また、関連違反検出手段２０は、関連情報違反読出手段１９によって読み出される関連情報違反に基づき、抽出された層内関連情報または層間関連情報で示される呼出関係に対する違反を検出する。
【００２９】
実施形態１．
以下に、より具体的な実施形態について図面を参照して説明する。図３は、第１の実施形態のシステム構造抽出システムの構成例を示すブロック図である。図３に示すシステム構造抽出システムは、システムルール１００と、設定ファイル１０１と、ソースプログラム２００と、関連情報抽出装置３００と、表示装置４００とを備えている。なお、システムルール１００と、設定ファイル１０１と、ソースプログラム２００は、例えば、記憶装置に保持されている等、関連情報抽出装置３００から参照可能な状態であればよい。
【００３０】
本実施形態において、関連情報とは、モジュール間の呼出関係を示す情報をいう。また、層構造とは、システム構造の１つであって、システムを役割単位に機能分割したサブシステムから構成される構造をいう。ここで、サブシステムとは、複数のモジュールから構成されるものである。また、本発明では、機能ごとに分割されたまとまりの１つを層（ｔｉｅｒ）と呼ぶ。
【００３１】
システムルール１００は、システム構造情報として、対象システムの層構造を示す情報と、対象システムの異なる層のモジュール間の呼出方法を示す情報とを含む。
【００３２】
また、設定ファイル１０１は、対象システムが実行プログラムの一部として有してるデータファイル（群）であって、異なる層のモジュールの呼び出しのためのモジュール間の呼出関係を示す情報を含む。
【００３３】
また、ソースプログラム２００は、対象システムの実行プログラムが記述されているデータファイル（群）である。
【００３４】
関連情報抽出装置３００は、システムルール１００と設定ファイル１０１とを元に、ソースプログラム２００から関連情報を抽出する装置であって、システムルール解釈部３０１と、層間関連抽出部３０２と、層内関連抽出部３０３と、マージ部３０４とを含む。
【００３５】
システムルール解釈部３０１は、システムルール１００と設定ファイル１０１とを読み込み、関連情報抽出装置３００において対象システムの層構造を示す層構造情報と、対象システムの異なる層のモジュール間の呼出方法を示す層間呼出情報とを取得する。なお、システムルール解釈部３０１は、図１における層構造情報読出手段１１および層間呼出情報読出手段１２に相当する処理部である。
【００３６】
層間関連抽出部３０２は、取得された層間呼出情報を用いて、ソースプログラム２００から異なる層のモジュール間の関連情報を抽出する。なお、層間関連抽出部３０２は、図１における層間呼出関係情報読出手段１３および層間関連抽出手段１６に相当する処理部である。
【００３７】
層内関連抽出部３０３は、取得された層構造情報をもとに、複数のソースプログラム２００をそのソースプログラムに記述されているモジュールが所属する層単位で分割し、層内でのモジュール間の関連情報を抽出する。なお、層内関連抽出部３０３は、図１における層対応付け手段１４および層内関連抽出手段１５に相当する処理部である。
【００３８】
マージ部３０４は、システムルール１００から取得される層構造情報に対して、層間関連抽出部３０２および層内関連抽出部３０３が抽出した関連情報との対応付けを行い、情報のマージ（統合）を行う。なお、層間関連抽出部３０２は、図１における関連情報マージ手段１７および図２における表示手段１８に相当する処理部である。
【００３９】
表示装置４００は、マージ部３０４が統合した抽出結果（統合関連情報）の表示を行う。
【００４０】
なお、本実施形態において、システムルール解釈部３０１，層間関連抽出部３０２，層内関連抽出部３０３，マージ部３０４は、例えば、プログラムに従って動作する情報処理装置が備えるＣＰＵによって実現される。
【００４１】
次に、図４を参照して本実施形態の動作を説明する。図４は、本実施形態の動作の一例を示すフローチャートである。
【００４２】
図４に示す例では、まず、システムルール解釈部３０１は、システムルール１００と設定ファイル１０１とを読み込む（ステップＡ１）。次に、システムルール解釈部３０１は、システムルール１００に従って、設定ファイル１０１に定義されているアプリケーションフレームワーク毎の層間呼出関係を加味した層構造情報を取得する（ステップＡ２）。さらに、システムルール１００に従って、層間呼出情報を取得する（ステップＡ３）。
【００４３】
次に、層内関連抽出部３０３は、ソースコードの存在を確認して存在していれば（ステップＡ４のＹｅｓ）、ソースコードを１まとまり読み込む（ステップＡ５）。次いで、読み込んだソースコードに対して、システムルール１００から取得した層構造情報との対応づけを行う（ステップＡ６）。次いで、ソースコードからモジュール名を抽出する（ステップＡ７）。また、ソースコードから層内の他のモジュールの呼出関係を抽出する（ステップＡ８）。
【００４４】
次に、層間関連抽出部３０２が、システムルール１００から取得した層間呼出情報と、設定ファイルによって示される異なる層のモジュールの呼び出しのためのモジュール間の呼出関係とに基づいて、層内関連抽出部３０３が読み込んだソースコードから他の層のモジュールの呼出関係を抽出する（ステップＡ９）。なお、層間関連抽出部３０２は、本ステップの前処理として設定ファイルから、異なる層のモジュールの呼び出しのためのモジュール間の呼出関係を示す情報を取得する処理を行っていてもよい。
【００４５】
ソースコードが存在する間は、繰り返しステップＡ５〜Ａ９の動作を行う。全てのソースコードに対して上記処理を実施した後、マージ部３０４は、ステップＡ７〜９によって得られた情報を統合して、統合抽出情報を生成する（ステップＡ１０）。マージ部３０４は、例えば、モジュール名の情報と、層内でのモジュールの呼出関係を示す情報と、層間でのモジュールの呼出関係を示す情報とを組み合わせることにより、少なくともシステム全体におけるモジュール間の関連情報を含む統合抽出情報を生成する。
【００４６】
最後に、表示装置４００に、ステップＡ１０により生成された統合抽出情報を表示させる（ステップＡ１１）。統合抽出情報の表示は、例えば、マージ部３０４が、統合抽出情報を表示する画面の画面情報を生成して、表示装置４００に出力することにより行ってもよい。
【００４７】
以上のように、本実施形態によれば、象システムの層構造を示す情報と、対象システムの異なる層のモジュール間の呼出方法を示す情報とが記述されているシステムルール１００と、層間呼出関係を示す情報が記述されている設定ファイル１０１とを与えることで、対象となるシステムごとに異なる層構造や層間の呼出方法をとっていたとしても、システム全体におけるモジュール間の関連情報を抽出することができる。
【００４８】
また、そのシステムの関連情報を、例えば、層構造にモジュールとその関連情報とを対応づけた形式で表示することができ、層の呼び出し順序等を含め、層化されたシステムの全体構造を把握できるように表示させることができる。
【００４９】
実施形態２．
次に、本発明の第２の実施形態について説明する。図５は、第２の実施形態のシステム構造抽出システムの構成例を示すブロック図である。図５に示すシステム構造抽出システムは、図３に示す第１の実施形態と比べて、さらに、関連情報抽出装置３００が、呼出違反検出部３０５を含んでいる点が異なる。
【００５０】
本実施形態において、システムルール１００は、システム構造情報として、さらに対象システムにおけるモジュール間の呼び出し違反を示す情報を含む。また、システムルール解釈部３０１は、さらに、システムルール１００から関連情報抽出装置３００において対象システムの呼び出し違反を示す呼出違反情報を取得する。
【００５１】
呼出違反検出部３０５は、システムルール１００から抽出される呼出違反情報と、抽出された関連情報（層内および層間）とを比較して、呼び出し違反を検出する。また、呼出違反検出部３０５は、呼び出し違反を検出した場合には、検出した呼出関係に対応する関連情報に、その旨を示す情報を付与する。
【００５２】
また、マージ部３０４は、システムルール１００から取得される層構造情報に対して、層間関連抽出部３０２および層内関連抽出部３０３が抽出した関連情報との対応付けを行い、情報のマージ（統合）を行う。なお、本実施形態では、呼び出し違反が検出されている関連情報について色分けして表示ができるよう、さらに関連情報に色情報の対応付けを行う。
【００５３】
なお、本実施形態において、呼出違反検出部３０５は、例えば、プログラムに従って動作する情報処理装置が備えるＣＰＵによって実現される。
【００５４】
次に、図６を参照して本実施形態の動作について説明する。図６は、本実施形態の動作の一例を示すフローチャートである。
【００５５】
図６に示す例では、図４に示す第１の実施形態と同様に、まず、システムルール解釈部３０１が、システムルール１００と設定ファイル１０１とを読み込み（ステップＡ１）、アプリケーションフレームワーク毎の層間呼出関係を加味した層構造情報を取得するとともに、層間呼出情報を取得する（ステップＡ２，Ａ３）。また、本実施形態では、さらに、システムルール１００に従って、呼出違反情報を取得する（ステップＢ１）。
【００５６】
次に、層内関連抽出部３０３は、ソースコードの存在を確認して存在していれば（ステップＡ４のＹｅｓ）、ソースコードを１まとまり読み込む（ステップＡ５）。次いで、読み込んだソースコードに対して、システムルール１００から取得した層構造情報との対応づけを行う（ステップＡ６）。次いで、ソースコードからモジュール名を抽出する（ステップＡ７）。また、ソースコードから層内の他のモジュールの呼出関係を抽出する（ステップＡ８）。
【００５７】
次に、層間関連抽出部３０２が、システムルール１００から取得した層間呼出情報と、設定ファイルによって示される異なる層のモジュールの呼び出しのためのモジュール間の呼出関係とに基づいて、層内関連抽出部３０３が読み込んだソースコードから他の層のモジュールの呼出関係を抽出する（ステップＡ９）。なお、ステップＡ５〜Ａ９までの動作は、第１の実施形態と同様でよい。
【００５８】
全てのソースコードに対して上記処理（ステップＡ５〜Ａ９）を実施した後、呼出違反検出部３０５は、ステップＡ９およびステップＡ１０で抽出された関連情報の存在を確認し（ステップＢ２）、システムルール１００から取得された呼出違反情報に従い、実際に抽出された関連情報が示す呼出関係に違反があるか否かを判定する（ステップＢ３：違反検出）。対象システムの呼出関係に違反を検出した場合は、その関連情報にその旨を示す情報を付与する（ステップＢ４）。
【００５９】
次に、マージ部３０４は、ステップＡ７〜Ａ９およびステップＢ４によって得られた情報を統合して、統合抽出情報を生成する（ステップＡ１０）。マージ部３０４は、例えば、モジュール名の情報と、層内でのモジュールの呼出関係を示す情報と、層間でのモジュールの呼出関係を示す情報とを組み合わせることにより、少なくともシステム全体におけるモジュール間の関連情報を含む統合抽出情報を生成する。
【００６０】
最後に、表示装置４００に、ステップＡ１０により生成された統合抽出情報を表示させる（ステップＢ５）。統合抽出情報の表示は、例えば、マージ部３０４が、統合抽出情報を表示する画面の画面情報を生成して、表示装置４００に出力することにより行ってもよい。マージ部３０４は、その際、違反がある旨が付与されている関連情報に係る呼出関係については、色分け等の区別をして表示する画面情報を生成する。
【００６１】
以上のように、本実施形態によれば、象システムの層構造を示す情報と、対象システムの異なる層のモジュール間の呼出方法を示す情報と、システムの呼び出し違反を示す情報とが記述されているシステムルール１００と、層間呼出関係を示す情報が記述されている設定ファイル１０１とを与えることで、対象となるシステムごとに異なる層構造や層間の呼出方法をとっていたとしても、システム全体におけるモジュール間の関連情報を抽出することができるとともに、層化されたシステムの全体構造を把握できるように表示させる際に関連の違反がある場合には、その関連を色分け等して表示することで、違反をわかりやすく知らせることができる。
【実施例】
【００６２】
次に、具体的な実施例を用いて本発明の実施形態の動作を説明する。図７は、第１の実施例におけるシステム構造抽出システムの構成例を示すブロック図である。図７に示す実施例は、Ｊａｖａ（登録商標）言語で開発された業務システムの構造情報を記述したシステムルール９００と、業務システムの設定ファイル９０１と、業務システムのＪａｖａソースプログラム１０００と、システムルール９００と設定ファイル９０１とソースプログラム１０００からクラスの参照情報を抽出する関連情報抽出装置１１００と、関連情報抽出装置１１００から抽出されたクラスの参照情報を表示する表示装置１２００とを備えている。
【００６３】
関連情報抽出装置１１００は、システムルールを解釈するシステムルール解釈部１１０１と、異なる層のクラス間の参照関係の抽出を行う層間関連抽出部１１０２と、層内のクラスの参照関係の抽出を行う層内関連抽出部１１０３と、層構造情報と層間のクラスの参照関係と層内のクラスの参照関係を合成するマージ部１１０４とを含む。
【００６４】
本実施例では、関連情報とは、Ｊａｖａクラス間の継承関係やメソッド呼出関係を含むモジュールの呼出関係の情報のことであり、関連元のクラス名（継承、参照）、関連先のクラス名（継承、参照）、関連の種類（継承、参照）を保持する。なお、Ｊａｖａクラス名については、Ｊａｖａソースコードからｃｌａｓｓキーワードを抽出し取得する。
【００６５】
また、層構造は、業務システムを役割単位に機能分割したサブシステムを示すものとする。サブシステムは、複数のＪａｖａクラスから構成される１つのまとまりをいい、例えば、画面表示が目的で、データと画面レイアウトの表示を行うプレゼンテーション層と、ある業務処理が目的で、業務フローに沿った処理を行うアプリケーション層と、データ管理が目的で、データベースにアクセスを行うデータアクセス層といった目的や構成により、意図的に分割されたまとまりをいう。この層という概念でシステムを構成することで、ある層をバーションアップなどの理由で取り替えても、他の層に変更の影響が出ないようにしている。
【００６６】
図８は、システムルール９００に含まれる層構造を示す情報のデータ構成の一例を示す説明図である。図８に示すように、層構造を示す情報は、対象システムの層構造をＸＭＬ形式で定義されたものであってもよい。図８に示す例では、ｔｉｅｒｓ要素の配下に、対象システムに含まれる各層を定義するｔｉｅｒ要素が記述されている。ｔｉｅｒ要素の配下には、その層の識別子、名前、資産（プログラムコードが置かれているディレクトリや基底クラス等の情報）を定義する。
【００６７】
図９に、具体例を示す。図９は、システムルール９００に含まれる層構造を示す情報の具体例を示す説明図である。図９に示す例では、プレゼンテーション層と、アプリケーション層とと、データアクセス層の３つの層が定義されている。また、それぞれの層のディレクトリや基底クラスが定義されている。例えば、プレゼンテーション層のディレクトリは、”／ｐｒ”であること、資産の基底クラスは”ＢａｓｅＡｃｔｉｏｎ”クラス、”ＢａｓｅＦｒｏｍ”クラス、”ＢａｓｅＣｏｎｔｅｘｔ”クラスであることが示されている。
【００６８】
システムルール解釈部１１０１は、システムルール９００と設定ファイル９０１とを読み込み、層構造情報（プレゼンテーション層、アプリケーション層、データアクセス層の３つの層による構成であること、各層のディレクトリやＪａｖａ基底クラス）と、層呼出情報（異なる層間のＪａｖａクラスの依存情報）とを取得する。
【００６９】
層間関連情報抽出部１１０２は、層構造情報（本例では、各層のＪａｖａ基底クラスの情報）をもとに、層間呼び出し情報を用いて、異なる層のクラス間の参照関係を抽出する。抽出方法は、設定ファイルに記述されている、異なる層間のＪａｖａクラスの依存情報を解析することで得られる。なお、設定ファイルに記述されている依存情報のみでは、抽出できない場合には、設定ファイルの依存情報を手かがりに、Ｊａｖａソースコード自体の解析を行う。
【００７０】
層内関連情報抽出部１１０３は、層構造情報（本例では、各層のＪａｖａ基底クラスの情報）をもとに、複数のＪａｖａソースプログラムを所属する層単位で分類し、層内でのＪａｖａクラス間の参照関係を抽出する。層単位の分類は、例えば、プレゼンテーション層のＪａｖａ基底クラスを継承したＪａｖａクラスはプレゼンテーション層に所属すると判断すればよい。また、層内での参照関係の抽出方法は、Ｊａｖａソースコードから継承関係のキーワード（ｅｘｔｅｎｄｓ，ｉｍｐｌｅｍｅｎｔｓ等）、他のクラスのインスタンスかキーワード（ｎｅｗ）、他のクラスのメソッド呼び出し（例えば、インスタンス名．メソッド名（）等）を探索し、他のクラスへの参照情報として抽出する。
【００７１】
マージ部１１０４は、システムルール９００から取得した層構造情報と、層間関連抽出部１１０２から取得したＪａｖａクラス間の参照関係と、層内関連除法抽出部１１０３から取得したＪａｖａクラス間の参照情報との対応付けを行い、情報のマージを行う。
【００７２】
層構造情報と層間関連情報抽出部１１０２が抽出した情報との対応付けは、層間関連抽出部が抽出した参照関係が示すＪａｖａクラスのソースコード中から、継承関係のキーワードを探し、そこに記述されている層構造情報のＪａｖａ基底クラスと一致するかどうかの判定を行い、判定が一致した際に、Ｊａｖａクラス情報へ層情報（例えば、プレゼンテーション層である旨）を付与すればよい。
【００７３】
また、層間関連抽出部が抽出した情報と、層内関連抽出部が抽出した情報との対応付けは、層間関連抽出部から取得した参照関係が示すＪａｖａクラス名と、層内関連抽出部が抽出した参照関係が示すＪａｖａクラス名が一致するかどうかの判定を行い、判定が一致した際に、Ｊａｖａクラス情報へ各参照関係の情報を付与する。
【００７４】
表示装置１２００は、マージ部１１０４がマージによって生成した情報の表示を行う。
【００７５】
図１０は、結果表示の例を示す説明図である。図１０に示すように、例えば、層構造情報と異なる層のＪａｖａクラス間を対応づけた結果として、各層に含まれるＪａｖａクラスのクラス名と、層を跨いだ各Ｊａｖａクラス間の参照関係を表す線とを表示してもよい。なお、図１０に示す例では、層内での各Ｊａｖａクラス間の参照関係の結果表示は別途表示するものとして省略している。
【００７６】
また、図１１は、第２の実施形態のシステム構造抽出システムによる結果表示の例を示す説明図である。例えば、対象システムの呼び出し違反を示す情報として、プアプリケーション層のＪａｖａクラスを介さないプレゼンテーション層のＪａｖａクラスへの呼び出しは違反である旨の情報が定義されていたとする。そのような場合に、データアクセス層のＪａｖａクラスからプレゼンテーション層のＪａｖａクラスへの参照関係を示す関連情報が抽出された場合には、その参照関係を違反として示す結果表示を行う。図１１に示す例では、データアクセス層の”ＢａｓｅＤＡＯ”クラスからプレゼンテーション層のＪａｖａクラス”ＢａｓｅＦｏｒｍ”クラスへの参照関係を示す線に×印を重ねることで、違反である旨を表現している。
【００７７】
以下、さらに具体的な例を用いて本実施形態の動作を説明する。まず、外部ファイル（設定ファイル）からの依存情報の抽出手順について示す。ここでは、設定ファイルに依存関係が記述されているものとする。また、設定ファイルの記述形式（例えば、ＸＭＬタグの意味づけ）の情報が予め与えられているものとする。なお、設定ファイルの記述形式の情報は、システムルールとして得られてもよい。
【００７８】
まず、システムルール解釈部１１０１は、資産のソースファイルを検索し、ソースファイル名の一覧を取得する。次に、設定ファイル９００の内容を参照し、記述形式を手がかりに、依存元のソースファイル名を抽出する。次に、設定ファイルの内容を参照し、記述形式を手がかりに、依存先のソースファイル名を抽出する。抽出された依存元のソースファイル名と依存先のソースファイル名とに関連情報を付与する。具体的には、抽出された依存元のソースファイル名に対しては、関連情報として、依存先のソースファイル名の情報を付与する。また、抽出された依存先のソースファイル名に対しては、関連情報として、依存元のソースファイル名の情報を付与する。
【００７９】
以下に、Ｓｔｒｕｔｓフレームワークの場合を例に、関連情報の抽出方法を具体的に示す。Ｓｔｒｕｔｓフレームワークとは、Ｗｅｂアプリケーションフレームワークの１つで、遷移元の画面ファイル（ＪＳＰファイル）と遷移先の画面ファイル（ＪＳＰファイル）の依存関係を設定ファイルに主に記述している。例えば、在庫管理メニュー画面上（ＪＳＰファイル）で、在庫検索ボタンを押した際に、ＪＳＰのアクション処理から、次に遷移する在庫検索画面（ＪＳＰファイル）が記述される。
【００８０】
図１２は、Ｓｔｒｕｔｓ１．２系の設定ファイルの例を示す説明図である。図１２に示す資産の例を用いて、画面（ＪＳＰファイル）間の依存関係の抽出、画面（ＪＳＰファイル）−Ｊａｖａクラス間の依存関係の抽出の手順を示す。図１３は、ＪＳＰファイルの例を示す説明図である。
【００８１】
まず、画面（ＪＳＰファイル）間の依存関係の抽出方法について説明する。層内関連情報抽出部１１０３は、資産のソースファイル（ＪＳＰファイル）を検索し、ソースファイル名（ＪＳＰファイル名）の一覧を取得する。次に、ＪＳＰファイル（ここでは、ｅｘＦｒｏｍ．ｊｓｐ）の記述をパース（分解して解析）し、ｆｏｒｍタグ〜ｓｕｂｍｉｔタグのａｃｔｉｏｎ属性の値（”／ｅｘＡｃｔｉｏｎ”）を取得する。
【００８２】
次に、設定ファイル（ｓｔｒｕｓ−ｃｏｎｆｉｇ．ｘｍｌ）の内容を参照し、ａｃｔｉｏｎ−ｍａｐｐｉｎｇｓタグ配下のａｃｔｉｏｎタグを取得する。ａｃｔｉｏｎタグのうち、ｐａｔｈ属性の値と上記ＪＳＰファイルから取得したａｃｉｔｏｎ属性の値を比較し、一致するａｃｔｉｏｎタグを取り出す。取り出したａｃｔｉｏｎタグのｔｙｐｅ属性の値から、アクションクラス名を取得する。以上の動作により、ｅｘＦｒｏｍ．ｊｓｐとｏｋＦｒｏｍ．ｊｓｐ、ｅｘＦｒｏｍ．ｊｓｐとｎｇＦｒｏｍ．ｊｓｐの２つの依存関係が抽出できる。
【００８３】
次に、画面（ＪＳＰファイル）とＪａｖａクラス間の依存関係の抽出方法について説明する。層間関連情報抽出部１１０２は、資産のソースファイル（ＪＳＰファイル）を検索し、ソースファイル名（ＪＳＰファイル名）の一覧を取得する。なお、層内関連情報抽出部１１０３により既に取得済みであれば、それを利用してもよい。
【００８４】
次に、ＪＳＰファイル（ここでは、ｅｘＦｒｏｍ．ｊｓｐ）の記述をパースし、ｆｏｒｍタグ〜ｓｕｂｍｉｔタグのａｃｔｉｏｎ属性の値（”／ｅｘＡｃｔｉｏｎ”）を取得する。
【００８５】
次に、設定ファイル（ｓｔｒｕｓ−ｃｏｎｆｉｇ．ｘｍｌ）の内容を参照し、ａｃｔｉｏｎ−ｍａｐｐｉｎｇｓタグ配下のａｃｔｉｏｎタグを取得する。ａｃｔｉｏｎタグのうち、ｐａｔｈ属性の値と上記ＪＳＰファイルから取得したａｃｉｔｏｎ属性の値を比較し、一致するａｃｔｉｏｎタグを取り出す。取り出したａｃｔｉｏｎタグ配下のｆｏｒｗａｒｄタグのｐａｔｈ属性の値から、アクションクラス名（ｏｒｇ．ｓａｍｐｌｅ．ＥｘＡｃｔｉｏｎ）を取得する。以上の動作により、ＪＳＰファイル（ｅｘＦｒｏｍ．ｊｓｐ）とアクションクラスファイル（ＥｘＡｃｔｉｏｎ）の依存関係が抽出できる。
【００８６】
図１４は、本例における結果表示の例を示す説明図である。図１４に示す例では、ソースファイルだけでなく、設定ファイルから抽出された関連情報として、ＪＳＰファイル間の依存関係、およびＪＳＰファイルとアクションクラス間の依存関係が示されている。
【００８７】
なお、図１３および図１４で示したｓｔｒｕｓフレームワークの例では、設定ファイルから抽出される依存関係は、１つの層内のものとなっているが、他のアプリケーションフレームワークの種類には、異なる層のモジュール間の呼び出しに係る依存関係が記述されるものもある。
【産業上の利用可能性】
【００８８】
本発明は、層構造化されたシステムのモジュール間の呼び出し関係を必要とするシステムであれば、好適に適用可能である。
【図面の簡単な説明】
【００８９】
【図１】本発明の概要を示す説明図である。
【図２】本発明による層構造システム関連抽出装置の構成例を示す説明図である。
【図３】第１の実施形態のシステム構造抽出システムの構成例を示すブロック図である。
【図４】第１の実施形態の動作の一例を示すフローチャートである。
【図５】第２の実施形態のシステム構造抽出システムの構成例を示すブロック図である。
【図６】第２の実施形態の動作の一例を示すフローチャートである。
【図７】第１の実施例におけるシステム構造抽出システムの構成例を示すブロック図である。
【図８】システムルール９００に含まれる層構造を示す情報のデータ構成の一例を示す説明図である。
【図９】システムルール９００に含まれる層構造を示す情報の具体例を示す説明図である。
【図１０】結果表示の例を示す説明図である。
【図１１】第２の実施形態のシステム構造抽出システムによる結果表示の例を示す説明図である。
【図１２】Ｓｔｒｕｔｓ１．２系の設定ファイルの例を示す説明図である。
【図１３】ＪＳＰファイルの例を示す説明図である。
【図１４】本例における結果表示の例を示す説明図である。
【符号の説明】
【００９０】
１０  層構造システム関連抽出装置
１１  層構造情報読出手段
１２  層間呼出情報読出手段
１３  層間呼出関係情報読出手段
１４  層対応付け手段
１５  層内関連抽出手段
１６  層間関連抽出手段
１７  関連情報マージ手段
１８  表示手段
１９  関連情報違反読出手段
２０  関連情報違反手段
１００  システムルール
１０１  設定ファイル
２００  ソースプログラム
３００  関連情報抽出装置
３０１  システムルール解釈部
３０２  層間関連抽出部
３０３  層内関連抽出部
３０４  マージ部
３０５  呼出違反検出部
４００  表示装置
【図１】
2010122907.tif 000003
【図２】
2010122907.tif 000004
【図３】
2010122907.tif 000005
【図４】
2010122907.tif 000006
【図５】
2010122907.tif 000007
【図６】
2010122907.tif 000008
【図７】
2010122907.tif 000009
【図８】
2010122907.tif 000010
【図９】
2010122907.tif 000011
【図１０】
2010122907.tif 000012
【図１１】
2010122907.tif 000013
【図１２】
2010122907.tif 000014
【図１３】
2010122907.tif 000015
【図１４】
2010122907.tif 000016