"ソースコード分析手段により、複数のソースプログラムの間の類似性を検出し評価するソフトウェアの類似性評価方法であって、前記ソースコード分析手段は、前記複数のソースプログラムが格納される記憶装置部と、表示部を含む入出力装置とを備えており、前記類似性評価方法は、分析の条件として、前記複数のソースプログラムの間の類似性の解析条件、及び、該類似性以外の解析条件を取得する解析条件取得工程と、前記類似性の解析条件に基づき、前記複数のソースプログラムから、前記類似性に関わる情報を取得する類似性検出工程と、前記類似性以外の解析条件に基づき、前記複数のソースプログラムから、前記類似性以外の解析情報を取得する解析情報取得工程と、前記各ソースプログラムにおける前記類似性を有するコード領域と前記類似性以外の解析情報とを対応づける領域照合工程と、前記類似性を有するコード領域における、前記類似性以外の解析情報を評価する評価工程と、前記評価結果に基づき、前記類似性に関わる情報と前記類似性以外の解析情報とを関連付けて、前記表示部へ表示する表示工程とを有することを特徴とするソフトウェアの類似性評価方法。請求項1において、前記類似性の解析条件が、前記類似性の検出法と、類似度合とであることを特徴とするソフトウェアの類似性評価方法。請求項1において、前記類似性検出工程において、複数の前記解析条件で前記類似性の検出を実施し、該解析条件の相違を反映して内容が相違する第一の類似性情報と第二の類似性情報とを生成し、前記領域照合工程において、前記類似性以外の解析情報との対応づけを前記第一の類似性情報と前記第二の類似性情報の双方に対して実施することを特徴とするソフトウェアの類似性評価方法。請求項1において、前記類似性以外の解析条件が、前記ソースプログラム内の関数の開始位置であることを特徴とするソフトウェアの類似性評価方法。請求項1において、前記類似性以外の解析条件が、前記ソースプログラムの複雑度であることを特徴とするソフトウェアの類似性評価方法。請求項4において、前記評価結果の表示工程における前記表示部への表示形態が、前記関数のインターフェースが同一か否か、及びソースコードの中身が一致するか否かで分類されたものであることを特徴とするソフトウェアの類似性評価方法。請求項5において、前記評価結果の表示工程における前記表示部への表示形態が、前記複雑度の大小と、前記類似性を有するペアの所在の分散の大小で分類されたものであることを特徴とするソフトウェアの類似性評価方法。請求項1において、前記類似性の検出工程と前記静的解析情報の取得工程とが直列に処理され、これらの処理結果に基づき前記領域照合工程が処理されることを特徴とするソフトウェアの類似性評価方法。請求項1において、前記類似性の検出工程と前記静的解析情報の取得工程とが並列に処理され、これらの処理結果を統合して前記領域照合工程が処理されることを特徴とするソフトウェアの類似性評価方法。ソースコード分析手段により、複数のソースプログラムの間のコードクローンの類似性を検出し評価するソフトウェアの類似性評価方法であって、前記ソースコード分析手段は、前記複数のソースプログラムが格納される記憶装置部と、表示部を含む入出力装置とを備えており、前記類似性評価方法は、分析の条件として、前記複数のソースプログラムの間の前記コードクローンの類似性の解析条件、及び、前記ソースプログラムの間の該類似性以外の解析条件を取得する解析条件取得工程と、前記類似性の解析条件に基づき、前記複数のソースプログラムから、前記コードクローンの類似性に関わる情報を取得する類似性検出工程と、前記類似性以外の解析条件に基づき、前記複数のソースプログラムから、前記コードクローンの類似性以外の解析情報を取得する解析情報取得工程と、前記各ソースプログラムにおける前記コードクローンの類似性を有するコード領域と前記類似性以外の解析情報とを対応づける領域照合工程と、前記コードクローンの類似性を有するコード領域における、前記類似性以外の解析情報を評価する評価工程と、前記評価結果に基づき、前記コードクローンの類似性に関わる情報と前記類似性以外の解析情報とを関連付けて、前記表示部へ表示する表示工程とを有することを特徴とするソフトウェアの類似性評価方法。請求項10において、前記類似性に関わる情報が、前記コードクローンの検出方法と、該コードクローンの類似度合に関する情報であることを特徴とするソフトウェアの類似性評価方法。請求項10において、前記類似性以外の解析条件が、前記ソースプログラム内の関数の開始位置であり、前記評価結果の表示工程における前記表示部への前記類似性情報の表示形態が、前記関数の位置情報の範囲内で前記コードクローン検出を行った結果を対応付けたものであることを特徴とするソフトウェアの類似性評価方法。請求項10において、前記評価結果の表示工程において、前記ソースプログラムの類似度と、前記類似性以外の解析情報をマージした前記コードクローン情報とを生成し、可視化して前記表示部へ表示することを特徴とするソフトウェアの類似性評価方法。請求項13において、前記評価結果の表示工程における前記表示部への表示形態が、前記複雑度の大小と、前記類似性を有する前記コードクローンの広がりの大小とに基づく、処理の優先度で分類されたものであることを特徴とするソフトウェアの類似性評価方法。ソースコード分析手段により、複数のソースプログラムの間の類似性を検出し評価するソフトウェアの類似性評価方法であって、前記ソースコード分析手段は、前記複数のソースプログラムが格納される記憶装置部と、入力装置、及び出力装置とを備えており、前記類似性評価方法は、分析の条件として前記入力装置から入力される、前記複数のソースプログラムの間の類似性に関する少なくとも1つの解析条件を第一の解析条件、及び、前記複数のソースプログラムに関する前記類似性以外の少なくとも1つの解析条件を第二の解析条件とを取得する解析条件取得工程と、前記第一の解析条件に基づき、前記複数のソースプログラムから、前記類似性に関わる情報を取得する類似性検出工程と、前記第二の解析条件に基づき、前記複数のソースプログラムに関して、前記第二の解析条件を満たす解析情報を取得する解析情報取得工程と、前記各ソースプログラムにおける前記類似性を有するコード領域と、前記第二の解析条件を満たす解析情報とを対応づける領域照合工程と、前記類似性を有するコード領域における、前記第二の解析条件を満たす解析情報を評価する評価工程と、前記評価結果に基づき、前記類似性に関わる情報と前記第二の解析条件を満たす解析情報とを関連付けて、前記出力装置に出力する工程とを有することを特徴とするソフトウェアの類似性評価方法。請求項15において、前記第一の解析条件が、前記ソースプログラム間の前記類似性の検出法と、類似度合であることを特徴とするソフトウェアの類似性評価方法。請求項16において、前記類似性検出工程において、複数の前記解析条件で前記類似性の検出を実施し、該解析条件の相違を反映して内容が相違する第一の類似性情報と第二の類似性情報とを生成し、前記領域照合工程において、前記第二の解析条件を満たす解析情報との対応づけを前記第一の類似性情報と前記第二の類似性情報の双方に対して実施することを特徴とするソフトウェアの類似性評価方法。請求項15において、前記第二の解析条件が、前記ソースプログラムのソースコードの記述に関する解析条件と、該ソースコードの記述内容以外のソースコードの属性情報とを含むことを特徴とするソフトウェアの類似性評価方法。請求項18において、前記第二の解析条件が、ハードウェアへの依存性に関する解析条件を含むことを特徴とするソフトウェアの類似性評価方法。請求項18において、前記第二の解析条件が、OSへの依存性に関する解析条件を含むことを特徴とするソフトウェアの類似性評価方法。重複したコードコードクローンと呼称する場合もあるがそれに限定されないの検出と解析は、ソフトウェア開発保守の信頼性、使用性、あるいは保守性といった品質特性の向上に対して有用な情報を与える分析方法として認知されてきており、利用事例が増えている。近年、ハードウェア価格低下とハードウェアの機能の向上にともない、ソフトウェアシステムは年々大規模化、複雑化している。ソフトウェアシステムの大規模化により、ソフトウェアの構築や保守にかかるコストが増大し、多くの労力が必要となる。システムが小規模の場合、そのシステムの個々の構成要素を人間が調べ値を出すことも可能だが、構造が複雑で大規模なシステムでは、何らかの機械的な処理により、自動的に求めることが望ましい。たとえば、不具合の原因を持つコード片に対しては、他の箇所に存在する同等のコード片も改修することが必要であるが、同等のコード片クローンを手作業で探すことは、ソフトウェアが大規模であればある程困難となってくる。従って、他の箇所に存在する同等の不具合を漏れなく発見し改修することが難しく,品質面および作業コストの面で問題となりやすい。重複したコードの検出の際の閾値の調整の結果、類似度の高い完全一致のコード片のみを抽出対象とすると短いクローン片が検出される傾向にある。ある程度の類似性を有する領域であっても、完全に一致する複数の部分領域に分割されて検出されるためである。たとえば、Gappedクローンの形状に類するコードの類似領域は、短いクローン片に分割されて、複数の別のクローンのペアとして検出される。このように従来の技術では、類似性の検出条件の設定において、多少の差分を無視して広い類似領域長いクローン片を検出する設定では、類似度の精度の面で不十分な場合がある。一方で、短いクローン片を多く検出させる設定では、それにより数多く生成する傾向にあるクローンの中から目的とするコードクローンを探し出すのに分析者の労力や分析に要する時間を多く費やしてしまう。分析者に分析の目的に応じた精度の検出情報を、効率よく提示することが課題になる。本発明の課題は、ソフトウェアの類似性の検出における上記従来技術の問題点を解決し、分析者ユーザに分析の目的に応じた精度の検出情報を、効率よく提示することができる、ソフトウェアの類似性評価方法を提供することにある。上記課題を解決するための、本発明の代表的なものの一例を示すと、次の通りである。すなわち、ソースコード分析手段により、複数のソースプログラムの間の類似性を検出するソフトウェアの類似性評価方法であって、ソースコード分析手段により、複数のソースプログラムの間の類似性を検出し評価するソフトウェアの類似性評価方法であって、前記ソースコード分析手段は、前記複数のソースプログラムが格納される記憶装置部と、表示部を含む入出力装置とを備えており、前記類似性評価方法は、分析の条件として、前記複数のソースプログラムの間の類似性の解析条件、及び、該類似性以外の解析条件を取得する解析条件取得工程と、前記類似性の解析条件に基づき、前記複数のソースプログラムから、前記類似性に関わる情報を取得する類似性検出工程と、前記類似性以外の解析条件に基づき、前記複数のソースプログラムから、前記類似性以外の解析情報を取得する解析情報取得工程と、前記各ソースプログラムにおける前記類似性を有するコード領域と前記類似性以外の解析情報とを対応づける領域照合工程と、前記類似性を有するコード領域における、前記類似性以外の解析情報を評価する評価工程と、前記評価結果に基づき、前記類似性に関わる情報と前記類似性以外の解析情報とを関連付けて、前記表示部へ表示する表示工程とを有することを特徴とする。本発明によれば、ソフトウェアの類似性に関して必要な情報を探しやすくし、分析者ユーザの労力を軽減し、分析に要する時間を短縮できる。また、複雑度、類似度、関数位置情報など複数の解析情報をマージしたコードクローン情報をユーザに図や表として可視化し提供することは、ユーザによる精査ポイントの効率的な把握、フォーカスを容易にする。これにより、各ユーザは、ソフトウェアの開発に関して、効率的に正確な改善指針を共有できるようになる。本発明では、分析の目的に応じて、類似領域クローン片を含むソースプログラムの部分領域の静的解析情報複雑度等を算出する。静的解析とは、プログラムを動作させずに、そのプログラムの品質を改善、評価するために行うものである。類似度とそれ以外の静的解析情報とを関連付けて評価し、分析の目的に応じて類似度情報を選別し分析者に情報提供する。また、特定の複数プログラム関数あるいはファイル等に対して、複数の条件で類似領域クローン片の位置情報を、検出する。検出条件の相違を反映した複数の異なる検出結果を比較参照することで、分析の目的に応じた類似度情報の選別に活用する。以下、本発明の最良の実施の形態を、図面を参照して説明する。[システム構成]本発明のソフトウェアの類似性評価方法を実施するのに適したソースコード分析手段のシステムの例を、図1A、図1Bを参照しながら説明する。本発明におけるフトウェアの類似性評価方法は、図1Aに示すような一般的なコンピュータ上で実行される。すなわち、ソースコード分析手段は、CPU100と主記憶部101と、HDD等の外部記憶装置102と、CDROMやDVDROM等の可搬性を有する可搬型記憶媒体103から情報を読み出す読取装置104と、ディスプレイ表示装置やキーボードやマウス等の入出力装置105と、通信ネットワークに接続するためのNICNetworkInterfaceCard等の通信装置106と、バス107とを備えた一般的なコンピュータ上で、所定のコンピュータプログラムを実行することで実現される。ソースコード分析手段コンピュータプログラムは、単体のコンピュータで構成しても良く、あるいは、また、サーバとこのサーバにネットワークを介して接続された少なくとも1つのコンピュータとで構成しても良い。また、入出力装置は、ユーザインターフェース機能を有するディスプレイ表示装置のように、入出力機能の一部が、一体的に構成されたものであっても良く、あるいはまた、入力装置と出力装置が独立して構成されたものであっても良い。次に、本実施形態に係るソースコード分析手段の構成について説明する。図1Bは、本実施形態に係るソースコード類似性検出を行うソースコード分析手段の機能ブロック図である。ソースコード分析手段は、外部記憶装置部102と主記憶装置部101を備える。外部記憶装置部102は、ソースコード格納部3Aと、分析関連情報及び出力ファイル格納部3Bを備える。ソースコード格納部3Aには、類似性検出を行うソースコードなど、分析に必要なソースコードが格納される。分析関連情報及び出力ファイル格納部3Bには、類似度合の検出方法例えばコードクローンを行単位で検出する等に関する情報、類似度合以外の検出方法関数の開始位置等、ソースコード静的解析を行う場合に利用可能な外部ツールの情報など、本実施形態の実施に必要な分析関連情報が格納されている。また、以下で説明する完全一致コードクローン出力結果表、一部一致コードクローン出力結果表、複雑度出力結果表、出力結果統合表、出力結果表等も格納される。主記憶装置部101は、コンピュータプログラムを保有しており、このプログラムに基づく所定の処理手順をCPUで実行することにより得られる機能ユニットとして、条件設定部4、類似性検出部5、静的解析部6、照合統合部7、評価部8、評価結果表示部9を備える。条件設定部4は、ソースコードの類似性検出を類似性検出部5で実行する際、あるいは静的解析部6でソースコードの複雑度や関数の位置情報などの静的解析を実行する際に、必要となる条件設定を行う。すなわち、条件設定部4では、類似性検出部5における解析で必要な、複数のソースプログラムの間の類似性に関する第1の設定条件を選定し、静的解析部6における解析で必要な、複数のソースプログラムの前記類似性以外の記述の解析に関する第2の設定条件を選定する。照合統合部7は、類似性検出部5、および静的解析部6で得られた結果を照合統合を行う。評価部8は、照合統合部7で処理した結果をユーザの目的に応じ結果を評価する。評価結果表示部9は、評価部8で評価した結果を、ユーザにわかりやすく可視化し表示する。図2は、本発明に係わるソースコード分析手段の基本的な作用、効果を示す図である。本発明のソースコード分析手段では、格納部に格納されているソースコードファイルを入力として、1ソースコードの類似性検出、2ソースコードの関数の位置情報や複雑度などの意味分けに基づく静的解析を行う。この2つの解析1,2を行う際、ユーザが目的に応じて、ソースコードの類似性検出、およびソースコードに関して類似性以外の条件の、少なくとも2つの解析条件の設定を行うことができる。この条件設定に際してユーザは、分析関連情報及び出力ファイル格納部3Bなどの情報を利用可能である。ソースコード分析手段は設定された条件に従って、複数のソースコードの解析処理3を行う。そして、この解析処理で得られたソースコードの類似性とソースコードに関する類似性以外の条件の解析の結果とを照合統合4し、ユーザの目的に応じて照合統合した結果のタイプ分け5などを行い、評価する。さらに、評価した結果6を可視化し、出力表示する。これにより、ユーザ分析者は、ソースコード分析手段を用いて、ソースコードの分析に関して、その目的に応じた類似度合情報及び類似性以外の条件で解析を行い、解析された結果の情報を得ることができる。以下、より具体的な本発明の実施例について説明する。本発明のソフトウェアの類似性評価方法の第一の実施例を、図3乃至図12を参照しながら説明する。この例は、ソースコードの類似性に関する情報と対応づける照合させる静的解析情報が関数の位置情報であり、かつ、これらを直列に処理する場合の一実施の形態である。図3は、本発明の実施例1の全体の流れを示すフローチャートである。まず、最初に、ユーザにより、ソースコード分析手段に対して、ソフトウェアの類似性評価のために必要な分析条件の設定がなされるステップStep1。ソースコード分析手段は、ユーザが選択した少なくとも2つのプログラム関数及びファイルなどについて文字コード変換など前処理ステップStep2し、前処理したものをユーザにより指定された条件で、静的解析によって関数の位置情報を解析するステップStep3。この工程は、静的解析情報の取得工程に相当する。次に、一つあるいは複数条件でコードクローン検出条件を設定しステップStep4、関数の位置情報の範囲で一つあるいは複数条件でコードクローン検出を行うステップStep5。これは類似性検出工程である。コードクローンの検出条件の設定は、完全一致のコードクローンを検出したいか、あるいは一部が異なるコードクローンを検出したいかなど、ユーザがどのような類似性のコードクローンを検出したいかによって条件を設定しステップStep4、コードクローンを検出することができる。すなわち、ソースコードの類似度条件は、ユーザにより指定される。コードクローン検出類似度条件設定欄の100一致、一部一致には、90以上、80以上、50以上、の検出したい類似度条件を押下し、チェック印を入れる。例えば50以上の類似度のコードクローンを検出したい場合は、50以上を選択することで、50以上から100の類似度のコードクローンを検出できる。また完全一致のコードクローンを検出したい場合は、100一致を選択する。ソースコード分析手段は、コードクローン検出結果と関数の位置情報の出力結果を対応づけ統合するステップStep6。この工程は、領域照合工程に相当する。統合した結果からユーザの目的に応じて、コードクローン情報と関数の位置情報の統合結果の評価を行うステップStep7。この工程は、評価工程に相当する。ここで得られたコードクローン情報を、例えばコードクローンと関数の内のクローンが一致しているかいないかなどで評価し、タイプ別に分類し、可視化した結果を出力するステップStep8。この工程は、評価結果表示工程に相当する。この可視化した分類は、ユーザに精査ポイントを提供できる。以下、ソースコードの分析が終了するまで、同様な処理が繰り返される。ステップStep9図4は、実施例1のソースコード分析手段における設定画面1050の一例を示す図である。設定画面1050は、入力項目として、ソースプログラムの選定400、モード選択設定410、処理方式420、出力方式430を含んでいる。なお、この設定画面1050は、複数の画面で構成してもよい。また、表示項目やその形式も任意に構成することができる。ユーザは、設定画面1050のソースプログラムの選定400の欄で、解析の対象となる少なくとも2つのプログラム関数及びファイルなどを選定する。より具体的には、ユーザが、例えば、対象のソースコードを含むフォルダのパス名を指定する。パス名を指定する際には、設定画面1050の選択ファイルの格納パス401の参照ボタンをユーザが押下し、プルダウンメニューで表示される複数のフォルダ名から希望するフォルダ名を選択し、さらに、プルダウンメニューで表示されるパス名を選択することで、フォルダのパス名の指定が可能である。パス名は、例えば、その作成日、作成者名、ファイル数などと共にリスト形式で一覧表示される。指定したフォルダ以下のディレクトリも解析対象にしたい場合は、サブディレクトリも対象にするにもチェック印を入れる。ユーザは、次に、モード選択設定410において、ソースプログラム間の類似性に関わる情報を取得するために、類似性検出法411を入力する。ユーザが参照を押下すると、プルダウンメニューで複数の類似性検出法が表示される。類似性を検出する手法としては、背景技術の欄で述べたような、例えばコードクローンの検出や、重複したコードの検出等がある。さらに、コードクローンの検出に関しては、例えば、コードクローンの代表的なアルゴリズムを非特許文献3の分類に沿って行単位の検出、字句単位の検出、抽象構文木を用いた検出、プログラム依存グラフを用いた検出、その他の検出技術を用いた検出に分類し、さらに、応じて、必要にプルダウンメニューでより具体的なアルゴリズムを指定できるようにする。行単位で検出する手法では、ソースコードを行単位で比較し、閾値以上の行数を連続して一致している部分を重複コードとして検出する。字句単位での検出する手法でも、ソースコードを字句の列に変換し、閾値以上連続して一致する部分列を類似したコード片コードクローンとして検出する。同様に、抽象構文木を用いた検出手法では、閾値以上の大きさを持つ同形の部分木を類似したコード片コードクローンとして検出する。メトリクスやフィンガープリントを用いる手法でも、ソースコード内のモジュール単位でメトリクスを計算し、メトリクス値がある閾値以上に類似しているモジュールをコードクローンとして検出する。ここでは、類似性検出法411として、ユーザがコードクローンの行単位の検出を指定したものとする。また、類似度合412に関して、100一致と部分一致を選択でき、部分一致の場合には、さらに、プルダウンメニューで表示される複数の一致率の中から1つを選定できる。ここでは、類似性検出法411として、ユーザが、類似度50以上の部分一致を設定したものとする。ユーザは、さらに、解析条件413に関して、例えば、参照を押下し、ソースプログラムの選定で選択した複数のソースコードに関して、類似性検出法411で選択した類似性検出法における類似性以外の記述の解析情報を取得する。類似性以外の記述の解析情報としては、関数の開始位置、技術分野や製品もしくはシステムを特定する字句、作成者、作成日そのソースコード内の記述、及びそのソースコードの属性として得られる情報が挙げられる。ユーザは、プルダウンメニューで表示される上記複数の解析条件から1つもしくは複数の解析条件を選択する。ここでは、解析条件413として、ユーザが関数の開始位置を選定したものとする。また、処理方式420の項目421によって分析処理を直列で行うか、並列で行うかを指定する。なお、処理方式に関しては、分析の他の条件に応じてソースコード分析手段が自動的に判定し、ユーザの入力は求めないようにしても良い。出力方式430では、ユーザが分析の目的に応じて項目431を選択し、表示形式を設定できる。また、図5の静的解析出力表300は、図3のフローチャートのステップStep3の静的解析の関数位置情報解析を行った後の出力表である。表の表記項目は、関数名欄301、ファイルパス名欄302、関数Start行欄303、関数End行欄304と、を備える。各行に一つのファイル情報が格納される。関数名欄301は、静的解析によって同じ行のファイルパス名欄302対応したファイルパス名に対しファイル内に含まれる関数名が縦列に格納される。ファイルパス名欄302は、縦列にファイルの格納先とファイル名を示したパス名で格納される。関数Start行欄303と関数End行欄304には、静的解析によって関数名欄301に示された関数名に対しての関数のStart行とEnd行がそれぞれ格納される。なお、図中に入力されている値やファイルパス名は一例であり、検出された各コードクローンのファイル名と位置情報の値やファイル名がそれぞれ格納されるので、この例以外の数値であっても本発明の趣旨を逸脱しないことは言うまでもない。以下の図面の値やファイル名に関しても同様である。図6Aは、図3のコードクローン検出ステップStep5の詳細を示したフローチャートである。コードクローン検出においては、予め少なくとも2つのプログラム関数及びファイルなどを文字コード変換など前処理し、前処理したものを一つあるいは複数条件のコードクローンの検出条件でコードクローン検出を行う。図6Aに示すように、まず、条件判定を行うステップS1031。コードクローンの検出条件には、完全一致のコードクローンを検出したいか、あるいは一部が異なるコードクローンを検出したいか等、どのような類似性のコードクローンを検出したいか、一つあるいは複数、検出条件が設定されている。図6Aでは2つの検出条件を例に説明している。すなわち、一つは前処理したものから設定条件に完全に一致したコード片のコードクローンの検出を行いステップS1032、もう一つは、一部が異なるコードクローン検出を行うものであるステップS1033。図6Bのコードクローン出力結果表200は、図5の表300に示した関数位置情報範囲内で、コードクローン検出の条件として、一部一致、すなわち50以上の類似度のコードクローンの検出を行った場合図3のステップStep5の、検出結果を例として示す。なお、静的解析情報取得工程と類似性検出工程の直列処理は、いずれを先に処理しても差し支えない後の実施例でも同じ。図7のコードクローン出力結果統合表400は、コードクローン検出結果と、関数の位置情報の結果を対応付けた図3のステップStep6、結果として得られた表を示したものである。表400の表記項目には、図5の表300の表記項目に、図6Bの出力結果表200の表記項目、すなわち、クローン番号欄401、コードクローンStart行欄404、コードクローンEnd行欄405、類似度欄406が追加される。クローン番号欄401には、縦列にコードクローン検出で出力したクローン番号が格納され、同じ番号のものが同じコードクローンであることを示している。各コードクローンがソースコードのどの位置に存在しているかの情報を、開始行図中では、コードクローンStart行と示すと終了行図中では、コードクローンEnd行と示すとで示し、下記のコードクローンStart行とコードクローンEnd行が格納される。コードクローンStart行欄404とコードクローンEnd行欄405は、検出されたコードクローンのStart行とEnd行がそれぞれ格納される。類似度欄406は、検出されたコードクローンのクローン番号のクローンに対する類似度が格納される。図中に入力されている値やファイル名は一例である。次に、図7のコードクローン出力結果統合表400で得られた結果を、評価する評価処理図3のStep7の一例について説明する。まず、関数の位置情報の範囲内で複数の条件で類似領域クローン片の位置情報を、検出する。検出条件の相違を反映した複数の異なる検出結果を比較参照することで、分析の目的に応じた類似度情報の効率的な選別に活用する。具体的には、タイプ1~タイプ4までの4つに分類する形態を示し、4つの分類を効率的に行う実施の形態を示す。この分類は、ソースコードの再利用の指針として想定されるものである。このような評価を行う理由としては、例えば、複数製品間のソースコードの類似性を比較することで製品の再利用可能なソースコードの共通性と可変性の候補を効率的に抽出するためである。製品の再利用可能な共通性と可変性のソースコードは、開発資産となり、この開発資産のソースコードを再利用することによって、生産性を向上させることが狙いである。また、検証済みの開発資産であるソースコードを再利用することで、品質の向上にもつながる。タイプ1:関数のインターフェースが同一で、ソースコードの中身が一致する。タイプ2:関数のインターフェースが同一で、ソースコードの一部が異なる。タイプ3:関数のインターフェースは異なるが、ソースコードの中身が一致する。タイプ4:関数のインターフェースは異なるが、ソースコードに重複がある一部が異なる。関数のインターフェースとは、変数名、引数、戻り値のことであるとここでは定義する。タイプ1は開発資産の共通部分であると評価される。タイプ2と3は開発資産の可変部分であると評価される。タイプ2と3は共通部分と可変部分が混在した関数であると評価される。タイプ4は個別に判断が必要な関数であると評価される。ここでソースコードのソースコードの中身が一致すると異なるとの区別は、本実施の形態では、ソースコードを行単位で比較し、分析対象の関数のサイズの60以上の長さが一致する場合に一致すると判定するものとし、以下説明する。そして、分析対象の関数func1とするを検出条件1と検出条件2という2通りの検出条件で類似性を検出するものとする。func1のソースコードの例を図8に示す。図8には、ファイル名AAAとBBBの2つのファイルがあり、各々のファイル内でファイルAAAはStart行が10行目から開始し、ファイルBBBはStart行が22行目から開始する。両方のファイルを比較すると1行目から5行目まで同じであり、その同じ箇所を四角で囲ってある。検出条件1の典型的な実施の形態としては、ソースコードを行単位で比較し、最低3行が連続して一致している部分のみを重複コードとして検出する。条件1による検出結果を以下、結果1と呼ぶ。検出条件2の典型的な実施の形態としては、ソースコードを行単位で比較し、前記一致に該当する場合のみ、すなわち、func1のサイズの60以上の長さの行数が連続して一致している部分のみを、重複コードとして検出する。条件2による検出結果を以下、結果2と呼ぶ。図9を使って、関数位置情報追加の処理フローを詳細に説明する。まず、処理1001で、結果1表700と関数の情報表800を比較する。具体的にはクローン片のStart行と関数のStart行との比較を行なう。次に、条件判定処理1002で、不一致かを調べ、この条件が成立するときは、処理1003以下の一連の処理を行なう。まず、処理1003で、タイプ3かタイプ4に分類される。図8のソースコードで説明すると、図8の二つのファイルはStart行から3行目までに関数定義の情報が書かれている。処理1002で不一致であるということは、関数のStart行から3行目までに記載されている関数定義の情報関数のインターフェースが同一でないことを意味するためである。次に、処理1005で、結果2と関数の情報表800を比較する。具体的にはクローン片のStart行と関数のStart行の比較を行なう。最後に、条件判定処理1006で、一致かを調べ、この条件が成立するときは、処理1007で、タイプ1であるとして分類を特定できる。判定処理1006で条件が成立しないときには、処理1008で、タイプ2であるとして分類を特定できる本実施の形態のようにクローン片自体が存在しない場合も条件判定処理1006で不一致と判断し処理1008を行う。図8の二つのソースコードは、処理1001により、関数定義の情報が一致しているので処理1005に進む。重複コードとして検出する条件は、func1のサイズの60以上の長さの行数が連続して一致している部分のみを、重複コードとして検出するので、設定した6行を満たさないため、クローン片は検出されない。よって処理1006では、関数とクローン片が不一致となり、処理1008以下の一連の処理を行なう。図8の二つのソースコードはタイプ2に分類される。図10は、func1の類似性情報を検出条件1で検出した結果結果1700を示す表である。一方、func1の類似性情報を検出条件2で検出されるクローン片は存在しない。クローン片の行数が最大5行であり、閾値として設定した最短6行を満たさないためである。図11は、クローン解析対象の関数情報表800のデータ構造を概念的に示した図である。図12は、関数とコードクローン統合情報の出力結果を診断出力結果ユーザに対して簡便に判断できる情報を提供するための可視化図である。図12では、コードクローンと関数のStart行が同一であり、関数内のコードクローンが関数のソースコードと同一であるという結果を四角の枠で表示した、可視化図1051の一例を示している。図12の縦軸は、コードクローンと関数のStart行が同一であるかで判断し、上側をコードクローンと関数のStart行が同一である場合図9の処理1002でYESを示し、下側をコードクローンと関数のStart行が同一でない場合を示す図9の処理1002でNO。また、横軸は関数内のコードクローンが関数のソースコードと同一であるかを判断し、右側を関数内のコードクローンが関数のソースコードと同一であることを示し図9の処理1006でYES、左側は関数内のコードクローンが関数のソースコードと同一でないことを示す図9の処理1006でNO。図12の可視化図1051によれば、ユーザは、選択した二つのソースコードの類似関係にある各コードクローンが、タイプ1~4のいずれに属するかを、一目で把握することができる。このように、本実施例によれば、ソフトウェアの類似性に関して必要な情報を探しやすくし、分析者の労力を軽減し、分析に要する時間を短縮できる。また、類似度、関数位置情報など複数の解析情報をマージしたコードクローン情報をユーザに図や表として可視化し提供することは、ユーザが精査ポイントを、効率的かつ実証的に把握し、あるいは容易にフォーカスできるようになる。これにより、各ユーザは、ソフトウェアの開発に関して、効率的に正確な改善指針を共有できるようになる。次に,本発明における第二の実施の形態を、図13乃至図20を参照しながら説明する。この実施例では、ソースコードの類似性に関する情報と対応づける照合させる静的解析情報が複雑度の情報であり、かつ、これらを並列に処理する場合の一実施の形態について、説明する。ここで、複雑度とは、ソースコードのモジュール内の分岐の数やループの数など、ソースコードが実現する処理の複雑さに関係する要素が含まれる度合いを示す指標である。この実施例では、特に,類似性を有するコード片類似コード片のペアの所在分散の仕方等と各ペアの複雑度とを対応づけて、以下に述べるタイプA~タイプDに分類する形の評価を行い、その結果をソースコードの解析情報として出力する形態で示す。タイプAとは、複雑度が大きく、類似性を有するペアの所在の分散が大きいものであり、タイプAで講ずると想定される施策はソースコードのリファクタリングなどの対策が優先度1として必須なものである。タイプBとは、複雑度が小さく、類似性を有するペアの所在の分散が小さいものであり、タイプBで講ずると想定される施策はソースコードのリファクタリングなどの対策が優先度3として分類され、緊急度は高くない。タイプC、タイプDはソースコードのリファクタリングなどの対策が優先度2としてどちらも分類される。タイプCは、複雑度が小さく、類似性を有するペアの所在の分散が大きいものである。タイプDは、複雑度が大きく、類似性を有するペアの所在の分散が小さいものである。このような評価を行う理由としては、タイプごとに分析者が講じる施策やその優先度が異なることが想定されるからである。たとえば,複雑度が大きくかつ類似コード片の所在の分散が大きい場合、もっとも注意を喚起する必要があると考えられる。一般に複雑度が大きいと品質確保等の面でリスクが高く望ましくないとされている。複雑度は10以下であれば良い構造とされ、30を超えるとモジュール構造に問題があると考えられ、複雑度が小さくなるようにソースコードを修正する必要がある。一方、類似性コード片のペアの所在の分散が大きい事例として類似性コード片ペアがアーキテクチャの階層定義をまたがって存在する場合を想定するならば,このような状況は一般に望ましくない。よって双方の性質を兼ね備える類似コード片ペアの存在次に示すタイプAに相当するは優先的に注意を喚起するための施策を講じるべきと想定される。図13は、第二の実施の形態の全体の処理の流れ、すなわち、類似性検出にコードクローン検出を選択し、これと静的解析の処理を並列に実施する場合、を示したフローチャートである。まず、最初に、ユーザにより、ソースコード分析手段に対するソフトウェアの類似性評価のために必要な、類似性と類似性以外の2種類の分析条件の設定がなされるステップStep1。ソースコード分析手段では、ユーザにより選定された少なくとも2つのプログラム関数及びファイルなどを文字コード変換など前処理ステップStep2し、図14の選択画面1050のモード選択欄410でモード選択することでステップStep102、コードクローン検出ステップStep103、Step104と静的解析ステップStep105、Step106とを並列に実施することが可能である。すなわち、コードクローン検出と静的解析を並列で行う場合には、例えば、図14のモード選択欄410の類似性検出法411でコードクローンの行単位検出を設定する。さらに、類似度412に関して、必要な条件を入力または選択押下し、チェック印を入れる。さらに、静的解析条件413の欄の静的解析として外部ツールを利用の前のボックスを必要に応じて押下しチェック印を入れ、ツールのパス名を選択する。また、処理方式420の欄で並列処理を選択する。これは、静的解析の一実施の形態を説明したものである。次に、この並列の処理フローで得られたコードクローン結果と静的解析の結果である複雑度の情報とが、対応付けられる図13のステップStep107。図13では、静的解析に複雑度の解析を行った場合を示している。ステップStep107で対応付け統合した結果を、ユーザの目的に応じて複雑度の情報とコードクローンの類似性の評価をするステップStep108。評価した結果を可視化した結果とし出力するステップStep109。なお、コードクローン検出の処理ステップStep103、Step104では、ユーザが選択した少なくとも2つのプログラム関数及びファイルなどについて文字コード変換など前処理ステップStep2したソースコードについて、ユーザにより指定された条件で、コードクローン検出を行う。図15は、コードクローン検出の処理により得られた、コードクローンの類似度の解析結果表250のデータ構造を、概念的に示した例である。解析結果表250は、ファイルパス名欄251と類似度欄250とで構成されている。また、図16に示す複雑度出力結果表500は、図17の処理フローを用いて実現される。以下、図16、図17を説明する。図16は、静的解析情報取得工程に相当するものである。図16の複雑度出力結果表500は、図13のStep105、106の複雑度の解析出力結果の一例を示したものである。複雑度出力結果表500は、ファイルパス名欄501と、複雑度欄502とを備える。各行に一つのファイル情報が格納される。ファイルパス名欄501は、縦列にファイルの格納先とファイル名を示したパス名で格納される。複雑度欄502は、図13のStep2で前処理されたファイルあるいは個々のコードクローンを含む関数、あるいはコードクローン領域ごとの複雑度の測定結果複雑度のスコアが格納されるものである。なお、図中に入力されている値やファイルパス名は一例である。図17は、コードクローン出力結果にコードクローン複雑度出力結果を統合する流れ図13のStep107を、詳細に示したフローチャートである。図17は、領域照合工程に相当するものである。まず、検出したコードクローン出力結果と複雑度出力結果の情報がソースコード分析手段に入力されるステップS201。次に、ソースコード分析手段において、コードクローン検出出力結果の1行目のクローンの位置情報と複雑度出力結果の1行目の複雑度測定対象の位置情報を比較する。複雑度測定対象の位置情報としては、複雑度をファイル単位で測定した場合にはファイルパス名、関数単位で測定した場合には、関数名やファイルのなかでの位置情報行番号情報等が適当であると考えられる。以下、これがファイルパス名であるものとして説明する。すなわち、コードクローン出力結果の1行目のファイルパス名と複雑度出力結果の1行目のファイルパス名を比較するステップS204。比較したファイルパス名が同じかどうか確認しステップS205、ファイルパス名が同じである場合、コードクローン出力結果の右端の列に同じファイルパス名の複雑度を追加するステップS206。コードクローンの複雑度出力結果の1行目に同じファイルパス名が無い場合は、複雑度出力結果のファイルパス名を一つ下の行へ移動しステップS210、同じファイルパス名があるか確認しステップS211、同じファイルパス名があるところの複雑度をコードクローン出力結果の右端に追加するステップS212。次に、コードクローン出力結果のファイルパス名を一つ下の行に移動するステップS207。同様にステップS205、ステップS206、ステップS210ステップS211、ステップS212繰り返し行い、コードクローン出力結果のファイルパス名を全部確認するステップS208。最後にコードクローン出力結果に複雑度を追加した結果を出力するステップS209。この出力が,図18の静的解析出力結果とファイル間の類似度結果を統合した表600に相当する。次に、図18の静的解析出力結果とファイル間の類似度結果を統合した表600をもとに、図13のStep108をタイプ別に評価する方法を説明する。図19は、図18の出力した結果をユーザに可視化し簡便に判断できる情報として提供するためのフローチャートである。図19は、評価結果表示工程に相当するものである。図19において、まず、図18で出力した表600を入力しステップS701、入力ファイルの複雑度情報を確認するステップS702。クローンの複雑度情報が大きい場合ステップS703、図20の可視化図の右半分全部を囲みステップS704、さらにクローンの広がり度の値が大きい場合にはステップS705、図20の可視化図の右上の部分を囲み直し、優先度1として分類するステップS706。図20のソースコードをリファクタリングや共通化するなどの優先度として優先度1共通化候補の囲まれた部分を結果として出力するステップS707。これをタイプAと分類する。またクローンの複雑度情報が小さい場合は、図20の可視化図の左半分全部を囲みステップS709、クローンの広がり度の値が大きければステップS710、図20の可視化図の左上の部分を囲み直し、優先度2とするステップS711。これをタイプCと分類する。図20の優先度2の可視化図の囲まれた部分を結果として出力するステップS707。コードクローンの複雑度が小さい場合は、図20の可視化図の左半分を囲みステップS709、コードクローンの広がり度が小さい時、図20の可視化図の左下部分を囲み直し、優先度3とするステップS712。これをタイプBと分類する。図20の優先度3の可視化図の囲まれた部分を結果として出力するステップS707。図20は、図19のフローチャートから得られた出力結果を、ユーザに対して簡便に判断できる情報として提供するための可視化図1052である。ここでは例として、横軸をコードクローンの複雑度の大きさで示し、縦軸をコードクローンの広がりの大きさで示している。コードクローンの広がりとは、コードクローンがサブシステム階層を超えて存在する場合、コードクローンの広がりが大きい。またサブシステム階層内にコードクローンが存在する場合は、コードクローンの広がりは小さい。例えばコードクローンの広がりが大きく、コードクローンの複雑度が大きい場合は、図20の右上の場所になり、ソースコード改善箇所として優先度が1番目であり、ソースコードの共通化の候補になるコードクローンであるという情報をユーザに提供できる。図18の出力表600は、ファイル間の類似性を示しており、この場合を図20の可視化図に対応させた場合、縦軸のコードクローンの広がりは、類似度が同じファイル同士の広がりとして評価できる。例えば、同じ類似度のファイル間で、リファクタリングの優先順位づけをつけることができる。図18の出力表600の中で類似度が70のファイル群は3つ存在し、このファイル群のファイルパス名を見ると同階層以外に存在するファイルパス名cdatatesttest5がある。このファイルは、類似度が70のファイル同士中で位置関係に広がりが見られ、しかも複雑度も高い。よって、図18のファイルパス名cdatatesttest5は、タイプAに分類され、ソースコードのリファクタリングやソースコードの共通化などの、対策処理の優先度が同じ類似度のファイル間で最も高いもの優先度1であると評価できる。なお、ソースコードの類似性に関する情報と対応づける類似性以外の解析情報を複数にすることもできる。例えば、ソースコードの静的解析情報に加えて、さらに、ソースコードの属性情報、例えば、ソースコードの作成者や、作成日等のソースコードに関係した解析情報を含めても良い。この場合、設定画面1050の選択ファイルの格納パス401の参照ボタンをユーザが押下し、プルダウンメニューからソースコードの記述内容以外の属性情報、例えばソースコードの作成者を選択することで、ソースコードの類似性に関する情報と対応づける解析情報として、複雑度ソースコードの作成者の2つの解析条件を設定することもできる。これによって、例えば、図20の可視化図1052を、さらに、ソースコードの作成者単位で作成したものを、表示することもできる。このように、本実施例によれば、ソフトウェアの類似性とこの類似性に関する情報と対応づける類似性以外の解析情報とに関して必要な情報を探しやすくし、分析者の労力を軽減し、分析に要する時間を短縮できる。また、類似度、複雑度など複数の解析情報をマージしたコードクローン情報をユーザに図や表として可視化し提供することは、ユーザが精査ポイントを、効率的かつ実証的に把握し、あるいは容易にフォーカスできるようになる。これにより、各ユーザは、ソフトウェアの開発に関して、効率的に正確な改善指針を共有できるようになる。次に、本発明の第三の実施の形態を、図21から図25を参照しながら説明する。本発明において、ソースコードの類似性に関する情報と対応づける類似性以外の解析情報を、複数にできることは、既に述べたとおりである。この場合、類似性以外の解析情報には、ソースコードの静的解析情報に加えて、さらに、ソースコードの記述以外のソースコードに関する属性情報、例えば、ソースコードのハードウェアへの依存性、OSオペーレーティングシステムへの依存性等の、ソースコードに関係した解析情報を含めても良い。ここでは、類似性以外の解析情報として、ハードウェアへの依存性の解析条件を加えた実施例について述べる。実施例3のソフトウェアの類似性評価方法は、実施例1や実施例2と同様に処理して出力されたコードクローンの位置情報や、類似度、静的解析で得られた複雑度、関数位置情報などの結果を利用し、さらに、それらの結果に、ソースコードに関係する属性情報として、特定のハードウェアに依存性があるかどうかの情報を追加し、総合的に評価した出力結果を提供するものである。本実施の形態において、ソースコードに関するハードウェアへの依存性とは、あるハードウェアAとハードウェアBに依存性がない場合ハードウェアに非依存、ハードウェアAとBの両方に同じソフトウェアが利用できる性質を意味する。あるいは、あるハードウェアAとハードウェアBに依存性が有る場合ハードウェアに依存有り、同じソフトウェアが利用できない性質を意味する。ハードウェア依存性を有する場合には、ハードウェアAあるいはBのどちらかだけであるソフトウェアが利用できる。ここで、ソフトウェアが複数のソースコードで構成される状況を想定すると、ソフトウェアの移植の際に、特定のハードウェアに非依存なソースコードは、改造不要なソースコードに相当する本実施の形態では、ある特定のハードウェア環境で動作するソフトウェアを別のハードウェア環境で動作するように改造する作業をソフトウェアの移植と称する。個々のソースコードが特定のハードウェアに依存か非依存かは、ソースコード作成完了段階で作成者等は一般に識別しており、移植性を高め保守容易にする目的で、双方を分離してソースコードをファイル化し、さらには格納フォルダを分けて配置する施策がしばしば講ぜられる。移植の際に、改造不要なソースコードと改造が必要なソースコードが、識別容易になり、移植作業を正確かつ速く行いやすくなるためである。しかし、ハードウェア依存性があると作業者等が識別したソースコードにも、作業ミス等の理由で、部分的にハードウェアに非依存のコード断片が誤混入した状態が起こりえる。その可能性を有するのは、たとえば、ハードウェア非依存と称するファイルとハードウェア依存有りと称するファイルとの間でクローンが存在する場合である。ハードウェア依存と称するファイルに含まれるクローンに、ハードウェア依存性が実は存在しない、すなわち、クローンに該当するコード断片が正しくはハードウェア非依存であった可能性がある。このような場合には、クローンに相当するコード断片をハードウェア依存有りと称するファイルから分離して、ハード非依存のファイル等に移動して、正しく配置しなおす修正が望まれる。本実施の形態は、上述のようなコード断片の誤混入の検出を支援する用途を想定するものである。図21は、実施例3に係わる類似性評価システムにおける、ソースコード分析手段の機能ブロックを示す図である。基本的な構成は、図1Bのソースコード分析手段と同じである。外部記憶装置部102のソースコード格納部3Aには、類似性検出を行うソースコードなど、分析に必要なソースコードが、ハードウェア依存のファイル、ハード非依存のファイルとして個別に格納されている。主記憶装置部101の分析条件設定部40では、ソースコードの類似性検出を第一の条件類似性検出部50で実行する際の解析で必要な、複数のソースプログラムの間の類似性に関する第1の設定条件を選定し、第二の条件類似性以外解析部60でソースプログラムの前記類似性以外の記述の解析に関する第2の設定条件を選定する。図22は、第三の実施形態の全体の処理の流れを示したフローチャートである。全体としては、図3に示した実施例1のフローチャートと同じである。最初に、ユーザにより、ソースコード分析手段に対するソフトウェアの類似性評価のために必要な分析条件の設定がなされる。ここでは、ハードウェアへの依存性の解析条件も設定される。ステップStep10。図23は、ソースコード格納部3A等に保持された各ファイルパス名に対して、特定のハードウェアに依存性があるか無いかの情報の一例を示した、ハードウェア依存の情報を示す表1000である。以下、実施例1と同様に、ステップStep2~6の処理がなされる。その後、ステップStep6で得られた出力結果から必要な解析結果を利用し、さらにハードウェアの依存情報をStep6で検出されたコードクローンに対応付けるステップStep11。さらに、検出コードクローン情報と関数の位置情報、及びハードウェアの依存情報の統合結果の評価を行いステップStep12、その結果を可視化した図を出力表示するステップStep8。図24は、コードクローン位置情報および複雑度などの静的解析情報に、ハードウェアの依存性を統合したハードウェア依存性統合表1100を示す。ここでは、各ファイルパス名が、クローン番号1,2,3,-の順にリストアップされている。また、同じクローン番号を有する複数のファイルパス名は、枝番号で区別されている。図25は、ハードウェア依存性統合表1100を評価した結果を、可視化的に示した結果である。本評価は、図24の類似度50以上のコードクローンを対象とし、縦軸に複雑度の大小を示し、横軸はハードウェアの依存性の有無を示し、クローン番号がどこの座標に分布されるか示している。図24のハードウェア依存性統合表1100で示されている各クローン番号に対する全クローンについても表示されている。図25で、特定のハードウェアに依存ありとは、同一のクローン番号のコード断片が、特定のハードウェアに依存すると称するファイルに1つでも存在する状態をさし示すものとする。このような状態は、一例として、ハードウェア依存性があると判定したソースコードに、作業ミス等の理由で、部分的にハードウェアに非依存のコードが混入したこと想定しうる状態である。この状況を検出した作業者等は、優先的にこのクローンの内容を確認し、その結果、実際にハード非依存であることが認定されれば、然るべきファイルやフォルダに当該コード断片を移動する。図24を参照することによって、クローン番号3の2つのクローン3-1,3-2は、これに特定のハードウェアに依存あり該当することが確認できるので、図25において特定のハードウェアに依存ありに相当する左上の象限にマッピングされている。本評価では、図24より、クローン番号11-1~1-3は複雑度が高く、ある特定のハードウェアAに非依存である。そのため、クローン番号1の3つのクローンは図25の右上に分布される。クローン番号2の1つのクローン2-1は、複雑度が高いクローンに分布され、特定のハードウェアAに非依存であるので、図25の右上に分布される。クローン番号2の残りの1つのクローン2-2は、複雑度が低いクローンに分布され、特定のハードウェアAに非依存であるので、図25の右下に分布される。クローン番号3の2つのクローン3-1,3-2は、いずれも複雑度が高く、特定のハードウェアAに依存があるので図25の左上に分布される。なお、ここでは、コードクローンが50以上の類似度情報の結果を例として出力しているが、類似度が70以上、あるいは類似度が80以上などのように図25の出力情報を、類似度毎に複数の選択可能な画面で出力することが可能である。あるいはまた、依存性及び複雑度に、類似度も含めた情報を、X,Y,Zの3軸に展開し、1つの画面で表示するようにしても良い。分析者は、これらの画面から、正確な改善指針をえることができる。例えば、クローン番号3のクローン群のように特定のハードウェアに依存性が有るコード断片を含む場合には、コードクローン部分を抽出して、移植の際に改造不要なソースコードとして特定のフォルダ等に集中的に格納しておくよう修正する。これにより移植性を高めることができる。さらに、同程度の複雑度を有するクローン番号2のクローン群よりも修正を優先的に行うといった作業の優先順位づけの指針を得ることができる。このことは、複雑度と類似度だけを優先順位づけの指針に用いる第二の実施の形態の様態に加えて、新たに第三の尺度を加えた情報提示を行うことで新たな作業指針を導く効果の発現を意味するものである。なお、静的解析情報取得工程と類似性検出工程の直列処理に代えて、これらを実施例2のように並列処理し、それらの処理で得られた出力結果から必要な解析結果を利用し、さらにハードウェアの依存情報を対応付け、出力した結果を評価し、可視化した図を出力表示するようにしても良い。このように、本実施例によれば、ソフトウェアの類似性と、この類似性に関する情報と対応づける複数の類似性以外の情報とに関して必要な情報を探しやすくし、分析者の労力を軽減し、分析に要する時間を短縮できる。また、類似度、複雑度、ハードウェアの依存情報など複数の解析情報をマージしたコードクローン情報をユーザに図や表として可視化し提供することは、ユーザが精査ポイントを、効率的かつ実証的に把握し、あるいは容易にフォーカスできるようになる。これにより、各ユーザは、ソフトウェアの開発に関して、効率的に正確な改善指針を共有できるようになる。"