(57)【要約】【課題】ＴＣＰ／ＩＰ等の通信によるソースファイルの関連性を明示できるソフトウェア構造解析装置を提供する。【解決手段】本発明のソフトウェア構造解析装置は、解析対象ファイル読込部と、前記ファイルから、関数を抽出する関数情報抽出部と、通信情報判定用情報を参照して、前記関数のソースファイルから、モジュール間で通信を行うための通信用ソースコードを抽出する通信情報抽出部と、前記通信用ソースコードの関連性を解析するモジュール関連性解析部と、前記解析に基づいて、モジュール間の通信関係を含むソフトウェア構造を表示するモジュール関係表示部とを備える。【選択図】図１
2012146243.tif 000002
【特許請求の範囲】
【請求項１】
解析対象のファイルを読み込む解析対象ファイル読込部と、
前記ファイルから、関数を抽出する関数情報抽出部と、
通信情報判定用情報を参照して、前記関数のソースファイルから、モジュール間で通信を行うための通信用ソースコードを抽出する通信情報抽出部と、ここで、前記通信情報判定用情報は、モジュール間で通信を行うためのソースコードパターンが格納され、
前記通信用ソースコードの関連性を解析するモジュール関連性解析部と、
前記解析に基づいて、モジュール間の通信関係を含むソフトウェア構造を表示するモジュール関係表示部と
を備えるソフトウェア構造解析装置。
【請求項２】
前記ソフトウェア構造解析装置は、
前記ファイルからクラス情報を抽出するクラス情報抽出部を更に備え、
前記モジュール関係表示部は、
クラス情報を含んだソフトウェア構造を表示する
請求項１に記載のソフトウェア構造解析装置。
【請求項３】
前記ソフトウェア構造解析装置は、
前記解析対象のファイルを一括で読み込む解析対象フォルダ選択部を更に備える
請求項１又は２に記載のソフトウェア構造解析装置。
【請求項４】
前記ソフトウェア構造解析装置は、
前記モジュール間の通信関係の有無を、前記解析の結果から、ユーザに判断させる画面を表示する通信情報関連性確認部を更に備える
請求項１乃至３のいずれか１項に記載のソフトウェア構造解析装置。
【請求項５】
解析対象ファイル読込部が、解析対象のファイルを読み込むステップと、
関数情報抽出部が、前記ファイルから、関数を抽出するステップと、
通信情報抽出部が、通信情報判定用情報を参照するステップと、ここで、前記通信情報判定用情報は、モジュール間で通信を行うためのソースコードパターンが格納され、
通信情報抽出部が、前記関数のソースファイルから、モジュール間で通信を行うための通信用ソースコードを抽出するステップと、
モジュール関連性解析部が、前記通信用ソースコードの関連性を解析するステップと、
モジュール関係表示部が、前記解析に基づいて、モジュール間の通信関係を含むソフトウェア構造を表示するステップと
を含むソフトウェア構造解析方法。
【請求項６】
前記ソフトウェア構造解析方法は、
クラス情報抽出部が、前記ファイルからクラス情報を抽出するステップを更に含み、
前記表示するステップは、
クラス情報を含んだソフトウェア構造を表示するステップを更に含む
請求項５に記載のソフトウェア構造解析方法。
【請求項７】
前記ソフトウェア構造解析方法は、
解析対象フォルダ選択部が、前記解析対象のファイルを一括で読み込むステップを更に含む
請求項５又は６に記載のソフトウェア構造解析方法。
【請求項８】
前記ソフトウェア構造解析方法は、
通信情報関連性確認部が、前記モジュール間の通信関係の有無を、前記解析の結果から、ユーザに判断させる画面を表示するステップを更に含む
請求項５乃至７のいずれか１項に記載のソフトウェア構造解析方法。
【請求項９】
請求項５乃至８のいずれか１項に記載のソフトウェア構造解析方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア構造解析に関し、特に、ネットワークを介して通信するソフトウェアの構造解析に関する。
【背景技術】
【０００２】
ソフトウェアの全体構造を把握するために、ソフトウェア構造解析装置が利用されている。ソフトウェア構造解析装置を利用することにより、例えば、ソフトウェアの一部が変更になった際に、ソフトウェア開発者は、影響を受ける全てのソースファイルを、自動的に把握することができ、修正漏れ、テスト漏れを予防することができる。
【０００３】
ソフトウェア構造解析ツールの例としては、ＴｅｃｈＭａｔｒｉｘ社（登録商標）のＬａｔｔｉｘや、Ｃｏｖｅｒｉｔｙ社（登録商標）のＡｒｃｈｉｔｅｃｔｕｒｅ  Ａｎａｌｙｚｅｒが知られている。ソフトウェア構造解析装置は、このようなソフトウェア構造解析ツールをインストールしたパーソナルコンピュータ等で実現することができる。
【０００４】
一般に、ソフトウェア構造解析ツールは、解析対象ファイル（ソースファイル）読み込み機能、関数（メソッド）情報抽出機能、クラス情報抽出機能、モジュール関係解析及び表示機能等から構成されている。
【０００５】
近年の多くのソフトウェアは、クライアント−サーバシステムや、Ｗｅｂシステムに代表される３階層のシステム等、ネットワークを介して複数のモジュールが連携して動作するものが多い。この「通信するモジュール間の関係」を含めて、ソフトウェア構造の表示をすることができなければ、ソフトウェア全体の構造を把握することができない。通信の形態が、サーバとクライアントが１：１に通信する場合等、単純な場合には、これらのモジュールの関係は解析しなくとも把握できるため問題が無い。しかし、多くのモジュールが複雑に通信するようなソフトウェアでは、それぞれのモジュール内の関数呼び出し関係がわかっても、モジュール間の繋がりが簡単には把握できない。そのため、全体としてのソフトウェアの構造把握が十分に行うことができない。
【０００６】
ＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）等の通信によるソースファイルの関連性を明示できるソフトウェア構造解析ツールが必要とされてきている。
【０００７】
ソフトウェア構造解析ツールの例として、特開２００８−２９３４８６号公報（特許文献１）に、ソースコードを解析して、関数の呼び出し関係と、関数とモジュールの包含関係とを得て、モジュール間呼出関連図を、ユーザが設定したモジュール単位で作成する技術が開示されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００８−２９３４８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明の目的は、ＴＣＰ／ＩＰ等の通信によるソースファイルの関連性を明示できるソフトウェア構造解析装置を提供することである。
【課題を解決するための手段】
【００１０】
上記の課題を解決するために、本発明は、以下に述べられる手段を採用する。その手段を構成する技術的事項の記述には、［特許請求の範囲］の記載と［発明を実施するための形態］の記載との対応関係を明らかにするために、［発明を実施するための形態］で使用される番号・符号が付加されている。ただし、付加された番号・符号は、［特許請求の範囲］に記載されている発明の技術的範囲を限定的に解釈するために用いてはならない。
【００１１】
本発明のソフトウェア構造解析装置（１０）は、解析対象ファイル読込部（２２）と、前記ファイルから、関数を抽出する関数情報抽出部（２３）と、通信情報判定用情報（３４）を参照して、前記関数のソースファイルから、モジュール間で通信を行うための通信用ソースコードを抽出する通信情報抽出部（２５）と、前記通信用ソースコードの関連性を解析するモジュール関連性解析部（２６）と、前記解析に基づいて、モジュール間の通信関係を含むソフトウェア構造を表示するモジュール関係表示部（２８）とを備える。
【００１２】
本発明のソフトウェア構造解析方法は、ソフトウェア構造解析装置により実施されるソフトウェア構造解析方法である。解析対象ファイル読込部が、解析対象のファイルを読み込むステップと、関数情報抽出部が、前記ファイルから、関数を抽出するステップと、通信情報抽出部が、通信情報判定用情報を参照するステップと、通信情報抽出部が、前記関数のソースファイルから、モジュール間で通信を行うための通信用ソースコードを抽出するステップと、モジュール関連性解析部が、前記通信用ソースコードの関連性を解析するステップと、モジュール関係表示部が、前記解析に基づいて、モジュール間の通信関係を含むソフトウェア構造を表示するステップとを含む。
【発明の効果】
【００１３】
本発明によれば、ＴＣＰ／ＩＰ等の通信によるソースファイルの関連性を明示できるソフトウェア構造解析装置を提供することができる。
【図面の簡単な説明】
【００１４】
【図１】図１は、本発明の実施形態におけるソフトウェア構造解析装置１０のブロック図である。
【図２】図２は、本発明の実施形態におけるソフトウェア構造解析装置１０のソフトウェア構造解析方法のフローチャートである。
【発明を実施するための形態】
【００１５】
添付図面を参照して、本発明の実施形態によるソフトウェア構造解析装置１０を以下に説明する。
【００１６】
［構成の説明］
はじめに、本実施形態におけるソフトウェア構造解析装置１０の構成の説明を行う。図１は、本発明の実施形態におけるソフトウェア構造解析装置１０のブロック図である。本実施形態のソフトウェア構造解析装置１０は、入力装置１、データ処理装置２、記憶装置３及び表示装置４を備える。
【００１７】
入力装置１は、キーボードやマウス等の、ユーザがソフトウェア構造解析装置１０を操作するための入力手段である。データ処理装置２は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）及びメモリを備え、プログラム制御により、ソフトウェア構造を解析する。記憶装置３は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等であり、本実施形態によるソフトウェア構造解析装置１０のソフトウェア構造解析に必要な情報を記録する。表示装置４は、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）等のディスプレイ装置であり、本実施形態によるソフトウェア構造解析装置１０のソフトウェア構造解析結果等を表示する。
【００１８】
次に、データ処理装置２及び記憶装置３の構成について、詳しく説明する。
【００１９】
データ処理装置２は、解析対象フォルダ選択部２１、解析対象ファイル（ソースファイル）読込部２２、関数（メソッド）情報抽出部２３、クラス情報抽出部２４、通信情報抽出部２５、モジュール関連性解析部２６、通信情報関連性確認部２７及びモジュール関係表示部２８を備える。
【００２０】
記憶装置３は、ファイル情報３１、関数（メソッド）情報３２、クラス情報３３、通信情報判定用情報３４、通信情報３５及びモジュール関係情報３６を備える。
【００２１】
解析対象フォルダ選択部２１は、解析対象とするソースファイルが含まれるフォルダを選択する。
【００２２】
解析対象ファイル（ソースファイル）読込部２２は、解析対象フォルダ選択部２１によって選択されたフォルダから、解析の対象となるソースファイルを読み込む。解析対象ファイル（ソースファイル）読込部２２は、解析の対象となるソースファイルを記憶装置３のファイル情報３１に記録する。
【００２３】
関数（メソッド）情報抽出部２３は、ファイル情報３１から、関数（メソッド）の情報を抽出し、関数（メソッド）情報３２として記憶装置３に格納する。
【００２４】
クラス情報抽出部２４は、ファイル情報３１から、クラスの情報を抽出し、クラス情報３３として、記憶装置３に格納する。
【００２５】
通信情報抽出部２５は、通信情報判定用情報３４に基づいて、関数（メソッド）情報３２から、他のモジュールと通信するためのコード情報を抽出し、通信情報３５として記憶装置３に格納する。通信情報判定用情報３４は、モジュール間で通信を行うためのソースコードパターンが格納されている。
【００２６】
モジュール関連性解析部２６は、関数（メソッド）情報３２、クラス情報３３及び通信情報３５に基づいて、関数、クラス、モジュール間通信の関連性を解析し、モジュール関係情報３６として、解析結果を記憶装置３に格納する。
【００２７】
通信情報関連性確認部２７は、モジュール関連性解析部２６の解析結果から、完全に自動で解析することが難しい通信情報の関連性については、ユーザにモジュール間の通信関係の有無を判断させる画面を表示する。このようにすることで、解析結果が正しいかどうかをユーザが確認することができる。通信情報関連性確認部２７は、ユーザにより決定された情報をモジュール関係情報３６として記憶装置３に格納する。
【００２８】
モジュール関係表示手段２８は、記憶装置３に格納されたモジュール関係情報３６を、関数のコールグラフや、モジュール関連図などによりユーザに分かりやすく表示する。
【００２９】
［動作方法の説明］
次に、本実施形態におけるソフトウェア構造解析装置１０において、ソフトウェア構造解析方法の説明を行う。図２は、本発明の実施形態におけるソフトウェア構造解析装置１０のソフトウェア構造解析方法のフローチャートである。
【００３０】
（ステップＳ１）
解析対象フォルダ選択部２１は、ユーザによって選択された解析対象のソースファイルが含まれるフォルダを選択する。
【００３１】
（ステップＳ２）
解析対象ファイル（ソースファイル）読込部２２は、解析対象のソースファイルが含まれるフォルダから、ソースファイルを１つ読み込む。
【００３２】
（ステップＳ３）
関数（メソッド）情報抽出部２３は、ファイル情報３１から、関数（メソッド）の情報を抽出し、関数（メソッド）情報３２として記憶装置３に格納する。
【００３３】
クラス情報抽出部２４は、ファイル情報３１から、クラスの情報を抽出し、クラス情報３３として、記憶装置３に格納する。
【００３４】
（ステップＳ４）
通信情報抽出部２５は、通信情報判定用情報３４に基づいて、関数（メソッド）情報３２から、他のモジュールと通信するためのコード情報を抽出し、通信情報３５として記憶装置３に格納する。通信情報判定用情報３４は、モジュール間で通信を行うためのソースコードパターンが格納されている。通信情報抽出部２５は、このコードパターンとマッチングさせることで、他のモジュールと通信するためのコード情報である通信情報３５を作成する。
【００３５】
例えば、他のモジュールとの通信が、ＴＣＰ／ＩＰのソケット通信部を対象である場合には、まず、通信情報抽出部２５が、ソケット通信によるクライアントソケット生成部のコードを抽出する。Ｊａｖａ（登録商標）言語の場合には、「Ｓｏｃｋｅｔ  ｃｓ  ＝  ｎｅｗ  Ｓｏｃｋｅｔ（ｈｏｓｔｎａｍｅ，５５５５）；」等である。次に、通信情報抽出部２５が、このクライアントソケットに対応したサーバソケットであると予測されるコードを抽出する。この場合、「ＳｅｒｖｅｒＳｏｃｋｅｔ  ｓｓ  ＝  ｎｅｗ  ＳｅｒｖｅｒＳｏｃｋｅｔ（５５５５）；」、「Ｓｏｃｋｅｔ  ｃｏｎｎ  ＝  ｓｓ．ａｃｃｅｐｔ（）；」等である。通信情報判定用情報３４には、上述のようなＴＣＰ／ＩＰ通信を利用するためのコードパターンが格納されている。
【００３６】
また、他の例として、他のモジュールとの通信が、ｈｔｔｐ（Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）通信であり、解析対象のソースコードが、Ｓｅｒｖｌｅｔ、ＣＧＩスクリプト等である場合には、「ＵＲＬ  ｎｅｔＵｒｌ  ＝  ｎｅｗ  ＵＲＬ（ｈｔｔｐ：／／ｗｗｗ．ａａ．ｂｂ．ｃｏｍ／ｍｙｓｅｒｖｌｅｔ）；」、「ｃｏｎｎｅｃｔｉｏｎ  ＝  （ＨｔｔｐＵＲＬＣｏｎｎｅｃｔｉｏｎ）  ｎｅｔＵｒｌ．ｏｐｅｎＣｏｎｎｅｃｔｉｏｎ（）；」、「ｃｏｎｎｅｃｔｉｏｎ．ｓｅｔＲｅｑｕｅｓｔＭｅｔｈｏｄ（“ＰＯＳＴ”）；」等が、通信情報判定用情報３４のコードパターンの候補となる。
【００３７】
（ステップＳ５）
解析対象ファイル（ソースファイル）読込部２２は、フォルダ内の全てのソースファイルを読み込んだ場合には、ステップＳ６へ進み、読み込んでいない場合には、ステップＳ２へ進む。
【００３８】
（ステップＳ６）
モジュール関連性解析部２７は、関数の呼び出し関係解析及びクラス呼び出し関係解析を行う。
【００３９】
（ステップＳ７）
モジュール関連性解析部２７は、通信情報３５の各々に対しての関連性の解析を行う。また、通信情報関連性確認部２８は、通信情報３５の各々に対しての関連性を自動で決定できない情報に対しては、ユーザが目視で判定することができるように、ユーザに解析の結果に対して、関連性があるかどうかを判断させるための画面を表示する。
【００４０】
モジュール関連性解析部２７は、ステップＳ４で抽出した通信情報３５に対して、クライアントソケットが利用している通信ポート番号等を利用して、対応していると予測されるクライアントソケットとサーバソケットの組を自動抽出する。モジュール関連性解析部２６は、更に、実際にこれらが通信していると見なせるかどうかを判断する。判断基準としては、これらのソケットが実際に通信を行っている部分（ｓｅｎｄ，  ｒｅｃｖ命令の部分など）に着目し、通信データの大きさや、ソケットタイプがあっているかどうかで判定する。
【００４１】
（ステップＳ８）
モジュール関係表示部２８は、ユーザに対して通信情報を考慮したモジュール関係表示を行い、ソフトウェア構造解析処理を終了する。
【００４２】
本発明の実施形態のソフトウェア構造解析装置１０によれば、ＴＣＰ／ＩＰ等の通信によるソースファイルの関連性を明示できるソフトウェア構造解析装置を提供することができる。これにより、複数のモジュールが通信するシステムの全体構造の可視化が可能となる。また、プログラム改修時の影響範囲を抽出する際、改修対象のプログラムに対応するモジュールと、ネットワークを介して通信するモジュールとの影響範囲も抽出することができる。本発明の実施形態のソフトウェア構造解析装置１０は、通信によるモジュールの関連性も把握できるため、一般のソフトウェア構造解析装置よりも、より詳細なモジュール間の関連を把握することができる。そのため、プログラムの改修が重なる等の理由により、最新のプログラムの状態に対応する仕様書がない等、ブラックボックス化しているソフトウェアの構造を把握する用途にも、利用することができる。
【００４３】
以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
【符号の説明】
【００４４】
１  入力装置
２  データ処理装置
３  記憶装置
４  表示装置
１０  ソフトウェア構造解析装置
２１  解析対象フォルダ選択部
２２  解析対象ファイル（ソースファイル）読込部
２３  関数（メソッド）情報抽出部
２４  クラス情報抽出部
２５  通信情報抽出部
２６  モジュール関連性解析部
２７  通信情報関連性確認部
２８  モジュール関係表示部
３１  ファイル情報
３２  関数（メソッド）情報
３３  クラス情報
３４  通信情報判定用情報
３５  通信情報
３６  モジュール関係情報
【図１】
2012146243.tif 000003
【図２】
2012146243.tif 000004