プロダクトを構成するテキストファイルを複数用いて、複数のプロダクトを類似したプロダクトごとに分類する分類システムであって、複数のテキストファイルそれぞれに含まれる文字列の間の類似度を算出し、算出した類似度に基づいて前記複数のプロダクトのクラスタリングを行う第1のクラスタリング部と、前記第1のクラスタリング部によって用いられたテキストファイルとは異なる種類の複数のテキストファイルそれぞれに含まれる文字列の間の類似度を算出し、算出した類似度に基づいて前記複数のプロダクトのクラスタリングを行う第2のクラスタリング部と、前記第1のクラスタリング部、第2のクラスタリング部の結果を用いて閾値を決定し、前記複数のプロダクトを第1及び第2プロダクト群に分類する閾値決定部と、前記閾値決定部によって分類された第1プロダクト群と、前記閾値決定部によって分類された第2プロダクト群とを第3プロダクト群として統合する統合部と、を有することを特徴とする分類システム。前記第1のクラスタリング部は、前記複数のプロダクトそれぞれの設計書に含まれる単語の出現頻度を用いて類似度を算出し、算出した類似度に基づいて前記複数のプロダクトのクラスタリングを行い、前記第2のクラスタリング部は、前記複数のプロダクトそれぞれのソースコードに含まれるコードクローンを用いて類似度を算出し、算出した類似度に基づいて前記複数のプロダクトのクラスタリングを行うことを特徴とする請求項1に記載の分類システム。前記第2のクラスタリング部は、前記複数のプロダクトそれぞれのソースコードに異なる記述言語で記述されたコードが含まれていた場合には、記述言語ごとに前記類似度を算出し、算出した記述言語ごとの類似度を合成した合成類似度に基づいて前記複数のプロダクトのクラスタリングを行うことを特徴とする請求項2に記載の分類システム。前記統合部は、前記閾値決定部によって3種類以上のプロダクト群が分類された場合に、当該3種類以上のプロダクト群を累積的に統合して前記第3プロダクト群とすることを特徴とする請求項1~3のいずれか一つに記載の分類システム。プロダクトを構成するテキストファイルを複数用いて、複数のプロダクトを類似したプロダクトごとに分類する分類システムによって実行される分類方法であって、複数のテキストファイルそれぞれに含まれる文字列の間の類似度を算出し、算出した類似度に基づいて前記複数のプロダクトのクラスタリングを行う第1のクラスタリング工程と、前記第1のクラスタリング工程によって用いられたテキストファイルとは異なる種類の複数のテキストファイルそれぞれに含まれる文字列の間の類似度を算出し、算出した類似度に基づいて前記複数のプロダクトのクラスタリングを行う第2のクラスタリング工程と、前記第1のクラスタリング工程、第2のクラスタリング工程の結果を用いて閾値を決定し、前記複数のプロダクトを第1及び第2プロダクト群に分類する閾値決定工程と、前記閾値決定工程によって分類された第1プロダクト群と、前記閾値決定工程によって分類された第2プロダクト群とを第3プロダクト群として統合する統合工程と、を含んだことを特徴とする分類方法。しかしながら、上述した従来技術では、プロダクトの分類の精度に一定の限界があった。例えば、ソースコードを利用した技術では、同一の記述言語でしか分析できないため、プロダクトの分類の精度に一定の限界があった。また、ソースコードを利用した技術では、機能が同じでも実装が異なる場合、ソースコードの流用部分が少ないため、正しく分類できず、プロダクトの分類の精度に一定の限界があった。また、例えば、設計書を利用した技術では、機能が異なっても、分野などが同じであれば使われている言葉の種類が同じ傾向を持つため、正しく分類できず、プロダクトの分類の精度に一定の限界があった。そこで、本願は、上述した従来技術の問題に鑑みてなされたものであって、プロダクトの分類の精度を向上させる分類システム及び分類方法を提供することを目的とする。上述した課題を解決し、目的を達成するため、本願のシステムは、プロダクトを構成するテキストファイルを複数用いて、複数のプロダクトを類似したプロダクトごとに分類する分類システムであって、複数のテキストファイルそれぞれに含まれる文字列の間の類似度を算出し、算出した類似度に基づいて前記複数のプロダクトのクラスタリングを行う第1のクラスタリング部と、前記第1のクラスタリング部によって用いられたテキストファイルとは異なる種類の複数のテキストファイルそれぞれに含まれる文字列の間の類似度を算出し、算出した類似度に基づいて前記複数のプロダクトのクラスタリングを行う第2のクラスタリング部と、前記第1のクラスタリング部、第2のクラスタリング部の結果を用いて閾値を決定し、前記複数のプロダクトを第1及び第2プロダクト群に分類する閾値決定部と、前記閾値決定部によって分類された第1プロダクト群と、前記閾値決定部によって分類された第2プロダクト群とを第3プロダクト群として統合する統合部とを有することを特徴とする。本願のシステムは、プロダクトの分類の精度を向上させることを可能にする。以下に添付図面を参照して、本願の分類システム及び分類方法の実施例を詳細に説明する。なお、本願の分類システム及び分類方法は、以下の実施例により限定されるものではない。[実施例1に係る分類システムの構成]実施例1に係る分類システムの構成について説明する。図1は、実施例1に係る分類システム10の構成の一例を説明するための図である。図1に示すように、実施例1に係る分類システム10は、プロダクトアーカイブ1と、設計書クラスタリング部2と、ソースコードクラスタリング部3と、閾値決定部4と、クラスタ合成部5とを有し、設計書クラスタリング部2によって分類されたプロダクト群と、ソースコードクラスタリング部3によって分類されたプロダクト群とを統合した合成クラスタを出力する。なお、以下、本実施例にて記述されるプロダクトとは、製作物、具体的には、ある目的のために構成されたアプリケーションそのものを示し、ファイルにより構成される。プロダクトアーカイブ1は、プロダクトを構成するテキストファイルを記憶する。例えば、プロダクトアーカイブ1は、図1に示すように、プロダクトPのソースコードP及び設計書Pや、プロダクトQのソースコードQ及び設計書Qなどを記憶する。なお、ここでいう設計書とは、要件定義書、基本設計書及び機能設計書などのソフトウェア開発の上流工程で作成された設計書を示す。また、図1においては、2つのプロダクトプロダクトP及びプロダクトQのみが示されているが、実際には、プロダクトアーカイブ1は、多数のプロダクトについて、該プロダクトを構成するテキストファイルを記憶する。また、以下では、プロダクトPとプロダクトQとをそれぞれの設計書及びソースコードの類似性に基づいて分類する場合を一例として説明する。設計書クラスタリング部2は、複数のプロダクトをそれぞれ構成するテキストファイルに含まれる文字列の類似度を算出し、算出した類似度に基づいて複数のプロダクトのクラスタリングを行う。具体的には、設計書クラスタリング部2は、複数のプロダクトそれぞれの設計書に含まれる単語の出現頻度を用いて類似度を算出し、算出した類似度に基づいて前記複数のプロダクトのクラスタリングを行う。例えば、設計書クラスタリング部2は、プロダクトアーカイブ1から設計書Pを読み出し、読み出した設計書Pから単語を抽出し、抽出した単語を用いて、設計書Pの単語ベクトルWP以下、太字Wは、単語ベクトルを示すを生成する。同様に、設計書クラスタリング部2は、プロダクトアーカイブ1から設計書Qを読み出し、読み出した設計書Qから単語を抽出し、抽出した単語を用いて、設計書Qの単語ベクトルWQを生成する。そして、設計書クラスタリング部2は、生成したWPとWQとの距離を、設計書Pと設計書Qとの類似度として算出する。ここで、単語ベクトルとは、文書に出現する各単語の出現頻度に基づく数値を基底とするベクトルである。すなわち、設計書クラスタリング部2は、類似性を比較する設計書Pと設計書Qとを、それぞれの設計書に含まれる単語の出現頻度により仮想空間上の座標で表現し、座標間の距離によって類似度を算出する。以下、設計書クラスタリング部2による単語ベクトル間の距離算出の一例を示す。例えば、設計書クラスタリング部2は、まず、プロダクトアーカイブ1から設計書Pを読み出し、読み出した設計書Pに前処理を実行する。一例を挙げると、設計書クラスタリング部2は、読み出した設計書Pに含まれる半角文字を全て全角文字に変換したり、アルファベットの小文字を大文字に変換したりする。そして、設計書クラスタリング部2は、文字を変換した設計書Pに対して形態素解析を実行することで、単語を抽出する。ここで、設計書クラスタリング部2は、単語として名詞のみを抽出するとともに、<や=などを含む単語を不要語として除去する。その後、設計書クラスタリング部2は、以下に示す式1及び式2により、単語ベクトルWPの単語tに関する成分wtPを算出する。なお、式1のtftPは、設計書Pにおける単語tの出現頻度を示す。また、式2のNは、全プロダクトの数を示す。また、式2のdftは、単語tが出現するプロダクトの数を示す。すなわち、設計書クラスタリング部2は、式1及び式2に示すように、TF-IDFの重みを考慮して単語ベクトルWPを生成する。このことにより、設計書Pに出現する特定の単語がどのくらい特徴的であるかを反映させた単語ベクトルWPを生成することができる。設計書クラスタリング部2は、設計書Pから抽出した全ての単語に関する成分を算出して、単語ベクトルWPを生成する。なお、単語ベクトルの次元数を考慮して、単語ベクトルの生成に用いる成分を任意に選択してもよい。例えば、単語ごとにベクトルの成分の値の最大値を算出して、上位200位に入る単語の成分以外を除去して、200次元のベクトルを生成する場合であってもよい。同様に、設計書クラスタリング部2は、単語ベクトルWQを生成する。そして、設計書クラスタリング部2は、生成した単語ベクトルWPとWQとを用いた以下の式3により、プロダクトPとQとの類似度を算出する。なお、式3のDdPQは、プロダクトPとQとのコサイン距離を示す。式3に示すように、設計書クラスタリング部2は、単語ベクトルWPとWQとを用いたコサイン距離を類似度として算出する。すなわち、設計書クラスタリング部2は、類似性の高いプロダクト間の距離は短く、類似性の低いプロダクト間の距離は長くなるコサイン距離を算出する。そして、設計書クラスタリング部2は、算出したコサイン距離を用いてプロダクトを階層的クラスタリングによりクラスタリングする。図2は、実施例1に係る設計書クラスタリング部2によるプロダクトの分類の処理結果の一例を示す図である。ここで、図2においては、27個のプロダクトA01~A10、B01~B03、B05、B06、C01~C07、D01~D03、E01、E02を対象とし、単連結法を用いて生成した樹状図を示す。また、図2に示すHeightは、距離を示す。例えば、設計書クラスタリング部2は、図2に示すように、プロダクト間のコサイン距離を、プロダクト間を結ぶ線の長さで表現した樹状図を生成することで、設計書の類似性に基づいたプロダクトのクラスタリングを行う。図1に戻って、ソースコードクラスタリング部3は、設計書クラスタリング部2によって用いられたテキストファイルとは異なる種類のテキストファイルに含まれる文字列の類似度を算出し、算出した類似度に基づいて複数のプロダクトのクラスタリングを行う。具体的には、ソースコードクラスタリング部3は、複数のプロダクトそれぞれのソースコードに含まれるコードクローンを用いて類似度を算出し、算出した類似度に基づいて複数のプロダクトのクラスタリングを行う。例えば、ソースコードクラスタリング部3は、プロダクトアーカイブ1からソースコードPとソースコードQとを読み出し、ソースコードP上にあるソースコードQとのコードクローンを抽出する。一例を挙げると、ソースコードクラスタリング部3は、CCFinderXを用いてコードクローンを抽出する。CCFinderXは、Java登録商標、CC、COBOL、VB、Cに対応したコードクローン検出ツールであり、ソースコードをトークン字句に切り分け、ユーザ定義名識別子の対応付けを行ったうえで個別のパラメータに置き換えてソースコードの比較を行う。すなわち、CCFinderXを用いることで、改行位置が異なったり、変数名が書き換えられたりしているようなソースコードからもコードクローンを抽出することが可能である。同様に、ソースコードクラスタリング部3は、プロダクトアーカイブ1からソースコードPとソースコードQとを読み出し、ソースコードQ上にあるソースコードPとのコードクローンを抽出する。そして、ソースコードクラスタリング部3は、以下に示す式4により、所定の記述言語Liに関するプロダクトP、Q間のトークンを単位とした類似度SiPQを算出する。なお、式4のTCpは、ソースコードP上にあるソースコードQとのコードクローンに含まれるトークン数を示す。また、式4のTCQは、ソースコードQ上にあるソースコードPとのコードクローンに含まれるトークン数を示す。また、式4のTpは、ソースコードPの全トークン数を示す。また、式4のTQは、ソースコードQの全トークン数を示す。すなわち、ソースコードクラスタリング部3は、式4に示すように、ソースコードPの全トークン数とソースコードQの全トークン数とを加算したトークン数に対する、ソースコードP上にあるソースコードQとのコードクローンに含まれるトークン数とソースコードQ上にあるソースコードPとのコードクローンに含まれるトークン数とを加算したトークン数の割合を、ソースコードPとソースコードQとの類似度SiPQとして算出する。ここで、複数のプロダクトそれぞれのソースコードに異なる記述言語で記述されたコードが含まれていた場合には、ソースコードクラスタリング部3は、記述言語ごとに類似度を算出し、算出した記述言語ごとの類似度を合成した合成類似度に基づいて複数のプロダクトのクラスタリングを行う。具体的には、ソースコードクラスタリング部3は、分析対象となるプロダクトに含まれる記述言語の集合をL=L1L2Lnとする。そして、ソースコードクラスタリング部3は、式4を用いて各記述言語の類似度を算出し、算出した類似度を成分とした類似度ベクトルSPQ以下、太字Sは、類似度ベクトルを示すを、以下の式5のように定義する。そして、ソースコードクラスタリング部3は、分析対象となるソースコードに含まれる全ての記述言語を考慮した類似度である合成類似度SPQを、以下に示す式6により算出する。すなわち、ソースコードクラスタリング部3は、式6に示すように、類似度ベクトルSPQの絶対値を記述言語数の平方根で割った値を合成類似度SPQとして算出する。その後、ソースコードクラスタリング部3は、合成類似度SPQを用いた以下の式7により、分析対象となるプロダクトに含まれる全ての記述言語を考慮したソースコードP、Q間の距離である合成距離DsPQを算出する。式7に示すように、ソースコードクラスタリング部3は、1から合成類似度SPQを減算した値を合成距離DsPQとして算出する。すなわち、ソースコードクラスタリング部3は、合成類似度SPQの値が高いほど合成距離DsPQが0に近くなり、合成類似度SPQの値が低いほど合成距離DsPQが1に近くなる合成距離DsPQを算出する。そして、ソースコードクラスタリング部3は、算出した合成距離を用いてプロダクトを階層的クラスタリングによりクラスタリングする。図3は、実施例1に係るソースコードクラスタリング部3によるプロダクトの分類の処理結果の一例を示す図である。ここで、図3においては、27個のプロダクトA01~A10、B01~B03、B05、B06、C01~C07、D01~D03、E01、E02を対象とし、単連結法を用いて生成した樹状図を示す。また、図3に示すHeightは、距離を示す。例えば、ソースコードクラスタリング部3は、図3に示すように、プロダクト間の合成距離を、プロダクト間を結ぶ線の長さで表現した樹状図を生成することで、ソースコードの類似性に基づくプロダクトのクラスタリングを行う。図1に戻って、閾値決定部4は、設計書クラスタリング部2、ソースコードクラスタリング部3の結果を用いて閾値を決定し、複数のプロダクトを第1及び第2プロダクト群に分類する。具体的には、閾値決定部4は、まず、設計書クラスタリング部2及びソースコードクラスタリング部3によって生成された樹状図からプロダクトを分類するための閾値を決定する。例えば、閾値決定部4は、操作者からの閾値の入力処理を受付けることで、樹状図からプロダクトを分類するための閾値を決定する。図4は、実施例1に係る閾値決定部4による閾値の決定処理の一例を説明するための図である。ここで、図4においては、図示しない表示部に表示されたGUIGraphicalUserInterfaceを参照しながら、操作者が閾値の入力操作を行い、閾値を決定する場合について示す。また、図4においては、図2に示す樹状図に対する閾値を決定する場合について示す。例えば、操作者は、図4に示すプルダウンから設計書による樹状図を選択することで、設計書クラスタリング部2によって生成された樹状図を表示部に表示させる。そして、操作者は、UP及びDOWNを操作することで閾値を示すラインを樹状図上で上下させ、所望の位置にラインを設定した後に決定の入力操作を行う。これにより、閾値決定部4は、設計書クラスタリング部2によって生成された樹状図からプロダクトを分類するための閾値を決定する。なお、閾値決定部4は、樹状図からプロダクトを分類するための閾値を自動で決定する場合であってもよい。かかる場合には、閾値決定部4は、全てのプロダクト間の距離に応じて、閾値を自動で決定する。そして、閾値決定部4は、決定した閾値を用いて、第1プロダクト群及び第2プロダクト群を分類する。図5は、実施例1に係る設計書クラスタリング部2によって生成された樹状図からのプロダクトの分類の一例を示す図である。図5においては、図2に示す樹状図からのプロダクトの分類の一例を示す。例えば、図5に示すように、閾値決定部4は、閾値を決定すると、決定した閾値と樹状図における線との交点のHeightよりも低い位置で連結されたプロダクトを一つのクラスタとして分類する。すなわち、図5に示すように、閾値決定部4は、閾値を0.35と決定すると、プロダクトA01及びA02をクラスタCd1として分類し、プロダクトA03~A10及びD01~D03をクラスタCd2として分類し、プロダクトC01~C07をクラスタCd3として分類し、プロダクトB01、B03、B05及びB06をクラスタCd4として分類する。また、閾値決定部4は、B02、E01及びE02をそれぞれ単独のクラスタとして分類する。図6は、実施例1に係るソースコードクラスタリング部3によって生成された樹状図からのプロダクトの分類の一例を示す図である。図6においては、図3に示す樹状図からのプロダクトの分類の一例を示す。例えば、図6に示すように、閾値決定部4は、を決定すると、決定した閾値と樹状図における線との交点のHeightよりも低い位置で連結されたプロダクトを一つのクラスタとして分類する。すなわち、図6に示すように、閾値決定部4は、閾値を0.95と決定すると、プロダクトA01及びA02をクラスタCs1として分類し、プロダクトA04~A09をクラスタCs2として分類し、プロダクトB03、B05及びB06をクラスタCs3として分類し、プロダクトC01~C04をクラスタCs4として分類し、プロダクトC06及びC07をクラスタCs5として分類し、プロダクトD01~D03をクラスタCs6として分類する。また、閾値決定部4は、B02、A03、B01、E01、A10、E02及びC05をそれぞれ孤立プロダクトとして分類する。図1に戻って、クラスタ合成部5は、閾値決定部4によって分類された第1プロダクト群と、第2プロダクト群とを第3プロダクト群として統合する。具体的には、クラスタ合成部5は、ソースコードクラスタリング部3と閾値決定部4によって分類された第2プロダクト群を基本とし、第2プロダクト群に含まれるクラスタが、設計書クラスタリング部2と閾値決定部4によって分類された第1プロダクト群に含まれる同じクラスタに包含されるかどうかを基準として、新しい分類結果である第3プロダクト群を生成する。より具体的には、クラスタ合成部5は、ソースコードクラスタリング部3によって分類された複数のクラスタCsにおいて、設計書クラスタリング部2によって同一のクラスタCdに分類されたプロダクトを含むクラスタCsを統合する。図7は、実施例1に係るクラスタ合成部5による処理の一例を説明するための図である。図7においては、ソースコードクラスタリング部3によって分類されたクラスタCs1~Cs3をベースとして、設計書クラスタリング部2によって分類されたクラスタCd1~Cd3の分類結果を組み合わせる場合について示す。例えば、クラスタ合成部5は、図7に示すクラスタCs1に含まれるプロダクトA及びBを包含するクラスタCdがあるか否かを判定する。同様に、クラスタ合成部5は、図7に示すクラスタCs2に含まれるプロダクトC及びDを包含するクラスタCdがあるか否かを判定する。また同様に、クラスタ合成部5は、図7に示すクラスタCs3に含まれるプロダクトE及びFを包含するクラスタCdがあるか否かを判定する。ここで、図7のCd1がプロダクトA~Dを含んでいることから、クラスタ合成部5は、図7に示すように、Cs1とCs2とを統合した合成結果C1を出力する。一方、Cs3に含まれるプロダクトE及びFを包含するクラスタCdがないことから、クラスタ合成部5は、図7に示すように、Cs3をそのまま合成結果C2として出力する。[実施例1に係る分類システムによる処理の手順]次に、実施例1に係る分類システム10による処理の手順について、図8~10を用いて説明する。図8は、実施例1に係る設計書クラスタリング部2による分類処理の手順を示すフローチャートである。プロダクトの分類コマンドが実行されると、設計書クラスタリング部2は、図8に示すように、プロダクトアーカイブ1から分析対象となるプロダクト群の設計書を抽出するステップS101。そして、設計書クラスタリング部2は、分析対象を選択しステップS102、選択した分析対象の設計書からテキストデータを抽出するステップS103。その後、設計書クラスタリング部2は、抽出したテキストデータに含まれる文字に対して、半角文字を全角文字に変換したり、小文字を大文字に変換したりする前処理を実行するステップS104。続いて、設計書クラスタリング部2は、テキストデータを形態素解析して、単語を抽出するステップS105。そして、設計書クラスタリング部2は、抽出した各単語について、TF-IDFベースの重みを算出し、単語ベクトルを生成してステップS106、全ての設計書に対して処理を実行したか否かを判定するステップS107。ここで、全ての設計書に対して処理を実行していないと判定した場合にはステップS107否定、設計書クラスタリング部2は、ステップS102に戻って、分析対象を選択する。一方、全ての設計書に対して処理を実行したと判定した場合にはステップS107肯定、設計書クラスタリング部2は、全ての単語ベクトルの組に対してコサイン距離を算出するステップS108。その後、設計書クラスタリング部2は、得られた距離群に対して、階層クラスタリング法を適用することで樹状図を生成するステップS109。図9は、実施例1に係るソースコードクラスタリング部3による分類処理の手順を示すフローチャートである。プロダクトの分類コマンドが実行されると、ソースコードクラスタリング部3は、図9に示すように、プロダクトアーカイブ1から分析対象となるプロダクト群のソースコードを抽出するステップS201。そして、ソースコードクラスタリング部3は、分析対象となるソースコードの組を選択しステップS202、記述言語を選択するステップS203。その後、ソースコードクラスタリング部3は、CCFinderXを用いて、コードクローンを抽出してステップS204、コードクローンのトークンを単位とした類似度を算出してステップS205、全ての記述言語に対して処理を実行したか否かを判定するステップS206。ここで、全ての記述言語に対して処理を実行していないと判定した場合にはステップS206否定、ソースコードクラスタリング部3は、ステップS203に戻って、記述言語を選択する。一方、全ての記述言語に対して処理を実行したと判定した場合にはステップS206肯定、ソースコードクラスタリング部3は、全ての記述言語の合成類似度を算出するステップS207。その後、ソースコードクラスタリング部3は、合成距離を算出してステップS208、全ての組み合わせに対して処理を実行したか否かを判定するステップS209。ここで、全ての組み合せに対して処理を実行していないと判定した場合にはステップS209否定、ソースコードクラスタリング部3は、ステップS202に戻って、分析対象となるソースコードの組を選択する。一方、全ての組み合せに対して処理を実行したと判定した場合にはステップS209肯定、ソースコードクラスタリング部3は、得られた距離群に対して、階層クラスタリング法を適用することで樹状図を生成するステップS210。図10は、実施例1に係るクラスタ合成部5による処理の手順を示すフローチャートである。なお、クラスタ合成部5による処理は、以下に記すことを前提として実行される。すなわち、プロダクトの集合をSpとし、Spに対するソースコードによる分類をCs{Cs1Cs2Csm}とした場合に、以下に示す式8~10を満たすことを前提とする。すなわち、式8~10に示すように、クラスタ合成部5による処理は、分類されたクラスタ間でプロダクトが重複せず、CsiがSpに含まれおり、Csの要素であるCsii=1~mの全ての和がSpと同一であることを前提として実行される。同様に、Spに対する設計書による分類をCd{Cd1Cd2Cdm}とした場合に、以下に示す式11~13を満たすことを前提とする。すなわち、式11~13に示すように、クラスタ合成部5による処理は、分類されたクラスタ間でプロダクトが重複せず、CdiがSpに含まれおり、Cdの要素であるCdii=1~mの全ての和がSpと同一であることを前提として実行される。上述した前提により2つのクラスタCs及びCdが得られると、クラスタ合成部5は、図10に示すように、空集合C’s={}を用意するステップS301。そして、クラスタ合成部5は、Csの要素を1つ取り出し、CsiとしステップS302、以下に示す式14を満たすjが存在するか否かを判定するステップS303。すなわち、クラスタ合成部5は、式14に示すように、Csiを包含するCdjが存在するか否かを判定する。ここで、式14を満たすjが存在すると判定した場合にはステップS303肯定、クラスタ合成部5は、式17を条件として、空の集合C’sを式15とし、Csを式16とするステップS304。一方、式14を満たすjが存在しないと判定した場合にはステップS303否定、クラスタ合成部5は、空の集合C’sを式18とし、Csを式19とするステップS305。そして、クラスタ合成部5は、Csが空になったか否かを判定するステップS306。ここで、Csが空になっていないと判定した場合にはステップS306否定、クラスタ合成部5は、ステップS302に戻って、Csの要素を1つ取り出し、Csiとする。一方、Csが空になったと判定した場合にはステップS306肯定、クラスタ合成部5は、処理を終了する。[実施例1の効果]上述したように、実施例1によれば、プロダクトを構成するテキストファイルを複数用いて、複数のプロダクトを類似したプロダクトごとに分類する分類システム10において、設計書クラスタリング部2が、複数の設計書それぞれに含まれる文字列の間の類似度を算出し、算出した類似度に基づいて複数のプロダクトのクラスタリングを行う。そして、ソースコードクラスタリング部3が、設計書クラスタリング部2によって用いられた設計書とは異なる種類の複数のソースコードそれぞれに含まれる文字列の間の類似度を算出し、算出した類似度に基づいて複数のプロダクトのクラスタリングを行う。そして、閾値決定部4が、設計書クラスタリング部2、ソースコードクラスタリング部3の結果を用いて閾値を決定し、複数のプロダクトを第1及び第2プロダクト群に分類する。そして、クラスタ合成部5が、閾値決定部4によって分類された第1プロダクト群と、閾値決定部4によって分類された第2プロダクト群とを第3プロダクト群として統合する。従って、実施例1に係る分類システムは、設計書及びソースコードの類似性を考慮したプロダクトの分類ができ、プロダクトの分類の精度を向上させることを可能にする。また、実施例1によれば、設計書クラスタリング部2は、複数のプロダクトそれぞれの設計書に含まれる単語の出現頻度を用いて類似度を算出し、算出した類似度に基づいて複数のプロダクトのクラスタリングを行う。そして、ソースコードクラスタリング部3は、複数のプロダクトそれぞれのソースコードに含まれるコードクローンを用いて類似度を算出し、算出した類似度に基づいて複数のプロダクトのクラスタリングを行う。従って、実施例1に係る分類システム10は、ソースコードにおいて、機能が変らず実装が変っている場合や、異なる機能だが設計書に記述する際の言葉が似ている場合などでも、正しく分類することができ、プロダクトの分類の精度をより向上させることを可能にする。また、実施例1によれば、ソースコードクラスタリング部3は、複数のプロダクトそれぞれのソースコードに異なる記述言語で記述されたコードが含まれていた場合には、記述言語ごとに類似度を算出し、算出した記述言語ごとの類似度を合成した合成類似度に基づいて複数のプロダクトのクラスタリングを行う。従って、実施例1に係る分類システム10は、1つのプロダクトが複数の記述言語で記載されている場合にも正しく分類することができ、プロダクトの分類の精度をさらに向上させることを可能にする。上述した実施例1では、設計書及びソースコードの2つの指標に基づいてプロダクトを分類する場合について説明した。実施例2では、3つ以上n個の指標に基づいてプロダクトを分類する場合について説明する。[実施例2に係る分類システムの構成]実施例2に係る分類システムの構成について説明する。図11は、実施例2に係る分類システム10aの構成の一例を説明するための図である。図11に示すように、実施例2に係る分類システム10aは、プロダクトアーカイブ1aと、指標1クラスタリング部21~指標nクラスタリング部2nと、閾値決定部4と、クラスタ合成部5aとを有する。プロダクトアーカイブ1aは、プロダクトごとに、当該プロダクトを構成する3つ以上のファイルを記憶する。例えば、プロダクトアーカイブ1aは、図11に示すように、プロダクトPを構成するファイルとして、指標1から見たPの関連部~指標nから見たPの関連部を記憶する。同様に、プロダクトアーカイブ1aは、図11に示すように、プロダクトQを構成するファイルとして、指標1から見たQの関連部~指標nから見たQの関連部を記憶する。なお、プロダクトアーカイブ1aによって記憶されるファイルとしては、テキストファイルの他に、例えば、バイナリファイルなどがある。指標1クラスタリング部21は、指標1から見たPの関連部及び指標1から見たQの関連部から指標1によって得られる類似度を算出し、算出した類似度に基づいてプロダクトPとプロダクトQとを分類する。同様に、指標2クラスタリング部22~指標nクラスタリング部2nは、各指標から見たPの関連部及びQの関連部から各指標によって得られる類似度を算出し、算出した類似度に基づいてプロダクトPとプロダクトQとをそれぞれ分類する。すなわち、指標1クラスタリング部21~指標nクラスタリング部2nは、各指標に基づいて樹状図を生成する。そして、閾値決定部4は、複数の樹状図に対して、それぞれ閾値を決定して、プロダクト群をそれぞれ分類する。クラスタ合成部5aは、閾値決定部4によって分類されたn個の分類結果を累積的に統合する。具体的には、クラスタ合成部5aは、n個の分類結果からベースとなる分類結果と統合する分類結果とを選択し、1つの合成クラスタを出力する。そして、クラスタ合成部5aは、出力した合成クラスタをベースとなる分類結果として、その他の分類結果をさらに統合する。このように、クラスタ合成部5aは、n個の分類結果を累積的に統合して、1つの合成クラスタを出力する。[実施例2に係る分類システムによる処理の手順]次に、実施例2に係る分類システム10aによる処理の手順について、図12を用いて説明する。図12は、実施例2に係るクラスタ合成部5aによる処理の手順を示すフローチャートである。なお、図12におけるステップS403は、図10に示す処理の手順に相当する。プロダクトの分類コマンドが実行されると、クラスタ合成部5aは、図12に示すように、指標1クラスタリング部21から得られた樹状図と、閾値によって決められた分類をベースとなる分類CsとするステップS401。そして、クラスタ合成部5aは、組み合わせる分類を選択して、CdとするステップS402。その後、クラスタ合成部5aは、2つの分類を合成してステップS403、得られた分類を新たなCsとしステップS404、全ての指標に対して処理を実行したか否かを判定するステップS405。ここで、全ての指標に対して処理を実行していないと判定した場合にはステップS405否定、クラスタ合成部5aは、ステップS402に戻って、組み合わせる分類を選択して、Cdとする。一方、全ての指標に対して処理を実行したと判定した場合にはステップS405肯定、クラスタ合成部5aは、得られたCsを合成クラスタとして出力してステップS406、処理を終了する。[実施例2の効果]上述したように、実施例2によれば、指標1クラスタリング部21~指標nクラスタリング部2nは、種類の異なる複数のファイルについて、指標に基づく類似度をそれぞれ算出し、算出した類似度それぞれに基づいて、クラスタリングを行う。そして、閾値決定部4は、指標1クラスタリング部21~指標nクラスタリング部2nによるクラスタリング結果を用いて閾値を決定して、複数のプロダクトをそれぞれプロダクト群に分類する。そして、クラスタ合成部5aは、閾値決定部4によって分類された複数のプロダクト群を累積的に統合して合成クラスタとする。従って、実施例2に係る分類システムは、3つ以上の指標を用いてプロダクトを分類することができ、プロダクトの分類の精度を向上させることを可能にする。これまで実施例1及び2について説明したが、本願の技術は実施例1及び2に限定されるものではない。すなわち、実施例1及び2は、その他の様々な形態で実施されることが可能であり、種々の省略、置き換え、変更を行うことができる。システム構成等例えば、各装置の分散統合の具体的形態例えば、図1の形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散統合することができる。一例を挙げると、設計書クラスタリング部2とソースコードクラスタリング部3とをクラスタリング部として統合してよい。また、クラスタ合成部5を分類システム10の外部装置としてネットワーク経由で接続するようにしてもよく、或いは、設計書クラスタリング部2とソースコードクラスタリング部3とを別々の装置が有し、ネットワークに接続されて協働することで、上述した分類システム10の機能を実現するようにしてもよい。これらの実施例やその変形は、本願が開示する技術に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。