(57)【特許請求の範囲】
【請求項１】
複数のグループに分類されたプログラムを含むクラスタから単語群を抽出し、
前記単語群に含まれる各単語に対し、前記各単語が出現するプログラムの分類数が多いほど大きい値の重みを付与し、
前記重みを用いて前記各単語の特徴量を算出し、前記特徴量に応じて抽出した単語を前記クラスタと対応付けて出力する、処理をコンピュータに実行させる分析プログラム。
【請求項２】
前記特徴量の算出において、
前記クラスタにおける単語の出現回数と、前記単語の重みと、前記クラスタを識別する識別子とを対応付けた出現回数情報を参照し、
前記単語の出現回数と、前記単語の重みとを乗算した結果の値を、前記単語の出現回数の代わりに用いる、請求項１記載の分析プログラム。
【請求項３】
前記単語と、前記特徴量とが対応付けられた特徴量情報を参照し、前記特徴量が大きい順に所定数の単語を抽出し、
前記クラスタと対応する区画に、前記所定数の単語を重畳させて表示させる画面データを生成する、請求項１又は２記載の分析プログラム。
【請求項４】
コンピュータによる分析方法であって、該コンピュータが、
複数のグループに分類されたプログラムを含むクラスタから単語群を抽出し、
前記単語群に含まれる各単語に対し、前記各単語が出現するプログラムの分類数が多いほど大きい値の重みを付与し、
前記重みを用いて前記各単語の特徴量を算出し、前記特徴量に応じて抽出した単語を前記クラスタと対応付けて出力する、分析方法。
【請求項５】
複数のグループに分類されたプログラムを含むクラスタから単語群を抽出し、前記単語群に含まれる各単語に対し、前記各単語が出現するプログラムの分類数が多いほど大きい値の重みを付与する単語分析部と、
前記重みを用いて前記各単語の特徴量を算出する特徴量算出部と、
前記特徴量に応じて抽出した単語を前記クラスタと対応付けて出力する単語抽出部と、を有する分析装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアを分析する分析プログラム、分析方法及び分析装置に関する。
【背景技術】
【０００２】
従来から、ソフトウェアの開発・改良・保守等を行う際に、ソフトウェアを構成するプログラムのソースファイル同士がどのように関係しあっているか分析し、機能や業務を実現している部分を見付けるクラスタリングが行われている。クラスタリングでは、ソースファイル同士の依存関係に基づき、ソースファイルにおいて互いに関係しあっている部分をクラスタとして発見する。
【０００３】
また、従来では、得られたクラスタを可視化する技術が知られている。さらに、クラスタを可視化する際、クラスタに含まれる各ソースファイルの識別子から、出現頻度等に応じた特徴的な単語（要約語句）を抽出し、この単語をクラスタの性質を示すラベルとして付与する技術が知られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−１４８９８７号公報
【特許文献２】特開２０１３−１５２５７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来の技術によりクラスタを可視化する場合、分析対象のソフトウェアの構成によっては、ソフトウェアの実装アーキテクチャを表す言葉が特徴的な単語として出現し、クラスタが実現する機能を表す言葉が特徴的な単語として出現しない場合がある。この場合、特徴的な単語がクラスタの機能とは異なるものとなり、クラスタの意味の把握が困難になる。
【０００６】
1つの側面では、クラスタの機能を容易に推測させることが可能な分析プログラム、分析方法及び分析装置を提供することを目的としている。
【課題を解決するための手段】
【０００７】
一様態によれば、複数のグループに分類されたプログラムを含むクラスタから単語群を抽出し、前記単語群に含まれる各単語に対し、前記各単語が出現するプログラムの分類数が多いほど大きい値の重みを付与し、前記重みを用いて前記各単語の特徴量を算出し、前記特徴量に応じて抽出した単語を前記クラスタと対応付けて出力する、処理をコンピュータに実行させる。
【０００８】
上記各処理は、上記各処理を実現する機能部、上記各処理を手順としてコンピュータにより実行させる方法、プログラムを記憶したコンピュータ読み取り可能な記憶媒体とすることもできる。
【発明の効果】
【０００９】
クラスタの機能を容易に推測させることができる。
【図面の簡単な説明】
【００１０】
【図１】分析システムの一例を示す図である。
【図２】分析装置によるソフトウェアの分析を説明する第一の図である。
【図３】分析装置によるソフトウェアの分析を説明する第二の図である。
【図４】分析装置のハードウェア構成の一例を示す図である。
【図５】分析装置の機能構成を説明する図である。
【図６】分析装置の動作を説明するフローチャートである。
【図７】単語分析部の処理を説明するフローチャートである。
【図８】クラスタ情報の一例を示す図である。
【図９】単語出現情報の一例を示す図である。
【図１０】特徴量情報の一例を示す図である。
【図１１】比較例としての特徴量情報を示す図である。
【図１２】ソフトウェアを可視化する画面データが表示された画面の例を示す図である。
【発明を実施するための形態】
【００１１】
以下に図面を参照して実施形態について説明する。図１は、分析システムの一例を示す図である。
【００１２】
本実施形態の分析システム１００は、分析装置２００と、端末装置３００とを有する。本実施形態の分析システム１００において、分析装置２００と端末装置３００とは、ネットワーク等を介して接続されている。
【００１３】
本実施形態の分析システム１００では、例えば端末装置３００から分析装置２００へ分析対象となるソフトウェアがアップロードされると、分析装置２００は、分析プログラム２１０を実行してソフトウェアの分析を行い、その結果を端末装置３００に出力する。本実施形態の分析装置２００は、分析結果として、例えばソフトウェアの構造を地図の形式で表示させる画面データを端末装置３００に出力しても良い。
【００１４】
具体的には本実施形態の分析装置２００は、ソフトウェアの構造を示す地図において、ソフトウェアのクラスタリングにより得たクラスタを区画とし、クラスタの機能を示す単語を各区画のラベルとして付与することで、クラスタの機能の推測を容易にする。
【００１５】
以下に、本実施形態の分析装置２００によるソフトウェアの分析について説明する。
【００１６】
図２は、分析装置によるソフトウェアの分析を説明する第一の図である。図２は、ソフトウェア１に含まれるプログラム間の依存関係に基づいてクラスタリングを行い、３つのクラスタ２、３、４を取得した例を示している。
【００１７】
本実施形態のクラスタリングとは、データ解析の手法の１つであり、プログラムの集合を部分集合（クラスタ）に切り分けて、それぞれの部分集合に含まれるプログラムがある共通の特徴を持つようにする処理である。
【００１８】
図２の例では、クラスタ２は、見積りに関する処理を実行させるプログラムの部分集合である。クラスタ３は、受注に関する処理を実行させるプログラムの部分集合である。クラスタ４は、請求に関する処理を実行させるプログラムの部分集合である。
【００１９】
すなわち、クラスタ２により実現される機能は見積機能であり、クラスタ３により実現される機能の発注機能であり、クラスタ４により実現される機能の請求機能である。
【００２０】
図３は、分析装置によるソフトウェアの分析を説明する第二の図である。図３では、クラスタの一例として、クラスタ２について説明する。
【００２１】
図３において、破線の領域の中の個々の四角形は、クラスタ２に含まれるプログラムを示す。
【００２２】
ところで、ソフトウェア１を構成するプログラムは、ソフトウェア１の設計時において、機能や用途に応じて複数のグループに分類されており、クラスタ２には、複数の分類に属するプログラムが含まれる。
【００２３】
具体的には、クラスタ２には、分類「Ｖｉｅｗ」に属するプログラム２Ｖ、分類「Ｃｏｎｔｒｏｌｌｅｒ」に属するプログラム２Ｃ、分類「Ｍｏｄｅｌ」に属するプログラム２Ｍが含まれる。
【００２４】
本実施形態の分析装置２００は、プログラム２Ｖ、プログラム２Ｃ、プログラム２Ｍのそれぞれから単語群を抽出し、単語群の各単語に、複数の分類に由来する単語の重みを大きくする重み付けを行う。そして、本実施形態の分析装置２００は、重みを反映させた単語毎の特徴量を算出し、特徴量が大きい単語をクラスタ２の特徴的な単語（以下、特徴語と呼ぶ）としてクラスタ２のラベルとする。すなわち、本実施形態の分析装置２００は、出現するプログラムの分類の数が大きい単語ほど、重みが大きくなり、クラスタ２の特徴語として選択されやすくなる。
【００２５】
以下、例えばクラスタ２に含まれるプログラムからクラスタ２の特徴語を抽出する場合について説明する。本実施形態の分析装置２００は、プログラムの識別子から単語群を抽出する。本実施形態のファイル識別子とは、例えばクラス名、ファイル名、ディレクトリ名、パッケージ名、関数名等を含む。
【００２６】
図３において、例えばプログラム２Ｖのファイル名をＱｕｏｔｅＶｉｅｗとし、プログラム２Ｃのファイル名をＱｕｏｔｅＣｏｎｔｒｏｌｌｅｒとし、プログラム２Ｍのファイル名をＱｕｏｔｅＭｏｄｅｌとする。
【００２７】
この場合、単語「Ｑｕｏｔｅ」は、３つの分類の全てに出現しており、複数の分類に由来する。したがって、単語「Ｑｕｏｔｅ（見積り）」は、特徴量が大きくなり、クラスタ２の特徴語として抽出され、クラスタ２のラベルとなる。単語「Ｑｕｏｔｅ（見積り）」は、クラスタ２の機能である「見積り」を示しており、この単語をクラスタ２のラベルとすることで、クラスタ２の機能を容易に推測できる。
【００２８】
このように、本実施形態の分析装置２００は、複数の分類に属するプログラムの集合であるクラスタにおいて、異なる分類のプログラムに共通して出現する単語がクラスタの機能を表現する単語であると想定し、この単語の重みを大きくする重み付けを行う。
【００２９】
そして、本実施形態の分析装置２００は、単語毎に、重みを反映させた特徴量を算出し、特徴量の大きい単語を特徴語とクラスタのラベルとする。よって、本実施形態では、クラスタの可視化において、クラスタの機能の表す単語をクラスタのラベルとすることができ、クラスタの機能の推測を容易にする。
【００３０】
尚、本実施形態のおけるプログラムの設計時の分類は、例えばプログラムがＪａｖａ（登録商標）言語で記述されている場合には「パッケージ」に相当し、プログラムがｃ言語等で記述されている場合には「ディレクトリ」に相当する。また分類に属するプログラムは、プログラムがＪａｖａ（登録商標）言語で記述されている場合には「クラス」に相当し、プログラムがｃ言語等で記述されている場合には「ソースファイル」に相当する。
【００３１】
次に、本実施形態の分析装置２００について説明する。図４は、分析装置のハードウェア構成の一例を示す図である。
【００３２】
本実施形態の分析装置２００は、それぞれバスＢで相互に接続されている入力装置２１、出力装置２２、ドライブ装置２３、補助記憶装置２４、メモリ装置２５、演算処理装置２６及びインターフェース装置２７を含む。
【００３３】
入力装置２１はキーボードやマウス等を含み、各種信号を入力するために用いられる。出力装置２２はディスプレイ装置等を含み、各種ウインドウやデータ等を表示するために用いられる。インターフェース装置２７は、モデム、ＬＡＮカード等を含み、ネットワークに接続する為に用いられる。
【００３４】
分析プログラム２１０は、分析装置２００を制御する各種プログラムの少なくとも一部である。分析プログラム２１０は例えば記録媒体２８の配布やネットワークからのダウンロードなどによって提供される。分析プログラム２１０を記録した記録媒体２８は、ＣＤ−ＲＯＭ、フレキシブルディスク、光磁気ディスク等の様に情報を光学的、電気的或いは磁気的に記録する記録媒体、ＲＯＭ、フラッシュメモリ等の様に情報を電気的に記録する半導体メモリ等、様々なタイプの記録媒体を用いることができる。
【００３５】
また、分析プログラム２１０は、分析プログラム２１０を記録した記録媒体２８がドライブ装置２３にセットされるとは記録媒体２８からドライブ装置２３を介して補助記憶装置２４にインストールされる。ネットワークからダウンロードされた分析プログラム２１０は、インターフェース装置２７を介して補助記憶装置２４にインストールされる。
【００３６】
補助記憶装置２４は、インストールされた分析プログラム２１０を格納すると共に、必要なファイル、データ等を格納する。メモリ装置２５は、コンピュータの起動時に補助記憶装置２４から分析プログラム２１０を読み出して格納する。そして、演算処理装置２６はメモリ装置２５に格納された発注プログラムに従って、後述するような各種処理を実現している。
【００３７】
また、本実施形態の端末装置３００は、例えば一般的なコンピュータやタブレット等であり、そのハードウェア構成は分析装置２００と同様であるから説明を省略する。
【００３８】
次に、図５を参照して本実施形態の分析装置２００の機能構成について説明する。図５は、分析装置の機能構成を説明する図である。
【００３９】
本実施形態の分析装置２００は、分析処理部２１０Ａと、記憶領域２２０とを有する。分析処理部２１０Ａは、演算処理装置２６が分析プログラム２１０を実行することで実現される処理部である。記憶領域２２０は、補助記憶装置２４やメモリ装置２５に設けられた記憶領域である。
【００４０】
本実施形態の記憶領域２２０は、ソースコードデータベース２２１、分類情報データベース２２２を有する。また、本実施形態の記憶領域２２０には、後述する分析処理部２１０Ａの処理結果として、クラスタ情報２２３、分類情報２２４、単語出現情報２２５、特徴量情報２２６が格納される。これらの各種情報の詳細は後述する。
【００４１】
本実施形態のソースコードデータベース２２１には、分析処理部２１０Ａによる分析対象のプログラムのソフトウェアのソースコードが格納される。ソースコードは、例えば端末装置３００から分析装置２００へアップロードされる。
【００４２】
本実施形態の分類情報データベース２２２には、分析対象のソフトウェアの各プログラムと、プログラムが属する分類とを対応付けるための情報が格納される。本実施形態の分類情報データベース２２２は、例えばソースコードと共に端末装置３００からアップロードされても良い。
【００４３】
本実施形態の分類情報データベース２２２には、例えば各プログラムのファイル名と、各プログラムが属するディレクトリとが対応付けられた情報が格納されていても良い。また、本実施形態の分類情報データベース２２２には、例えば各プログラムの分類と、分類毎の命名規約とが対応付けられていても良い。
【００４４】
本実施形態の分析処理部２１０Ａは、ソースコード取得部２１１、クラスタ取得部２１２、分類情報取得部２１３、単語分析部２１４、特徴量算出部２１５、単語抽出部２１６、画面データ生成部２１７、出力部２１８を有する。
【００４５】
本実施形態のソースコード取得部２１１は、ソースコードデータベース２２１に格納されたソースコードを取得する。
【００４６】
クラスタ取得部２１２は、ソースコードにより記述されたプログラム間の依存関係に基づいてクラスタリングを行い、クラスタを取得する。また、本実施形態のクラスタ取得部２１２は、取得したクラスタを識別するクラスタＩＤと、クラスタに含まれる各プログラムのファイル名とを対応付けたクラスタ情報２２３を生成し、記憶領域２２０に格納する。
【００４７】
分類情報取得部２１３は、分類情報データベース２２２から、分析対象のプログラムと対応する分類情報を取得し、分類情報２２４として記憶領域２２０に格納する。
【００４８】
単語分析部２１４は、クラスタ情報２２３と分類情報２２４とを照合し、各クラスタに含まれるファイル識別子から単語群を取得し、それぞれの単語が複数の分類に由来するかどうかを分析する。そして、単語分析部２１４は、単語と、クラスタにおける単語の出現回数と、単語が由来する分類の数とを対応付けた単語出現情報２２５を生成し、記憶領域２２０に格納する。本実施形態の単語出現情報２２５の詳細は後述する。
【００４９】
特徴量算出部２１５は、単語出現情報２２５を参照して、単語毎の特徴量を算出し、特徴量情報２２６として記憶領域２２０に格納する。特徴量情報２２６の詳細は後述する。
【００５０】
単語抽出部２１６は、特徴量情報２２６を参照し、特徴量に応じて単語を抽出し、抽出した単語をクラスタの特徴語とする。具体的に単語抽出部２１６は、特徴量が大きい方から順に、所定数の単語を抽出する。
【００５１】
画面データ生成部２１７は、抽出された特徴語をクラスタのラベルとし、ソフトウェアの構造を地図の形式で表示させる画面データを生成する。
【００５２】
出力部２１８は、生成した画面データを端末装置３００へ出力する。尚、出力部２１８が画面データを出力する先は、端末装置３００に限定されない。例えば出力部２１８は、画面データを記録媒体等に出力しても良いし、画面データをネットワーク上の端末装置３００がアクセス可能なサーバ等に出力しても良い。
【００５３】
また、出力部２１８は、例えば分析装置２００内の記憶装置に画面データを格納しておき、分析装置２００が、外部から画面データの取得要求を受け付けたとき、画面データを出力しても良い。さらに、分析装置２００は、自身の出力装置２２に画面データを表示させても良い。
【００５４】
次に、図６を参照して本実施形態の分析装置２００の動作について説明する。図６は、分析装置の動作を説明するフローチャートである。
【００５５】
本実施形態の分析装置２００は、ソースコード取得部２１１により、ソースコードデータベース２２１から分析対象のプログラムのソースコードを取得する（ステップＳ６０１）。続いて、分析装置２００は、クラスタ取得部２１２により、取得したソースコードにより記述されたプログラム間の依存関係に基づいてクラスタリングを行ってクラスタを取得し、クラスタ情報２２３として記憶領域２２０に格納する（ステップＳ６０２）。
【００５６】
続いて分析装置２００は、分類情報取得部２１３により、分類情報データベース２２２から分類情報を取得し、分類情報２２４として記憶領域２２０に格納する（ステップＳ６０３）。
【００５７】
続いて分析装置２００は、単語分析部２１４により、クラスタに含まれるファイル識別子から単語群を取得し、単語群を分析した結果から単語出現情報２２５を生成し、記憶領域２２０に格納する（ステップＳ６０４）。
【００５８】
具体的には、本実施形態の単語分析部２１４は、単語群を取得する際に、ファイル識別子を文字が小文字から大文字となった位置、ピリオドやアンダースコアの位置等に区切って単語としても良い。
【００５９】
また、本実施形態の単語分析部２１４は、各プログラムに対応する単語群が予め取得されていた場合には、その単語群を用いて単語出現情報２２５を生成しても良い。予め単語群が取得されている場合とは、例えば分析対象のソフトウェア設計書等から単語群を得た場合等である。
【００６０】
また、単語分析部２１４は、クラスタ毎に、出現した単語と、その単語のクラスタ内における出現回数と、異なり分類数とを対応付けて単語出現情報２２５とする。異なり分類数とは、ある単語が出現したプログラムが属する分類の数である。すなわち、本実施形態の異なり分類数とは、ある単語がいくつの分類に由来するかを示す数である。本実施形態では、単語分析部２１４によるステップＳ６０４の処理の詳細は後述する。
【００６１】
続いて分析装置２００は、特徴量算出部２１５により、単語出現情報２２５を参照し、単語毎の特徴量を算出し、特徴量情報２２６として記憶領域２２０に格納する（ステップＳ６０５）。本実施形態の特徴量算出部２１５による特徴量の算出の詳細は後述する。
【００６２】
続いて分析装置２００は、単語抽出部２１６により、特徴量情報２２６を参照し、特徴量の値が大きい順に、所定数の単語を抽出する（ステップＳ６０６）。本実施形態では、単語抽出部２１６により抽出された単語が、クラスタの機能と関連の深い単語であると予測されることから、ここで抽出された単語をクラスタの特徴を示す特徴語とする。
【００６３】
続いて分析装置２００は、画面データ生成部２１７により、特徴語をクラスタのラベルとし、ソフトウェアの構造を地図の形式で表示させる画面データを生成する（ステップＳ６０７）。そして、分析装置２００は、出力部２１８により、生成した画面データを端末装置３００へ出力し（ステップＳ６０８）、分析処理を終了する。
【００６４】
次に、図７を参照して本実施形態の単語分析部２１４の処理について説明する。図７は、単語分析部の処理を説明するフローチャートである。図７の処理は、図６のステップＳ６０４の処理の詳細を示すものである。また、本実施形態の単語分析部２１４は、図７に示す処理をクラスタ取得部２１２により取得した全てのクラスタについて行う。
【００６５】
本実施形態の単語分析部２１４は、あるクラスタから単語群を取得する（ステップＳ７０１）。続いて単語分析部２１４は、単語群から、後述する処理の対象となる単語を取得する（ステップＳ７０２）。
【００６６】
次に、単語分析部２１４は、取得した単語のクラスタ内での出現回数をカウントする（ステップＳ７０３）。続いて単語分析部２１４は、ステップＳ７０２で取得した単語が、分類名のみに含まれる単語であるか否かを判定する（ステップＳ７０４）。
【００６７】
ステップＳ７０４において、分類名のみに含まれる単語である場合、単語分析部２１４は、異なり分類数を０とする（ステップＳ７０５）。すなわち、本実施形態では、分類名のみに含まれる単語に対しては重みを付与しない。
【００６８】
ステップＳ７０４において、分類名のみに含まれる単語でない場合、単語分析部２１４は、異なり分類数をカウントする（ステップＳ７０６）。
【００６９】
続いて単語分析部２１４は、単語と、クラスタ内のファイル識別子中に単語が出現する数と、異なり分類数とを対応付けて単語出現情報２２５として記憶領域２２０に格納する（ステップＳ７０７）。
【００７０】
次に単語分析部２１４は、単語群に含まれる全ての単語について、ステップＳ７０３からステップＳ７０７までの処理を行ったか否かを判定する（ステップＳ７０８）。ステップＳ７０８において、全ての単語に処理を行っていない場合、単語分析部２１４は、ステップＳ７０２へ戻る。ステップＳ７０８において、全ての単語に処理を行った場合、単語分析部２１４は、処理を終了する。
【００７１】
以下に、本実施形態の分析装置２００による単語分析部２１４の処理を具体的に説明する。
【００７２】
尚、以下の説明では、分析対象となるソフトウェアのプログラムが、Ｊａｖａ（登録商標）言語により記述されているものとして説明する。したがって、以下の説明では、クラスタに含まれるプログラムは、クラスに相当し、プログラムの分類は、パッケージに相当する。
【００７３】
図８は、クラスタ情報の一例を示す図である。本実施形態のクラスタ取得部２１２は、プログラムのクラスタリングを行い、例えば図８に示すクラスタ情報２２３を取得する。
【００７４】
図８に示すクラスタ情報２２３は、情報の項目として、パッケージを含むクラス名と、クラスタを識別するクラスタＩＤとを有し、両者が対応付けられている。すなわち、クラスタ情報２２３は、設計時の分類を含むプログラムの名前と、クラスタＩＤとが対応付けられた情報である。
【００７５】
本実施形態では、プログラムがＪａｖａ（登録商標）言語で記述されているため、分類情報はＪａｖａ（登録商標）言語の形式に則ったものとなる。例えばクラス名「com.abc.model.AbstractDataModel」において、「com.abc.model」はパッケージ名であり、「AbstractDataModel」がそのパッケージの中におけるクラス名である。
【００７６】
図８の例では、Ｊａｖａ（登録商標）言語の形式に則った分類情報によれば、クラスタＩＤ「１」のクラスタには、「com.abc.controller」と「com.abc.model」という２つのパッケージのクラスが存在することがわかる。
【００７７】
また、本実施形態では、単語分析部２１４は、パッケージを含むクラス名をピリオド毎に区切って単語群を取得する。例えは、パッケージを含むクラス名「com.abc.model.QuoteModel」からは、単語群「com, abc, model, quote, model」が取得される。
【００７８】
単語分析部２１４は、こうして取得した単語群に含まれる単語毎に、クラスタにおける単語の出現回数と、異なり分類数とを取得し、単語出現情報２２５を生成する。
【００７９】
図９は、単語出現情報の一例を示す図である。単語出現情報２２５は、情報の項目として、クラスタＩＤ、単語、出現回数、異なり分類数を有する。
【００８０】
図９において、例えばクラスタＩＤ「１」の単語「abstract」の出現回数は１回である。また、単語「abstract」はクラス名に含まれる単語である。
【００８１】
したがって、単語分析部２１４は、単語「abstract」の異なり分類数をカウントする。具体的には単語分析部２１４は、クラスタＩＤ「１」において、単語「abstract」が出現するパッケージの数をカウントする。単語「abstract」は、１つのパッケージにしか出現しないため（図８参照）、単語「abstract」の異なり分類数は１回である。
【００８２】
したがって、単語分析部２１４は、単語「abstract」の異なり分類数を「１」とし、クラスタＩＤと、単語「abstract」と、出現回数と、に異なり分類数「１」を対応付ける。
【００８３】
また、図９において、例えばクラスタＩＤ「１」の単語「abc」の出現回数は５回である。しかし、単語「abc」は、クラス名には含まれず、パッケージ名にのみ含まれる。したがって、単語「abc」の異なり分類数は「０」となる。
【００８４】
また、図９において、例えばクラスタＩＤ「１」の単語「quote」の出現回数は２回である。また、単語「quote」はクラス名に含まれる単語である。よって、単語分析部２１４は、単語「quote」の異なり分類数をカウントする。
【００８５】
単語「quote」は、パッケージ名「com.abc.controller」を含むクラス名と、パッケージ名「com.abc.model」を含むクラス名のそれぞれに１度ずつ出現する。すなわち、単語「quote」が出現するパッケージの数は２である。したがって、単語「quote」の異なり分類数は「２」となる。
【００８６】
また、図９において、例えばクラスタＩＤ「１」の単語「model」の出現回数は４回である。また、単語「model」はクラス名に含まれる単語である。よって、単語分析部２１４は、単語「model」の異なり分類数をカウントする。
【００８７】
単語「model」は、パッケージ名「com.abc.model」を含む２つのクラス名に、それぞれ２度ずつ出現する。すなわち、単語「model」が出現するパッケージの数は１である。したがって、単語「model」の異なり分類数は「１」となる。
【００８８】
次に、本実施形態の特徴量算出部２１５による特徴量の算出について説明する。本実施形態の特徴量算出部２１５は、例えばtf-idf法を用いて単語の特徴量を算出し、単語と特徴量とを対応付けて特徴量情報２２６とする。
【００８９】
tf-idf法は、tf（単語の出現回数）とidf（逆文書頻度）の二つの指標に基づき、文書中の単語の重みを計算する手法である。この手法によれば、ある単語の出現回数が特定のクラスタにおいて高く、それ以外のクラスタでは低い場合に、この単語に特定のクラスタの特徴を表す単語として高い得点（重み）が与えられる。本実施形態では、tf-idf法を用いて各単語に与えられる得点を各単語の特徴量とする。
【００９０】
本実施形態の特徴量算出部２１５は、tf-idf法において、単語の出現回数の代わりに、単語の出現回数と異なり分類数とを乗算した値を用いる。このとき、本実施形態の特徴量算出部２１５は、異なり分類数が「０」であった場合には、異なり分類数を「１」に書き換えて、出現回数と異なり分類数との乗算を行う。
【００９１】
本実施形態の特徴量算出部２１５は、例えば単語「quote」の特徴量を算出する場合、出現回数「２」と、異なり分類数「２」とを乗算した値「４」をtf-idf法における出現回数の値として用いる。
【００９２】
本実施形態では、以上のようにして単語毎の特徴量を算出することで、出現するパッケージ数が多い単語ほど特徴量が大きい値となる。すなわち、本実施形態の特徴量は、多くの分類に属する単語ほど、特徴量が大きい値となる。
【００９３】
図１０は、特徴量情報の一例を示す図である。本実施形態の特徴量情報２２６は、情報の項目として、クラスタＩＤと、単語と、特徴量とを有し、それぞれが対応付けられている。
【００９４】
尚、本実施形態では、特徴量の算出にtf-idf法を用いたが、特徴量の算出に用いられる手法はこれに限定されない。特徴量算出部２１５は、tf-idf法以外の関数を用いて、単語の重み付けを行っても良い。
【００９５】
本実施形態の分析装置２００は、特徴量情報２２６が生成されると、単語抽出部２１６により、特徴量情報２２６において特徴量の値が大きい順に、所定数の単語を抽出する。
【００９６】
図１０に示す特徴量情報２２６では、クラスタＩＤ「１」のクラスタにおいて、最も特徴量が大きい単語は「model」と「quote」であり、次に特徴量が大きい単語は「controller」となる。
【００９７】
したがって、図１０の例では、クラスタＩＤ「１」のクラスタにおいて、単語「quote」は、異なる分類のプログラムに共通して出現する単語であり、クラスタの機能を表現する単語であると言える。
【００９８】
これに対し、比較例として、一般的なtf-idf法により特徴量を算出した結果を図１１に示す。図１１は、比較例としての特徴量情報を示す図である。
【００９９】
図１１の例では、クラスタＩＤ「１」のクラスタにおいて、最も特徴量が大きい単語は「model」であり、次に特徴量が大きい単語は「controller」と「command」であり、その次に特徴量が大きい単語は「quote」である。
【０１００】
単語「model」や「controller」は、パッケージ名に含まれる単語である。したがって、図１１の例では、クラスタの機能を表現する単語「quote」が、パッケージ名に含まれる単語に埋もれていることがわかる。
【０１０１】
以上のことから、本実施形態によれば、クラスタの機能を示していると想定される単語の特徴量を大きくし、クラスタの特徴語として抽出することができる。
【０１０２】
本実施形態の単語抽出部２１６は、例えば特徴量情報２２６から、特徴量が大きい順に３つの単語を抽出し、クラスタＩＤ「１」の特徴語として画面データ生成部２１７へ渡しても良い。
【０１０３】
以下に、本実施形態の画面データ生成部２１７により生成された画面データが表示された例について説明する。
【０１０４】
図１２は、ソフトウェアを可視化する画面データが表示された画面の例を示す図である。図１２に示す画面１２１には、ソフトウェアのクラスタリングにより得たクラスタを区画とし、クラスタの機能を示す単語を各区画のラベルとして付与している。
【０１０５】
画面１２１において、区画１２２〜１２５は、それぞれがクラスタに対応する。また、画面１２１内のその他の区画も、それぞれが区画に対応する。
【０１０６】
画面１２１では、それぞれの区画に、クラスタに付与されたラベルが重畳されて表示されている。本実施形態では、ラベルとして表示される単語が、単語抽出部２１６により特徴量情報から抽出された特徴語となる。
【０１０７】
例えば区画１２５は、クラスタＩＤ「１」のクラスタに対応する区画である。区間１２５には、ラベル１２６が付与されている。ラベル１２６は、このクラスタの機能を説明する単語として、特徴量情報２２６から特徴語として抽出された「quote」、「model」、「controller」を含む。
【０１０８】
本実施形態では、このようにラベルを表示させることで、クラスタの機能を容易に推測させることができる。
【０１０９】
開示の技術では、以下に記載する付記のような形態が考えられる。
（付記１）
複数のグループに分類されたプログラムを含むクラスタから単語群を抽出し、
前記単語群に含まれる各単語に対し、前記各単語が出現するプログラムの分類数が多いほど大きい値の重みを付与し、
前記重みを用いて前記各単語の特徴量を算出し、前記特徴量に応じて抽出した単語を前記クラスタと対応付けて出力する、処理をコンピュータに実行させる分析プログラム。
（付記２）
前記特徴量の算出において、
前記クラスタにおける単語の出現回数と、前記単語の重みと、前記クラスタを識別する識別子とを対応付けた単語出現情報を参照し、
前記単語の出現回数と、前記単語の重みとを乗算した結果の値を、前記単語の出現回数の代わりに用いる、付記１記載の分析プログラム。
（付記３）
前記単語と、前記特徴量とが対応付けられた特徴量情報を参照し、前記特徴量が大きい順に所定数の単語を抽出し、
前記クラスタと対応する区画に、前記所定数の単語を重畳させて表示装置に表示させる画面データを生成する、付記１又は２記載の分析プログラム。
（付記４）
前記重みの付与において、
前記プログラムの分類名にのみ出現する単語の重みの値を０とする付記１乃至３の何れか一項に記載の分析プログラム。
（付記５）
前記特徴量の算出において、
前記重みが０であった場合、前記乗算の際に前記重みを１とする付記２乃至４の何れか一項に記載の分析プログラム。
（付記６）
分析対象のソフトウェアのソースコードを取得し、
前記ソースコードにより記述されるプログラムに対してクラスタスタリングを行い、複数のクラスタを取得する付記１乃至６の何れか一項に記載の分析プログラム。
（付記７）
コンピュータによる分析方法であって、該コンピュータが、
複数のグループに分類されたプログラムを含むクラスタから単語群を抽出し、
前記単語群に含まれる各単語に対し、前記各単語が出現するプログラムの分類数が多いほど大きい値の重みを付与し、
前記重みを用いて前記各単語の特徴量を算出し、前記特徴量に応じて抽出した単語を前記クラスタと対応付けて出力する、分析方法。
（付記８）
複数のグループに分類されたプログラムを含むクラスタから単語群を抽出し、前記単語群に含まれる各単語に対し、前記各単語が出現するプログラムの分類数が多いほど大きい値の重みを付与する単語分析部と、
前記重みを用いて前記各単語の特徴量を算出する特徴量算出部と、
前記特徴量に応じて抽出した単語を前記クラスタと対応付けて出力する単語抽出部と、を有する分析装置。
【０１１０】
本発明は、具体的に開示された実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【符号の説明】
【０１１１】
１００  分析システム
２００  分析装置
２１０  分析プログラム
２２０  記憶領域
２２１  ソースコードデータベース
２２２  分類情報データベース
２１２  クラスタ取得部
２１３  分類情報取得部
２１４  単語分析部
２１５  特徴量算出部
２１６  単語抽出部
２１７  画面データ生成部
３００  端末装置
【図１】
0006413597.tif 000002
【図２】
0006413597.tif 000003
【図３】
0006413597.tif 000004
【図４】
0006413597.tif 000005
【図５】
0006413597.tif 000006
【図６】
0006413597.tif 000007
【図７】
0006413597.tif 000008
【図８】
0006413597.tif 000009
【図９】
0006413597.tif 000010
【図１０】
0006413597.tif 000011
【図１１】
0006413597.tif 000012
【図１２】
0006413597.tif 000013