(57)【要約】【課題】  開発者にソースコードの共通化を確実に実施させる。ソースコードの共通化の標準的かつ具体的な技法を開発者に提示する。開発者が実施した共通化の結果を評価して最善の実施結果を開発者に通知する。【解決手段】  開発中のソフトウェアのソースコードを管理するリポジトリと、共通化されたソースコードだけを前記リポジトリに登録するソースコード登録手段と、ソースコードに対する共通化実施方法を提示する共通化実施方法提示手段と、ソースコード中に含まれるコードクローンを検出して、当該ソースコードが共通化されているか否かの判定するためのコードクローン検出手段と、ユーザが共通化を実施したソースコードを、メトリクスから算出したソースコードの改善率を用いて評価し、最善の共通化実施結果を選出する共通化実施結果評価手段とを有する。【選択図】    図１
2009086814.tif 000002
【特許請求の範囲】
【請求項１】
イントラネット上に置かれた管理サーバと、複数のクライアントから構成されるソースコード管理システムであって、
前記管理サーバは、
開発中のソフトウェアのソースコードを格納するリポジトリと、
クライアントからソースコードの登録要求を受け付けて、そのソースコードが共通化されているか否かを判定し、共通化がされている場合のみソースコードを該リポジトリに格納するソースコード登録手段と、
共通化がされていない場合には、クライアントに対し適切な共通化実施方法を提示する共通化実施方法提示手段と
を有し、
前記クライアントは、
前記管理サーバの共通化実施方法提示手段から提示された共通化実施方法を受信して、操作者に示す表示手段と、
該表示手段に表示された内容を操作者が見て、それに基づいて前記ソースコードの共通化を実施し、再度前記管理サーバに登録要求を送信する送信手段と
を有するソースコード管理システム。
【請求項２】
請求項１に記載したソースコード管理システムであって、
前記管理サーバは、
クライアントから受け取ったソースコード中に含まれるコードクローンを検出するコードクローン検出手段を
さらに有し、
前記ソースコード登録手段は、該コードクローン検出手段によるコードクローン検出結果に基づいて、ソースコードの共通化がされているか否かを判定することを特徴とするソースコード管理システム。
【請求項３】
請求項１又は２のいずれか一に記載したソースコード管理システムであって、
前記管理サーバは、
クライアントの操作者が実施した共通化の実施結果を評価する共通化実施結果評価手段を備えることを特徴とするソースコード管理システム。
【請求項４】
請求項３に記載したソースコード管理システムであって、
該共通化実施結果評価手段は、
共通化を実施したソースコードのメトリクスを用いてソースコードの改善率を算出し、その算出した改善率を用いて最善の共通化実施結果を選出する
ことを特徴とするソースコード管理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、開発中のソフトウェアのソースコードを管理するソースコード管理システムに関し、特に、ソースコードの共通化実施状況により登録の可否を決定する機能、およびソースコードに対する共通化実施方法をユーザに提示する機能を持つソースコード管理システムに関する。
【背景技術】
【０００２】
ソフトウェアの開発を行うプロジェクトにおいて、作成済みのソースコードは、専用のリポジトリに格納して構成管理を行うのが一般的である。ソースコードの構成管理リポジトリを構築するシステムの例としては、CVS(Concurrent Versions System)やSubversionが知られている。
【０００３】
また、作成済みのソースコードの品質を定量的に評価するために、メトリクスが用いられることがある。メトリクスの代表的な例としては、LOC（Lines Of Code：行数）、CC（Cyclomatic Complexity：サイクロマティック複雑度）、LCOM（Lack of Cohesion Of Methods：クラスの凝集度の欠如度合い）などがある。メトリクスは、対象となるソースコードをツールで解析することによって容易に値を測定できる。メトリクス測定機能を持つツールには、Together（ボーランド社の登録商標）やEclipse Metrics Pluginなどがある。
【０００４】
また、ソフトウェア開発においては、同じような機能が重複開発されることを防ぐために、設計工程にて共通化のプロセスを設けることが望ましい。共通化のプロセスにて、複数箇所で重複すると予想される機能を前もって洗い出し、それらを共通機能として整理しておくことで、実装工程での共通機能の重複開発を防止できる。共通化されたソフトウェアは、そのソースコード内に無駄な重複が存在しないため、変更が必要になった時でも最小限の変更で済む上、さらには共通的な機能が整理されるのでそれらを部品化して以後の再利用に生かしやすい、といった利点がある。
【０００５】
ところが、開発者によるソースコードのコピー＆ペーストの乱発によって、結果的に共通化が不十分なソースコードが出来上がってしまうことがある。ソースコード中の、全く同一もしくは類似したコード断片のことを「コードクローン」と呼ぶが、共通化が不十分なソースコード中には、コードクローンが至る所に見られる。数多くのコードクローンが存在することにより、ソースコードが必要以上に肥大化するばかりでなく、ソースコードの再利用性や保守性が著しく損なわれるという問題が生じる。
【０００６】
しかし、コードクローンを多数含むソースコードであっても、コードクローンを検出して適切な修正を施し、コードクローンを排除・整理することによって、共通化を図ることが可能である。コードクローンを容易に検出するための技術として、特許文献１では、ソースコード中から意味のある同形パターンを検出するシステムが開示されている。
【０００７】
以下、特許文献２から特許文献５までにおいて、近時におけるソースコード管理システムの提案の代表的なものを挙げる。
特許文献２には、動作不良が発生する機能や仕様漏れなどがあった状態で機能を作成した場合、プロトタイプ生成部がそれに代わる仮想の機能を生成するプログラム開発支援システムが開示されている。複数人でソフトウェア開発をする上で課題となるソースコードの管理や機能修正によるソースコードの大幅な変更、仕様の不明確な個所について仮実装が可能となるものである。
【０００８】
特許文献３に開示されている構成管理装置は、指定部により開発環境が指定された場合、抽出部により構成管理ＤＢから開発環境を抽出し出力する。取得部により開発成果物が取得された場合、検証コード生成部によりコンパイラを含む指定された開発環境の下で、開発成果物に含まれているソースコードを再コンパイルする。これにより、再コンパイル結果が生成される。そして、再コンパイル結果及び指定された開発環境中のファイルを用いて、開発環境の照合用検証コードを生成する。開発環境検証コード判定部により、開発環境の照合用検証コードと、開発成果物に含まれている開発環境検証コードとが一致するか否かを判定する。
【０００９】
特許文献４に開示されている進捗管理サーバは、管理者用端末から、プログラムについて、開発が完了するまでの残作業工数の送信要求を受け付け、送信要求されたプログラムのソースコードを評価することにより、当該ソースコードに含まれる問題点をチェックする。そして、進捗管理サーバは、チェックしたソースコードの問題点の修正に要する予測修正工数を、修正工数テーブルを参照して算出し、送信要求されたプログラムのソースコードごとに、予測基準工数と予測修正工数とを加算するとともに、加算したソースコードごとの工数を集計した結果を、前記送信要求されたプログラムの残作業工数として管理者用端末に出力する。
【００１０】
特許文献５に開示されているプログラムの設計管理システムは、プログラム設計に必要な実体ファイルを蓄積するファイルサーバと、このファイルサーバに接続された複数の設計端末とを備えている。ファイルサーバは、当該プログラムに関連する全ての実体ファイルの構成情報を格納したメタデータを格納するリポジトリを有し、設計端末はリポジトリからメタデータを読み込んでメタデータに設計作業を加え、メタデータを通じて設計作業により変更を加えるべき実体データで他の設計段階を担当する設計端末において利用されるべき実体データも含め、設計作業により変更を加えるべき単数の又は複数の実体ファイルに設計作業の内容を反映させる。
【特許文献１】特開２００３−０２９９７８号公報
【特許文献２】特開２００７−２１３２０３号公報
【特許文献３】特開２００６−３５０８４０号公報
【特許文献４】特開２００６−１２７０２０号公報
【特許文献５】特開２００６−７９２１２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
ところで、ソースコードの共通化は、将来の変更や再利用への対応を容易にすることで、ソフトウェアの長期的な改修・保守コストの削減効果がある一方、ソフトウェアの外部仕様には特に影響を及ぼさない。共通化を実施しなかったとしても、要求通りの外部仕様を満たすソフトウェアを作り上げることは可能である。よって、ソフトウェア開発の現場では、共通化というプロセスが省略されてしまうケースが多く、その結果、長期的な改修・保守コストが増大しているという問題がある。
【００１２】
また、作成済みのソースコードの共通化を実施する際には、ソースコードを修正してコードクローンを整理していく作業を各開発者が実施することとなる。しかし、開発者が共通化に精通していないと、共通化の具体的な技法が分からないため、作業に手間取るなどして予定を上回る作業工数を費やしてしまうことがある。また、開発者が共通化の標準的な技法に従わなかった場合、ソースコードの修正中に新たなバグを作り込んでトラブルを招く恐れが高くなる。
【００１３】
また、ソースコードの共通化の技法は、コードクローンの規模や形態等によって適用可能なものが異なるが、一般に複数の技法が適用可能である。開発者は、いくつかの実施方法を試した結果の中から、最終的にどれを採用するかを選択しなくてはならない。しかし、共通化に精通していない開発者が自力で最善の実施結果を選択するのは困難である。
【００１４】
本発明の目的は、共通化が不十分なソースコードの登録を拒絶することによって開発者にソースコードの共通化を確実に実施させることができ、かつ、ソースコードの共通化の標準的かつ具体的な技法を開発者に提示でき、かつ、開発者が実施した共通化の結果を評価することで、最善の実施結果を開発者に通知できるソースコード管理システムを提供することにある。
【課題を解決するための手段】
【００１５】
上記課題を解決するために、本発明のソースコード管理システムは、開発中のソフトウェアのソースコードを管理するリポジトリと、共通化されたソースコードだけを前記リポジトリに登録するソースコード登録手段と、ソースコードに対する共通化実施方法を提示する共通化実施方法提示手段と、ソースコード中に含まれるコードクローンを検出して、当該ソースコードが共通化されているか否かの判定するためのコードクローン検出手段と、ユーザが共通化を実施したソースコードを、メトリクスから算出した改善率を用いて評価し、最善の共通化実施結果を選出する共通化実施結果評価手段とを設けたものである。
【００１６】
請求項１に記載するソースコード管理システムは、イントラネット上に置かれた管理サーバと、複数のクライアントから構成されるソースコード管理システムであって、前記管理サーバは、開発中のソフトウェアのソースコードを格納するリポジトリと、クライアントからソースコードの登録要求を受け付けて、そのソースコードが共通化されているか否かを判定し、共通化がされている場合のみソースコードを該リポジトリに格納するソースコード登録手段と、共通化がされていない場合には、クライアントに対し適切な共通化実施方法を提示する共通化実施方法提示手段とを有し、前記クライアントは、前記管理サーバの共通化実施方法提示手段から提示された共通化実施方法を受信して、操作者に示す表示手段と、該表示手段に表示された内容を操作者が見て、それに基づいて前記ソースコードの共通化を実施し、再度前記管理サーバに登録要求を送信する送信手段とを有する。
【００１７】
請求項２に記載のソースコード管理システムは、請求項１に記載したソースコード管理システムであって、前記管理サーバは、クライアントから受け取ったソースコード中に含まれるコードクローンを検出するコードクローン検出手段をさらに有し、前記ソースコード登録手段は、該コードクローン検出手段によるコードクローン検出結果に基づいて、ソースコードの共通化がされているか否かを判定するものである。
【００１８】
請求項３に記載したソースコード管理システムは、請求項１又は２のいずれか一に記載したソースコード管理システムであって、前記管理サーバは、クライアントの操作者が実施した共通化の実施結果を評価する共通化実施結果評価手段を備える。
【００１９】
請求項４に記載したソースコード管理システムは、請求項３に記載したソースコード管理システムであって、該共通化実施結果評価手段は、共通化を実施したソースコードのメトリクスを用いてソースコードの改善率を算出し、その算出した改善率を用いて最善の共通化実施結果を選出するものである。
【発明の効果】
【００２０】
本発明に係るソースコード管理システムによれば、次のような効果がある。
（１）共通化の実施が不十分で、コードクローンを多数含んでいるソースコードについて、開発者に共通化をもれなく実施させることが可能となる。
（２）共通化に精通していない開発者であっても、自分が担当しているソースコードに対して共通化を実施するための標準的かつ具体的な技法を容易に知ることができる。また、過去の具体的な共通化の実施例も併せて参照できるため、各開発者が共通化の実施要領を確実に把握できる。よって、共通化に要する工数の短縮や、共通化実施時に混入するバグの減少といった効果がある。
（３）開発者が実施した共通化の結果をメトリクスを用いて評価し、その評価結果を開発者に通知することにより、開発者は常に最善の実施結果を選択・採用することが可能となる。
【発明を実施するための最良の形態】
【００２１】
以下、本発明の実施形態を説明する。
【００２２】
図９は、本発明に係るソースコード管理システムの動作環境を示す概念図である。イントラネット９０１上に設けられた管理サーバ９０２上に本発明に係るソースコード管理システムのうちの中心部分であるソースコード登録手段、共通化技法提示手段、コードクローン検出手段、共通化実施結果評価手段などの管理プログラムがインストールされて、端末装置（クライアントコンピュータ）９１１、９１２、９１３などからイントラネット９０１を介してサーバ９０２にアクセスし、ログインすることにより開発したソースコードの登録要求を送信する。本発明のソースコード管理システムのうち、共通化技法を開発者（端末装置の操作者）に表示する部分、管理サーバにソースコードの登録要求を送信する部分などは、クライアント側にインストールされている。
【００２３】
図１０は、端末装置９１１のハードウェア構成を示すブロック図である。ＣＰＵ１００１のバス１０００上には、ＲＡＭ（ランダムアクセスメモリ）１００２、ＲＯＭ（リードオンリメモリ）１００３、ＨＤＤ（ハードディスクドライブ）１００４、表示回路１００５、入力信号処理部１００６、ネットワーク回路部１００７が接続されている。さらに、表示回路部１００５には、表示装置１０１５が接続される。表示装置１０１５は、具体的には液晶モニタ装置、ＣＲＴ装置、プラズマディスプレイ装置などのいずれかが用いられる。そして、入力信号処理部１００６には、マウス１０１２、キーボード１０１１などの入力装置が接続される。端末装置９１１の操作者は表示装置の画面上に表示される処理内容を視認しつつ、キーボード９１１とマウス９１２とを操作して入力し、さらに端末装置９１１の処理内容が進められる。ネットワーク回路部１００７は、さらに必要な機器を介してイントラネット９０１につながる。端末装置９１１から管理サーバ９０２にアクセスするためにネットワーク接続が必要となる。
【００２４】
図１は、本発明の実施の形態の一例を示すシステム構成図である。
本発明のソースコード管理システムは、ユーザから受信したソースコードを処理するサーバ１０１、ユーザが操作する複数のクライアント端末１０２、作成済みのソースコードを登録するためのリポジトリ１０３、予め定義された共通化技法定義１０４、ユーザへの共通化実施要求を格納する共通化実施要求格納部１０５、共通化の実施例を蓄積する共通化実施例格納部１０６から構成されている。
また、サーバ１０１は、リポジトリ１０３へのソースコードの登録処理を実行するソースコード登録手段１０７、ソースコード中に含有されるコードクローンを検出するコードクローン検出手段１０８、ソースコードの共通化の実施方法をユーザに提示するための共通化実施方法提示手段１０９、ソースコードの共通化の実施結果を評価して最適な実施結果を選出する共通化実施結果評価手段１１０を備えるものとする。
【００２５】
図２は、共通化技法定義１０４の一例を示す図である。共通化技法定義とは、開発者がソースコードの共通化を実施する際に用いる標準的な技法を定めたものである。
技法名２０１は、各技法の名称である。他の技法との識別のため、異なる技法に同じ技法名を付けないこととする。適用手順２０２は、共通化技法を実際に適用する際に開発者が具体的に行う作業内容および手順を説明した文章である。制約条件２０３は、当該技法の適用対象となるコードクローンが必ず満たしていなければならない条件である。制約条件は全くない場合もあれば、複数個ある場合もある。改善率算出式２０４は、当該技法を用いて共通化を実施した際に、ソースコードの改善の度合いを示す「改善率」を算出するための、具体的な算出式の定義である。
本実施例では、改善率算出式２０４の中で、LOC(Lines Of Code：行数)、CC(Cyclomatic Complexity：サイクロマティック複雑度)、LCOM(Lack of Cohesion Of Methods：クラスの凝集度の欠如度合い)という３種類のメトリクスを用いるものとする。
【００２６】
図３は、共通化実施要求格納部１０５に格納される共通化実施要求の一例を示す図である。共通化実施要求とは、サーバ１０１がユーザに対して共通化の実施を要求中であり、当該ユーザは共通化を実施するまで本システムへのソースコードの登録が出来ない状態であることを示す情報である。
ユーザ名３０１は、共通化の実施要求の相手であるユーザを識別する名称である。ユーザ名３０１は、予め本システムを利用する各ユーザに割り振られているものとする。ファイル名３０２は、共通化実施の対象となっているソースコードを構成するファイルの名前である。修正前ソースコード３０３は、共通化の実施要求の対象となっているソースコードの内容である。
【００２７】
図４は、共通化実施例格納部１０６に格納される共通化実施例の一例を示す図である。
修正前ソースコード４０１は、共通化実施前のソースコードの内容である。修正後ソースコード４０２は、共通化実施後のソースコードの内容である。適用技法名４０３は、共通化の実施に用いられた技法の名称であり、共通化技法定義１０４にて定義されている技法のいずれか１つに対応する。改善率４０４は、共通化技法定義１０４にて定義される改善率算出式を当該実施例に適用して算出した改善率の値である。
図４の例において、修正前ソースコード４０１には、内容が重複しているコードクローン４０５が２箇所に出現している。修正後ソースコード４０２は、コードクローン４０５が１箇所に整理されるように共通化を実施した結果である。
【００２８】
図５は、ソースコード登録手段１０７による、リポジトリ１０３へのソースコードの登録手順を示すフローチャートである。
ステップ５０１では、クライアント端末１０２より、登録対象のソースコード一式と、送信者のユーザ名を受信する。ステップ５０２では、共通化実施要求格納部１０５に対して検索を実行し、当該ユーザが共通化実施要求格納部１０５に登録されているかどうか確認することにより、当該ユーザに共通化の実施を要求中かどうかを判定する。共通化の実施を要求中のユーザの場合はステップ５０３へ進む。ステップ５０３では、登録不可の通知をクライアント端末１０２に送信し、処理を終了する。共通化の実施を要求中でないユーザの場合は、ステップ５０４へ進む。
ステップ５０４では、コードクローン検出手段を起動して、コードクローンの検出を実行し、検出結果を受信する。ステップ５０５では、受信したコードクローン検出結果をもとに、コードクローン含有率を算出する。コードクローン含有率は、（登録対象ソースコードに含まれるコードクローンの総行数÷登録対象ソースコード全体の行数）という式にて算出する。ステップ５０６では、コードクローン含有率が予め設定された閾値を超えているかどうかを判定し、閾値を超える場合はステップ５０７へ、閾値を超えない場合はステップ５０９へ進む。
ステップ５０７では、登録不可の通知をクライアント端末１０２に送信する。ステップ５０８では、ステップ５０１で受信したソースコードと送信者ユーザ名、およびステップ５０４でのコードクローン検出結果を、共通化実施方法提示手段１０９に送信して、共通化実施方法提示処理を実行し、処理を終了する。
ステップ５０９では、ステップ５０１で受信したソースコードが登録可であることを示す通知をクライアント端末１０２に送信する。ステップ５１０では、リポジトリ１０３へ登録対象ソースコードを格納し、処理を終了する。
【００２９】
図６は、コードクローン検出手段１０８によるコードクローン検出の手順を示すフローチャートである。
ステップ６０１では、コードクローン検出対象のソースコード一式を受信する。ステップ６０２では、リポジトリ１０３に登録されている既存ソースコード一式を取得する。ステップ６０３では、ステップ６０１および６０２で取得したソースコード全体を解析し、検出対象ソースコード中に出現するコードクローンを全て洗い出す。最後に、ステップ６０４では、洗い出した全てのコードクローンの出現位置（開始位置および終了位置）の一覧を、検出結果として返却する。
ステップ６０３のソースコード解析処理は、前述の特許文献１にて開示されている技術で実現するものとし、具体的な実現方法の説明は省略する。
【００３０】
図７は、共通化実施方法提示手段１０９による、ユーザへの共通化実施方法の提示手順を示すフローチャートである。
ステップ７０１では、対象となるソースコード、当該ソースコードをクライアント端末１０２から送信した送信者のユーザ名、および当該ソースコードに対するコードクローン検出結果を受信する。ステップ７０２では、受信したコードクローン検出結果を精査して、コードクローンの中でサイズが最も大きいものを１つ選出する。ステップ７０３では、共通化技法定義１０４で定義されている各共通化技法の制約条件について、ステップ７０２で選出したコードクローンが当該制約条件を満たすかどうかを判定し、制約条件が満たされる共通化技法を全て選出する。ステップ７０４では、共通化実施例格納部１０６を検索し、ステップ７０３で選出した共通化技法のいずれかに該当する実施例を全て選出する。ステップ７０５では、ステップ７０３で選出した共通化技法定義の内容の一覧、およびステップ７０４で選出した共通化実施例の内容の一覧を、クライアント端末１０２に送信し、共通化の実施を要求するメッセージとともにユーザに提示する。ステップ７０６では、共通化実施要求格納部１０５に対し、当該ユーザに対応するレコードを１件登録する。このレコードには、ステップ７０１で受信したユーザ名、ステップ７０１で受信したソースコードを構成するファイルのファイル名を登録し、また、ステップ７０１で受信したソースコードの内容を、修正前ソースコードとして登録する。
ユーザは、ステップ７０５で提示された共通化技法の一覧および共通化実施例の一覧を参照することにより、自分が送信したソースコードに対する共通化の実施方法を具体的に把握することが可能となる。
【００３１】
図８は、共通化実施結果評価手段１１０による共通化実施結果の評価手順を示すフローチャートである。
ステップ８０１では、開発者が共通化技法を適用して修正したソースコードのファイル一式、適用した共通化技法の技法名、および送信者のユーザ名を、クライアント端末１０２から受信する。このとき、ユーザが複数の修正パターンを用意している場合は、全てのパターンについて修正後ソースコードおよび適用技法名をクライアントから送信させ、これを一括受信するものとする。ステップ８０２では、送信者のユーザ名をもとに、共通化実施要求格納部１０５を検索して修正前ソースコードを取得する。ステップ８０３では、ステップ８０１および８０２で取得したソースコードのメトリクスを測定し、また、適用した共通化技法に対応する改善率算出式を共通化技法定義１０４から取得し、各メトリクスの値と改善率算出式にもとづいて、ソースコードの改善率を算出する。ステップ８０３は、ステップ８０１でクライアント端末１０２から受信した各々の修正パターンについて繰り返し実施するものとする。ステップ８０４では、ステップ８０３で算出した改善率の値が最も高かった修正パターンを選出する。ステップ８０５では、選出した修正パターンをクライアントに通知する。ステップ８０６では、選出した修正パターンの内容を共通化実施例格納部１０６に登録する。そして、ステップ８０７では、送信者のユーザ名に該当する共通化要求格納部１０５のレコードを削除する。
ユーザは、ステップ８０５の通知結果を見て、どの修正パターンが当該ソースコードに対する改善率が最も高かったかを知ることができる。また、ステップ８０７において共通化実施要求格納部１０５から当該ユーザのレコードが削除されることによって、当該ユーザによるソースコードの登録処理が解禁される。ステップ８０６にて共通化実施例格納部１０６に登録された情報は、以後、共通化実施方法提示手段１０９によって使用され、必要に応じてユーザに提示されることになる。
【産業上の利用可能性】
【００３２】
開発者に共通化をもれなく実施させ、共通化に精通していない開発者にも共通化を実施するための標準的かつ具体的な技法を知らせるソースコード管理システムを提供できる。共通化に要する工数の短縮や、共通化実施時に混入するバグの減少をもたらすソースコード管理システムを提供できる。
【図面の簡単な説明】
【００３３】
【図１】本発明の一実施形態例を示すシステム構成図である。
【図２】共通化技法定義の一例を示す図である。
【図３】共通化実施要求格納部に格納される共通化実施要求の一例を示す図である。
【図４】共通化実施例格納部に格納される共通化実施例の一例を示す図である。
【図５】ソースコードの登録手順を示すフローチャートである。
【図６】コードクローン検出手順を示すフローチャートである。
【図７】共通化実施方法の提示手順を示すフローチャートである。
【図８】共通化実施結果の評価手順を示すフローチャートである。
【図９】本発明の情報漏洩防止システムの動作環境を示す概念図である。
【図１０】端末装置のハードウェア構成を示すブロック図である。
【符号の説明】
【００３４】
１０１  サーバ
１０２  クライアント
１０３  リポジトリ
１０４  共通化技法定義
１０５  共通化実施要求格納部
１０６  共通化実施例格納部
１０７  ソースコード登録手段
１０８  コードクローン検出手段
１０９  共通化技法提示手段
１１０  共通化実施結果評価手段
２０１  技法名
２０２  適用手順
２０３  制約条件
２０４  改善率算出式
３０１  ユーザ名
３０２  ファイル名
３０３，４０１  修正前ソースコード
４０２  修正後ソースコード
４０３  適用技法名
４０４  改善率
９０１  イントラネット
９０２  サーバ
９１１，９１２，９１３  端末装置
１０００  バス
１００１  ＣＰＵ
１００２  ＲＡＭ
１００３  ＲＯＭ
１００４  ＨＤＤ
１００５  表示回路部
１００６  入力信号処理部
１００７  ネットワーク回路部
１０１１  キーボード
１０１２  マウス
１０１５  表示装置
【図１】
2009086814.tif 000003
【図２】
2009086814.tif 000004
【図３】
2009086814.tif 000005
【図４】
2009086814.tif 000006
【図５】
2009086814.tif 000007
【図６】
2009086814.tif 000008
【図７】
2009086814.tif 000009
【図８】
2009086814.tif 000010
【図９】
2009086814.tif 000011
【図１０】
2009086814.tif 000012