JPWO2016157433A1 - ソフトウェア管理装置およびソフトウェア管理方法 - Google Patents

ソフトウェア管理装置およびソフトウェア管理方法 Download PDF

Info

Publication number
JPWO2016157433A1
JPWO2016157433A1 JP2017508942A JP2017508942A JPWO2016157433A1 JP WO2016157433 A1 JPWO2016157433 A1 JP WO2016157433A1 JP 2017508942 A JP2017508942 A JP 2017508942A JP 2017508942 A JP2017508942 A JP 2017508942A JP WO2016157433 A1 JPWO2016157433 A1 JP WO2016157433A1
Authority
JP
Japan
Prior art keywords
revision
developer
source code
execution result
level
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2017508942A
Other languages
English (en)
Other versions
JP6141563B2 (ja
Inventor
清隆 森田
清隆 森田
下谷 光生
光生 下谷
靖之 野田
靖之 野田
亮 小田
亮 小田
健二 長藤
健二 長藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Application granted granted Critical
Publication of JP6141563B2 publication Critical patent/JP6141563B2/ja
Publication of JPWO2016157433A1 publication Critical patent/JPWO2016157433A1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本発明は、バグの原因を効率的に特定することが可能なソフトウェア管理装置およびソフトウェア管理方法を提供することを目的とする。本発明によるソフトウェア管理装置は、ソースファイル内のソースコードの各行に対応するリビジョンと、ソースコードを改訂した改訂者とを含むリビジョン情報を取得するリビジョン情報取得部と、ソースコードの開発者のレベルを示す開発者レベルを管理し、リビジョン情報取得部で取得されたリビジョン情報に含まれる改訂者に対応する開発者の開発者レベルを抽出する開発者レベル管理部と、リビジョン情報取得部で取得されたリビジョン情報と、開発者レベル管理部で抽出された開発者レベルとに基づいて、ソースコードの各行を開発者レベルに応じて区別して表示するように制御する制御部とを備える。

Description

本発明は、ソフトウェア開発時におけるソフトウェアの管理を行うソフトウェア管理装置およびソフトウェア管理方法に関する。
大規模なソフトウェア開発では、技術レベルが異なる複数の開発者によって1つのプログラムが開発されている。
ソフトウェアの開発では、ソースコードを記述するコーディングの工程後に、ソースコードを実行可能なプログラムに変換するビルドの工程、ソースコードがコーディングルール等に反していないか等のチェックを行う静的解析の工程、およびプログラムが正しく動作するかチェックを行うテストの工程の各工程を行う。
コーディング後の各工程でバグ(ソースコードの誤り等)が発見された場合は、バグの原因を特定してコーディングを再度行う必要があるが、特にビルドおよびテストで発見されるバグの原因の特定には多大な時間を要する。また、プログラムの編集では、ソースコードが新たに追加されたり、ソースコードの変更が行われたりするが、このときにもバグが生じることがある。従って、バグの原因を特定するために要する時間を短縮することは、ソフトウェア開発の工数を削減することにつながる。
上記の問題の対策として、従来、1つのソースファイル内のソースコードの各行がどのリビジョンで改訂されたのかを確認することができるソースコードの改訂履歴を示すツールを、バグの原因の特定に役立てていた。また、ソフトウェアの開発者のレベルを評価する技術が開示されている(例えば、特許文献1,2参照)。
特開2006−59276号公報 特開2010−186394号公報
ソースコードの改訂履歴に基づいてバグの原因を特定する方法を用いても、ソースコード量が多い大規模なソフトウェア開発においてはバグの原因を特定するためには時間がかかるという問題がある。
また、特許文献1,2の技術を用いれば、ソースファイルごとの信頼度を把握することができる。すなわち、開発者のレベルが低い場合は、ソースファイルの信頼度が低いと判断することができ、バグが生じると信頼度が低いソースファイルを優先してバグの原因を特定する作業を行うことができる。しかし、このような場合であっても、ソースコードの量が増えるとバグの原因を特定するために時間を要し、バグの原因を効率的に特定しているとはいえなかった。
本発明は、このような問題を解決するためになされたものであり、バグの原因を効率的に特定することが可能なソフトウェア管理装置およびソフトウェア管理方法を提供することを目的とする。
上記の課題を解決するために、本発明によるソフトウェア管理装置は、ソースファイル内のソースコードの各行に対応するリビジョンと、ソースコードを改訂した改訂者とを含むリビジョン情報を取得するリビジョン情報取得部と、ソースコードの開発者のレベルを示す開発者レベルを管理し、リビジョン情報取得部で取得されたリビジョン情報に含まれる改訂者に対応する開発者の開発者レベルを抽出する開発者レベル管理部と、リビジョン情報取得部で取得されたリビジョン情報と、開発者レベル管理部で抽出された開発者レベルとに基づいて、ソースコードの各行を開発者レベルに応じて区別して表示するように制御する制御部とを備える。
また、本発明によるソフトウェア管理方法は、ソースファイル内のソースコードの各行に対応するリビジョンと、ソースコードを改訂した改訂者とを含むリビジョン情報を取得し、ソースコードの開発者のレベルを示す開発者レベルを管理し、取得したリビジョン情報に含まれる改訂者に対応する開発者の開発者レベルを抽出し、取得したリビジョン情報と、抽出された開発者レベルとに基づいて、ソースコードの各行を開発者レベルに応じて区別して表示するように制御する。
本発明によると、ソフトウェア管理装置は、ソースファイル内のソースコードの各行に対応するリビジョンと、ソースコードを改訂した改訂者とを含むリビジョン情報を取得するリビジョン情報取得部と、ソースコードの開発者のレベルを示す開発者レベルを管理し、リビジョン情報取得部で取得されたリビジョン情報に含まれる改訂者に対応する開発者の開発者レベルを抽出する開発者レベル管理部と、リビジョン情報取得部で取得されたリビジョン情報と、開発者レベル管理部で抽出された開発者レベルとに基づいて、ソースコードの各行を改訂者の開発者レベルに応じて区別して表示するように制御する制御部とを備えるため、バグの原因を効率的に特定することが可能となる。
また、ソフトウェア管理方法は、ソースファイル内のソースコードの各行に対応するリビジョンと、ソースコードを改訂した改訂者とを含むリビジョン情報を取得し、ソースコードの開発者のレベルを示す開発者レベルを管理し、取得したリビジョン情報に含まれる改訂者に対応する開発者の開発者レベルを抽出し、取得したリビジョン情報と、抽出された開発者レベルとに基づいて、ソースコードの各行を改訂者の開発者レベルに応じて区別して表示するように制御するため、バグの原因を効率的に特定することが可能となる。
本発明の目的、特徴、態様、および利点は、以下の詳細な説明と添付図面とによって、より明白となる。
本発明の実施の形態1によるソフトウェア管理装置の構成の一例を示すブロック図である。 本発明の実施の形態1によるソフトウェア管理装置におけるソフトウェア機能に対応するハードウェア構成の一例を示す図である。 本発明の実施の形態1によるソフトウェア管理装置の構成の他の一例を示すブロック図である。 本発明の実施の形態1によるリビジョン情報データベースに格納されるリビジョン情報の一例を示す図である。 本発明の実施の形態1による開発者レベルデータベースに格納される開発者レベルの一例を示す図である。 本発明の実施の形態1によるソフトウェア管理装置の動作の一例を示すフローチャートである。 本発明の実施の形態1によるソフトウェア管理装置の動作の一例を示すフローチャートである。 本発明の実施の形態1による表示の一例を示す図である。 本発明の実施の形態1による開発者レベルデータベースに格納される開発者レベルの一例を示す図である。 本発明の実施の形態1によるソフトウェア管理装置の動作の一例を示すフローチャートである。 本発明の実施の形態1による開発者レベルデータベースに格納される開発者レベルの一例を示す図である。 本発明の実施の形態2によるソフトウェア管理装置の構成の一例を示すブロック図である。 本発明の実施の形態2による実行結果データベースに格納される実行結果の一例を示す図である。 本発明の実施の形態2によるソフトウェア管理装置の動作の一例を示すフローチャートである。 本発明の実施の形態2によるリビジョン情報取得部が取得するリビジョン情報の一例を示す図である。 本発明の実施の形態2による実行結果データベースに格納されるリビジョン情報の一例を示す図である。 本発明の実施の形態2による表示の一例を示す図である。 本発明の実施の形態3によるソフトウェア管理装置の構成の一例を示すブロック図である。 本発明の実施の形態3によるソフトウェア管理装置の動作の一例を示すフローチャートである。 本発明の実施の形態3によるリビジョン情報取得部が取得するリビジョン情報の一例を示す図である。 本発明の実施の形態3による実行結果データベースに格納される実行結果の一例を示す図である。 本発明の実施の形態3による実行結果データベースに格納されるリビジョン情報の一例を示す図である。 本発明の実施の形態3による評価後の開発者レベルの一例を示す図である。 本発明の実施の形態4によるソフトウェア管理装置の動作の一例を示すフローチャートである。 本発明の実施の形態4によるソフトウェア管理装置の動作を説明するための図である。 本発明の実施の形態4によるソフトウェア管理装置の動作を説明するための図である。 本発明の実施の形態4によるソフトウェア管理装置の動作を説明するための図である。 本発明の実施の形態5によるソフトウェア管理装置の動作の一例を示すフローチャートである。 本発明の実施の形態5によるリビジョン情報取得部が取得するリビジョン情報の一例を示す図である。 本発明の実施の形態5による実行結果データベースに格納される実行結果の一例を示す図である。 本発明の実施の形態5による評価後の開発者レベルの一例を示す図である。 本発明の実施の形態6によるソフトウェア管理装置の構成の一例を示すブロック図である。 本発明の実施の形態6によるソフトウェア管理装置の動作の一例を示すフローチャートである。 本発明の実施の形態6によるファイルの信頼度を説明するための図である。 本発明の実施の形態によるソフトウェア管理システムの構成の一例を示すブロック図である。 本発明の実施の形態によるソフトウェア管理システムの構成の他の一例を示すブロック図である。
本発明の実施の形態について、図面に基づいて以下に説明する。
<実施の形態1>
まず、本発明の実施の形態によるソフトウェア管理装置の構成について説明する。なお、本実施の形態においては、ソフトウェア管理装置単体で実現した場合について説明する。
図1は、本発明の実施の形態1によるソフトウェア管理装置1の構成の一例を示すブロック図である。なお、図1では、ソフトウェア管理装置1を構成する必要最小限の構成要素を示している。
図1に示すように、ソフトウェア管理装置1は、少なくともリビジョン情報取得部2と、開発者レベル管理部3と、制御部4とを備えている。
リビジョン情報取得部2は、ソースファイル内のソースコードの各行に対応するリビジョンと、ソースコードを改訂した改訂者とを含むリビジョン情報を取得する。
開発者レベル管理部3は、改訂者を含むソースコードの開発者のレベルを示す開発者レベルを管理し、リビジョン情報取得部2で取得されたリビジョン情報に含まれる改訂者に対応する開発者の開発者レベルを抽出する。
制御部4は、リビジョン情報取得部2で取得されたリビジョン情報と、開発者レベル管理部3で抽出された開発者レベルとに基づいて、ソースコードの各行を開発者レベルに応じて区別して表示するように制御する。
図2は、ソフトウェア管理装置1におけるソフトウェア機能に対応するハードウェア構成の一例を示す図である。
リビジョン情報取得部2、開発者レベル管理部3、および制御部4は、例えば図2のプロセッサ5がメモリ6等に記憶されたプログラムを実行することにより、当該プロセッサ5の機能として実現される。ただし、これらは、例えば複数のプロセッサ5が連携して実現されてもよい。
次に、図1のリビジョン情報取得部2、開発者レベル管理部3、および制御部4を含むソフトウェア管理装置1の他の構成について説明する。
図3は、ソフトウェア管理装置7の構成の一例を示すブロック図である。
図3に示すように、ソフトウェア管理装置7は、リビジョン情報取得部2と、開発者レベル管理部3と、制御部4とを備えている。また、リビジョン情報取得部2はリビジョン情報データベース8に接続され、開発者レベル管理部3は開発者レベルデータベース9に接続され、制御部4は表示装置10に接続されている。
リビジョン情報データベース8は、例えば、ハードディスク(HDD:Hard Disk Drive)または半導体メモリなどの記憶装置から構成されており、バージョン管理ツール(本発明では、説明を分かりやすくするためリビジョン管理ツールと呼ぶこととする)によって管理されるリビジョン情報を格納している。図4は、リビジョン情報データベース8に格納されるリビジョン情報の一例を示す図である。図4に示すように、リビジョン情報は、ソースコード改訂情報とリビジョン対応情報とを含んでいる。
ソースコード改訂情報は、ソースコードと、当該ソースコードを改訂したリビジョン番号とをソースコードの行ごとに対応付けている。ソースコード改訂情報によって、ソースコードの各行がどのリビジョンで改訂されたのかを判別することができる。リビジョン対応情報は、リビジョン番号と、コミッター(改訂者)名およびコミット日時(日時情報)等を含むコミットに関する情報であるコミット情報とを対応付けている。リビジョン管理ツールは、コミッターによって改訂されるごとにリビジョン情報の修正等を行う。
なお、本実施の形態1では、リビジョン番号は、改訂順に整数値が割り当てられているが、これに限るものではない。例えば、リビジョン番号は、改訂ごとにハッシュ値が割り当てられてもよい。また、リビジョン管理ツールは、ソフトウェア管理装置7の外部に設けられているものとする。
リビジョン情報取得部2は、リビジョン情報データベース8から対象ファイルのリビジョン情報を取得する。ここで、対象ファイルとは、例えば、上述のソフトウェア開発における各工程でバグが生じた場合に当該バグの原因を特定する際に対象となるファイルのことをいい、または改訂者が既存のソースコードを改訂する際に対象となるファイルのことをいう。リビジョン情報取得部2は、取得したリビジョン情報を開発者レベル管理部3および制御部4の各々に出力する。
開発者レベルデータベース9は、例えば、ハードディスク(HDD:Hard Disk Drive)または半導体メモリなどの記憶装置から構成されており、ソフトウェアを開発する開発者のレベルである開発者レベルを格納している。図5は、開発者レベルデータベース9に格納される開発者レベルの一例を示す図である。図5に示すように、開発者レベルデータベース9では、開発者名と、当該開発者の開発者レベルとが対応付けて格納されている。開発者レベルは、種々の方法で設定される。例えば、開発者を適宜に評価して、人手によって(手動で)開発者レベルを設定する方法がある。また、例えば、開発者の勤務年数等に基づいて自動的に開発者レベルを設定する方法がある。
なお、開発者レベルデータベース9は、リビジョン情報データベース8に格納されているリビジョン情報に含まれるコミッターと同一である開発者の開発レベル、およびコミッター以外の開発者の開発者レベルを格納している。すなわち、開発者レベルデータベース9では、ソフトウェアの開発に関与し得る者を開発者とし、当該開発者の開発者レベルを格納している。
開発者レベル管理部3は、リビジョン情報取得部2から入力されたリビジョン情報に基づいて、開発者レベルデータベース9から開発者レベルを抽出する。開発者レベル管理部3は、抽出した開発者レベルを制御部4に出力する。
制御部4は、リビジョン情報取得部2から入力されたリビジョン情報と、開発者レベル管理部3から入力された開発者レベルとに基づいて、対象ファイルにおけるソースコードの各行を開発者レベルに応じて区別して表示するように制御する。表示装置10は、制御部4の制御に従って、開発者レベルに応じて区別されたソースコードを表示する。
次に、本実施の形態1によるソフトウェア管理装置7の動作について説明する。なお、本文の例を用いた説明では、説明を分かりやすくするために1つのソースファイルに着目して動作を説明するが、本発明は複数のソースファイルに対しても適用可能である。
図6は、ソフトウェア管理装置7の動作の一例を示すフローチャートである。なお、ステップS101の前において、リビジョン情報取得部2は、どのファイルを対象ファイルとしているのかを把握しているものとする。
ステップS101において、リビジョン情報取得部2は、リビジョン情報データベース8からリビジョン情報を取得する。具体的には、リビジョン情報取得部2は、例えば図4に示すようなソースコード改訂情報およびリビジョン対応情報を含むリビジョン情報をリビジョン情報データベース8から取得する。そして、リビジョン情報取得部2は、リビジョン対応情報を開発者レベル管理部3に出力し、ソースコード改訂情報およびリビジョン対応情報を制御部4に出力する。
ステップS102において、開発者レベル管理部3は、リビジョン情報取得部2から入力されたリビジョン情報に含まれるリビジョン対応情報に基づいて、開発者レベルデータベース9から開発者レベルを取得する。
ここで、ステップS102の詳細について、図7を用いて説明する。
ステップS201において、開発者レベル管理部3には、リビジョン対応情報に含まれるコミッター名が入力される。
ステップS202において、開発者レベル管理部3は、リビジョン情報取得部2から入力されたコミッター名に対応する開発者名を開発者レベルデータベース9から検索し、コミッター名と開発者名とが一致した場合に当該開発者の開発者レベルを開発者レベルデータベース9から抽出する。そして、開発者レベル管理部3は、抽出した開発者レベルを制御部4に出力する。
例えば、リビジョン情報取得部2から開発者レベル管理部3に図4に示すリビジョン対応情報が入力され、開発者レベルデータベース9には図5に示す開発者レベルが格納されているものとする。このような場合において、開発者レベル管理部3は、例えばリビジョン番号「5」のときのコミッター名「Tanaka」に対応する開発者名「Tanaka」を開発者レベルデータベース9から検索し、開発者名「Tanaka」の開発者レベル「35」を抽出する。
図6に戻り、ステップS103において、制御部4は、リビジョン情報取得部2から入力されたリビジョン情報と、開発者レベル管理部3から入力された開発者レベルとに基づいて、対象ファイルのソースコードの各行を開発者レベルに応じて区別して表示するように制御する。具体的には、制御部4は、例えば図8に示すように、ソースコードの各行を開発者のレベルに応じて色分けして表示するように制御する。表示装置10には、開発者レベルに応じて色分けされたソースコードの各行が表示される。
例えば、リビジョン情報取得部2から制御部4に図4に示すリビジョン情報が入力され、開発者レベル管理部3から制御部4に図5に示す管理者レベルが入力されたものとする。制御部4は、リビジョン番号が「1」のときのコミッターは「Sasaki」であるため、リビジョン番号「1」のソースコードの行を、「Sasaki」の開発者レベル「90」に対応する色で表示するように制御する。他も同様に、リビジョン番号「5」のソースコードの行を、「Tanaka」の開発者レベル「35」に対応する色で表示するように制御する。リビジョン番号「3」のソースコードの行を、「Suzuki」の開発者レベル「60」に対応する色で表示するように制御する。
なお、ソースコードの各行を色分けして表示する方法として、例えば開発者レベルが勤務年数に基づいている場合は、開発者の勤務年数が1年未満のときは赤色、開発者の勤務年数が1年〜10年未満のときは黄色、開発者の勤務年数が10年以上であるときは青色にして表示するようにしてもよい。
本文ではソースコードを編集する(コーディングする)開発者とコミッターとが同一であるとして説明しているが、ソースコードを編集する開発者とコミッターとが異なる場合もあり得る。このような場合は、ソースコードを編集した開発者の開発者レベルではなく、編集されたソースコードを受け取ってソースコードのリビジョンの改訂を行ったコミッターの開発者レベルをもとにソースコードの各行が色分け表示される。よって、ソースコードの各行の色分けに反映されるコミッターの開発者レベルは、単にソースコードを編集する(コーディングの)能力としてではなく、他の開発者が編集したソースコードをチェックする能力も含めて捉えることになる。
次に、本実施の形態1の他の例(変形例1,2)について説明する。
<変形例1>
一般的に、開発者の開発レベルは、開発者の勤務年数の経過、または開発者の能力の向上に従って経時的に上がる。開発者レベルの向上を反映させるべく、開発者レベルデータベース9に格納されている開発者レベルも定期的に更新される。しかし、例えば図8に示すような表示を行う場合において、過去の開発者レベルが低いときに改訂したソースコードの行に対して、開発者レベルが過去の開発者レベルよりも上がった現在の開発者レベルに応じて色分けされてしまう(すなわち、改訂時の開発者レベルに応じた色分けができない)という問題がある。本変形例1は、このような問題を解決するものである。
図9は、開発者レベルデータベース9に格納される開発者レベルの一例を示す図である。
図9に示すように、開発者レベルデータベース9では、更新ごとに開発者レベルの履歴を格納している。図9では、3回の更新(更新A,B,C)が行われたことを示している。また、各リビジョンとともに更新日時を示している。例えば、開発者「Tanaka」に注目すると、「Tanaka」の開発レベルは、更新Aのときは「35」、更新Bのときは「50」、更新Cのときは「80」であることが分かる。なお、開発者レベルの設定方法は、上述と同様である。
図10は、図6のステップS102の詳細を示すフローチャートである。その他の動作は、図6と同様であるため、ここでは説明を省略する。
ステップS301において、開発者レベル管理部3には、リビジョン対応情報に含まれるコミッター名およびコミット日時が入力される。
ステップS302において、開発者レベル管理部3は、リビジョン情報取得部2から入力されたコミッター名およびコミット日時に基づいて、開発者レベルを開発者レベルデータベースから抽出する。そして、開発者レベル管理部3は、抽出した開発者レベルを制御部4に出力する。
例えば、リビジョン情報取得部2から開発者レベル管理部3に図4に示すリビジョン対応情報が入力され、開発者レベルデータベース9には図9に示す開発者レベルが格納されているものとする。このような場合において、開発者レベル管理部3は、例えばリビジョン番号「5」のときのコミッター名「Tanaka」に対応する開発者名「Tanaka」を開発者レベルデータベース9から検索する。そして、各更新A〜Cにおける開発者「Tanaka」のうち、コミット日時よりも過去であって最新の更新Bにおける開発者レベル「50」を抽出する。
上記より、ソースコードの各行を改訂時の開発レベルに応じて色分けして表示することができる。
<変形例2>
上述では、例えば図5に示すように、各開発者に対する開発者レベルの項目は1つである場合について説明したが、これに限るものではない。例えば、開発者の能力は、プログラミング言語の種別ごとに変わる場合がある。このような場合を想定して、開発者レベルを複数の項目にしてもよい。
図11は、開発者レベルデータベース9に格納される開発者レベルの一例を示す図である。図11の例では、各開発者に対して、「C/C++開発レベル」、「Java(登録商標)開発レベル」、および「Cobol開発レベル」の3つの項目が設定されている。
上記より、開発者レベル管理部3は、例えば対象ファイルのソースコードのプログラミング言語がC/C++である場合は、「C/C++開発レベル」を開発者レベルとして抽出すればよい。すなわち、開発者レベル管理部3は、実状に合った開発者レベルを抽出することができる。
以上のことから、本実施の形態1によれば、ソースコードの各行を開発者レベルに応じて区別して表示しているため、バグが発見された場合に開発者レベルが低いソースコードを優先して調べることによって、バグの原因を効率的に特定することが可能となる。また、既存のソースコードを改訂する場合において、ソースコードの各行の開発レベルを把握することができる。
なお、上記では、リビジョン管理ツールの管理によって、例えば図4に示すようなリビジョン情報がリビジョン情報データベース8に格納されている場合について説明した。しかし、ソースコードと当該ソースコードを改訂したリビジョン番号とをソースコードの行ごとに対応付けていないリビジョン情報を管理するリビジョン管理ツールがある。当該リビジョン管理ツールで管理されるリビジョン情報には、図4に示すようなソースコード改訂情報が含まれていない。このような場合において、リビジョン情報取得部2は、リビジョン情報データベース8から対象ファイルのリビジョン情報を全て取得し、取得したリビジョン情報に基づいて図4に示すようなソースコード改訂情報を生成するようにしてもよい。
リビジョン情報データベース8において、同姓のコミッターが複数存在する場合は、各コミッターを区別して格納する。開発者レベルデータベース9に格納される開発者名についても同様である。この場合、区別したコミッターと開発者名とを対応させる必要がある。
上記では、開発者レベルに応じてソースコードの各行を色分けして表示する場合について説明したが、これに限るものではない。開発者レベルが予め定められた閾値よりも低い場合は、対応するソースコードの行を太字等で強調したり、対応するソースコードの行が分かるような記号を付したりしてもよい。また、開発者レベルが予め定められた閾値よりも低いソースコードの行をリストアップしてもよい。
<実施の形態2>
まず、本発明の実施の形態2によるソフトウェア管理装置の構成について説明する。
図12は、本実施の形態2によるソフトウェア管理装置11の構成の一例を示すブロック図である。
図12に示すように、本実施の形態2によるソフトウェア管理装置11は、実行結果管理部12およびソースコード抽出部13を備えることを特徴としている。実行結果管理部12は、実行結果データベース14に接続されている。その他の構成および動作は、実施の形態1と同様であるため、ここでは詳細な説明を省略する。
リビジョン情報取得部2は、リビジョン情報データベース8から対象ファイルのリビジョン情報を取得するとともに、対象ファイルの実行結果を取得する。ここで、本実施の形態2による対象ファイルの実行結果とは、ソフトウェア開発の各工程(例えば、ビルド工程、テスト工程)での実行の成否のことをいう。実行結果は、例えばビルド工程で用いられるビルドツール、またはテスト工程で用いられるテストツールからリビジョン情報取得部2に入力される。このとき、実行結果とリビジョン情報とは、プラグインで対応付けられてリビジョン情報取得部2に入力される。このように、リビジョン情報取得部2は、対象ファイルを実行した時に、その実行結果とリビジョン情報とを取得する。リビジョン情報取得部2は、取得したリビジョン情報を開発者レベル管理部3および制御部4に出力し、取得した実行結果とリビジョン情報とを実行結果管理部12に出力する。
実行結果管理部12は、リビジョン情報取得部2から入力された実行結果とリビジョン情報とを対応付けて実行結果データベース14に格納するように管理する。また、実行結果管理部12は、実行結果データベース14に格納しているリビジョン情報をソースコード抽出部13に出力する。
実行結果データベース14は、例えば、ハードディスク(HDD:Hard Disk Drive)または半導体メモリなどの記憶装置から構成されており、実行結果管理部12の管理によって実行結果とリビジョン情報とを対応付けて格納している。図13は、実行結果データベース14に格納される実行結果の一例を示す図である。図13に示すように、実行結果データベース14では、実行したリビジョン番号ごとに、実行結果とリビジョン情報とを対応付けて格納している。例えば、リビジョン番号「1」およびリビジョン番号「5」の実行結果は「×(失敗)」であることを示しており、リビジョン番号「3」の実行結果は「○(成功)」であることを示している。
ソースコード抽出部13は、実行結果管理部12から入力されたリビジョン情報に基づいて、ソースコードの行を抽出する。ソースコード抽出部13は、抽出したソースコードの行を開発者レベル管理部3に出力する。
なお、実行結果管理部12およびソースコード抽出部13は、例えば図2のプロセッサ5がメモリ6等に記憶されたプログラムを実行することにより、当該プロセッサ5の機能として実現される。ただし、これらは、例えば複数のプロセッサ5が連携して実現されてもよい。
次に、本実施の形態2によるソフトウェア管理装置11の動作について説明する。
図14は、ソフトウェア管理装置11の動作の一例を示すフローチャートである。なお、図14のステップS406、ステップS408、およびステップS409は、図6のステップS102およびステップS103の各々に対応しているため、ここでは説明を省略する。
ステップS401において、リビジョン情報取得部2は、リビジョン情報データベース8から対象ファイルのリビジョン情報を取得するとともに、対象ファイルの実行結果を取得する。例えば、リビジョン情報取得部2は、実行結果と、図15に示すソースコード改訂情報を含むリビジョン情報とを取得する。なお、図15では、ソースコードの現リビジョンのリビジョン番号が「5」であり、それよりも過去に改訂されたリビジョンも含むリビジョン番号「2」、「3」、「4」、「5」のリビジョンの改訂内容の影響を受けていることを示している。すなわち、リビジョン情報取得部2は、図15に示すソースコード改訂情報を含む対象ファイルのリビジョン情報と、その実行結果を取得する。
ステップS402において、実行結果管理部12は、リビジョン情報取得部2から入力された実行結果とリビジョン情報とを対応付けて実行結果データベース14に格納するように管理する。図13の例では、実行結果データベース14には、リビジョン情報取得部2が今回取得したリビジョン番号「5」におけるリビジョン情報と実行結果とが格納されている。
ステップS403において、実行結果管理部12は、今回の対象ファイルの実行結果が失敗であるか否かの判断を行う。実行結果が失敗である場合は、ステップS404に移行する。一方、実行結果が失敗でない(すなわち、実行結果が成功である)場合は、処理を終了する。図13の例では、今回の対象ファイル(リビジョン番号「5」)の実行結果は「×(失敗)」となっている。
ステップS404において、実行結果管理部12は、過去に実行結果が成功である親リビジョンのリビジョン情報が実行結果データベース14に格納されているか否かの判断を行う。実行結果が成功である親リビジョンのリビジョン情報が実行結果データベース14に格納されている場合は、ステップS405に移行する。一方、実行結果が成功である親リビジョンのリビジョン情報が実行結果データベース14に格納されていない場合は、ステップS408に移行して実施の形態1と同様の処理が行われる。ここで、親リビジョンとは、対象ファイルにおける過去のリビジョン(改訂)のことをいう。図13の例では、リビジョン番号「5」の親リビジョンはリビジョン番号「1」およびリビジョン番号「3」であり、リビジョン番号「3」のときの実行結果は「○(成功)」である。
ステップS405において、実行結果管理部12は、今回のリビジョンのリビジョン情報と、過去に成功した親リビジョンのうちの最新の親リビジョンのリビジョン情報とを実行結果データベース14から抽出してソースコード抽出部13に出力する。図13の例では、実行結果管理部12は、リビジョン番号「5」(今回のリビジョン)のリビジョン情報と、リビジョン番号「3」(過去に成功した最新の親リビジョン)のリビジョン情報とを実行結果データベース14から抽出してソースコード抽出部13に出力する。なお、図13に示すリビジョン番号「3」のリビジョン情報に含まれるソースコード改訂情報は、例えば図16に示すソースコード改訂情報である。
ソースコード抽出部13は、実行結果管理部12から入力された今回のリビジョンのリビジョン情報と、過去に成功した最新の親リビジョンのリビジョン情報との差分をとり、当該差分部分のソースコードの行を改訂したコミッターを特定する。例えば、リビジョン番号「5」(今回のリビジョン)のリビジョン情報と、リビジョン番号「3」(過去に成功した最新の親リビジョン)のリビジョン情報との差分をとると、当該差分部分はリビジョン番号「4」およびリビジョン番号「5」に対応するソースコードの行となる。そして、ビジョン番号「4」およびリビジョン番号「5」のときに改訂したコミッターを特定する。
ステップS407において、制御部4は、リビジョン情報取得部2から入力されたリビジョン情報と、開発者レベル管理部3から入力された開発者レベルとに基づいて、対象ファイルのソースコードの各行をソースコード抽出部13で特定されたコミッターの開発者レベルに応じて区別して表示するように制御する。具体的には、制御部4は、例えば図17に示すように、リビジョン番号「4」およびリビジョン番号「5」に対応するソースコードの各行を開発者のレベルに応じて色分けして表示するように制御する。表示装置10には、開発者レベルに応じて色分けされたソースコードの各行が表示される。
以上のことから、本実施の形態2によれば、今回失敗したリビジョン情報と、過去に成功した最新のリビジョン情報との差分部分のソースコードの行を色分けして表示しているため、ソースコードの全部の行を色分けして表示する実施の形態1よりも効率的にバグの原因を特定することができる。
<実施の形態3>
まず、本発明の実施の形態3によるソフトウェア管理装置の構成について説明する。
図18は、本実施の形態3によるソフトウェア管理装置15の構成の一例を示すブロック図である。
図18に示すように、本実施の形態3によるソフトウェア管理装置15は、実施の形態2によるソフトウェア管理装置11(図12参照)のソースコード抽出部13に代えて、開発者評価部16を備えることを特徴としている。その他の構成および動作は、実施の形態2と同様であるため、ここでは詳細な説明を省略する。
開発者評価部16は、実行結果管理部12から入力されたリビジョン情報に基づいて、開発者の評価を行う。具体的には、開発者評価部16は、開発者レベルを下げる開発者(コミッター)を特定し、当該開発者の開発者レベルを下げると判断する。
なお、開発者評価部16は、例えば図2のプロセッサ5がメモリ6等に記憶されたプログラムを実行することにより、当該プロセッサ5の機能として実現される。ただし、これらは、例えば複数のプロセッサ5が連携して実現されてもよい。
次に、本実施の形態3によるソフトウェア管理装置15の動作について説明する。
図19は、ソフトウェア管理装置15の動作の一例を示すフローチャートである。
ステップS501において、リビジョン情報取得部2は、リビジョン情報データベース8から対象ファイルのリビジョン情報を取得するとともに、対象ファイルの実行結果を取得する。例えば、リビジョン情報取得部2は、実行結果と、図20に示すソースコード改訂情報を含むリビジョン情報とを取得する。なお、図20では、ソースコードの現リビジョンのリビジョン番号が「6」であり、それよりも過去に改訂されたリビジョンも含むリビジョン番号「2」、「3」、「4」、「6」のリビジョンの改訂内容の影響を受けていることを示している。すなわち、リビジョン情報取得部2は、図20に示すソースコードを有する対象ファイルのリビジョン情報と、その実行結果を取得する。
ステップS502において、実行結果管理部12は、リビジョン情報取得部2から入力された実行結果とリビジョン情報とを対応付けて実行結果データベース14に格納するように管理する。例えば、図21に示すように、実行結果データベース14には、リビジョン情報取得部2が今回取得したリビジョン番号「6」におけるリビジョン情報と実行結果とが格納されている。
ステップS503において、実行結果管理部12は、今回の対象ファイルの実行結果が成功であるか否かの判断を行う。実行結果が成功である場合は、ステップS504に移行する。一方、実行結果が成功でない(すなわち、実行結果が失敗である)場合は、処理を終了する。図21の例では、今回の対象ファイル(リビジョン番号「6」)の実行結果は「○(成功)」となっている。
ステップS504において、実行結果管理部12は、実行結果データベース14に格納されている最新の親リビジョンの実行結果が失敗であるか否かの判断を行う。最新の親リビジョンの実行結果が失敗である場合は、ステップS505に移行する。一方、最新の親リビジョンの実行結果が失敗でない(最新の親リビジョンンの実行結果が成功である、または親リビジョンが実行結果データベース14に格納されていない)場合は、処理を終了する。図21の例では、リビジョン番号「6」の親リビジョンはリビジョン番号「1」、リビジョン番号「3」、およびリビジョン番号「5」であり、リビジョン番号「1」およびリビジョン番号「5」のときの実行結果は「×(失敗)」である。
ステップS505において、実行結果管理部12は、今回のリビジョンのリビジョン情報と、過去に失敗した親リビジョンのうちの最新の親リビジョンのリビジョン情報とを実行結果データベース14から抽出して開発者評価部16に出力する。図21の例では、実行結果管理部12は、リビジョン番号「6」(今回のリビジョン)のリビジョン情報と、リビジョン番号「5」(過去に失敗した最新の親リビジョン)のリビジョン情報とを実行結果データベース14から抽出して開発者評価部16に出力する。なお、図21に示すリビジョン番号「5」のリビジョン情報に含まれるソースコード改訂情報は、図22に示すソースコード改訂情報であるものとする。
開発者評価部16は、実行結果管理部12から入力された今回のリビジョンのリビジョン情報と、過去に失敗した最新の親リビジョンのリビジョン情報との差分をとり、過去に失敗した最新の親リビジョンにおける当該差分部分に対応するリビジョンのコミッターを特定し、特定したコミッターの開発者レベルを下げると判断する。例えば、今回のリビジョンであるリビジョン番号「6」のリビジョン情報と、過去に失敗した最新の親リビジョンであるリビジョン番号「5」のリビジョン情報との差分をとると、当該差分部分は今回のリビジョンにおいてはリビジョン番号「6」に対応するソースコードの行となる(例では、過去に失敗した最新の親リビジョンから今回のリビジョンの間に改訂されたリビジョンがリビジョン番号「6」のリビジョンだけであるのでリビジョン番号「6」だけが対象となるが、過去に失敗した最新の親リビジョンから改訂されたリビジョンが複数ある場合は各リビジョンに対応するソースコードの行を対象とする)。過去に失敗した最新の親リビジョンにおいて、この行はリビジョン番号「5」のリビジョンに対応する(例では、過去に失敗した最新の親リビジョンのリビジョン番号と差分部分に対応するリビジョンのリビジョン番号が同一であるが異なる場合もあり得る)。これにより、バグがリビジョン番号「5」のリビジョンにより埋め込まれていたと推定できるので、開発者評価部16は、リビジョン情報よりリビジョン番号「5」において改訂したコミッターを特定し、当該コミッターの開発者レベルを下げると判断する。
ステップS506において、開発者レベル管理部3は、開発者評価部16で特定されたコミッターに対応する開発者の開発者レベルを下げる。すなわち、開発者レベル管理部3は、開発者レベルデータベース9に格納されている開発者レベルの更新を行う。例えば、開発者レベルデータベース9に図5に示す開発者レベルが格納されている場合において、開発者レベル管理部3は、開発者評価部16で特定されたコミッター(ここでは「Tanaka」)の開発者レベルを「35」から「30」に下げる(図23参照)。なお、開発者レベルをどのように下げるのかについては、任意の方法で決定すればよい。
以上のことから、本実施の形態3によれば、過去に改訂を失敗したコミッターを特定し、当該コミッターの開発者レベルを下げているため、より適切な開発者レベルの評価を行うことができる。また、このように更新された開発者レベルに応じてソースコードの各行を区別して表示することによって、バグの原因を効率的に特定することが可能となる。また、既存のソースコードを改訂する場合において、ソースコードの各行の開発レベルを把握することができる。
なお、図19のステップS505とステップS506との間において、開発レベルを下げると判断されたコミッター名と、当該コミッターが改訂したソースコードとを表示し、コミッターの開発レベルを下げるか否かをユーザに確認するようにしてもよい。この場合、開発者の評価をより慎重に行うことができる。
<実施の形態4>
実施の形態3では、失敗したリビジョンにおけるリビジョン情報と、その後に成功したリビジョンにおけるリビジョン情報との差分部分にバグの原因があるものとして、当該差分部分を失敗したときに改訂したコミッターの開発者レベルを下げる場合について説明した。しかし、上記の差分部分は、バグの原因以外の部分も含まれることがあり、開発者レベルが適切に評価されているとはいえなかった。本発明の実施の形態4では、このような問題を解決したものであり、以下に詳細を説明する。なお、本実施の形態4によるソフトウェア管理装置の構成は、実施の形態3によるソフトウェア管理装置15(図18参照)の構成と同様である。以下では、実施の形態4によるソフトウェア管理装置は、図18に示すソフトウェア管理装置15であるものとして説明する。
図24は、本実施の形態4によるソフトウェア管理装置15の動作の一例を示すフローチャートである。
ステップS601において、リビジョン情報取得部2は、リビジョン情報データベース8から対象ファイルのリビジョン情報を取得するとともに、対象ファイルの実行結果を取得する。
ステップS602において、実行結果管理部12は、リビジョン情報取得部2から入力された実行結果とリビジョン情報とを対応付けて実行結果データベース14に格納するように管理する。
ステップS603において、実行結果管理部12は、今回(第2のタイミング)の対象ファイルの実行結果が失敗であるか否かの判断を行う。実行結果が失敗である場合は、ステップS604に移行する。一方、実行結果が失敗でない(すなわち、実行結果が成功である)場合は、ステップS606に移行する。
ステップS604において、実行結果管理部12は、過去(第1のタイミング)に実行結果が成功である親リビジョンのリビジョン情報が実行結果データベース14に格納されているか否かの判断を行う。実行結果が成功である親リビジョンのリビジョン情報が実行結果データベース14に格納されている場合は、ステップS605に移行する。一方、実行結果が成功である親リビジョンのリビジョン情報が実行結果データベース14に格納されていない場合は、処理を終了する。
ステップS605において、実行結果管理部12は、今回のリビジョンのリビジョン情報と、過去に成功した親リビジョンのうちの最新の親リビジョンのリビジョン情報とを実行結果データベース14から抽出して開発者評価部16に出力する。
開発者評価部16は、実行結果管理部12から入力された今回のリビジョンのリビジョン情報と、過去に失敗した最新の親リビジョンのリビジョン情報との差分をとり、当該差分部分に対応するリビジョンをバグ原因候補リビジョン(第1のリビジョン)として記憶する。なお、バグ原因候補リビジョンは、開発者評価部16に記憶してもよく、他の記憶部(図示せず)に記憶してもよい。
例えば、図25に示すソースコード改訂情報が今回(ここでは実行結果は失敗)のリビジョンのリビジョン情報に含まれており、図26に示すソースコード改訂情報が過去に成功した最新の親リビジョンのリビジョン情報に含まれている場合において、開発者評価部16は、各リビジョン情報の差分部分に対応するリビジョン番号「7」およびリビジョン番号「8」をバグ原因候補リビジョンとする。なお、図25はリビジョン番号「8」のときに実行されたソースコード改訂情報を示し、図26はリビジョン番号「6」のときに実行されたソースコード改訂情報を示している。
ステップS606において、開発者評価部16は、バグ原因候補リビジョンが記憶されているか否かの判断を行う。バグ原因候補リビジョンが記憶されている場合は、ステップS607に移行する。一方、バグ原因候補リビジョンが記憶されていない場合は、処理を終了する。
ステップS607において、開発者評価部16は、過去に失敗した最新の親リビジョンのリビジョン情報と、今回(第3のタイミング)のリビジョン(第2のリビジョン)のリビジョン情報との差分をとり、当該差分部分にバグ原因候補リビジョンに対応するソースコードの行が含まれているか否かの判断を行う。バグ原因候補リビジョンに対応するソースコードの行が含まれている場合は、ステップS608に移行する。一方、バグ原因候補リビジョンに対応するソースコードの行が含まれていない場合は、処理を終了する。
ステップS608において、開発者評価部16は、バグ原因候補リビジョンに記憶されているリビジョンの内、当該差分部分のソースコードに改訂を行ったリビジョンのコミッターの開発レベルを下げると判断し、バグ原因候補リビジョンに対応するソースコードの行を今回改訂したコミッターの開発者レベルを上げると判断する。
例えば、図27に示すソースコード改訂情報が今回(ここでは、実行結果は成功)のリビジョンのリビジョン情報に含まれており、図25に示すソースコード改訂情報におけるリビジョン番号「7」およびリビジョン番号「8」がバグ原因候補リビジョンであるものとする。このような場合において、各リビジョン情報の差分部分におけるリビジョン番号「9」に対応するソースコードをリビジョン番号「7」のときに改訂したコミッターの開発レベルを下げると判断し、リビジョン番号「9」のときに改訂したコミッターの開発レベルを上げると判断する。なお、図27は、リビジョン番号「10」のときに実行されたソースコード改訂情報を示している。
ステップS609において、開発者レベル管理部3は、開発者評価部16で特定されたコミッターに対応する開発者の開発者レベルを変更する。具体的には、開発者レベル管理部3は、実行結果が失敗となった原因となるソースコードを改訂したコミッター(図25の例では、リビジョン番号「7」のときに改訂したコミッター)の開発者レベルを下げる。また、開発者レベル管理部3は、実行結果が成功となった(過去の失敗を解消した)原因となるソースコードを改訂したコミッター(図27の例では、リビジョン番号「9」のときに改訂したコミッター)の開発者レベルを上げる。
ステップS610において、バグ原因候補リビジョンとして記憶していたすべてのリビジョンをバグ原因候補リビジョンから消去する。
以上のことから、本実施の形態4によれば、実施の形態3よりも精度良く、過去に改訂を失敗したコミッターを特定することができる。また、過去の失敗を解消したコミッターの評価を上げているため、より適切な開発者の評価を行うことができる。
なお、図24のステップS608とステップS609との間において、開発レベルを変更する判断されたコミッター名と、当該コミッターが改訂したソースコードとを表示し、コミッターの開発レベルを変更するか否かをユーザに確認するようにしてもよい。この場合、開発者の評価をより慎重に行うことができる。
<実施の形態5>
本発明の実施の形態5では、ソフトウェア開発における静的解析工程等の問題のある(バグの原因となる)ソースコードの行が特定できる場合においてエラーまたは警告が出たときに、当該エラーまたは警告を生じさせたコミッターの評価を下げることを特徴としている。以下では、静的解析工程に関してのみ記述するが、問題のあるソースコードの行が特定できるツールを用いる場合は静的解析工程に限らず本実施の形態の対象とすることが可能である。なお、本実施の形態5によるソフトウェア管理装置の構成は、実施の形態3によるソフトウェア管理装置15(図18参照)の構成と同様である。ただし、実行結果データベース14には必ずしも過去のリビジョンの実行結果を蓄積する必要はない。以下では、実施の形態5によるソフトウェア管理装置は、図18に示すソフトウェア管理装置15であるものとして説明する。
図28は、本実施の形態5によるソフトウェア管理装置15の動作の一例を示すフローチャートである。
ステップS701において、リビジョン情報取得部2は、リビジョン情報データベース8から対象ファイルのリビジョン情報を取得するとともに、対象ファイルの実行結果を取得する。ここで、本実施の形態5における対象ファイルの実行結果とは、ソフトウェア開発における静的解析工程での実行結果のことであり、ソースコードのエラーまたは警告が生じている箇所(行)を指摘するものである。静的解析工程では、ソースコードがコーディングルール等に従っているか(コーディングルール等に反していないか)否かを判断しており、ソースコードがコーディングルール等に従っていない場合は、エラーまたは警告を示す実行結果がリビジョン情報取得部2に入力される。また、実行結果およびリビジョン情報は、プラグインで対応付けられてリビジョン情報取得部2に入力される。
例えば、リビジョン情報取得部2は、実行結果と、図29に示すソースコード改訂情報を含むリビジョン情報とを取得する。なお、図29では、今回、リビジョン番号「6」のソースコードの行が改訂されたことを示している。すなわち、リビジョン情報取得部2は、図29に示すソースコード改訂情報を含む対象ファイルのリビジョン情報と、その実行結果を取得する。
ステップS702において、実行結果管理部12は、リビジョン情報取得部2から入力された実行結果とリビジョン情報とを対応付けて実行結果データベース14に格納するように管理する。例えば、図30に示すように、実行結果データベース14には、リビジョン情報取得部2が今回取得したリビジョン番号「6」のリビジョン情報と実行結果(図30では図示せず)が格納されている。
ステップS703において、実行結果管理部12は、今回の対象ファイルの実行結果においてエラーまたは警告が生じている箇所があるか否かの判断を行う。エラーまたは警告が生じている箇所がある場合は、ステップS704に移行する。一方、エラーまたは警告が生じている箇所がない場合は、処理を終了する。
ステップS704において、実行結果管理部12は、今回のリビジョンのリビジョン情報と、過去の最新の親リビジョンのリビジョン情報とを実行結果データベース14から抽出して開発者評価部16に出力する。図30の例では、実行結果管理部12は、リビジョン番号「6」(今回のリビジョン)のリビジョン情報と、リビジョン番号「5」のリビジョン情報とを実行結果データベース14から抽出して開発者評価部16に出力する。
開発者評価部16は、実行結果管理部12から入力された今回のリビジョンのリビジョン情報と、過去の最新の親リビジョンのリビジョン情報との差分をとり、当該差分部分が静的解析によるエラーまたは警告の該当箇所である場合は、当該差分部分の静的解析によるエラーまたは警告の該当箇所を改訂したコミッターの開発者レベルを下げると判断する。図29の例では、リビジョン番号「6」が今回のリビジョンのリビジョン情報と過去の最新の親リビジョンのリビジョン情報との差分部分に該当し、リビジョン番号「6」に対応するソースコードにおいて、「=」の前後にスペースを入れなければならないコーディングルールに従っておらず、静的解析の実行結果においてエラーまたは警告の該当箇所になっている。よって、リビジョン情報よりリビジョン番号「6」のリビジョンのコミッターを特定し、当該コミッターの開発者レベルを下げると判断する。
ステップS705において、開発者レベル管理部3は、開発者評価部16で特定されたコミッターに対応する開発者の開発者レベルを下げる。すなわち、開発者レベル管理部3は、開発者レベルデータベース9に格納されている開発者レベルの更新を行う。例えば、開発者レベルデータベース9に図5に示す開発者レベルが格納されている場合において、開発者レベル管理部3は、開発者評価部16で特定されたコミッター(ここでは「Sasaki」)の開発者レベルを「90」から「80」に下げる(図31参照)。
以上のことから、本実施の形態5によれば、静的解析においてエラーまたは警告が出るソースコードを記述したコミッターの開発レベルを下げているため、より適切な開発者レベルの評価を行うことができる。
なお、図28のステップS704とステップS705との間において、開発レベルを下げると判断されたコミッター名と、当該コミッターが改訂したソースコードとを表示し、コミッターの開発レベルを下げるか否かをユーザに確認するようにしてもよい。この場合、開発者の評価をより慎重に行うことができる。
<実施の形態6>
まず、本実施の形態6によるソフトウェア管理装置の構成について説明する。
図32は、本実施の形態6によるソフトウェア管理装置17の構成の一例を示すブロック図である。
図32に示すように、本実施の形態6によるソフトウェア管理装置17は、ファイルレベル評価部18を備えることを特徴としている。その他の構成および動作は、実施の形態1と同様であるため、ここでは詳細な説明を省略する。
ファイルレベル評価部18は、リビジョン情報取得部2から入力された対象ファイルのリビジョン情報と、開発者レベル管理部3から入力された対象ファイルに寄与する開発者レベルとに基づいて、ソースファイルおよびソフトウェアのうちの少なくとも1つのレベルを評価する。
次に、本実施の形態6によるソフトウェア管理装置17の動作について説明する。
図33は、ソフトウェア管理装置17の動作の一例を示すフローチャートである。なお、図33のステップS801およびステップS802は、図6のステップS101およびステップS102に対応しているため、ここでは説明を省略する。
ステップS803において、ファイルレベル評価部18は、対象ファイルのレベルを評価する。具体的には、ファイルレベル評価部18は、リビジョン情報取得部2から入力された対象ファイルのリビジョン情報と、開発者レベル管理部3から入力された対象ファイルに寄与する開発者レベルとに基づいて、例えば図34に示すような、開発者レベルごとにソースコードの行数を集計する。そして、ファイルレベル評価部18は、対象ファイルのソースコードの全ての行に対して、予め定められた開発者レベル以上のコミッターが改訂したソースコードの行数の割合を算出し、算出した割合をファイルのレベルとする。ここで、予め定められた開発者レベルとは、ユーザが任意に設定したものである。
ステップS804において、ファイルレベル評価部18は、対象ファイルを含む複数のファイルから一のソフトウェアが構成されているか否かの判断を行う。ソフトウェアが対象ファイルを含む複数のファイルから構成されている場合は、ステップS805に移行する。一方、ソフトウェアが対象ファイルを含む複数のファイルから構成されていない場合は、処理を終了する。
ステップS805において、ファイルレベル評価部18は、ソフトウェアを構成する複数のファイルのレベルに基づいて、当該ソフトウェアのレベルを算出する。ソフトウェアのレベルは、例えば、各ファイルのレベルの平均としてもよい。なお、ステップS805の処理を行う場合は、ステップS803においてソフトウェアを構成する各ファイルのレベルが算出されている必要がある。
以上のことから、本実施の形態6によれば、対象ファイルのレベル、または対象ファイルを含むソフトウェアのレベルを把握することができる。
以上で説明したソフトウェア管理装置は、サーバ、および携帯通信端末(例えば、携帯電話、スマートフォン、およびタブレット端末など)を適宜に組み合わせてシステムとして構築されるソフトウェア管理装置にも適用することができる。この場合、ソフトウェア管理装置の各機能あるいは各構成要素は、上記システムを構築する各機能に分散して配置される。
具体的には、一例としてソフトウェア管理装置の機能をサーバに配置することができる。例えば、図35に示すように、ユーザ側に図3に示す表示装置10と同様の機能を有する表示装置10を備え、サーバ19に図3に示すソフトウェア管理装置7と同様の機能を有する各構成要素を備えることによってソフトウェア管理システムを構築することができる。なお、サーバ19に備えられる各構成要素は、適宜にサーバ19および表示装置10に分散して配置するようにしてもよい。また、図12,18,32に示す各構成要素についても同様である。
また、他の一例として、ソフトウェア管理装置の機能をサーバおよび携帯通信端末に配置することができる。例えば、図36に示すように、ユーザ側に図3に示す表示装置10と同様の機能を有する表示装置10を備え、サーバ20に図3に示すリビジョン情報取得部2および開発者レベル管理部3を備え、携帯通信端末21に図3に示す制御部4を備えることによってソフトウェア管理システムを構築することができる。なお、サーバ20および携帯通信端末21に備えられる各構成要素は、適宜に表示装置10、サーバ20、および携帯通信端末21に分散して配置するようにしてもよい。また、図12,18,32に示す各構成要素についても同様である。
上記の構成とした場合であっても、上記の実施の形態と同様の効果が得られる。
また、上記の実施の形態における動作を実行するソフトウェア(ソフトウェア管理方法)を、例えばサーバや携帯通信端末に組み込んでもよい。
具体的には、一例として、上記のソフトウェア管理方法は、ソースファイル内のソースコードの各行に対応するリビジョンと、ソースコードを改訂した改訂者とを含むリビジョン情報を取得し、改訂者を含むソースコードの開発者のレベルを示す開発者レベルを管理し、取得したリビジョン情報に含まれる改訂者に対応する開発者の開発者レベルを抽出し、取得したリビジョン情報と、抽出された開発者レベルとに基づいて、ソースコードの各行を開発者レベルに応じて区別して表示するように制御する。
上記より、上記の実施の形態における動作を実行するソフトウェアをサーバや携帯通信端末に組み込んで動作させることによって、上記の実施の形態と同様の効果が得られる。
なお、図1,3,12,18,32,35,36において、リビジョン情報取得部2、開発者レベル管理部3、制御部4、実行結果管理部12、ソースコード抽出部13、開発者評価部16、およびファイルレベル評価部18の各々は、図2のプロセッサ5がメモリ6等に記憶されたソフトウェアプログラムに従って動作することにより実現された。しかし、これに代えて、リビジョン情報取得部2、開発者レベル管理部3、制御部4、実行結果管理部12、ソースコード抽出部13、開発者評価部16、およびファイルレベル評価部18の各々は、ハードウェア(例えば、電気信号に対して特定の演算あるいは処理を行うように構成された演算/処理回路等)として構成するようにしてもよい。また、上記の両者を混在させてもよい。
また、ソフトウェアのリビジョン情報取得部2、開発者レベル管理部3、制御部4、実行結果管理部12、ソースコード抽出部13、開発者評価部16、およびファイルレベル評価部18の各々と、ハードウェアのリビジョン情報取得部2、開発者レベル管理部3、制御部4、実行結果管理部12、ソースコード抽出部13、開発者評価部16、およびファイルレベル評価部18の各々とを組み合わせた概念として、「部」という語に代えて「処理回路」という語を用いることもできる。
なお、本発明は、その発明の範囲内において、各実施の形態を自由に組み合わせたり、各実施の形態を適宜、変形、省略することが可能である。
本発明は詳細に説明されたが、上記した説明は、すべての態様において、例示であって、この発明がそれに限定されるものではない。例示されていない無数の変形例が、この発明の範囲から外れることなく想定され得るものと解される。
1 ソフトウェア管理装置、2 リビジョン情報取得部、3 開発者レベル管理部、4 制御部、5 プロセッサ、6 メモリ、7 ソフトウェア管理装置、8 リビジョン情報データベース、9 開発者レベルデータベース、10 表示装置、11 ソフトウェア管理装置、12 実行結果管理部、13 ソースコード抽出部、14 実行結果データベース、15 ソフトウェア管理装置、16 開発者評価部、17 ソフトウェア管理装置、18 ファイルレベル評価部、19,20 サーバ、21 携帯通信端末。

Claims (15)

  1. ソースファイル内のソースコードの各行に対応するリビジョンと、前記ソースコードを改訂した改訂者とを含むリビジョン情報を取得するリビジョン情報取得部と、
    前記ソースコードの開発者のレベルを示す開発者レベルを管理し、前記リビジョン情報取得部で取得された前記リビジョン情報に含まれる前記改訂者に対応する前記開発者の前記開発者レベルを抽出する開発者レベル管理部と、
    前記リビジョン情報取得部で取得された前記リビジョン情報と、前記開発者レベル管理部で抽出された前記開発者レベルとに基づいて、前記ソースコードの各行を前記開発者レベルに応じて区別して表示するように制御する制御部と、
    を備える、ソフトウェア管理装置。
  2. 前記開発者レベルは、予め定められたタイミングで更新されることを特徴とする、請求項1に記載のソフトウェア管理装置。
  3. 前記リビジョン情報は、前記改訂者が前記ソースコードを改訂した日時を示す日時情報を含み、
    前記制御部は、前記ソースコードの各行を、前記日時情報に示される前記日時よりも過去でありかつ最新の前記予め定められたタイミングで更新された前記開発者レベルに応じて区別して表示するように制御することを特徴とする、請求項2に記載のソフトウェア管理装置。
  4. 前記ソースコードの実行結果と、前記リビジョン情報取得部で取得された前記リビジョン情報とを対応付けて管理し、今回の前記実行結果は失敗であると判断した場合において、当該今回の前記実行結果に対応する前記リビジョン情報と、前記実行結果は成功であると判断した過去の前記リビジョン情報のうちの最新の前記リビジョン情報とを抽出する実行結果管理部と、
    前記実行結果管理部で抽出された前記今回のリビジョン情報に含まれるソースコードと、前記最新のリビジョン情報に含まれるソースコードとの差分部分における前記ソースコードの行を抽出するソースコード抽出部と、
    をさらに備え、
    前記制御部は、前記ソースコード抽出部で抽出された前記ソースコードの行を区別して表示するように制御することを特徴とする、請求項1に記載のソフトウェア管理装置。
  5. 前記ソースコードの実行結果と、前記リビジョン情報取得部で取得された前記リビジョン情報とを対応付けて管理し、今回の前記実行結果は成功であると判断した場合において、当該今回の前記実行結果に対応する前記リビジョン情報と、前記実行結果は失敗であると判断した過去の前記リビジョン情報のうちの最新の前記リビジョン情報とを抽出する実行結果管理部と、
    前記実行結果管理部で抽出された前記今回の前記実行結果に対応する前記リビジョン情報と、前記最新の前記リビジョン情報との差分部分における前記ソースコードの行を前記過去に改訂した前記改訂者を特定し、特定した前記改訂者に対応する前記開発者の前記開発者レベルを下げる評価を行う開発者評価部と、
    をさらに備えることを特徴とする、請求項1に記載のソフトウェア管理装置。
  6. 前記ソースコードの実行結果と、前記リビジョン情報取得部で取得された前記リビジョン情報とを対応付けて管理する実行結果管理部と、
    第1のタイミングで前記実行結果管理部が前記実行結果は成功であると判断した前記リビジョンと、前記第1のタイミング後の第2のタイミングで前記実行結果管理部が前記実行結果は失敗であると判断した前記リビジョンとの間において改訂された前記リビジョンである第1のリビジョンを特定し、前記第2のタイミング後の第3のタイミングで前記実行結果管理部が前記実行結果は成功であると判断した前記リビジョンである第2のリビジョンにおいて、前記第1のリビジョンで改訂された前記ソースコードの行をさらに改訂したか否かに基づいて前記開発者レベルの評価を行う開発者評価部と、
    をさらに備えることを特徴とする、請求項1に記載のソフトウェア管理装置。
  7. 前記開発者評価部は、前記第2のリビジョンにおいて前記第1のリビジョンで改訂された前記ソースコードの行をさらに改訂したと判断した場合は、前記第1のリビジョンで前記ソースコードの行を改訂した前記改訂者に対応する前記開発者の前記開発者レベルを下げる評価を行うことを特徴とする、請求項6に記載のソフトウェア管理装置。
  8. 前記開発者評価部は、前記第2のリビジョンにおいて前記第1のリビジョンで改訂した前記ソースコードの行をさらに改訂したと判断した場合は、前記第2のリビジョンで前記ソースコードの行を改訂した前記改訂者に対応する前記開発者の前記開発者レベルを上げる評価を行うことを特徴とする、請求項6に記載のソフトウェア管理装置。
  9. 前記ソースコードの実行結果と、前記リビジョン情報取得部で取得された前記リビジョン情報とを対応付けて管理する実行結果管理部と、
    前記実行結果管理部が今回の前記実行結果は失敗であると判断した場合において、当該今回の前記実行結果に対応する前記リビジョン情報と、前記実行結果管理部が管理する過去の最新の前記リビジョン情報との差分部分における前記ソースコードが静的解析によるエラーまたは警告の該当箇所である場合は、前記静的解析によるエラーまたは警告の該当箇所である前記ソースコードの行を改訂した前記改訂者に対応する前記開発者の前記開発者レベルを下げる評価を行う開発者評価部をさらに備えることを特徴とする、請求項1に記載のソフトウェア管理装置。
  10. 前記ソースコード全体に対する、予め定められた前記開発者レベル以上の前記改訂者が改訂した前記ソースコードの行数の割合に基づいて、前記ソースファイルのレベルを評価するファイルレベル評価部をさらに備えることを特徴とする、請求項1に記載のソフトウェア管理装置。
  11. 複数の前記ソースファイルから一のソフトウェアが構成される場合において、
    前記ファイルレベル評価部は、各前記ソースファイルのレベルに基づいて、前記ソフトウェアのレベルを評価することを特徴とする、請求項10に記載のソフトウェア管理装置。
  12. 前記開発者レベル管理部は、プログラミング言語の種別ごとに前記開発者レベルを管理することを特徴とする、請求項1に記載のソフトウェア管理装置。
  13. 前記開発者レベルは、手動で設定されることを特徴とする、請求項1に記載のソフトウェア管理装置。
  14. 前記開発者レベルは、自動で設定されることを特徴とする、請求項1に記載のソフトウェア管理装置。
  15. ソースファイル内のソースコードの各行に対応するリビジョンと、前記ソースコードを改訂した改訂者とを含むリビジョン情報を取得し、
    前記ソースコードの開発者のレベルを示す開発者レベルを管理し、前記取得した前記リビジョン情報に含まれる前記改訂者に対応する前記開発者の前記開発者レベルを抽出し、
    前記取得した前記リビジョン情報と、前記抽出された前記開発者レベルとに基づいて、前記ソースコードの各行を前記開発者レベルに応じて区別して表示するように制御する、ソフトウェア管理方法。
JP2017508942A 2015-03-31 2015-03-31 ソフトウェア管理装置およびソフトウェア管理方法 Active JP6141563B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/060194 WO2016157433A1 (ja) 2015-03-31 2015-03-31 ソフトウェア管理装置およびソフトウェア管理方法

Publications (2)

Publication Number Publication Date
JP6141563B2 JP6141563B2 (ja) 2017-06-07
JPWO2016157433A1 true JPWO2016157433A1 (ja) 2017-06-08

Family

ID=57005451

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017508942A Active JP6141563B2 (ja) 2015-03-31 2015-03-31 ソフトウェア管理装置およびソフトウェア管理方法

Country Status (2)

Country Link
JP (1) JP6141563B2 (ja)
WO (1) WO2016157433A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7116313B2 (ja) * 2018-11-28 2022-08-10 富士通株式会社 修正候補特定プログラム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0490031A (ja) * 1990-08-03 1992-03-24 Fujitsu Ltd エラー検出装置
JP2003005962A (ja) * 2001-06-20 2003-01-10 Canon Inc 文章変更履歴表示方法
JP2008226122A (ja) * 2007-03-15 2008-09-25 Hitachi Software Eng Co Ltd レポジトリサーバ管理システム
JP2014241021A (ja) * 2013-06-11 2014-12-25 株式会社日立製作所 ソフトウェア評価装置および方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0490031A (ja) * 1990-08-03 1992-03-24 Fujitsu Ltd エラー検出装置
JP2003005962A (ja) * 2001-06-20 2003-01-10 Canon Inc 文章変更履歴表示方法
JP2008226122A (ja) * 2007-03-15 2008-09-25 Hitachi Software Eng Co Ltd レポジトリサーバ管理システム
JP2014241021A (ja) * 2013-06-11 2014-12-25 株式会社日立製作所 ソフトウェア評価装置および方法

Also Published As

Publication number Publication date
WO2016157433A1 (ja) 2016-10-06
JP6141563B2 (ja) 2017-06-07

Similar Documents

Publication Publication Date Title
US10102105B2 (en) Determining code complexity scores
US11038947B2 (en) Automated constraint-based deployment of microservices to cloud-based server sets
AU2019202251A1 (en) Automated program code analysis and reporting
US9785421B1 (en) External dependency attribution
CN110489105B (zh) 一种可视化埋点的设置方法、系统、设备及其存储介质
CA2956207C (en) Program code comparison and reporting
KR101588027B1 (ko) 소프트웨어 현지화를 위한 테스트 케이스 생성 장치 및 방법
US11237824B2 (en) Tracking related changes with code annotations
CN107643904B (zh) 代码提交日志的检测方法、装置、介质及电子设备
CN110515679A (zh) 数据采集方法、装置、设备及存储介质
CN111708557A (zh) 更新配置文件的方法、设备及存储介质
JPWO2019026248A1 (ja) プログラム開発支援装置、プログラム開発支援方法、及びプログラム開発支援プログラム
JP6141563B2 (ja) ソフトウェア管理装置およびソフトウェア管理方法
JP6481387B2 (ja) 関連情報提供方法、関連情報提供装置及び関連情報提供プログラム
US20230401177A1 (en) Managing File Revisions From Multiple Reviewers
US20170010901A1 (en) Dynamic creation of job control language cards
EP3346642A1 (en) Method and device for managing network element model
JP6451417B2 (ja) デバッグ支援装置、デバッグ支援システム、デバッグ支援方法、および、デバッグ支援プログラム
CN105159756A (zh) 信息处理方法和信息处理设备
US10872019B2 (en) Load and save recovery partition using mobile device
CN113568834A (zh) Sdk代码的兼容性检测方法、装置、计算机设备和介质
JP6320269B2 (ja) ソフトウェア試験支援装置およびソフトウェア試験支援プログラム
US9542182B2 (en) Standardization of variable names in an integrated development environment
CN113703753A (zh) 用于产品开发的方法、装置和产品开发系统
JP2016114974A (ja) Bios更新装置、方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170302

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20170302

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20170314

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170404

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170502

R150 Certificate of patent or registration of utility model

Ref document number: 6141563

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250