(57)【特許請求の範囲】
【請求項１】
コンピュータが、
ソフトウェア内のプログラム間の依存関係およびプログラム／データ間の依存関係に基づいて、前記ソフトウェア内のプログラムおよび当該プログラムからアクセスされるデータを含む要素群を複数のクラスタに分割し、
分割した前記複数のクラスタのいずれかのクラスタ内のデータが、前記クラスタ外のプログラムから書き込まれていない場合は、前記クラスタ外のプログラムから読み出される回数に基づいて、複数の機能から読み出され、特定のプログラムのみから書き込まれるデータである度合いを示す指標値を算出する、
処理を実行することを特徴とする分析支援方法。
【請求項２】
コンピュータが、
ソフトウェア内のプログラム間の依存関係およびプログラム／データ間の依存関係に基づいて、前記ソフトウェア内のプログラムおよび当該プログラムからアクセスされるデータを含む要素群を複数のクラスタに分割し、
分割した前記複数のクラスタのいずれかのクラスタ内のデータが、前記クラスタ外のプログラムから読み書きされておらず、かつ、前記クラスタ内のプログラムから書き込まれない場合には、前記クラスタ内のプログラムから読み出される回数に基づいて、複数の機能から読み出され、特定のプログラムのみから書き込まれるデータである度合いを示す指標値を算出する、
処理を実行することを特徴とする分析支援方法。
【請求項３】
コンピュータが、
ソフトウェア内のプログラム間の依存関係およびプログラム／データ間の依存関係に基づいて、前記ソフトウェア内のプログラムおよび当該プログラムからアクセスされるデータを含む要素群を複数のクラスタに分割し、
分割した前記複数のクラスタのいずれかのクラスタ内のデータが、前記クラスタ内外のプログラムから読み出される回数に対する、前記クラスタ内外のプログラムから書き込まれる回数の割合に基づいて、複数の機能から書き込まれ、特定の機能のみから読み出される、あるいは、全く読み出されないデータである度合いを示す指標値を算出する、
処理を実行することを特徴とする分析支援方法。
【請求項４】
コンピュータが、
ソフトウェア内のプログラム間の依存関係およびプログラム／データ間の依存関係に基づいて、前記ソフトウェア内のプログラムおよび当該プログラムからアクセスされるデータを含む要素群を複数のクラスタに分割し、
分割した前記複数のクラスタのいずれかのクラスタ内のデータが、前記クラスタ外のプログラムから読み書きされる回数に対する、前記クラスタ内外のプログラムから読み書きされる回数の割合に基づいて、特定の機能に専用のデータであることから逸脱している度合いを示す指標値を算出する、
処理を実行することを特徴とする分析支援方法。
【請求項５】
コンピュータが、
ソフトウェア内のプログラム間の依存関係およびプログラム／データ間の依存関係に基づいて、前記ソフトウェア内のプログラムおよび当該プログラムからアクセスされるデータを含む要素群を複数のクラスタに分割し、
分割した前記複数のクラスタのいずれかのクラスタ内のデータが、前記クラスタ外のプログラムから書き込まれる回数に対する、前記クラスタ外のプログラムから読み書きされる回数の割合に基づいて、複数の機能から読み出され、特定のプログラムのみから書き込まれるデータであることから逸脱している度合いを示す指標値を算出する、
処理を実行することを特徴とする分析支援方法。
【請求項６】
前記コンピュータが、
前記クラスタ内のデータが、前記クラスタ外のプログラムから読み出される回数と、前記クラスタ外のプログラムから書き込まれる回数とに基づいて、前記ソフトウェア全体から読み書きされるデータである度合いを示す指標値を算出する、処理を実行することを特徴とする請求項１〜５のいずれか一つに記載の分析支援方法。
【請求項７】
前記コンピュータが、
前記クラスタ内のデータが、前記クラスタ外のプログラムから読み書きされていない場合は、特定の機能に専用のデータであることを示す指標値を算出する、処理を実行することを特徴とする請求項１〜６のいずれか一つに記載の分析支援方法。
【請求項８】
前記コンピュータが、
前記クラスタ内のデータの識別情報と対応付けて、算出した前記指標値を出力する、処理を実行することを特徴とする請求項１〜７のいずれか一つに記載の分析支援方法。
【請求項９】
前記コンピュータが、
算出した前記指標値に基づいて、前記データの分類を決定し、
決定した前記データの分類と、前記データの既知の分類とを比較し、
前記データの識別情報と対応付けて、比較した比較結果を出力する、処理を実行することを特徴とする請求項１〜８のいずれか一つに記載の分析支援方法。
【請求項１０】
コンピュータに、
ソフトウェア内のプログラム間の依存関係およびプログラム／データ間の依存関係に基づいて、前記ソフトウェア内のプログラムおよび当該プログラムからアクセスされるデータを含む要素群を複数のクラスタに分割し、
分割した前記複数のクラスタのいずれかのクラスタ内のデータが、前記クラスタ外のプログラムから書き込まれていない場合は、前記クラスタ外のプログラムから読み出される回数に基づいて、複数の機能から読み出され、特定のプログラムのみから書き込まれるデータである度合いを示す指標値を算出する、
処理を実行させることを特徴とする分析支援プログラム。
【請求項１１】
コンピュータに、
ソフトウェア内のプログラム間の依存関係およびプログラム／データ間の依存関係に基づいて、前記ソフトウェア内のプログラムおよび当該プログラムからアクセスされるデータを含む要素群を複数のクラスタに分割し、
分割した前記複数のクラスタのいずれかのクラスタ内のデータが、前記クラスタ外のプログラムから読み書きされておらず、かつ、前記クラスタ内のプログラムから書き込まれない場合には、前記クラスタ内のプログラムから読み出される回数に基づいて、複数の機能から読み出され、特定のプログラムのみから書き込まれるデータである度合いを示す指標値を算出する、
処理を実行させることを特徴とする分析支援プログラム。
【請求項１２】
コンピュータに、
ソフトウェア内のプログラム間の依存関係およびプログラム／データ間の依存関係に基づいて、前記ソフトウェア内のプログラムおよび当該プログラムからアクセスされるデータを含む要素群を複数のクラスタに分割し、
分割した前記複数のクラスタのいずれかのクラスタ内のデータが、前記クラスタ内外のプログラムから読み出される回数に対する、前記クラスタ内外のプログラムから書き込まれる回数の割合に基づいて、複数の機能から書き込まれ、特定の機能のみから読み出される、あるいは、全く読み出されないデータである度合いを示す指標値を算出する、
処理を実行させることを特徴とする分析支援プログラム。
【請求項１３】
コンピュータに、
ソフトウェア内のプログラム間の依存関係およびプログラム／データ間の依存関係に基づいて、前記ソフトウェア内のプログラムおよび当該プログラムからアクセスされるデータを含む要素群を複数のクラスタに分割し、
分割した前記複数のクラスタのいずれかのクラスタ内のデータが、前記クラスタ外のプログラムから読み書きされる回数に対する、前記クラスタ内外のプログラムから読み書きされる回数の割合に基づいて、特定の機能に専用のデータであることから逸脱している度合いを示す指標値を算出する、
処理を実行させることを特徴とする分析支援プログラム。
【請求項１４】
コンピュータに、
ソフトウェア内のプログラム間の依存関係およびプログラム／データ間の依存関係に基づいて、前記ソフトウェア内のプログラムおよび当該プログラムからアクセスされるデータを含む要素群を複数のクラスタに分割し、
分割した前記複数のクラスタのいずれかのクラスタ内のデータが、前記クラスタ外のプログラムから書き込まれる回数に対する、前記クラスタ外のプログラムから読み書きされる回数の割合に基づいて、複数の機能から読み出され、特定のプログラムのみから書き込まれるデータであることから逸脱している度合いを示す指標値を算出する、
処理を実行させることを特徴とする分析支援プログラム。
【請求項１５】
ソフトウェア内のプログラム間の依存関係およびプログラム／データ間の依存関係に基づいて、前記ソフトウェア内のプログラムおよび当該プログラムからアクセスされるデータを含む要素群を複数のクラスタに分割し、
分割した前記複数のクラスタのいずれかのクラスタ内のデータが、前記クラスタ外のプログラムから書き込まれていない場合は、前記クラスタ外のプログラムから読み出される回数に基づいて、複数の機能から読み出され、特定のプログラムのみから書き込まれるデータである度合いを示す指標値を算出する、
制御部を有することを特徴とする情報処理装置。
【請求項１６】
ソフトウェア内のプログラム間の依存関係およびプログラム／データ間の依存関係に基づいて、前記ソフトウェア内のプログラムおよび当該プログラムからアクセスされるデータを含む要素群を複数のクラスタに分割し、
分割した前記複数のクラスタのいずれかのクラスタ内のデータが、前記クラスタ外のプログラムから読み書きされておらず、かつ、前記クラスタ内のプログラムから書き込まれない場合には、前記クラスタ内のプログラムから読み出される回数に基づいて、複数の機能から読み出され、特定のプログラムのみから書き込まれるデータである度合いを示す指標値を算出する、
制御部を有することを特徴とする情報処理装置。
【請求項１７】
ソフトウェア内のプログラム間の依存関係およびプログラム／データ間の依存関係に基づいて、前記ソフトウェア内のプログラムおよび当該プログラムからアクセスされるデータを含む要素群を複数のクラスタに分割し、
分割した前記複数のクラスタのいずれかのクラスタ内のデータが、前記クラスタ内外のプログラムから読み出される回数に対する、前記クラスタ内外のプログラムから書き込まれる回数の割合に基づいて、複数の機能から書き込まれ、特定の機能のみから読み出される、あるいは、全く読み出されないデータである度合いを示す指標値を算出する、
制御部を有することを特徴とする情報処理装置。
【請求項１８】
ソフトウェア内のプログラム間の依存関係およびプログラム／データ間の依存関係に基づいて、前記ソフトウェア内のプログラムおよび当該プログラムからアクセスされるデータを含む要素群を複数のクラスタに分割し、
分割した前記複数のクラスタのいずれかのクラスタ内のデータが、前記クラスタ外のプログラムから読み書きされる回数に対する、前記クラスタ内外のプログラムから読み書きされる回数の割合に基づいて、特定の機能に専用のデータであることから逸脱している度合いを示す指標値を算出する、
制御部を有することを特徴とする情報処理装置。
【請求項１９】
ソフトウェア内のプログラム間の依存関係およびプログラム／データ間の依存関係に基づいて、前記ソフトウェア内のプログラムおよび当該プログラムからアクセスされるデータを含む要素群を複数のクラスタに分割し、
分割した前記複数のクラスタのいずれかのクラスタ内のデータが、前記クラスタ外のプログラムから書き込まれる回数に対する、前記クラスタ外のプログラムから読み書きされる回数の割合に基づいて、複数の機能から読み出され、特定のプログラムのみから書き込まれるデータであることから逸脱している度合いを示す指標値を算出する、
制御部を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分析支援方法、分析支援プログラム、および情報処理装置に関する。
【背景技術】
【０００２】
ソフトウェアを開発・改良・保守するためには、ソフトウェアの現状がどうなっているかを理解することが重要である。このような活動を支援するために、例えば、ソフトウェアを構成するソースファイル（あるいは、クラスや関数など）間の依存関係に基づいてクラスタリング技術を適用し、依存関係の密なかたまりを発見して理解に役立てる技術がある。
【０００３】
先行技術としては、例えば、プログラム内部で使用している関数とグローバル変数、およびグローバル変数に格納される全データを抽出し、ソフトウェア部品内部のグローバル変数の使用データ比率を算出し、使用データ比率が予め設定された判定比率以上かどうかを判定して、ソフトウェア部品内部のグローバル変数の用途を判定するものがある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−２３１５１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術では、ソフトウェアにおいてデータがどのように使われているかの実態を把握することが難しい。データがどのように使われているかの実態を把握できなければ、ソフトウェアの現状を理解することが困難なものとなる場合がある。
【０００６】
一つの側面では、本発明は、ソフトウェアにおけるデータの使われ方の実態を把握可能にすることを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一態様によれば、ソフトウェア内のプログラム間の依存関係およびプログラム／データ間の依存関係に基づいて、前記ソフトウェア内のプログラムおよび当該プログラムからアクセスされるデータを含む要素群を複数のクラスタに分割し、分割した前記複数のクラスタのいずれかのクラスタ内のデータが、前記クラスタ内のプログラムからアクセスされる回数と、前記クラスタ外のプログラムからアクセスされる回数とに基づいて、前記データの特徴を表す指標値を算出する分析支援方法、分析支援プログラム、および情報処理装置が提案される。
【発明の効果】
【０００８】
本発明の一側面によれば、ソフトウェアにおけるデータの使われ方の実態を把握可能にすることができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施の形態１にかかる分析支援システム１００のシステム構成例を示す説明図である。
【図２】図２は、情報処理装置１０１のハードウェア構成例を示すブロック図である。
【図３】図３は、ソフトウェアＳＷのクラスタリング結果の一例を地図形式で示す説明図（その１）である。
【図４】図４は、依存関係情報の具体例を示す説明図である。
【図５】図５は、クラスタ情報の具体例を示す説明図である。
【図６】図６は、実施の形態１にかかる情報処理装置１０１の機能的構成例を示すブロック図である。
【図７】図７は、関連テーブル７００の記憶内容の一例を示す説明図である。
【図８】図８は、基本指標テーブル８００の記憶内容の一例を示す説明図（その１）である。
【図９】図９は、応用指標テーブル９００の記憶内容の一例を示す説明図（その１）である。
【図１０】図１０は、実施の形態１にかかる情報処理装置１０１の分析支援処理手順の一例を示すフローチャートである。
【図１１】図１１は、関連テーブル作成処理の具体的処理手順の一例を示すフローチャートである。
【図１２】図１２は、基本指標算出処理の具体的処理手順の一例を示すフローチャートである。
【図１３】図１３は、応用指標算出処理の具体的処理手順の一例を示すフローチャートである。
【図１４】図１４は、ソフトウェアＳＷのクラスタリング結果の一例を地図形式で示す説明図（その２）である。
【図１５】図１５は、基本指標テーブル８００の記憶内容の一例を示す説明図（その２）である。
【図１６】図１６は、応用指標テーブル９００の記憶内容の一例を示す説明図（その２）である。
【図１７】図１７は、実施の形態２にかかる情報処理装置１０１の機能的構成例を示すブロック図である。
【図１８】図１８は、分類比較結果１８００の具体例を示す説明図である。
【図１９】図１９は、実施の形態２にかかる情報処理装置１０１の分析支援処理手順の一例を示すフローチャートである。
【図２０】図２０は、分類比較処理の具体的処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下に図面を参照して、本発明にかかる分析支援方法、分析支援プログラム、および情報処理装置の実施の形態を詳細に説明する。
【００１１】
（実施の形態１）
図１は、実施の形態１にかかる分析支援システム１００のシステム構成例を示す説明図である。図１において、分析支援システム１００は、情報処理装置１０１と、クライアント装置１０２と、を含む。分析支援システム１００において、情報処理装置１０１およびクライアント装置１０２は、有線または無線のネットワーク１１０を介して接続される。ネットワーク１１０は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどである。
【００１２】
ここで、情報処理装置１０１は、ソースコードＤＢ（ＤａｔａＢａｓｅ）１２０を有し、ソフトウェアＳＷの分析を支援するコンピュータである。情報処理装置１０１は、例えば、サーバである。ソースコードＤＢ１２０は、ソフトウェアＳＷのソースコードを記憶する。
【００１３】
ソフトウェアＳＷは、分析対象となるコンピュータプログラムであり、コンピュータを動作させる命令、手順などを記述したものである。ソフトウェアＳＷは、複数の要素を含む。要素は、例えば、コンポーネント、モジュール、ソースコード、クラス、関数、データベース、ファイルなどである。
【００１４】
以下の説明では、コンポーネント、モジュール、ソースコード、クラス、関数などを総称して「プログラム」と表記する場合がある。
【００１５】
クライアント装置１０２は、分析支援システム１００のユーザが使用するコンピュータである。分析支援システム１００のユーザは、例えば、ソフトウェアＳＷの開発者や分析者である。クライアント装置１０２は、例えば、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、タブレットＰＣなどである。
【００１６】
ここで、ソフトウェアＳＷの理解を支援する技術として、ソフトウェアＳＷを小規模な部分集合（いわゆる、クラスタ）に分割する技術がある。具体的には、例えば、ソフトウェアＳＷに含まれるプログラム同士の依存関係に基づくクラスタリングを行って、互いに関係し合っているプログラムのかたまりをクラスタとして分割するものがある。
【００１７】
なお、既存のクラスタリング技術については、例えば、特開２０１３−１４８９８７号公報を参照することができる。
【００１８】
一方、ソフトウェアＳＷにおいては、プログラムだけでなく、そこで使用されるデータも重要である。データとは、データベースやファイル等に記録される、業務上のデータ、プログラムの作業ファイルや生成物、動作に必要な設定情報などである。したがって、プログラム同士の関係だけでなく、プログラムとデータとの間の関係も分析することが、ソフトウェアＳＷの理解のために有用である。
【００１９】
このため、ソフトウェアＳＷに含まれるプログラムだけでなく、ソフトウェアＳＷにおいて用いられるデータも含めてクラスタリングを行うことが考えられる。しかし、クラスタリング技術は、各データがどのクラスタに所属しているかによって、そのデータがどの機能において使われているかを示すことはできても、そのデータの使われ方の特徴（性質）までは明らかにしない。
【００２０】
また、プログラムとデータの読み書き関係を表形式にまとめたものとして、ＣＲＵＤ表と呼ばれるものがある。ＣＲＵＤ表は、データベースのテーブルの読み書きの操作、すなわち、どのソースファイルがＣｒｅａｔｅ、Ｒｅａｄ、Ｕｐｄａｔｅ、Ｄｅｌｅｔｅを行っているかを行列形式に表したものである。ＣＲＵＤ表を見ることで、データの使われ方の特徴（性質）を判断することが考えられる。
【００２１】
ところが、一口にデータといっても様々な特徴のものが存在する。例えば、商品や顧客等の情報を格納して随時参照されるマスターデータや、注文や請求といった業務の進行のたびに記録されるトランザクションデータがある。また、プログラムの動作を障害対処等のために記録するログデータ、プログラムの処理途中のデータを記録しておく一時ファイル、システムの動作に必要な情報を指定する設定ファイルなどがある。
【００２２】
こうしたデータの特徴は、ＣＲＵＤ表を見るだけでは見出しがたい。また、元々の設計意図ではなく、実態として現在どのように使われているかが問題である。長らくプログラムの修正や拡張が行われるうちに、実際のデータの使われ方と元々の設計意図との間に乖離が生じることがある。
【００２３】
例えば、マスターデータのはずなのについでにトランザクションデータを一部持たせてしまっている、あるいは、ある業務機能のためのデータとして設計したのに他の機能から参照されるようになっている場合がある。このような場合、設計当初に比べてデータ変更時の影響範囲が拡大して、システム保守上の困難の原因となることが起こり得る。
【００２４】
そこで、本実施の形態では、情報処理装置１０１は、ソフトウェアＳＷ内のプログラムからデータへのアクセスを依存関係として用いて、プログラム同士の依存関係とともにクラスタリングを適用する。そして、情報処理装置１０１は、クラスタリングにより得られるクラスタ内のデータについて、クラスタ内外のプログラムからのアクセス状況から当該データの使われ方の特徴を解析する。
【００２５】
（情報処理装置１０１のハードウェア構成例）
図２は、情報処理装置１０１のハードウェア構成例を示すブロック図である。図２において、情報処理装置１０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１と、メモリ２０２と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）２０３と、ディスクドライブ２０４と、ディスク２０５と、を有する。また、各構成部は、バス２００によってそれぞれ接続される。
【００２６】
ここで、ＣＰＵ２０１は、情報処理装置１０１の全体の制御を司る。メモリ２０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）およびフラッシュＲＯＭなどを有する。具体的には、例えば、フラッシュＲＯＭやＲＯＭが各種プログラムを記憶し、ＲＡＭがＣＰＵ２０１のワークエリアとして使用される。メモリ２０２に記憶されるプログラムは、ＣＰＵ２０１にロードされることで、コーディングされている処理をＣＰＵ２０１に実行させる。
【００２７】
Ｉ／Ｆ２０３は、通信回線を通じてネットワーク１１０に接続され、ネットワーク１１０を介して外部のコンピュータ（例えば、図１に示したクライアント装置１０２）に接続される。そして、Ｉ／Ｆ２０３は、ネットワーク１１０と装置内部とのインターフェースを司り、外部のコンピュータからのデータの入出力を制御する。Ｉ／Ｆ２０３には、例えば、モデムやＬＡＮアダプタなどを採用することができる。
【００２８】
ディスクドライブ２０４は、ＣＰＵ２０１の制御に従ってディスク２０５に対するデータのリード／ライトを制御する。ディスク２０５は、ディスクドライブ２０４の制御で書き込まれたデータを記憶する。ディスク２０５としては、例えば、磁気ディスク、光ディスクなどが挙げられる。
【００２９】
なお、情報処理装置１０１は、上述した構成部のほかに、例えば、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、入力装置、ディスプレイ等を有することにしてもよい。また、図１に示したクライアント装置１０２についても、情報処理装置１０１と同様のハードウェア構成により実現することができる。ただし、クライアント装置１０２は、上述した構成部のほかに、例えば、入力装置、ディスプレイ等を有する。
【００３０】
（ソフトウェアＳＷのクラスタリング結果）
つぎに、実施の形態１において例題として用いるソフトウェアＳＷのクラスタリング結果について説明する。
【００３１】
図３は、ソフトウェアＳＷのクラスタリング結果の一例を地図形式で示す説明図（その１）である。図３において、プログラムｐ１〜ｐ４５を含むソフトウェアＳＷのクラスタリング結果が地図形式で示されている。図３中、各々の建物（ｐ１〜ｐ４５，ｄ１，ｄ２）が１つのプログラムまたはデータを表し、複数の建物の入っている区画がクラスタを表す。建物の間にひかれている曲線は依存関係を表す。ただし、図３では、注目しているデータとプログラムとの間の依存関係のみを描画している。
【００３２】
ここでは、クラスタリングによって、ソフトウェアＳＷ全体が５つのクラスタＣ１〜Ｃ５に分割されている。各クラスタＣ１〜Ｃ５は、９つのプログラムを含み、同じクラスタ内の全てのプログラム間に依存関係が存在する。また、クラスタ間をつなぐプログラム間で依存関係が存在するものもある。各クラスタＣ１〜Ｃ５は何らかの機能を実装するものと想定される。
【００３３】
クラスタＣ１〜Ｃ５のうちのクラスタＣ４は、２つのデータｄ１，ｄ２を含む。データｄ１は、クラスタＣ４とは異なる他のクラスタ内のそれぞれ１つのプログラムから読み出され、かつ、同じクラスタＣ４内のあるプログラムから読み書きされている。一方、データｄ２は、同じクラスタＣ４内のプログラムｐ３０から読み書き両方されているだけで、他のプログラムからのアクセスはない。
【００３４】
なお、データｄ１は、マスターデータを想定しており、これを読み書き両方しているクラスタＣ４内のプログラムｐ２９は、マスターメンテナンス用のプログラムであることを想定している。また、データｄ２は、１つのプログラムが自分だけで用いる一時ファイルであることを想定している。
【００３５】
（依存関係情報の具体例）
つぎに、情報処理装置１０１が用いる依存関係情報について説明する。依存関係情報は、ソフトウェアＳＷのプログラム間の依存関係およびプログラム／データ間の依存関係を示す情報である。
【００３６】
図４は、依存関係情報の具体例を示す説明図である。図４において、依存関係情報４００は、依存元と依存先と種別とを対応付けて示す情報である。ここで、依存元は、依存元のエンティティ（エンティティ名）を示す。エンティティは、ソフトウェアＳＷ内のプログラム、または、当該プログラムからアクセスされるデータをまとめた総称である。依存先は、依存先のエンティティ（エンティティ名）を示す。
【００３７】
種別は、エンティティ間の依存関係の種別を示す。種別としては、例えば、「ＣＡＬＬ」、「ＲＥＡＤ」、「ＣＲＥＡＴＥ」、「ＵＰＤＡＴＥ」、「ＤＥＬＥＴＥ」などがある。種別「ＣＡＬＬ」は、依存元のプログラムが依存先のプログラムを呼び出すという、プログラム間の依存関係を示す。
【００３８】
また、種別「ＲＥＡＤ」は、依存元のプログラムが依存先のデータを読み出すという、プログラム／データ間の依存関係を示す。種別「ＣＲＥＡＴＥ」は、依存元のプログラムが依存先のデータを生成するという、プログラム／データ間の依存関係を示す。種別「ＵＰＤＡＴＥ」は、依存元のプログラムが依存先のデータを更新するという、プログラム／データ間の依存関係を示す。種別「ＤＥＬＥＴＥ」は、依存元のプログラムが依存先のデータを削除するという、プログラム／データ間の依存関係を示す。
【００３９】
（クラスタ情報の具体例）
つぎに、情報処理装置１０１が用いるクラスタ情報について説明する。クラスタ情報は、ソフトウェアＳＷのクラスタリング結果を示す情報である。
【００４０】
図５は、クラスタ情報の具体例を示す説明図である。図５において、クラスタ情報５００は、エンティティ名とクラスタＩＤとを対応付けて示す情報である。ここで、エンティティ名は、エンティティ（プログラムまたはデータ）の名称である。クラスタＩＤは、クラスタを一意に識別する識別子である。
【００４１】
クラスタ情報５００によれば、ソフトウェアＳＷ内のプログラムおよび当該プログラムからアクセスされるデータを含む要素群を分割して得られた各クラスタに属するエンティティを特定することができる。なお、図３の例題は、クラスタ情報５００が示すクラスタリング結果に対応する。
【００４２】
（情報処理装置１０１の機能的構成例）
図６は、実施の形態１にかかる情報処理装置１０１の機能的構成例を示すブロック図である。図６において、情報処理装置１０１は、取得部６０１と、分割部６０２と、第１の算出部６０３と、第２の算出部６０４と、出力部６０５と、を含む構成である。取得部６０１〜出力部６０５は制御部となる機能であり、具体的には、例えば、図２に示したメモリ２０２、ディスク２０５などの記憶装置に記憶されたプログラムをＣＰＵ２０１に実行させることにより、または、Ｉ／Ｆ２０３により、その機能を実現する。各機能部の処理結果は、例えば、メモリ２０２、ディスク２０５などの記憶装置に記憶される。
【００４３】
取得部６０１は、分析対象となるソフトウェアＳＷを取得する。具体的には、例えば、取得部６０１は、図１に示したネットワーク１１０を介して、外部のコンピュータ（例えば、図１に示したクライアント装置１０２）からソフトウェアＳＷのソースコードを取得することにしてもよい。
【００４４】
また、取得部６０１は、例えば、不図示の入力装置を用いたユーザの操作入力により、ソフトウェアＳＷのソースコードを取得することにしてもよい。取得されたソフトウェアＳＷは、例えば、図１に示したソースコードＤＢ１２０に記憶される。なお、ソースコードＤＢ１２０は、例えば、メモリ２０２、ディスク２０５などの記憶装置により実現される。
【００４５】
分割部６０２は、ソフトウェアＳＷをクラスタリングする。ここで、クラスタリングとは、例えば、ソフトウェアＳＷをグラフで表現し、当該グラフをクラスタに分割することである。クラスタは、ソフトウェアＳＷのグラフを部分グラフに分割したときの、部分グラフまたは部分グラフに属する要素の集合のことである。
【００４６】
具体的には、例えば、分割部６０２は、ソースコードＤＢ１２０に記憶されたソフトウェアＳＷのソースコードを解析して、ソフトウェアＳＷ内のプログラム間の依存関係およびプログラム／データ間の依存関係を示す依存関係情報を生成する。ここで、プログラム間の依存関係は、例えば、コンポーネント、モジュール、ソースコード、クラス、関数などの呼び出し関係、継承関係、包含関係などの関係である。また、プログラム／データ間の依存関係は、プログラムからデータへのアクセス（読み出し、書き込み）の関係である。
【００４７】
より詳細に説明すると、分割部６０２は、例えば、既存の構文解析技術および静的解析技術により、ソフトウェアＳＷのソースコードを解析し、ソフトウェアＳＷ内のプログラム間の依存関係およびプログラム／データ間の依存関係を抽出する。これにより、例えば、図４に示したような依存関係情報４００を生成することができる。
【００４８】
そして、分割部６０２は、生成した依存関係情報に基づいて、ソフトウェアＳＷ内のプログラムおよび当該プログラムからアクセスされるデータを含む要素群を複数のクラスタに分割する。これにより、例えば、図５に示したようなクラスタ情報５００が分割結果として出力される。
【００４９】
すなわち、分割部６０２は、プログラムとデータとの間の読み書きの依存関係を、プログラム間の依存関係と同様に考慮して、クラスタリングを行う。したがって、ここで得られるクラスタの単位は、開発者が設計したモジュールやパッケージ等のソフトウェア部品ではなく、プログラム間あるいはプログラムとデータとがどのように依存しているかの実態に即して発見されるものとなる。
【００５０】
以下の説明では、ソフトウェアＳＷ内のプログラムおよび当該プログラムからアクセスされるデータを含む要素群を分割して得られる複数のクラスタを「クラスタＣ１〜Ｃｎ」と表記する場合がある（ｎ：２以上の自然数）。また、クラスタＣ１〜Ｃｎのうちの任意のクラスタを「クラスタＣｉ」と表記する場合がある（ｉ＝１，２，…，ｎ）。
【００５１】
第１の算出部６０３は、クラスタＣｉ内のデータの基本指標を算出する。ここで、基本指標とは、クラスタＣｉ内のデータが、クラスタＣｉ内外のプログラムからどれだけ読み書きされているかを示す指標である。基本指標は、例えば、ＲＯ、ＷＯ、ＲＩおよびＷＩの４種類の指標を含む。
【００５２】
ＲＯ（Ｒｅａｄ／Ｏｕｔ）は、クラスタＣｉ内のデータが、クラスタＣｉ外のプログラムから読み出される回数を示す。ＷＯ（Ｗｒｉｔｅ／Ｏｕｔ）は、クラスタＣｉ内のデータが、クラスタＣｉ外のプログラムから書き込まれる回数を示す。ＲＩ（Ｒｅａｄ／Ｉｎ）は、クラスタＣｉ内のデータが、クラスタＣｉ内のプログラムから読み出される回数を示す。ＷＩ（Ｗｒｉｔｅ／Ｉｎ）は、クラスタＣｉ内のデータが、クラスタＣｉ内のプログラムから書き込まれる回数を示す。なお、クラスタＣｉ外のプログラムとは、クラスタＣｉとは異なる他のクラスタ内のプログラムである。
【００５３】
具体的には、例えば、第１の算出部６０３は、依存関係情報４００を参照して、プログラム／データ間の依存関係の関連種別を特定する。プログラム／データ間の依存関係の関連種別は、「ＲＥＡＤ」または「ＷＲＩＴＥ」のいずれかである。関連種別「ＲＥＡＤ」は、プログラムがデータを読み出すという依存関係を示す。関連種別「ＷＲＩＴＥ」は、プログラムがデータを書き込むという依存関係を示す。
【００５４】
例えば、上述したエンティティ間の依存関係の種別「ＲＥＡＤ」は、関連種別「ＲＥＡＤ」に相当する。また、上述したエンティティ間の依存関係の種別「ＣＲＥＡＴＥ」、「ＵＰＤＡＴＥ」および「ＤＥＬＥＴＥ」は、プログラムがデータを書き込むという依存関係をそれぞれ示しており、関連種別「ＷＲＩＴＥ」に相当する。
【００５５】
特定されたプログラム／データ間の依存関係の関連種別は、例えば、図７に示すような関連テーブル７００に記憶される。ここで、関連テーブル７００の記憶内容について説明する。なお、関連テーブル７００は、例えば、メモリ２０２、ディスク２０５などの記憶装置により実現される。
【００５６】
図７は、関連テーブル７００の記憶内容の一例を示す説明図である。図７において、関連テーブル７００は、データ名、プログラム名および関連種別のフィールドを有し、各フィールドに情報を設定することで、関連情報（例えば、関連情報７００−１〜７００−３）をレコードとして記憶する。
【００５７】
ここで、データ名は、ソフトウェアＳＷで用いられるデータの名称である。プログラム名は、ソフトウェアＳＷに含まれるプログラムの名称である。関連種別は、プログラム／データ間の依存関係の種別を示す。関連種別「ＲＥＡＤ」は、プログラムがデータを読み出すという依存関係を示す。関連種別「ＷＲＩＴＥ」は、プログラムがデータを書き込むという依存関係を示す。
【００５８】
例えば、関連情報７００−１は、プログラム名「ｐｋｇ１．Ｃｌｓ１」のプログラムがデータ名「ＤＡＴＡ」のデータを読み出すという依存関係を示す。
【００５９】
そして、第１の算出部６０３は、例えば、関連テーブル７００を参照して、クラスタＣｉ内のデータが、クラスタＣｉ内外のプログラムからどれだけ読み書きされているかを計数することにより、基本指標（ＲＯ、ＷＯ、ＲＩ、ＷＩ）を算出する。
【００６０】
算出されたクラスタＣｉ内のデータの基本指標（ＲＯ、ＷＯ、ＲＩ、ＷＩ）は、例えば、図８に示すような基本指標テーブル８００に記憶される。ここで、基本指標テーブル８００の記憶内容について説明する。なお、基本指標テーブル８００は、例えば、メモリ２０２、ディスク２０５などの記憶装置により実現される。
【００６１】
図８は、基本指標テーブル８００の記憶内容の一例を示す説明図（その１）である。図８において、基本指標テーブル８００は、データ名、ＲＯ、ＷＯ、ＲＩおよびＷＩのフィールドを有し、各フィールドに情報を設定することで、基本指標情報８００−１，８００−２をレコードとして記憶する。
【００６２】
基本指標情報８００−１は、データ名「ＤＡＴＡ」のデータのＲＯ「４」、ＷＯ「０」、ＲＩ「１」およびＷＩ「１」を示す。基本指標情報８００−２は、データ名「ＤＡＴＡ０」のデータのＲＯ「０」、ＷＯ「０」、ＲＩ「１」およびＷＩ「１」を示す。
【００６３】
図６の説明に戻り、第２の算出部６０４は、算出されたクラスタＣｉ内のデータの基本指標に基づいて、当該データの特徴を表す指標値を算出する。具体的には、例えば、第２の算出部６０４は、図８に示した基本指標テーブル８００を参照して、クラスタＣｉ内のデータの応用指標を算出する。
【００６４】
ここで、応用指標は、クラスタＣｉ内のデータの特徴を表す指標であり、分類指標と逸脱指標を含む。分類指標は、データの特徴・性質を分類するための指標である。分類指標は、例えば、グローバルデータパターン指標、内部専用パターン指標、マスターデータパターン指標、ログパターン指標を含む。
【００６５】
グローバルデータパターン指標は、プログラムにおけるグローバル変数のように、ソフトウェアＳＷ全体から読み書きされるデータである度合いを示す指標である。グローバルデータパターン指標が高いと、ソフトウェアＳＷの様々な部分が当該データに依存していることを意味しており、データの形式や意味を変更する際の影響が大きいことになる。
【００６６】
例えば、第２の算出部６０４は、クラスタＣｉ内のデータが、クラスタＣｉ外のプログラムから読み出される回数（ＲＯ）と、クラスタＣｉ外のプログラムから書き込まれる回数（ＷＯ）とに基づいて、グローバルデータパターン指標を算出する。
【００６７】
より具体的には、例えば、第２の算出部６０４は、下記式（１）を用いて、クラスタＣｉ内のデータのグローバルデータパターン指標を算出することができる。ただし、Ｉａは、グローバルデータパターン指標である。ＲＯは、クラスタＣｉ内のデータが、クラスタＣｉ外のプログラムから読み出される回数である。ＷＯは、クラスタＣｉ内のデータが、クラスタＣｉ外のプログラムから書き込まれる回数である。
【００６８】
Ｉａ＝ＲＯ×ＷＯ      ・・・（１）
【００６９】
内部専用パターン指標は、クラスタＣｉ内のデータが、特定の機能に専用のデータである、すなわち、特定の機能に閉じて使用されるデータであることを示す指標である。データが特定の機能に専用であるときは、ソフトウェアＳＷの他の部分からの依存が存在しないので、データ形式の変更が他の部分に直接影響を及ぼさず、保守性が良好であるといえる。
【００７０】
内部専用パターン指標は、０または１の２値で表される。内部専用パターン指標「１」は、特定の機能に専用のデータであることを示す。内部専用パターン指標「０」は、特定の機能に専用のデータではないことを示す。
【００７１】
例えば、第２の算出部６０４は、クラスタＣｉ内のデータが、クラスタＣｉ外のプログラムから読み書きされていない場合は、内部専用パターン指標「１」を算出する。一方、第２の算出部６０４は、クラスタＣｉ内のデータが、クラスタＣｉ外のプログラムから読み出しまたは書き込みされている場合は、内部専用パターン指標「０」を算出する。
【００７２】
より具体的には、例えば、第２の算出部６０４は、下記式（２）および（３）を用いて、クラスタＣｉ内のデータの内部専用パターン指標を算出することができる。ただし、Ｉｂは、内部専用パターン指標である。条件１は、「ＷＯ＝０」かつ「ＲＯ＝０」である。条件２は、条件１以外である。
【００７３】
条件１のとき  ⇒  Ｉｂ＝１      ・・・（２）
条件２のとき  ⇒  Ｉｂ＝０      ・・・（３）
【００７４】
マスターデータパターン指標は、マスターデータのように、ソフトウェアＳＷの複数の機能から読み出され、特定のプログラムのみから書き込まれるデータである度合いを示す指標である。特定のプログラムは、例えば、１あるいは少数のマスターメンテナンス用のプログラムである。
【００７５】
すなわち、マスターデータパターン指標は、業務システムにおける商品マスタや顧客マスタのように、ソフトウェアＳＷの様々な機能から参照されるが、書き込むのはマスターメンテナンス用のプログラムのみであるような使われ方をしている場合に高くなる。
【００７６】
例えば、第２の算出部６０４は、クラスタＣｉ内のデータが、クラスタＣｉ外のプログラムから書き込まれていない場合は、クラスタＣｉ外のプログラムから読み出される回数（ＲＯ）に基づいて、マスターデータパターン指標を算出する。また、第２の算出部６０４は、クラスタＣｉ内のデータが、クラスタＣｉ外のプログラムから読み書きされておらず、かつ、クラスタＣｉ内のプログラムから書き込まれない場合には、クラスタＣｉ内のプログラムから読み出される回数（Ｒｉ）に基づいて、マスターデータパターン指標を算出する。
【００７７】
より具体的には、例えば、第２の算出部６０４は、下記式（４）〜（６）を用いて、クラスタＣｉ内のデータのマスターデータパターン指標を算出することができる。ただし、Ｉｃは、マスターデータパターン指標である。条件１は、「ＷＯ＝０」かつ「ＲＯ＞０」である。条件２は、「ＷＯ＝０」かつ「ＲＯ＝０」かつ「ＲＩ＞０」かつ「ＷＩ＝０」である。条件３は、条件１，２以外である。
【００７８】
条件１のとき  ⇒  Ｉｃ＝ＲＯ      ・・・（４）
条件２のとき  ⇒  Ｉｃ＝ＲＩ      ・・・（５）
条件３のとき  ⇒  Ｉｃ＝０        ・・・（６）
【００７９】
ログパターン指標は、ログデータのように、ソフトウェアＳＷの複数の機能から書き込まれるが、特定の機能のみから読み出される、あるいは、全く読み出されないデータである度合いを示す指標である。例えば、第２の算出部６０４は、クラスタＣｉ内のデータが、クラスタＣｉ内外のプログラムから読み出される回数（ＲＩ，ＲＯ）に対する、クラスタＣｉ内外のプログラムから書き込まれる回数（ＷＩ，ＷＯ）の割合に基づいて、ログパターン指標を算出する。
【００８０】
より具体的には、例えば、第２の算出部６０４は、下記式（７）を用いて、クラスタＣｉ内のデータのログパターン指標を算出することができる。ただし、Ｉｄは、ログパターン指標である。Ｗは、「ＷＯ＋ＷＩ」である。Ｒは、「ＲＯ＋ＲＩ」である。ＲＩは、クラスタＣｉ内のデータが、クラスタＣｉ内のプログラムから読み出される回数である。ＷＩは、クラスタＣｉ内のデータが、クラスタＣｉ内のプログラムから書き込まれる回数である。
【００８１】
Ｉｄ＝Ｗ／Ｒ      ・・・（７）
ただし、「Ｒ＝０」のときは「Ｒ＝１」とする。
【００８２】
また、逸脱指標は、分類指標によって分類されるデータに近い特徴・性質を持つが、一部に例外的なアクセスを持つ場合に高くなる指標である。逸脱指標は、例えば、内部専用パターン逸脱指標およびマスターデータパターン逸脱指標を含む。
【００８３】
内部専用パターン逸脱指標は、特定の機能に専用のデータであることから逸脱している度合いを示す指標である。内部専用パターン逸脱指標は、特定の機能に専用のデータに近い特徴（性質）を持つが一部に例外的なアクセスが存在する、すなわち、アクセスの多くはクラスタＣｉ内からであるが、クラスタＣｉ外のプログラムからの少数のアクセスを持つような場合に高くなる。
【００８４】
例えば、第２の算出部６０４は、クラスタＣｉ内のデータが、クラスタＣｉ外のプログラムから読み書きされる回数に対する、クラスタＣｉ内外のプログラムから読み書きされる回数の割合に基づいて、内部専用パターン逸脱指標を算出する。
【００８５】
より具体的には、例えば、第２の算出部６０４は、下記式（８）および（９）を用いて、クラスタＣｉ内のデータの内部専用パターン逸脱指標を算出することができる。ただし、Ｉｂ’は、内部専用パターン逸脱指標である。条件１は、「ＷＯ＝０」かつ「ＲＯ＝０」である。条件２は、条件１以外である。
【００８６】
条件１のとき  ⇒  Ｉｂ’＝０      ・・・（８）
条件２のとき  ⇒  Ｉｂ’＝（ＲＩ＋ＷＩ＋ＲＯ＋ＷＯ）／（ＲＯ＋ＷＯ）…（９）
【００８７】
マスターデータパターン逸脱指標は、マスターデータのようなデータであることから逸脱している度合いを示す指標である。マスターデータパターン逸脱指標は、マスターデータに近い特徴を持つが一部に例外的なアクセスが存在する、すなわち、クラスタＣｉ外のプログラムからの読み出しが多数あるが、クラスタＣｉ外のプログラムからの書き込みも少数存在する場合に高くなる。
【００８８】
例えば、第２の算出部６０４は、クラスタＣｉ内のデータが、クラスタＣｉ外のプログラムから書き込まれる回数に対する、クラスタＣｉ外のプログラムから読み書きされる回数の割合に基づいて、マスターデータパターン逸脱指標を算出する。
【００８９】
より具体的には、例えば、第２の算出部６０４は、下記式（１０）および（１１）を用いて、クラスタＣｉ内のデータのマスターデータパターン逸脱指標を算出することができる。ただし、Ｉｃ’は、マスターデータパターン逸脱指標である。条件１は、「ＷＯ＝０」である。条件２は、条件１以外である。
【００９０】
条件１のとき  ⇒  Ｉｃ’＝０      ・・・（１０）
条件２のとき  ⇒  Ｉｃ’＝（ＲＯ＋ＷＯ）／ＷＯ      ・・・（１１）
【００９１】
算出されたクラスタＣｉ内のデータの応用指標（分類指標、逸脱指標）は、例えば、図９に示すような応用指標テーブル９００に記憶される。ここで、応用指標テーブル９００の記憶内容について説明する。なお、応用指標テーブル９００は、例えば、メモリ２０２、ディスク２０５などの記憶装置により実現される。
【００９２】
図９は、応用指標テーブル９００の記憶内容の一例を示す説明図（その１）である。図９において、応用指標テーブル９００は、データ名、グローバルデータパターン指標、内部専用パターン指標、内部専用パターン逸脱指標、マスターデータパターン指標、マスターデータパターン逸脱指標およびログパターン指標のフィールドを有する。各フィールドに情報を設定することで、応用指標情報９００−１，９００−２がレコードとして記憶される。
【００９３】
応用指標情報９００−１は、データ名「ＤＡＴＡ」のデータのグローバルデータパターン指標「０」、内部専用パターン指標「０」、内部専用パターン逸脱指標「１．５」、マスターデータパターン指標「４」、マスターデータパターン逸脱指標「０」およびログパターン指標「０．２」を示す。
【００９４】
また、応用指標情報９００−２は、データ名「ＤＡＴＡ０」のデータのグローバルデータパターン指標「０」、内部専用パターン指標「１」、内部専用パターン逸脱指標「０」、マスターデータパターン指標「０」、マスターデータパターン逸脱指標「０」およびログパターン指標「１」を示す。
【００９５】
なお、応用指標情報９００−１，９００−２には、例えば、データ名「ＤＡＴＡ」、「ＤＡＴＡ０」の各データが、読み出し専用のデータであるか否かの情報や、書き込み専用のデータであるか否かの情報が含まれていてもよい。
【００９６】
出力部６０５は、クラスタＣｉのデータの識別情報と対応付けて、算出された当該データの特徴を表す指標値を出力する。データの識別情報は、例えば、データ名である。出力部６０５の出力形式としては、例えば、Ｉ／Ｆ２０３による外部のコンピュータへの送信、メモリ２０２、ディスク２０５などの記憶装置への記憶、不図示のディスプレイへの表示、不図示のプリンタへの印刷出力などがある。
【００９７】
具体的には、例えば、出力部６０５は、分析対象であるソフトウェアＳＷの識別情報と対応付けて、応用指標テーブル９００内の応用指標情報９００−１，９００−２をクライアント装置１０２に送信することにしてもよい。この結果、クライアント装置１０２において、例えば、不図示のディスプレイに応用指標情報９００−１，９００−２が表示される。
【００９８】
これにより、ユーザ（例えば、ソフトウェアＳＷの開発者や分析者）は、ソフトウェアＳＷにおいて用いられる各データの応用指標（分類指標、逸脱指標）を参照して、各データがどのような使われ方をしているかを判断することができる。
【００９９】
例えば、応用指標情報９００−１，９００−２によれば、マスターデータパターン指標について、データ名「ＤＡＴＡ」のデータが「４」、データ名「ＤＡＴＡ０」のデータが「０」である。したがって、ユーザは、データ名「ＤＡＴＡ」のデータのほうがデータ名「ＤＡＴＡ０」のデータよりもマスターデータらしいこと、そしてデータ名「ＤＡＴＡ０」のデータは全くマスターデータらしくないことがわかる。
【０１００】
また、内部専用パターン指標について、データ名「ＤＡＴＡ」のデータが「０」、データ名「ＤＡＴＡ０」のデータが「１」である。したがって、ユーザは、データ名「ＤＡＴＡ」のデータは内部専用（特定の機能に専用）ではなく、データ名「ＤＡＴＡ０」のデータは内部専用であることがわかる。
【０１０１】
また、マスターデータパターン逸脱指標について、データ名「ＤＡＴＡ」のデータが「０」、データ名「ＤＡＴＡ０」のデータが「０」である。したがって、ユーザは、どちらのデータについても、「マスターデータらしいのに一部にふさわしくないアクセスが存在する」とは認められないことがわかる。
【０１０２】
また、内部専用パターン逸脱指標について、データ名「ＤＡＴＡ」のデータが「１．５」、データ名「ＤＡＴＡ０」のデータが「０」である。データ名「ＤＡＴＡ０」のデータは、上述したように内部専用であり逸脱したアクセスは存在しないので「０」という値は妥当である。一方、データ名「ＤＡＴＡ」のデータは、クラスタ内外の両方からアクセスされているので「０」より高い値になっているが、クラスタ外からのアクセスが比較的多くクラスタ内からのアクセスが多いわけではない。このため、「内部専用なのに一部例外的なアクセスがある」わけではなく、比較的低い値にとどまっている。
【０１０３】
これらのことから、応用指標情報９００−１，９００−２によれば、ユーザは、データ名「ＤＡＴＡ」のデータがマスターデータらしいこと、データ名「ＤＡＴＡ０」のデータが特定の機能に専用のデータらしいことを把握することができる。
【０１０４】
（情報処理装置１０１の分析支援処理手順）
つぎに、図１０〜図１３を用いて、実施の形態１にかかる情報処理装置１０１の分析支援処理手順について説明する。
【０１０５】
図１０は、実施の形態１にかかる情報処理装置１０１の分析支援処理手順の一例を示すフローチャートである。図１０のフローチャートにおいて、まず、情報処理装置１０１は、ソースコードＤＢ１２０から分析対象となるソフトウェアＳＷのソースコードを読み込む（ステップＳ１００１）。
【０１０６】
つぎに、情報処理装置１０１は、ソフトウェアＳＷのソースコードを解析して、ソフトウェアＳＷ内のプログラム間の依存関係およびプログラム／データ間の依存関係を抽出する（ステップＳ１００２）。これにより、ソフトウェアＳＷ内のプログラム間の依存関係およびプログラム／データ間の依存関係を示す依存関係情報が生成される。
【０１０７】
そして、情報処理装置１０１は、抽出したプログラム間の依存関係およびプログラム／データ間の依存関係に基づいて、ソフトウェアＳＷをクラスタリングする（ステップＳ１００３）。クラスタリングとは、ソフトウェアＳＷ内のプログラムおよび当該プログラムからアクセスされるデータを含む要素群を複数のクラスタに分割して、クラスタ情報（例えば、クラスタ情報５００）を分割結果として出力することである。
【０１０８】
つぎに、情報処理装置１０１は、関連テーブル作成処理を実行する（ステップＳ１００４）。関連テーブル作成処理は、例えば、図７に示したような関連テーブル７００を作成する処理である。なお、関連テーブル作成処理の具体的な処理手順は、図１１を用いて後述する。
【０１０９】
つぎに、情報処理装置１０１は、ソフトウェアＳＷをクラスタリングした分割結果であるクラスタ情報から、未選択のデータ名を選択する（ステップＳ１００５）。なお、各エンティティがプログラムまたはデータのいずれであるかは、例えば、クラスタ情報のエンティティ名から判別される。
【０１１０】
つぎに、情報処理装置１０１は、選択したデータ名に対応する基本指標、応用指標（分類指標、逸脱指標）を初期化する（ステップＳ１００６）。そして、情報処理装置１０１は、作成した関連テーブル７００から、選択したデータ名に対応する関連情報の集合を抽出する（ステップＳ１００７）。
【０１１１】
つぎに、情報処理装置１０１は、抽出した関連情報の集合に基づいて、選択したデータ名のデータについての基本指標を算出する基本指標算出処理を実行する（ステップＳ１００８）。基本指標算出処理の具体的な処理手順については、図１２を用いて後述する。
【０１１２】
つぎに、情報処理装置１０１は、算出した基本指標に基づいて、選択したデータ名のデータについての応用指標（分類指標、逸脱指標）を算出する応用指標算出処理を実行する（ステップＳ１００９）。応用指標算出処理の具体的な処理手順については、図１３を用いて後述する。
【０１１３】
そして、情報処理装置１０１は、クラスタ情報から選択していない未選択のデータ名があるか否かを判断する（ステップＳ１０１０）。ここで、未選択のデータ名がある場合（ステップＳ１０１０：Ｙｅｓ）、情報処理装置１０１は、ステップＳ１００５に戻る。
【０１１４】
一方、未選択のデータ名がない場合（ステップＳ１０１０：Ｎｏ）、情報処理装置１０１は、算出した各データについての応用指標（分類指標、逸脱指標）を出力して（ステップＳ１０１１）、本フローチャートによる一連の処理を終了する。
【０１１５】
これにより、例えば、ソフトウェアＳＷの開発者や分析者に対して、ソフトウェアＳＷにおいて用いられる各データがどのような使われ方をしているのかの実態を把握可能な応用指標（分類指標、逸脱指標）を提示することができる。
【０１１６】
＜関連テーブル作成処理の具体的処理手順＞
つぎに、図１０に示したステップＳ１００４の関連テーブル作成処理の具体的な処理手順について説明する。
【０１１７】
図１１は、関連テーブル作成処理の具体的処理手順の一例を示すフローチャートである。図１１のフローチャートにおいて、まず、情報処理装置１０１は、依存関係情報を参照して、ソフトウェアＳＷ内のプログラム間の依存関係およびプログラム／データ間の依存関係のうちの未選択の依存関係を選択する（ステップＳ１１０１）。
【０１１８】
つぎに、情報処理装置１０１は、選択した依存関係が、プログラムからデータへのアクセスを示す依存関係であるか否かを判断する（ステップＳ１１０２）。ここで、プログラムからデータへのアクセスを示す依存関係ではない場合（ステップＳ１１０２：Ｎｏ）、情報処理装置１０１は、ステップＳ１１０６に移行する。
【０１１９】
一方、プログラムからデータへのアクセスを示す依存関係である場合（ステップＳ１１０２：Ｙｅｓ）、情報処理装置１０１は、選択した依存関係の種別がＣＲＥＡＴＥ，ＵＰＤＡＴＥ，ＤＥＬＥＴＥのいずれかであるか否かを判断する（ステップＳ１１０３）。
【０１２０】
ここで、ＣＲＥＡＴＥ，ＵＰＤＡＴＥ，ＤＥＬＥＴＥのいずれでもない場合（ステップＳ１１０３：Ｎｏ）、情報処理装置１０１は、ステップＳ１１０５に移行する。一方、ＣＲＥＡＴＥ，ＵＰＤＡＴＥ，ＤＥＬＥＴＥのいずれかである場合（ステップＳ１１０３：Ｙｅｓ）、情報処理装置１０１は、選択した依存関係の種別をＷＲＩＴＥに置き換える（ステップＳ１１０４）。
【０１２１】
そして、情報処理装置１０１は、選択した依存関係の依存元（プログラム名）、依存先（データ名）、種別（関連種別）を示す関連情報を関連テーブルに登録する（ステップＳ１１０５）。つぎに、情報処理装置１０１は、依存関係情報を参照して、未選択の依存関係があるか否かを判断する（ステップＳ１１０６）。
【０１２２】
ここで、未選択の依存関係がある場合（ステップＳ１１０６：Ｙｅｓ）、情報処理装置１０１は、ステップＳ１１０１に戻る。一方、未選択の依存関係がない場合（ステップＳ１１０６：Ｎｏ）、情報処理装置１０１は、関連テーブル作成処理を呼び出したステップに戻る。
【０１２３】
これにより、ソフトウェアＳＷのプログラム／データ間の依存関係の依存元のプログラム名、依存先のデータ名および関連種別（ＲＥＡＤまたはＷＲＩＴＥ）を示す関連情報を関連テーブルに登録することができる。
【０１２４】
＜基本指標算出処理の具体的処理手順＞
つぎに、図１０に示したステップＳ１００８の基本指標算出処理の具体的な処理手順について説明する。
【０１２５】
図１２は、基本指標算出処理の具体的処理手順の一例を示すフローチャートである。図１２のフローチャートにおいて、まず、情報処理装置１０１は、図１０に示したステップＳ１００７において抽出した関連情報の集合から未選択の関連情報を選択する（ステップＳ１２０１）。
【０１２６】
そして、情報処理装置１０１は、クラスタ情報を参照して、選択した関連情報が示すデータとプログラムとが同一クラスタに属しているか否かを判断する（ステップＳ１２０２）。ここで、同一クラスタに属していない場合（ステップＳ１２０２：Ｎｏ）、情報処理装置１０１は、選択した関連情報の関連種別がＲＥＡＤであるか否かを判断する（ステップＳ１２０３）。
【０１２７】
ここで、関連種別がＲＥＡＤである場合（ステップＳ１２０３：Ｙｅｓ）、情報処理装置１０１は、選択した関連情報のデータ名のデータについての基本指標ＲＯをインクリメントして（ステップＳ１２０４）、ステップＳ１２０９に移行する。
【０１２８】
一方、関連種別がＷＲＩＴＥである場合（ステップＳ１２０３：Ｎｏ）、情報処理装置１０１は、選択した関連情報のデータ名のデータについての基本指標ＷＯをインクリメントして（ステップＳ１２０５）、ステップＳ１２０９に移行する。
【０１２９】
また、ステップＳ１２０２において、同一クラスタに属している場合（ステップＳ１２０２：Ｙｅｓ）、情報処理装置１０１は、選択した関連情報の関連種別がＲＥＡＤであるか否かを判断する（ステップＳ１２０６）。
【０１３０】
ここで、関連種別がＲＥＡＤである場合（ステップＳ１２０６：Ｙｅｓ）、情報処理装置１０１は、選択した関連情報のデータ名のデータについての基本指標ＲＩをインクリメントして（ステップＳ１２０７）、ステップＳ１２０９に移行する。
【０１３１】
一方、関連種別がＷＲＩＴＥである場合（ステップＳ１２０６：Ｎｏ）、情報処理装置１０１は、選択した関連情報のデータ名のデータについての基本指標ＷＩをインクリメントする（ステップＳ１２０８）。そして、情報処理装置１０１は、関連情報の集合から選択されていない未選択の関連情報があるか否かを判断する（ステップＳ１２０９）。
【０１３２】
ここで、未選択の関連情報がある場合（ステップＳ１２０９：Ｙｅｓ）、情報処理装置１０１は、ステップＳ１２０１に戻る。一方、未選択の関連情報がない場合（ステップＳ１２０９：Ｎｏ）、情報処理装置１０１は、基本指標算出処理を呼び出したステップに戻る。
【０１３３】
これにより、ソフトウェアＳＷにおいて用いられる各データについての基本指標ＲＯ，ＷＯ，ＲＩ，ＷＩを算出することができる。なお、算出された各データについての基本指標ＲＯ，ＷＯ，ＲＩ，ＷＩは、例えば、図８に示したような基本指標テーブル８００に記憶される。
【０１３４】
＜応用指標算出処理の具体的処理手順＞
つぎに、図１０に示したステップＳ１００９の応用指標算出処理の具体的な処理手順について説明する。
【０１３５】
図１３は、応用指標算出処理の具体的処理手順の一例を示すフローチャートである。図１３のフローチャートにおいて、まず、情報処理装置１０１は、基本指標テーブル８００を参照して、図１０に示したステップＳ１００５において選択したデータ名のデータについてのグローバルデータパターン指標を算出する（ステップＳ１３０１）。
【０１３６】
つぎに、情報処理装置１０１は、基本指標テーブル８００を参照して、選択したデータ名のデータについての内部専用パターン指標を算出する（ステップＳ１３０２）。つぎに、情報処理装置１０１は、基本指標テーブル８００を参照して、選択したデータ名のデータについてのマスターデータパターン指標を算出する（ステップＳ１３０３）。
【０１３７】
つぎに、情報処理装置１０１は、基本指標テーブル８００を参照して、選択したデータ名のデータについてのログパターン指標を算出する（ステップＳ１３０４）。つぎに、情報処理装置１０１は、基本指標テーブル８００を参照して、選択したデータ名のデータについての内部専用パターン逸脱指標を算出する（ステップＳ１３０５）。
【０１３８】
そして、情報処理装置１０１は、基本指標テーブル８００を参照して、選択したデータ名のデータについてのマスターデータパターン逸脱指標を算出して（ステップＳ１３０６）、応用指標算出処理を呼び出したステップに戻る。
【０１３９】
これにより、ソフトウェアＳＷにおいて用いられる各データについての応用指標（分類指標、逸脱指標）を算出することができる。なお、算出された各データについての応用指標（分類指標、逸脱指標）は、例えば、図９に示したような応用指標テーブル９００に記憶される。
【０１４０】
以上説明したように、実施の形態１にかかる情報処理装置１０１によれば、ソフトウェアＳＷ内のプログラム間の依存関係およびプログラム／データ間の依存関係に基づいて、ソフトウェアＳＷ内のプログラムおよび当該プログラムからアクセスされるデータを含む要素群をクラスタＣ１〜Ｃｎに分割することができる。分割したクラスタＣ１〜ＣｎのいずれかのクラスタＣｉ内のデータが、クラスタＣｉ内のプログラムからアクセスされる回数（基本指標ＲＩ，ＷＩ）と、クラスタＣｉ外のプログラムからアクセスされる回数（基本指標ＲＯ，ＷＯ）とに基づいて、当該データの特徴を表す指標値（応用指標）を算出することができる。
【０１４１】
これにより、ソフトウェアＳＷにおいて用いられる各データがどのような使われ方をしているのかの実態を把握可能な応用指標（分類指標、逸脱指標）を求めることができる。
【０１４２】
また、情報処理装置１０１によれば、クラスタＣｉ内のデータの識別情報と対応付けて、算出した当該データの特徴を表す指標値を出力することができる。これにより、ソフトウェアＳＷの開発者や分析者等に対して、ソフトウェアＳＷにおいて用いられる各データがどのような使われ方をしているのかの実態を把握可能な応用指標（分類指標、逸脱指標）を提示することができる。
【０１４３】
また、情報処理装置１０１によれば、クラスタＣｉ内のデータが、クラスタＣｉ外のプログラムから読み出される回数（ＲＯ）と、クラスタＣｉ外のプログラムから書き込まれる回数（ＷＯ）とに基づいて、グローバルデータパターン指標を算出することができる。
【０１４４】
これにより、プログラムにおけるグローバル変数のように、ソフトウェアＳＷ全体から読み書きされるデータである度合いを示す指標を求めることができる。したがって、ユーザは、グローバルデータパターン指標が高いデータについて、ソフトウェアＳＷの様々な部分が当該データに依存しており、データの形式や意味を変更する際の影響が大きいことを把握することができる。
【０１４５】
また、情報処理装置１０１によれば、クラスタＣｉ内のデータが、クラスタＣｉ外のプログラムから読み書きされていない場合は、特定の機能に専用のデータであることを示す内部専用パターン指標「１」を算出することができる。
【０１４６】
これにより、クラスタＣｉ内のデータが、特定の機能に専用のデータである、すなわち、特定の機能に閉じて使用されるデータであることを示す指標を求めることができる。したがって、ユーザは、内部専用パターン指標が「１」のデータについて、ソフトウェアＳＷの他の部分からの依存が存在しないため、データ形式の変更が他の部分に直接影響を及ぼさず、保守性が良好であることを把握することができる。
【０１４７】
また、情報処理装置１０１によれば、クラスタＣｉ内のデータが、クラスタＣｉ外のプログラムから書き込まれていない場合は、クラスタＣｉ外のプログラムから読み出される回数（ＲＯ）に基づいて、マスターデータパターン指標を算出することができる。また、情報処理装置１０１によれば、クラスタＣｉ内のデータが、クラスタＣｉ外のプログラムから読み書きされておらず、かつ、クラスタＣｉ内のプログラムから書き込まれない場合には、クラスタＣｉ内のプログラムから読み出される回数（ＲＩ）に基づいて、マスターデータパターン指標を算出することができる。
【０１４８】
これにより、マスターデータのように、ソフトウェアＳＷの複数の機能から読み出され、特定のプログラムのみから書き込まれるデータである度合いを示す指標を求めることができる。したがって、ユーザは、マスターデータパターン指標が高いデータについて、ソフトウェアＳＷの様々な機能から参照されるが、書き込むのは１つあるいは少数のマスターメンテナンス用のプログラムであるような使われ方をしていることを把握することができる。
【０１４９】
また、情報処理装置１０１によれば、クラスタＣｉ内のデータが、クラスタＣｉ内外のプログラムから読み出される回数（ＲＩ，ＲＯ）に対する、クラスタＣｉ内外のプログラムから書き込まれる回数（ＷＩ，ＷＯ）の割合に基づいて、ログパターン指標を算出することができる。
【０１５０】
これにより、ログデータのように、ソフトウェアＳＷの複数の機能から書き込まれるが、特定の機能のみから読み出される、あるいは、全く読み出されないデータである度合いを示す指標を求めることができる。
【０１５１】
また、情報処理装置１０１によれば、クラスタＣｉ内のデータが、クラスタＣｉ外のプログラムから読み書きされる回数に対する、クラスタＣｉ内外のプログラムから読み書きされる回数の割合に基づいて、内部専用パターン逸脱指標を算出することができる。
【０１５２】
これにより、特定の機能に専用のデータであることから逸脱している度合いを示す指標を求めることができる。したがって、ユーザは、内部専用パターン逸脱指標が高いデータについて、特定の機能に専用のデータに近い特徴（性質）を持つが一部に例外的なアクセスが存在するデータであることを把握することができる。
【０１５３】
また、情報処理装置１０１によれば、クラスタＣｉ内のデータが、クラスタＣｉ外のプログラムから書き込まれる回数に対する、クラスタＣｉ外のプログラムから読み書きされる回数の割合に基づいて、マスターデータパターン逸脱指標を算出することができる。
【０１５４】
これにより、マスターデータのようなデータであることから逸脱している度合いを示す指標を求めることができる。したがって、ユーザは、マスターデータパターン逸脱指標が高いデータについて、マスターデータに近い特徴（性質）を持つが一部に例外的なアクセスが存在するデータであることを把握することができる。
【０１５５】
これらのことから、実施の形態１にかかる情報処理装置１０１によれば、ソフトウェアシステムにおけるデータの使われ方の実態を把握することができる。例えば、ユーザは、あるデータが、マスターデータとして使われているか、あるいはログデータのように使われているかといったことを把握することができる。このため、ユーザは、当初の設計時にどういう意図のデータであったかではなく、現にどのように使われているデータであるかを把握することができる。
【０１５６】
そして、ユーザは、データがどのような使われ方をしているかということを、ソフトウェアＳＷの修正や再設計、あるいは、新たなプラットフォームへの移行のための情報として役立てることができる。例えば、ユーザは、依存関係の広範なデータや、特定の機能に専用として設計されたのに他の機能からも使われているデータが認識でき、扱いに注意すべきデータがどれであるかを判別することができる。
【０１５７】
（実施の形態２）
つぎに、実施の形態２にかかる情報処理装置１０１について説明する。実施の形態２では、ソフトウェアＳＷにおいて用いられるデータについて、既知の分類が存在する場合に、データの特徴を表す指標値（応用指標）から決定される分類と既知の分類とを突き合わせて比較した結果を出力する分析支援方法について説明する。なお、実施の形態１で説明した箇所と同様の箇所については、同一符号を付して図示および説明を省略する。
【０１５８】
（ソフトウェアＳＷのクラスタリング結果）
まず、実施の形態２において例題として用いるソフトウェアＳＷのクラスタリング結果について説明する。
【０１５９】
図１４は、ソフトウェアＳＷのクラスタリング結果の一例を地図形式で示す説明図（その２）である。図１４において、プログラムｐ１〜ｐ４５を含むソフトウェアＳＷのクラスタリング結果が地図形式で示されている。図１４中、各々の建物（ｐ１〜ｐ４５，ｄ１）が１つのプログラムまたはデータを表し、複数の建物の入っている区画がクラスタを表す。建物の間にひかれている曲線は依存関係を表す。ただし、図１４では、注目しているデータとプログラムとの間の依存関係のみを描画している。
【０１６０】
ここでは、クラスタリングによって、ソフトウェアＳＷ全体が５つのクラスタＣ１〜Ｃ５に分割されている。各クラスタＣ１〜Ｃ５は、９つのプログラムを含み、同じクラスタ内の全てのプログラム間に依存関係が存在する。また、クラスタ間をつなぐプログラム間で依存関係が存在するものもある。各クラスタＣ１〜Ｃ５は何らかの機能を実装するものと想定される。
【０１６１】
クラスタＣ１〜Ｃ５のうちのクラスタＣ４は、１つのデータｄ１を含む。データｄ１は、各クラスタＣ１〜Ｃ５内のプログラムから読み書き両方のアクセスがされている。データｄ１は、設計時に設定された名称が「ＧＤＳ＿ＭＡＳＴＥＲ」であり、商品のマスターデータとして設けられたデータであることが既知であるとする。
【０１６２】
この場合、このデータ名「ＧＤＳ＿ＭＡＳＴＥＲ」のデータについて、実施の形態１と同様に、基本指標ＲＯ，ＷＯ，ＲＩ，ＷＩを求めると、図１５に示すようになる。
【０１６３】
図１５は、基本指標テーブル８００の記憶内容の一例を示す説明図（その２）である。図１５において、基本指標テーブル８００には、基本指標情報１５００−１が記憶されている。基本指標情報１５００−１は、データ名「ＧＤＳ＿ＭＡＳＴＥＲ」のデータのＲＯ「４」、ＷＯ「４」、ＲＩ「１」およびＷＩ「１」を示す。
【０１６４】
また、このデータ名「ＧＤＳ＿ＭＡＳＴＥＲ」のデータについて、実施の形態１と同様に、図１５に示した基本指標ＲＯ，ＷＯ，ＲＩ，ＷＩから応用指標（分類指標、逸脱指標）を求めると、図１６に示すようになる。
【０１６５】
図１６は、応用指標テーブル９００の記憶内容の一例を示す説明図（その２）である。図１６において、応用指標テーブル９００には、応用指標情報１６００−１が記憶されている。応用指標情報１６００−１は、データ名「ＧＤＳ＿ＭＡＳＴＥＲ」のデータのグローバルデータパターン指標「１６」、内部専用パターン指標「０」、内部専用パターン逸脱指標「１．２５」、マスターデータパターン指標「０」、マスターデータパターン逸脱指標「２」およびログパターン指標「１」を示す。
【０１６６】
（情報処理装置１０１の機能的構成例）
つぎに、実施の形態２にかかる情報処理装置１０１の機能的構成例について説明する。
【０１６７】
図１７は、実施の形態２にかかる情報処理装置１０１の機能的構成例を示すブロック図である。図１７において、情報処理装置１０１は、取得部６０１と、分割部６０２と、第１の算出部６０３と、第２の算出部６０４と、出力部６０５と、決定部１７０１と、比較部１７０２と、を含む構成である。取得部６０１〜出力部６０５、決定部１７０１および比較部１７０２は制御部となる機能であり、具体的には、例えば、図２に示したメモリ２０２、ディスク２０５などの記憶装置に記憶されたプログラムをＣＰＵ２０１に実行させることにより、または、Ｉ／Ｆ２０３により、その機能を実現する。各機能部の処理結果は、例えば、メモリ２０２、ディスク２０５などの記憶装置に記憶される。
【０１６８】
以下、実施の形態１にかかる情報処理装置１０１の機能部とは異なる機能部について説明する。
【０１６９】
決定部１７０１は、第２の算出部６０４によって算出されたクラスタＣｉ内のデータの特徴を表す指標値に基づいて、当該データの分類を決定する。具体的には、例えば、決定部１７０１は、応用指標テーブル９００（例えば、図１６参照）を参照して、複数の応用指標のうちの値が最大となる応用指標に基づいて、データの分類を決定することにしてもよい。
【０１７０】
より詳細に説明すると、例えば、グローバルデータパターン指標の値が最大となる場合、決定部１７０１は、データの分類を「グローバルデータ」に決定する。また、例えば、マスターデータパターン指標の値が最大となる場合、決定部１７０１は、データの分類を「マスターデータ」に決定する。例えば、ログパターン指標の値が最大となる場合、決定部１７０１は、データの分類を「ログデータ」に決定する。
【０１７１】
また、例えば、内部専用パターン逸脱指標の値が最大となる場合、決定部１７０１は、データの分類を「内部専用逸脱」に決定することにしてもよい。「内部専用逸脱」は、特定の機能に専用のデータに近い特徴（性質）を持つが、一部に例外的なアクセスが存在するデータであることを示す分類である。
【０１７２】
また、例えば、マスターデータパターン逸脱指標の値が最大となる場合、決定部１７０１は、データの分類を「マスターデータ逸脱」に決定することにしてもよい。「マスターデータ逸脱」は、マスターデータに近い特徴（性質）を持つが、一部に例外的なアクセスが存在するデータであることを示す分類である。
【０１７３】
また、決定部１７０１は、例えば、内部専用パターン指標が「１」の場合には、他の応用指標の値にかかわらず、データの分類を「内部専用」に決定することにしてもよい。ここで、「内部専用」は、特定の機能に専用のデータであることを示す分類である。
【０１７４】
図１６に示した応用指標情報１６００−１の例では、グローバルデータパターン指標の値が最大となる。この場合、決定部１７０１は、データ名「ＧＤＳ＿ＭＡＳＴＥＲ」のデータの分類を「グローバルデータ」に決定することにしてもよい。
【０１７５】
なお、内部専用パターン指標以外の各応用指標に閾値を設けることにしてもよい。そして、複数の応用指標のうちの値が最大となる応用指標の値が閾値未満の場合には、決定部１７０１は、データの分類を「分類なし」に決定することにしてもよい。これにより、顕著な特徴があらわれていないデータを「分類なし」として判別可能にすることができる。
【０１７６】
比較部１７０２は、決定部１７０１によって決定されたデータの分類と、当該データの既知の分類とを比較する。ここで、データの既知の分類（以下、「既知分類」という）は、ソフトウェアＳＷの設計当初のデータの分類である。例えば、データの既知分類は、設計時にどのような用途のデータであるかが既知である場合に設定される。
【０１７７】
具体的には、例えば、まず、比較部１７０２は、命名規約に基づいて、データのデータ名から当該データの既知分類を特定することにしてもよい。一例を挙げると、データ名に「ＭＡＳＴＥＲ」が含まれる場合に、決定部１７０１は、データの既知分類を「マスターデータ」として特定する。そして、比較部１７０２は、決定されたデータの分類と、特定した当該データの既知分類とを比較する。
【０１７８】
また、比較部１７０２は、例えば、設計情報を参照して、データの既知分類を特定することにしてもよい。ここで、設計情報は、ソフトウェアＳＷの設計時に用途が既知であるデータの既知分類を示す情報である。設計情報は、例えば、外部のコンピュータ（例えば、クライアント装置１０２）、または、不図示の入力装置を用いたユーザの操作入力により取得される。
【０１７９】
出力部６０５は、クラスタＣｉ内のデータの識別情報と対応付けて、比較された比較結果を出力する。具体的には、例えば、出力部６０５は、決定されたデータの分類と既知分類とが不一致の場合に、当該データが元々の設計とは異なる使われ方がされていることを示す警告情報を出力することにしてもよい。
【０１８０】
より具体的には、例えば、出力部６０５は、図１８に示すような分類比較結果１８００をクライアント装置１０２に送信することにしてもよい。この結果、クライアント装置１０２において、例えば、不図示のディスプレイに分類比較結果１８００が表示される。ここで、分類比較結果１８００の具体例について説明する。
【０１８１】
図１８は、分類比較結果１８００の具体例を示す説明図である。図１８において、分類比較結果１８００は、データ名と、指標計算による分類と、既知分類と、結果とを対応付けて示す比較結果情報（例えば、比較結果情報１８００−１〜１８００−３）を含む情報である。
【０１８２】
分類比較結果１８００によれば、ユーザは、ソフトウェアＳＷにおいて、各データが元々の設計と異なる使われ方をされているか否かを把握することができる。例えば、比較結果情報１８００−１によれば、設計当初はマスターデータとして設計されたデータ名「ＧＤＳ＿ＭＡＳＴＥＲ」のデータが、プログラムの修正を重ねるうちに本来の用途と合わない使用がされるようになっていることがわかる。また、例えば、比較結果情報１８００−３によれば、特定の機能に専用のデータとして設計されたデータ名「ＩＮＶ＿ＴＥＭＰ」のデータが、元々の設計通り特定の機能に専用のデータとして使用されていることがわかる。
【０１８３】
（情報処理装置１０１の分析支援処理手順）
つぎに、図１９および図２０を用いて、実施の形態２にかかる情報処理装置１０１の分析支援処理手順について説明する。
【０１８４】
図１９は、実施の形態２にかかる情報処理装置１０１の分析支援処理手順の一例を示すフローチャートである。図１９のフローチャートにおいて、まず、情報処理装置１０１は、ソースコードＤＢ１２０から分析対象となるソフトウェアＳＷのソースコードを読み込む（ステップＳ１９０１）。
【０１８５】
つぎに、情報処理装置１０１は、ソフトウェアＳＷのソースコードを解析して、ソフトウェアＳＷ内のプログラム間の依存関係およびプログラム／データ間の依存関係を抽出する（ステップＳ１９０２）。そして、情報処理装置１０１は、抽出したプログラム間の依存関係およびプログラム／データ間の依存関係に基づいて、ソフトウェアＳＷをクラスタリングする（ステップＳ１９０３）。
【０１８６】
つぎに、情報処理装置１０１は、関連テーブル作成処理を実行する（ステップＳ１９０４）。なお、関連テーブル作成処理の具体的な処理手順は、図１１に示した処理手順と同様のため、ここでは図示および説明を省略する。
【０１８７】
つぎに、情報処理装置１０１は、ソフトウェアＳＷをクラスタリングした分割結果であるクラスタ情報から、未選択のデータ名を選択する（ステップＳ１９０５）。つぎに、情報処理装置１０１は、選択したデータ名に対応する基本指標、応用指標（分類指標、逸脱指標）を初期化する（ステップＳ１９０６）。そして、情報処理装置１０１は、作成した関連テーブル７００から、選択したデータ名に対応する関連情報の集合を抽出する（ステップＳ１９０７）。
【０１８８】
つぎに、情報処理装置１０１は、抽出した関連情報の集合に基づいて、選択したデータ名のデータについての基本指標を算出する基本指標算出処理を実行する（ステップＳ１９０８）。なお、基本指標算出処理の具体的な処理手順については、図１２に示した処理手順と同様のため、ここでは図示および説明を省略する。
【０１８９】
つぎに、情報処理装置１０１は、算出した基本指標に基づいて、選択したデータ名のデータについての応用指標（分類指標、逸脱指標）を算出する応用指標算出処理を実行する（ステップＳ１９０９）。なお、応用指標算出処理の具体的な処理手順については、図１３に示した処理手順と同様のため、ここでは図示および説明を省略する。
【０１９０】
そして、情報処理装置１０１は、クラスタ情報から選択していない未選択のデータ名があるか否かを判断する（ステップＳ１９１０）。ここで、未選択のデータ名がある場合（ステップＳ１９１０：Ｙｅｓ）、情報処理装置１０１は、ステップＳ１９０５に戻る。
【０１９１】
一方、未選択のデータ名がない場合（ステップＳ１９１０：Ｎｏ）、情報処理装置１０１は、各データの応用指標に基づく分類と、当該各データの既知分類とを比較する分類比較処理を実行する（ステップＳ１９１１）。分類比較処理の具体的な処理手順については、図２０を用いて後述する。
【０１９２】
そして、情報処理装置１０１は、比較した各データについての比較結果情報を含む分類比較結果を出力して（ステップＳ１９１２）、本フローチャートによる一連の処理を終了する。
【０１９３】
これにより、例えば、ソフトウェアＳＷの開発者や分析者に対して、ソフトウェアＳＷにおいて各データが元々の設計と異なる使われ方をされているか否かを示す比較結果情報の一覧を提示することができる。
【０１９４】
＜分類比較処理の具体的処理手順＞
つぎに、図１９に示したステップＳ１９１１の分類比較処理の具体的な処理手順について説明する。
【０１９５】
図２０は、分類比較処理の具体的処理手順の一例を示すフローチャートである。図２０のフローチャートにおいて、まず、情報処理装置１０１は、応用指標テーブル９００から未選択のデータ名を選択する（ステップＳ２００１）。
【０１９６】
そして、情報処理装置１０１は、選択したデータ名のデータの既知分類を特定する（ステップＳ２００２）。つぎに、情報処理装置１０１は、応用指標テーブル９００内の応用指標の値に基づいて、選択したデータ名のデータの分類を決定する（ステップＳ２００３）。
【０１９７】
そして、情報処理装置１０１は、決定したデータの分類が、特定したデータの既知分類と一致するか否かを判断する（ステップＳ２００４）。ここで、既知分類と一致する場合（ステップＳ２００４：Ｙｅｓ）、情報処理装置１０１は、選択したデータ名、決定したデータの分類、特定したデータの既知分類と対応付けて、結果「問題なし」を分類比較結果に登録して（ステップＳ２００５）、ステップＳ２００７に移行する。
【０１９８】
一方、既知分類と不一致の場合（ステップＳ２００４：Ｎｏ）、情報処理装置１０１は、選択したデータ名、決定したデータの分類、特定したデータの既知分類と対応付けて、結果「警告」を分類比較結果に登録する（ステップＳ２００６）。そして、情報処理装置１０１は、応用指標テーブル９００から選択していない未選択のデータ名があるか否かを判断する（ステップＳ２００７）。
【０１９９】
ここで、未選択のデータ名がある場合（ステップＳ２００７：Ｙｅｓ）、情報処理装置１０１は、ステップＳ２００１に戻る。一方、未選択のデータ名がない場合（ステップＳ２００７：Ｎｏ）、情報処理装置１０１は、分類比較処理を呼び出したステップに戻る。これにより、ソフトウェアＳＷにおいて各データが元々の設計と異なる使われ方をされているか否かを示す比較結果情報の一覧を作成することができる。
【０２００】
以上説明したように、実施の形態２にかかる情報処理装置１０１によれば、算出したデータの特徴を表す指標値（応用指標）に基づいて、当該データの分類を決定することができる。また、情報処理装置１０１によれば、決定したデータの分類と、データの既知分類とを比較し、データの識別情報と対応付けて、比較した比較結果を出力することができる。これにより、ソフトウェアＳＷにおいて各データが元々の設計と異なる使われ方をされているか否かを示す情報をユーザに提示することができる。
【０２０１】
また、情報処理装置１０１によれば、決定したデータの分類とデータの既知分類とが不一致の場合に、当該データが元々の設計とは異なる使われ方がされていることを示す警告情報を出力することができる。これにより、元々の設計と異なる使われ方をされており、扱いに注意すべきデータがどれであるかを見つけやすくすることができる。
【０２０２】
なお、本実施の形態で説明した分析支援方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本分析支援プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ（Ｍａｇｎｅｔｏ−Ｏｐｔｉｃａｌ  ｄｉｓｋ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）メモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本分析支援プログラムは、インターネット等のネットワークを介して配布してもよい。
【０２０３】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０２０４】
（付記１）コンピュータが、
ソフトウェア内のプログラム間の依存関係およびプログラム／データ間の依存関係に基づいて、前記ソフトウェア内のプログラムおよび当該プログラムからアクセスされるデータを含む要素群を複数のクラスタに分割し、
分割した前記複数のクラスタのいずれかのクラスタ内のデータが、前記クラスタ内のプログラムからアクセスされる回数と、前記クラスタ外のプログラムからアクセスされる回数とに基づいて、前記データの特徴を表す指標値を算出する、
処理を実行することを特徴とする分析支援方法。
【０２０５】
（付記２）前記算出する処理は、
前記クラスタ内のデータが、前記クラスタ外のプログラムから読み出される回数と、前記クラスタ外のプログラムから書き込まれる回数とに基づいて、前記ソフトウェア全体から読み書きされるデータである度合いを示す指標値を算出する、ことを特徴とする付記１に記載の分析支援方法。
【０２０６】
（付記３）前記算出する処理は、
前記クラスタ内のデータが、前記クラスタ外のプログラムから読み書きされていない場合は、特定の機能に専用のデータであることを示す指標値を算出する、ことを特徴とする付記１または２に記載の分析支援方法。
【０２０７】
（付記４）前記算出する処理は、
前記クラスタ内のデータが、前記クラスタ外のプログラムから書き込まれていない場合は、前記クラスタ外のプログラムから読み出される回数に基づいて、複数の機能から読み出され、特定のプログラムのみから書き込まれるデータである度合いを示す指標値を算出する、ことを特徴とする付記１〜３のいずれか一つに記載の分析支援方法。
【０２０８】
（付記５）前記算出する処理は、
前記クラスタ内のデータが、前記クラスタ外のプログラムから読み書きされておらず、かつ、前記クラスタ内のプログラムから書き込まれない場合には、前記クラスタ内のプログラムから読み出される回数に基づいて、複数の機能から読み出され、特定のプログラムのみから書き込まれるデータである度合いを示す指標値を算出する、ことを特徴とする付記１〜４のいずれか一つに記載の分析支援方法。
【０２０９】
（付記６）前記算出する処理は、
前記クラスタ内のデータが、前記クラスタ内外のプログラムから読み出される回数に対する、前記クラスタ内外のプログラムから書き込まれる回数の割合に基づいて、複数の機能から書き込まれ、特定の機能のみから読み出される、あるいは、全く読み出されないデータである度合いを示す指標値を算出する、ことを特徴とする付記１〜５のいずれか一つに記載の分析支援方法。
【０２１０】
（付記７）前記算出する処理は、
前記クラスタ内のデータが、前記クラスタ外のプログラムから読み書きされる回数に対する、前記クラスタ内外のプログラムから読み書きされる回数の割合に基づいて、特定の機能に専用のデータであることから逸脱している度合いを示す指標値を算出する、ことを特徴とする付記１〜６のいずれか一つに記載の分析支援方法。
【０２１１】
（付記８）前記算出する処理は、
前記クラスタ内のデータが、前記クラスタ外のプログラムから書き込まれる回数に対する、前記クラスタ外のプログラムから読み書きされる回数の割合に基づいて、複数の機能から読み出され、特定のプログラムのみから書き込まれるデータであることから逸脱している度合いを示す指標値を算出する、ことを特徴とする付記１〜６のいずれか一つに記載の分析支援方法。
【０２１２】
（付記９）前記コンピュータが、
前記クラスタ内のデータの識別情報と対応付けて、算出した前記指標値を出力する、処理を実行することを特徴とする付記１〜８のいずれか一つに記載の分析支援方法。
【０２１３】
（付記１０）前記コンピュータが、
算出した前記指標値に基づいて、前記データの分類を決定し、
決定した前記データの分類と、前記データの既知の分類とを比較し、
前記データの識別情報と対応付けて、比較した比較結果を出力する、処理を実行することを特徴とする付記１〜９のいずれか一つに記載の分析支援方法。
【０２１４】
（付記１１）前記出力する処理は、
前記データの分類と前記データの既知の分類とが不一致の場合、当該データが元々の設計とは異なる使われ方がされていることを示す警告情報を出力する、ことを特徴とする付記１０に記載の分析支援方法。
【０２１５】
（付記１２）コンピュータに、
ソフトウェア内のプログラム間の依存関係およびプログラム／データ間の依存関係に基づいて、前記ソフトウェア内のプログラムおよび当該プログラムからアクセスされるデータを含む要素群を複数のクラスタに分割し、
分割した前記複数のクラスタのいずれかのクラスタ内のデータが、前記クラスタ内のプログラムからアクセスされる回数と、前記クラスタ外のプログラムからアクセスされる回数とに基づいて、前記データの特徴を表す指標値を算出する、
処理を実行させることを特徴とする分析支援プログラム。
【０２１６】
（付記１３）ソフトウェア内のプログラム間の依存関係およびプログラム／データ間の依存関係に基づいて、前記ソフトウェア内のプログラムおよび当該プログラムからアクセスされるデータを含む要素群を複数のクラスタに分割し、
分割した前記複数のクラスタのいずれかのクラスタ内のデータが、前記クラスタ内のプログラムからアクセスされる回数と、前記クラスタ外のプログラムからアクセスされる回数とに基づいて、前記データの特徴を表す指標値を算出する、
制御部を有することを特徴とする情報処理装置。
【符号の説明】
【０２１７】
１００  分析支援システム
１０１  情報処理装置
１０２  クライアント装置
１１０  ネットワーク
１２０  ソースコードＤＢ
４００  依存関係情報
５００  クラスタ情報
６０１  取得部
６０２  分割部
６０３  第１の算出部
６０４  第２の算出部
６０５  出力部
７００  関連テーブル
８００  基本指標テーブル
９００  応用指標テーブル
１７０１  決定部
１７０２  比較部
１８００  分類比較結果
【図１】
0006711165.tif 000002
【図２】
0006711165.tif 000003
【図３】
0006711165.tif 000004
【図４】
0006711165.tif 000005
【図５】
0006711165.tif 000006
【図６】
0006711165.tif 000007
【図７】
0006711165.tif 000008
【図８】
0006711165.tif 000009
【図９】
0006711165.tif 000010
【図１０】
0006711165.tif 000011
【図１１】
0006711165.tif 000012
【図１２】
0006711165.tif 000013
【図１３】
0006711165.tif 000014
【図１４】
0006711165.tif 000015
【図１５】
0006711165.tif 000016
【図１６】
0006711165.tif 000017
【図１７】
0006711165.tif 000018
【図１８】
0006711165.tif 000019
【図１９】
0006711165.tif 000020
【図２０】
0006711165.tif 000021