(57)【特許請求の範囲】
【請求項１】
データ内に記述される所定の単位のドキュメントデータ毎に著者の識別情報を付与する付与手段と、
前記データに付与された著者の識別情報の割合を算出する算出手段と、
前記算出手段により算出された識別情報の割合に基づいて、前記データの著者を決定する決定手段とを有することを特徴とする著者決定装置。
【請求項２】
前記決定手段により著者が決定された前記データに記述されるドキュメントデータの評価を行う評価手段を更に有することを特徴とする請求項１に記載の著者決定装置。
【請求項３】
前記評価手段は、前記データに記述されるドキュメントデータであるソースコードのライン数、分岐数及び入れ子の数のうちの少なくとも何れか一つに基づいて、前記データの評価を行うことを特徴とする請求項２に記載の著者決定装置。
【請求項４】
前記算出手段は、フォルダ単位で、前記フォルダに含まれる各データについて前記付与手段により付与された著者の識別情報の割合を算出し、前記決定手段は、前記算出手段により算出された識別情報の割合に基づいて、前記フォルダの著者を決定することを特徴とする請求項１乃至３の何れか１項に記載の著者決定装置。
【請求項５】
前記算出手段は、フォルダ単位で、前記フォルダに含まれる各データについて前記付与手段により付与された著者の識別情報の割合を算出し、前記決定手段は、前記算出手段により算出された識別情報の割合に基づいて前記各データの著者を決定し、前記各データについて決定された著者のうち最も数が多い著者を前記フォルダの著者として決定することを特徴とする請求項１乃至３の何れか１項に記載の著者決定装置。
【請求項６】
前記決定手段により著者が決定された前記フォルダの設計上の評価を行う第２の評価手段を更に有することを特徴とする請求項４又は５に記載の著者決定装置。
【請求項７】
前記第２の評価手段は、前記フォルダに対する他のフォルダからの参照関係、前記フォルダから他のフォルダに対する参照関係、前記フォルダと他のフォルダ間の循環参照関係、及び、前記フォルダ内のデータ数のうちの少なくとも何れか一つに基づいて、前記フォルダの設計上の評価を行うことを特徴とする請求項６に記載の著者決定装置。
【請求項８】
付与手段と、算出手段と、決定手段とを有する著者決定装置の制御方法であって、
前記付与手段が、データ内に記述される所定の単位のドキュメントデータ毎に著者の識別情報を付与する付与ステップと、
前記算出手段が、前記データに付与された著者の識別情報の割合を算出する算出ステップと、
前記決定手段が、前記算出ステップにより算出された識別情報の割合に基づいて、前記データの著者を決定する決定ステップとを含むことを特徴とする著者決定装置の制御方法。
【請求項９】
コンピュータを、
データ内に記述される所定の単位のドキュメントデータ毎に著者の識別情報を付与する付与手段と、
前記データに付与された著者の識別情報の割合を算出する算出手段と、
前記算出手段により算出された識別情報の割合に基づいて、前記データの著者を決定する決定手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ドキュメントデータが記述されるデータの著者を決定するための技術に関するものである。
【背景技術】
【０００２】
近年、コンピュータシステムの開発において、大量のソースコードを多人数で記述することが行われている。そして、大量のソースコードを記述するような大規模開発を行う場合、プログラマを派遣会社等から受け入れることが一般的に行われている。
【０００３】
しかし、派遣プログラマについては、派遣会社に派遣を依頼するにあたって必要なスキルを注文するものの、必ずしも望むスキルを持っているとは限らなかった。プログラムの品質を管理する意味で、プログラマの評価を行うことが試みられているが、そもそもプログラム等のドキュメントデータの著者の評価を行うには、先ず評価するドキュメントデータの著者を特定する必要がある。
【０００４】
例えば一つのファイル内のドキュメントデータの著者が単独である場合には何ら問題はないが、ソースコード等、一つのファイル内のドキュメントを多人数で記述するような場合には当該ファイルの著者を特定することが困難な場合があるという問題があった。
【０００５】
例えば、同一ファイルを複数のメンバが編集した場合に、最後にドキュメントデータを記述した人（最終コミッタ）を著者としてしまうと、メンバの実際の貢献、即ち最も多く記述した人が著者にならないことがある。
【０００６】
リポジトリのフォルダ整理のためにファイルを移動した場合、当該ファイルを記述していないのにも関わらず、その移動を行った作業者が著者となってしまう。
【０００７】
ソースコード一行毎に著者を記録し、評価を集計して各著者の評価を行うことも考えられるが、現実的にはソースコードの評価を一行毎に行うのは困難である。
【０００８】
ソースコードの変更を行った場合の変更履歴を残すものとして、以下の技術が開示されている。特許文献１には、原始プログラムの改版履歴の作成を自動的に行うもので、編集操作や修正箇所、修正内容、修正日時等が記録されることが開示されている。
【０００９】
【特許文献１】特開平９−１２８２２７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、特許文献１に開示される発明では、修正内容については記録されるものの誰が記述したのか、誰が修正したのか等の著者に関しては考慮されていない。
【００１１】
そこで、リポジトリに記録されている著者とドキュメントデータそのものから、ファイル毎の著者を特定する手法が必要とされている。
【００１２】
本発明の目的は、著者とドキュメントデータそのものからデータの著者を特定することにある。
【課題を解決するための手段】
【００１３】
本発明の著作決定装置は、データ内に記述される所定の単位のドキュメントデータ毎に著者の識別情報を付与する付与手段と、前記データに付与された著者の識別情報の割合を算出する算出手段と、前記算出手段により算出された識別情報の割合に基づいて、前記データの著者を決定する決定手段とを有することを特徴とする。
本発明の著者決定装置の制御方法は、付与手段と、算出手段と、決定手段とを有する著者決定装置の制御方法であって、前記付与手段が、データ内に記述される所定の単位のドキュメントデータ毎に著者の識別情報を付与する付与ステップと、前記算出手段が、前記データに付与された著者の識別情報の割合を算出する算出ステップと、前記決定手段が、前記算出ステップにより算出された識別情報の割合に基づいて、前記データの著者を決定する決定ステップとを含むことを特徴とする。
本発明のプログラムは、コンピュータを、データ内に記述される所定の単位のドキュメントデータ毎に著者の識別情報を付与する付与手段と、前記データに付与された著者の識別情報の割合を算出する算出手段と、前記算出手段により算出された識別情報の割合に基づいて、前記データの著者を決定する決定手段として機能させることを特徴とする。
【発明の効果】
【００１４】
本発明においては、データ内に記述される所定の単位のドキュメントデータ毎に著者の識別情報を付与し、付与された著者の識別情報の割合に基づいて、当該データの著者を決定するように構成している。従って、本発明によれば、著者とドキュメントデータそのものからデータの著者を特定することが可能となる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明を適用した好適な実施形態を、添付図面を参照しながら詳細に説明する。
【００１６】
図１は、本発明の実施形態に係るファイル著者決定システムの機能的な構成を示す図である。図１に示すように、ファイル著者決定システムは、ファイル著者決定装置１００とファイル管理装置（リポジトリ）３００とが備えられ、互いにＬＡＮ等の通信回線を介して接続される。
【００１７】
ファイル著者決定装置１００は、その機能構成として、親ファイル判定部１０１、更新部分判定部１０２、著者ＩＤ付与部１０３、著者ＩＤ割合算出部１０４、ファイル著者決定部１０５及び評価部１０６を備える。
【００１８】
親ファイル判定部１０１は、ファイルの更新又は新規登録があった場合、当該ファイルを生成する元となった親ファイルを判定する。
【００１９】
更新部分判定部１０２は、親ファイルに記述されるソースコードと、当該親ファイルを基に生成されたファイル（子ファイル）に記述されるソースコードとの相違（更新部分）を判定する。
【００２０】
著者ＩＤ付与部１０３は、親ファイルと子ファイルとの間で相違があると判定された場合、子ファイルにおける親ファイルと相違する部分のソースコードに、後述するファイル管理装置３００における管理内容に基づいて著者のＩＤを付与する。一方、子ファイルにおける親ファイルと同一の部分のソースコードには、親ファイルの該当する部分のソースコードに付与されている著者のＩＤと同一のＩＤを付与する。なお、親ファイルが存在しない子ファイルについては、全ソースコードに対してファイル管理装置３００における管理内容に基づいて著者のＩＤを付与される。
【００２１】
著者ＩＤ割合算出部１０４は、ファイル毎に、付与された著者のＩＤの割合を算出する。ファイル著者決定部１０５は、著者ＩＤ割合算出部１０４により算出された割合のうち、最も高い割合のＩＤの著者を該当するファイルの著者として決定する。また、子ファイルにおける親ファイルと相違する部分毎に重要性を判断し、判断した重要性に対応する重み付けを著者のＩＤに対して行った上で、著者のＩＤに付された重み付けの値を集計して著者を決定してもよい。例えば、フォーマットのための空行やコメント等、ソースコードに記述された処理の実行に影響しない部分を除外或いは重み付けを軽くすること等が挙げられる。
【００２２】
評価部１０６は、所定の評価基準により各ファイルを評価し、それらの評価値をファイル著者決定部１０５によって決定された各ファイルの著者の評価値とする。
【００２３】
ファイル管理装置３００は、著者によってソースコード（ドキュメントデータ）が記述された複数のファイル自体３０２を格納するとともに、それらのファイルが新規（追加）登録又は更新登録された日時とそれを行った著者のＩＤ（著者ＩＤ）とを管理するための管理テーブル３０１が格納されている。
【００２４】
図２は、ファイル著者決定装置１００のハードウェア構成を示すブロック図である。ＣＰＵ２０１は、システムバスに接続される各デバイスやコントローラを統括的に制御する。ＲＯＭ２０３又はＨＤ２０７には、ＣＰＵ２０１の制御プログラムであるＢＩＯＳ（Basic Input/Output System）やオペレーティングシステムプログラムや、ファイル著者決定装置１００が実行する例えば図３及び図４に示す処理のプログラム等が記憶されている。
【００２５】
なお、図２の例では、ハードディスク（ＨＤ）２０７はファイル著者決定装置１００の内部に配置された構成としているが、他の実施形態としてＨＤ２０７に相当する構成がファイル著者決定装置１００の外部に配置された構成としてもよい。本実施形態に係る例えば図３及び図４に示す処理を行うためのプログラムは、フレキシブルディスク（ＦＤ）２０６やＣＤ−ＲＯＭ等、コンピュータ読み取り可能な記録媒体に記録され、それらの記録媒体から供給される構成としてもよいし、インターネット等の通信媒体を介して供給される構成としてもよい。
【００２６】
ＲＡＭ２０２は、ＣＰＵ２０１の主メモリ、ワークエリア等として機能する。ＣＰＵ２０１は、処理の実行に際して必要なプログラム等をＲＡＭ２０２にロードして、プログラムを実行することで各種動作を実現するものである。
【００２７】
ディスクコントローラ２０５は、ＨＤ２０７やＦＤ２０６等の外部メモリへのアクセスを制御する。通信ＩＦコントローラ２０４は、インターネットやＬＡＮと接続し、例えばＴＣＰ／ＩＰによって外部との通信を制御するものである。
【００２８】
ディスプレイコントローラ２０８は、ディスプレイ２０９における画像表示を制御する。
【００２９】
ＫＢ（キーボード）コントローラ２１０は、キーボード（ＫＢ）２１１からの操作入力を受け付け、ＣＰＵ２０１に対して送信する。なお、図示していないが、キーボード２１１の他に、マウス等のポインティングデバイスもユーザの操作手段として本実施形態に係るファイル著者決定装置１００に適用可能である。
【００３０】
また、図１の親ファイル判定部１０１、更新部分判定部１０２、著者ＩＤ付与部１０３、著者ＩＤ割合算出部１０４、ファイル著者決定部１０５及び評価部１０６は、例えばＨＤ２０７内に記憶され、必要に応じてＲＡＭ２０２にロードされるプログラム及びそれを実行するＣＰＵ２０１に相当する構成である。
【００３１】
なお、本実施形態においては、図１に示すように、ファイル管理装置３００をファイル著者決定装置１００の外部に設置した構成としているが、ファイル管理装置３００をファイル著者決定装置１００の内部に配置してもよい。この場合、管理テーブル３０１及びファイル群３０２は、ＨＤ２０７内に格納されることになる。
【００３２】
図３は、ファイル著者決定装置１００によって実行される、対象ファイルを生成する元となった親ファイルを決定する処理を示すフローチャートである。本処理は、ファイル管理装置３００において対象ファイルが更新登録又は新規登録され、ファイル管理装置３００からその旨の通知を受けることにより開始される処理である。
【００３３】
先ず、親ファイル判定部１０１は、ファイル管理装置３００からの上記通知を受けると、その通知に示される対象ファイルが更新登録又は新規登録されたことを検知し、当該対象ファイルをファイル管理装置３００から取得する（ステップＳ３０１）。
【００３４】
続いて、親ファイル判定部１０１は、対象ファイルに近いファイルサイズのファイルや類似したファイル名のファイル等を親ファイルの候補として決定し、ファイル管理装置３００から取得する（ステップＳ３０２）。本実施形態において、親ファイルの候補はファイル管理装置３００にて管理される全てファイルを対象にして選択しているが、他の実施形態として、対象ファイルの更新日時から一定期間過去までの更新日時のファイルや、対象ファイルの更新日時に直近の更新日時のファイルだけを対象にして親ファイルの候補を選択してもよいし、対象ファイルと拡張子が同じファイルのみを対象にして親ファイルの候補を選択してもよい。このように親ファイルの候補の選択先を制限することによって、親ファイル判定部１０１の処理負荷を低減させることができる。
【００３５】
続いて、親ファイル判定部１０１は、親ファイルの候補夫々をトークンに分解するとともに、対象ファイルをトークンに分解する（ステップＳ３０３）。ここでいうトークンとは、ファイル内のソースコードの最小比較単位であり、本実施形態では、一行をトークンとしている。
【００３６】
続いて、親ファイル判定部１０１は、対象ファイルと各親ファイルの候補とを対応するトークン毎に比較し、互いが一致しているか否かを判定する（ステップＳ３０４）。即ち、ここでは一行毎に対象ファイルと各親ファイルの候補とソースコードが一致しているか否かを判定している。
【００３７】
続いて、親ファイル判定部１０１は、親ファイルの候補群のうち最も一致したトークンが多く、且つ一致したトークン数が所定の閾値以上である親ファイルの候補を親ファイルとして決定する（ステップＳ３０５）。ここで決定された対象ファイルと親ファイル（親子関係）の対応付けは、ファイル著者決定装置１００の内部（例えば、ＨＤ２０７）において管理される。
【００３８】
図４は、ファイル著者決定装置１００によって実行される、対象ファイルの著者を決定する処理を示すフローチャートである。本処理は、ファイル管理装置３００において対象ファイルが更新登録又は新規登録され、ファイル管理装置３００からその旨の通知を受けることにより開始される処理であるが、図３に示す処理によって決定された対象ファイルと親ファイルとの対応付けも使用するため、厳密には図３に示す処理が終了した後に開始される処理である。
【００３９】
先ず、更新部分判定部１０２は、ファイル管理装置３００からの通知を受けると、その通知に示される対象ファイルが更新登録又は新規登録されたことを検知し、当該対象ファイルとその履歴ファイルとをファイル管理装置３００から取得する（ステップＳ４０１）。ここでいう履歴ファイルとは、当該対象ファイルとその親ファイル、更にその親ファイルの親ファイル、・・・というように当該対象ファイルを生成する上で直接的又は間接的に使用された全てのファイルのことをいう。履歴ファイルは、ファイル著者決定装置１００内部で管理されるファイル間の親子関係を示す対応付けを基に取得される。
【００４０】
続いて、更新部分判定部１０２は、当該対象ファイルの履歴ファイルを取得できたか否かを判定する（ステップＳ４０２）。上記親子関係を示す対応付けが存在しなければ、当該対象ファイルの履歴ファイルを取得することができず、一方、上記親子関係を示す対応付けが存在すれば履歴ファイルを取得することができる。従って、ステップＳ４０２の処理は、上記親子関係を示す対応付けが存在するか否かの処理と同義である。
【００４１】
履歴ファイルが取得できた場合、更新部分判定部１０２は、履歴ファイル内で未だ選択されていないファイルのうち最も過去のファイルを選択する（ステップＳ４０３）。この処理は、各履歴ファイルのヘッダ情報におけるファイルの更新／追加日時を参照することにより実現可能である。
【００４２】
一方、履歴ファイルを取得することができなかった場合、著者ＩＤ付与部１０３は、ステップＳ４０１において取得されたファイルは対象ファイルのみであるため、当該対象ファイルをトークンに分解し（ステップＳ４０９）、各トークンに対して著者ＩＤを付与する（ステップＳ４１０）。ここで、著者ＩＤ付与部１０３は、管理テーブル３０１を参照することにより、対象ファイルの各トークンに著者ＩＤを付与するが、管理テーブル３０１においては当該対象ファイルについては一つの著者ＩＤしか管理されておらず、当該一つの著者ＩＤを全トークンに対して付与することになる。即ち、履歴ファイルが存在しない対象ファイルは、どのファイルも元とせずに作成されたファイルであるため、一つの著者ＩＤしか付与されない。
【００４３】
続いて、更新部分判定部１０２は、ステップＳ４０３で選択されたファイルが履歴ファイル内で最も過去のファイルであるか否かを判定する（ステップＳ４０４）。
【００４４】
選択されたファイルが履歴ファイル内で最も過去のファイルである場合、著者ＩＤ付与部１０３は、上述したステップＳ４０９、Ｓ４１０を同様に当該ファイルに対して実行する。これも、当該ファイルには履歴ファイルが存在せず、どのファイルも元とせずに作成されたファイルだからである。
【００４５】
一方、選択されたファイルが履歴ファイル内で最も過去のファイルではない場合、即ち、当該ファイルに親ファイルが存在する場合、更新部分判定部１０２は、当該親ファイルとともに当該ファイルをトークンに分解する（ステップＳ４０５）。
【００４６】
続いて、更新部分判定部１０２は、当該親ファイルと当該ファイル間をトークン毎に比較し、一致しているか否かを判定する（ステップＳ４０６）。
【００４７】
著者ＩＤ付与部１０３は、当該親ファイルに対して一致していない当該ファイルのトークンに対し、管理テーブル３０１を参照して著者ＩＤを付与する（ステップＳ４０７）。ここでは、著者ＩＤ付与部１０３は、当該ファイルのファイル名及びヘッダ情報の更新／追加日時に該当する管理テーブル３０１のレコードを参照し、そのレコード内の著者ＩＤをステップＳ４０７において一致していないと判定されたトークンに対して付与する。なお、一致していると判定されたトークンに対しては当該親ファイルの該当するトークンと同一の著者ＩＤが付与されることになる。
【００４８】
続いて、著者ＩＤ付与部１０３は、ステップＳ４０３において選択されたファイルが対象ファイルであるか否かを判定する（ステップＳ４０８）。即ち、ステップＳ４０８では、著者ＩＤを付与する対象となるファイルのうちの最後のファイルである対象ファイルに対して著者ＩＤを付与したか否かを判定している。
【００４９】
選択されたファイルが対象ファイルではない場合、処理はステップＳ４０３に戻る。即ち、図４の処理においては、履歴ファイルがない最も過去のファイルから対象ファイルまでの全てに著者ＩＤを付与する処理がなされる。
【００５０】
続いて、著者ＩＤ割合算出部１０４は、対象ファイルにおける各トークンに付与された著者ＩＤの割合を求める（ステップＳ４１１）。
【００５１】
続いて、ファイル著者決定部１０５は、ステップＳ４１１で求められた著者ＩＤの割合のうち最も高い割合の著者ＩＤの著者を対象ファイルの著者として決定する（ステップＳ４１２）。なお、上述した処理においては、対象ファイルの履歴ファイルを全て取得し、最も過去のファイルから順次著者ＩＤを付与していき、最終的に対象ファイルの著者ＩＤを付与する仕組みとなっている。他の実施形態として、対象ファイルの一つ前までの関連ファイルに付与された著者ＩＤを全てファイル著者決定装置１００側で登録しておき、対象ファイルの著者を決定する際には、ファイル著者決定装置１００は対象ファイルの一つ前の親ファイルのみをファイル管理装置３００から取得し、当該親ファイルと対象ファイルとをトークン毎に比較し、共通するトークンに対しては登録している著者ＩＤを付与し、異なるトークンに対しては管理テーブル３０１に基づいて著者ＩＤを付与するように構成してもよい。このようにすることで、著者ＩＤの付与処理及び著者の決定処理の計算負荷を低減させることが可能となる。
【００５２】
図５は、上述のようにして著者が決定されたファイルに対するソースコードの評価方法を具体的に説明するための図である。
【００５３】
ファイルに対してソースコードの評価を行う際、ファイルの可読性指数を用いる。図５には、ライン数が２１、分岐数が６、入れ子の深さが４段のファイルが示されているので、図５に示すファイルの場合には、可読性指数は次の式１に示すように計算される。
【００５４】
【数１】
0004976328.tif 000002
【００５５】
ファイルに記述されるソースコードは、ライン数、分岐数及び入れ子の深さが何れも多くなると、可読性が下がる。本実施形態においては、これらの指標を考慮して上記ファイルの可読性指数をファイル毎に算出している。上記の式では、ライン数、分岐数及び入れ子の深さが多い程、可読性指数は高い値となるため、ファイルの可読性指数が低いファイル程、可読性が高く、高い評価となる。
【００５６】
本実施形態では、このようにファイルの可読性指数をファイル毎に求めることにより、各ファイルの著者を評価することが可能となる。本実施形態では、ライン数、分岐数及び入れ子の全てを評価指標としているが、これらのうちの何れか一つ又は二つを評価指標としてもよい。また、バグになりやすいコードをツール等によって検出し、検出したコードの数を評価指標としてもよい。
【００５７】
図６は、少なくとも一つのファイルを含むフォルダの設計上の評価方法を説明するための図である。なお、フォルダの設計上の評価は不図示の評価部によって実行される処理である。
【００５８】
図６には、フォルダＡ〜Ｅが示されており、特にフォルダＡにはファイルＡ〜Ｄが含まれているが、フォルダＢ〜ＥにもフォルダＡと同様に幾つかのファイルが含まれている。また、フォルダ間には矢印で示されるフォルダの呼び出し関係がある。即ち、フォルダＡは、フォルダＥとの間で外部からの参照関係、フォルダＢとの間で外部への参照関係がある。フォルダＢ、Ｃ及びＤの間では循環参照関係がある。
【００５９】
ここで、フォルダ間の参照関係が引き起こすフォルダ設計上の問題点について説明する。先ず、ファイルＡを基準にして説明すると、外部からの参照関係（ここでは、フォルダＥからの参照関係）及び外部への参照関係（ここでは、フォルダＢへの参照関係）を極端に無くそうとすると、フォルダＡ内のファイル数の増加（フォルダの肥大化）やフォルダＡ内のファイルが他のフォルダのファイルとのソースコードの重複を引き起こす（問題点１）。
【００６０】
その一方で、フォルダＡから外部への参照関係（ここでは、フォルダＢへの参照関係）が極端に多いと、フォルダＡはフォルダＢにおける変更の影響を受けやすくなる（問題点２）。また、外部からの参照関係（ここでは、フォルダＥからの参照関係）が極端に多いと、フォルダＡは変更をし辛くなる（問題点３）。
【００６１】
次に、フォルダＢ、Ｃ、Ｄ間における循環参照関係に着目すると、フォルダ間に循環参照関係がある場合、各フォルダの再利用性が下がるという問題点がある（問題点４）。
【００６２】
以上の問題点１〜４から次の評価基準が挙げられる。即ち、問題点１〜３を考慮したフォルダの可読性指数と問題点４を考慮した循環参照関係にあるフォルダ数とである。フォルダの可読性指数とは、外部から参照されるフォルダ数と外部へ参照するフォルダ数との合算値と当該フォルダ（上記の例では、フォルダＡ）内のファイル数とを統合した値をパラメータとして求められる指数である。この指数は、外部から参照されるフォルダ数と外部へ参照するフォルダ数が少なすぎたり、多すぎたりする場合に高い値をとる。また、当該フォルダ内のファイル数が多い場合にも高い値をとる。従って、フォルダの可読性指数も低い値である程、高い評価値として扱われる。同じく、循環参照関係にあるフォルダ数が多い場合には当該フォルダの再利用性を下げるため、低い値である程、高い評価値として扱われる。なお、フォルダＡの場合、循環参照関係にあるフォルダ数は０となる。
【００６３】
以上のようにして各フォルダについてフォルダの可読性指数と循環参照関係にあるフォルダ数とを求めることにより、各フォルダの設計上での評価を行うことができるが、本実施形態では、各フォルダの著者を評価することが最終的な目的である。従って、各フォルダの著者を決定する必要がある。以下、その方法について説明する。
【００６４】
第１の方法として、図３及び図４のステップＳ４０７までの処理によって、フォルダ内における各ファイルのトークン（ここでは、一行）毎に著者を対応付ける。次に、当該フォルダ単位で、各ファイルのトークンに対応付けられた著者を集計し、最も数が多い著者を当該フォルダの著者として決定する。
【００６５】
第２の方法として、図３及び図４を用いて説明した方法により、フォルダ内における各ファイルのトークン（ここでは、一行）毎に著者を対応付け、更に各ファイルの著者を決定する。次に、当該フォルダ単位で、各ファイルについて決定された著者を集計し、最も数が多い著者を当該フォルダの著者として決定する。
【００６６】
上述した第１又は第２の方法によりフォルダの著者を決定し、該当するフォルダの設計上での評価値が当該著者の評価値として求められる。
【００６７】
図７は、以上のようにして求められたファイル及びフォルダの各著者の評価値をテーブル形式にまとめた図である。図７に示す評価テーブルは、最終的な出力値としてディスプレイ２０９に表示される。
【００６８】
図７に示す例においては、メンバ５（menber_c_5）、メンバ７（menber_c_7）、メンバ７（menber_c_7）、メンバ９（menber_c_9）、メンバ１０（menber_c_10）、メンバ１１（menber_c_11）、メンバ１２（menber_c_12）、メンバ１７（menber_c_17）、メンバ１８（menber_c_18）、メンバ２０（menber_c_20）、メンバ２７（menber_c_27）毎に、期間、ファイル総行数（Ａ）、コピー行数（Ｂ）、（Ａ）−（Ｂ）、ファイル可読性指数＞３００、循環フォルダ数及びフォルダ可読性指数が示されている。
【００６９】
期間とは、評価の対象となるファイル及びフォルダの更新／追加日時を限定した期間であり、ここに示される期間内に該当する更新／追加日時のファイル及びフォルダが評価の対象となっている。なお、フォルダの更新／追加日時は、当該フォルダの属性情報によって示されている。
【００７０】
ファイル総行数（Ａ）とは、上記期間に該当する各ファイルの行数の総数である。コピー行数（Ｂ）とは、上記ファイル総行数（Ａ）のうちのコピーによって更新された行数である。コピー元のファイルは、従来のクローン検出アルゴリズムによって検出することができ、検出されたコピー元ファイルと対象となるファイルとを比較することによりコピーによって更新された行数を求めることが可能である。
【００７１】
（Ａ）−（Ｂ）とは、ファイル総行数（Ａ）からコピー行数（Ｂ）を差し引いた値である。本実施形態では、この値により示される行数をファイルの可読性指数の算出対象としている。
【００７２】
ファイル可読性指数とは、該当する著者のファイルの可読性指数である。循環フォルダ数とは、該当する著者のフォルダに対して循環参照関係にあるフォルダ数である。フォルダ可読性指数とは、該当する著者のフォルダの可読性指数である。
【００７３】
図７の右３つの項目（ファイル可読性指数、循環フォルダ数、フォルダ可読性指数）が各著者の評価値となる。これらの各項目が低い値である程、該当する著者は評価の高いソースコードの記述、フォルダ設計を行っていることになる。
【００７４】
以上のように、本実施形態においては、ファイル内に記述される所定の単位のドキュメントデータ（ソースコード）毎に著者のＩＤを付与し、付与された著者のＩＤの割合に基づいて当該ファイルの著者を決定し、著者が決定された当該ファイルを評価するように構成している。従って、本実施形態によれば、著者とドキュメントデータそのものからファイルの著者を特定し、当該ファイルに記述されたドキュメントデータの評価を当該著者の評価として行うことが可能となる。なお、一ファイル毎に著者を決定するほかに、複数のファイル毎に著者を決定してもよい。また、ファイルもドキュメントデータ以外に画像データを含むものであってもよく、著者の決定単位となるデータは特に制限されるものではない。
【００７５】
また、本実施形態においては、フォルダの著者を決定し、著者が決定された当該フォルダの設計上の評価を行うようにしているため、当該フォルダの設計上の評価を当該著者の評価として行うことが可能となる。
【図面の簡単な説明】
【００７６】
【図１】本発明の実施形態に係るファイル著者決定システムの機能的な構成を示す図である。
【図２】ファイル著者決定装置のハードウェア構成を示すブロック図である。
【図３】ファイル著者決定装置によって実行される、対象ファイルを生成する元となった親ファイルを決定する処理を示すフローチャートである。
【図４】ファイル著者決定装置によって実行される、対象ファイルの著者を決定する処理を示すフローチャートである。
【図５】著者が決定されたファイルに対するソースコードの評価方法を具体的に説明するための図である。
【図６】少なくとも一つのファイルを含むフォルダの設計上の評価方法を説明するための図である。
【図７】ファイル及びフォルダの各著者の評価値をテーブル形式にまとめた図である。
【符号の説明】
【００７７】
１００：ファイル著者決定装置
１０１：親ファイル判定部
１０２：更新部分判定部
１０３：著者ＩＤ付与部
１０４：著者ＩＤ割合算出部
１０５：ファイル著者決定部
１０６：評価部
３００：ファイル管理装置
３０１：管理テーブル
３０２：ファイル群
【図１】
0004976328.tif 000003
【図２】
0004976328.tif 000004
【図３】
0004976328.tif 000005
【図４】
0004976328.tif 000006
【図５】
0004976328.tif 000007
【図６】
0004976328.tif 000008
【図７】
0004976328.tif 000009