JP2007323299A - レビュー実施順序決定装置、レビュー実施順序決定プログラム、レビュー実施順序決定プログラムが格納された記録媒体およびレビュー実施順序決定方法 - Google Patents

レビュー実施順序決定装置、レビュー実施順序決定プログラム、レビュー実施順序決定プログラムが格納された記録媒体およびレビュー実施順序決定方法 Download PDF

Info

Publication number
JP2007323299A
JP2007323299A JP2006151917A JP2006151917A JP2007323299A JP 2007323299 A JP2007323299 A JP 2007323299A JP 2006151917 A JP2006151917 A JP 2006151917A JP 2006151917 A JP2006151917 A JP 2006151917A JP 2007323299 A JP2007323299 A JP 2007323299A
Authority
JP
Japan
Prior art keywords
review
program
execution order
metrics
bug
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.)
Pending
Application number
JP2006151917A
Other languages
English (en)
Inventor
Toshikazu Hashimoto
俊和 橋本
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.)
Sharp Corp
Original Assignee
Sharp 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 Sharp Corp filed Critical Sharp Corp
Priority to JP2006151917A priority Critical patent/JP2007323299A/ja
Publication of JP2007323299A publication Critical patent/JP2007323299A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】レビューの効率を上げるようなレビュー実施順序決定装置を提供する。
【解決手段】レビュー実施順序決定装置100のCPU120は、ソースプログラムのメトリックスを測定するためのメトリックス測定部202と、レビュー対象のメトリックスに基づきレビュー作業に要する時間を算出するためのレビュー作業所要時間予測部204と、レビュー対象のメトリックスに基づきレビュー対象のプログラムに含まれる可能性のあるバグの数を算出するためのバグ数予測部206と、レビュー対象候補のソースプログラムから単位時間あたりに検出されるバグ数を算出するためのレビュー作業効率予測部208と、レビューを実施する順序を決定するためのレビュー実施順序決定部210とを有する。
【選択図】図2

Description

本発明は、ソフトウェア開発において、そのレビュー作業に使用される技術に関する。特に、レビューの順序を決定するための装置、レビューの順序を決定するためのプログラム、レビューの順序を決定するためのプログラムが格納された記録媒体およびレビューの順序を決定する方法に関する。
現在、さまざまな分野でコンピュータが日常的に使われている。このため、コンピュータを制御するためのソフトウェアに欠陥があったときにもたらされる誤作動により、社会に与える影響は非常に大きなものとなる可能性がある。このような事態を防ぐために、ソフトウェア開発においては、ソフトウェアの信頼性を確保することが重要である。
その一方で、市場の競争激化によってソフトウェアの開発期間の短縮化が要請されており、ソフトウェア開発において、ソースプログラムの品質上問題となる箇所を検出するためのレビュー作業に割くことができる時間は限られる。このため、効率よくレビューを行ない、短時間にできるだけ多くのバグを検出する必要がある。
効率よくレビューを行なうには、単位時間当たりに検出されるバグ数が最も多いと予測されるソースプログラムからレビューを行なうことが、開発するソフトウェアの品質を確保する上で望ましい。
特許文献1では、ソースプログラムの品質を示すメトリックスを用いて効率的なレビューを支援する方法が示されている。この方法によれば、まず、ソースプログラムから測定される、3つのメトリックス(サイクロマティック複雑度、制御構造の最大ネスティング数、ステップ数)と、それぞれのメトリックスの重要度を用いて、品質値を算出する。そして、この品質値が大きいほど、潜在的なバグが多く含まれるとして、品質値が大きいものからレビューするようにレビュー順序が決定される。
特開平9−212387号公報
しかしながら、特許文献1の発明は、レビューに要する時間を考慮せず、潜在的に含まれるバグ数のみから、レビューを行なうソースプログラムの順序が決定される。このため、複数のソースプログラムの中で最もレビューに時間を要するものが、最先にレビューを実施するように決定される場合がある。この場合、限られたレビュー時間内において、より多くのバグを検出するという、効率的なレビューが実行できない可能性がある。
また、特許文献1の発明では、バグ数を予測する際に、過去にバグの少ないプログラムを作成してきたプログラマが作成するプログラムはバグが少ない傾向にあることが考慮されていない。このため、予測したバグ数の精度が低くなる傾向にある。
本発明は、上記の問題を改善するために成されたものであって、その目的は、レビューの効率を上げるようなレビュー実施順序決定装置を提供することにある。
本発明の1つの局面に従うと、バグを検出するためのレビューの対象である複数のプログラムと、プログラムごとの構造を示す第1のメトリックスとを関連付けて記憶するための記憶手段と、第1のメトリックスに基づき、プログラムごとに第1のバグ数を算出するためのバグ数予測手段と、第1のメトリックスに基づき、プログラムごとにレビューに要する時間を算出するためのレビュー所要時間予測手段と、第1のバグ数とレビューに要する時間とから、プログラムごとに、単位時間あたりに検出される第2のバグ数を算出するためのレビュー作業効率予測手段と、第2のバグ数に基づき、複数のプログラムに対してレビューを実行する順序を決定するためのレビュー実施順序決定手段とを備える、レビュー実施順序決定装置を提供する。
好ましくは、レビュー実施順序決定手段は、第2のバグ数の大きな順にレビューを実行するよう順序を決定する。
好ましくは、第1のメトリックスは、プログラムの規模およびプログラムに含まれる制御文の数に依存する数である第1の複雑度を含み、レビュー所要時間予測手段は、プログラムごとの規模および第1の複雑度の増加に伴って増加するよう予め定められた関係式に基づいて、レビューに要する時間を算出する。
好ましくは、バグ数予測手段は、第1の複雑度の増加に伴って増加するよう予め定められた関係式に基づいて、第1のバグ数を算出する。
好ましくは、記憶手段は、過去に作成された複数のプログラムごとの第2の複雑度と、過去に作成された複数のプログラムごとに含まれていた第3のバグ数とを関連付けて記憶し、バグ数予測手段は、第2の複雑度と第3のバグ数とが指数分布に従うとして、第2の複雑度および第3のバグ数に対して行なった回帰分析から求めた結果に基づいて、第1の複雑度により第1のバグ数を算出する。
好ましくは、記憶手段は、レビューの対象となる複数のプログラムごとの作成者と、作成者が過去に作成したプログラムの情報とを関連付けて記憶し、バグ数予測手段は、レビューの対象となるプログラムの作成者が過去に作成したプログラムの情報に基づいて、第1の複雑度の増加に伴って増加するよう予め定められた関係式により第1のバグ数を算出する。
好ましくは、作成者が過去に作成したプログラムの情報は、過去に作成したプログラムの第3の複雑度および過去に作成したプログラムに含まれていた第4のバグ数との関連付けを含み、バグ数予測手段は、第3の複雑度と第4のバグ数とが指数分布に従うとして、第3の複雑度および第4のバグ数に対して行なった回帰分析から求めた結果に基づいて、第1の複雑度により第1のバグ数を算出する。
本発明の他の局面に従うと、バグを検出するためのレビューの対象である複数のプログラムに対して、レビューを実行する順序を決定する処理を、演算部および記憶部を有するコンピュータに実行させるためのプログラムであって、演算部が、レビューの対象である複数のプログラムと、プログラムごとの構造を示す第1のメトリックスとを記憶部から読み込むステップと、演算部が、第1のメトリックスに基づき、プログラムごとに第1のバグ数を算出するステップと、演算部が、第1のメトリックスに基づき、プログラムごとにレビューに要する時間を算出するステップと、演算部が、第1のバグ数とレビューに要する時間とから、プログラムごとに、単位時間あたりに検出される第2のバグ数を算出するステップと、演算部が、第2のバグ数に基づき、複数のプログラムに対して、レビューを実行する順序を決定するステップとを備える。
本発明のさらに他の局面に従うと、上記レビュー実施順序決定プログラムを格納したコンピュータ読み取り可能な記録媒体を提供する。
本発明のさらに他の局面に従うと、バグを検出するためのレビューの対象である複数のプログラムに対して、レビューを実行する順序を決定する方法であって、レビューの対象である複数のプログラムと、プログラムごとの構造を示す第1のメトリックスとを読み込むステップと、第1のメトリックスに基づき、プログラムごとに第1のバグ数を算出するステップと、第1のメトリックスに基づき、プログラムごとにレビューに要する時間を算出するステップと、第1のバグ数とレビューに要する時間とから、プログラムごとに、単位時間あたりに検出される第2のバグ数を算出するステップと、第2のバグ数に基づき、複数のプログラムに対して、レビューを実行する順序を決定するステップとを備える。
本発明によれば、レビュー作業効率に基づいて、レビュー実施順序を決定する。これにより、効率的なレビュー作業を行なうことができる。したがって、限られた時間でより多くのバグを検出できるため、効率的にソフトウェア開発を行なうことが可能である。
以下、図面を参照しつつ本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについては詳細な説明は繰り返さない。
本発明に係るレビュー実施順序決定装置は、以下で説明するように、レビュー対象となるプログラムの実施順序をレビュー作業効率が高いものから順に実施するよう順番を決定するものである。これにより、効率的なレビュー作業を行なうことができる。
[実施の形態1]
図1は、実施の形態1に係るレビュー実施順序決定装置100の構成例を示すブロック図である。
図1を参照して、レビュー実施順序決定装置100の構成について説明する。
レビュー実施順序決定装置100は、コンピュータ本体102と、コンピュータ本体102とバス126を介して接続される、フレキシブルディスク(Flexible Disk、以下FD)116に情報を読み書きするためのFDドライブ106と、CD−ROM(Compact Disc Read-Only Memory)118等の光ディスク上の情報を読み込むための光ディスクドライブ108と、外部とデータの授受を行なうための通信インターフェイス128と、表示装置としてのモニタ104と、入力装置としてのキーボード110およびマウス112とを備える。また、通信インターフェイス128を経由して、外部より、レビューを実施すべきソースプログラムのファイル名のリストであるレビュー対象候補140およびソースプログラムのファイルとしてソースプログラム142が与えられる。コンピュータ本体102は、バス126に接続されたCPU(Central Processing Unit)120と、ROM(Read Only Memory)およびRAM(Random Access Memory)を含むメモリ122と、直接アクセスメモリ装置、たとえば、ハードディスク124を含む。
ハードディスク124は、メトリックス130と、レビュー作業予測所要時間132と、予測バグ数134と、レビュー作業効率136と、レビュー実施順序138とを保存する。
また、光ディスクドライブ108にはCD−ROM118などの光ディスクが装着される。FDドライブ106にはFD116が装着される。なお、CD−ROM118は、コンピュータ本体に対してインストールされるプログラム等の情報を記録可能な媒体であれば、他の媒体、たとえば、DVD−ROM(Digital Versatile Disc)やメモリーカードなどでもよく、その場合は、コンピュータ本体102には、これらの媒体を読み取ることが可能なドライブ装置が設けられる。
レビューの実施順序を決定するためのプログラム(以下、「実施順序決定プログラム」と呼ぶ)は、FD116またはCD−ROM118等の記録媒体によって供給される。実施順序決定プログラムがコンピュータ本体102によって実行されることにより、上述のようなレビューの実施順序が決定される。また、実施順序決定プログラムは、他のコンピュータより通信インターフェイス128を経由しコンピュータ本体102に供給されてもよい。
また、本実施の形態では、レビュー対象候補140およびソースプログラム142は、通信インターフェイス128を介してコンピュータ本体102に与えられるが、記録媒体によって供給されてもよい。
CPU120は、メモリ122をワーキングメモリとして、上述の実施順序決定プログラムに従った処理を実行する。
実施順序決定プログラムは、上述の通り、CPU120により実行されるソフトウェアである。一般的に、こうしたソフトウェアは、CD−ROM118、FD116等の記憶媒体に格納されて流通し、光ディスクドライブ108またはFDドライブ106等により記録媒体から読み取られてハードディスク124に一旦格納される。または、コンピュータ100がネットワークに接続されている場合には、ネットワーク上のサーバから一旦ハードディスク124にコピーされる。そうしてさらにハードディスク124からメモリ122中のRAMに読み出されてCPU120により実行される。なお、ネットワーク接続されている場合には、ハードディスク124に格納することなくRAMに直接ロードして実行するようにしてもよい。
図1に示したコンピュータのハードウェア自体およびその動作原理は一般的なものである。したがって、本発明の機能を実現するに当り本質的な部分は、FD116、CD−ROM118、ハードディスク124等の記録媒体に記憶されたソフトウェアである。
図2は、レビュー実施順序決定装置100のCPU120の機能的構成を示すブロック図である。
図2を参照して、レビュー実施順序決定装置100のCPU120の機能的構成を説明する。
CPU120は、ソースプログラムのメトリックスを測定するためのメトリックス測定部202と、レビュー対象のメトリックスに基づきレビュー作業に要する時間を算出するためのレビュー作業所要時間予測部204と、レビュー対象のメトリックスに基づきレビュー対象のプログラムに含まれる可能性のあるバグの数を算出するためのバグ数予測部206と、レビュー対象候補のソースプログラムから単位時間あたりに検出されるバグ数(以下、「レビュー作業効率」と呼ぶ)を算出するためのレビュー作業効率予測部208と、レビューを実施する順序を決定するためのレビュー実施順序決定部210とを有する。
記憶部220は、ハードディスク124と通信インターフェイス128を介して接続される外部の記憶装置等を総称したものである。
記憶部220は、レビューを実施すべきソースプログラムのプログラム名のリストであるレビュー対象候補140と、ソースプログラムのファイルが格納されているソースプログラム142と、メトリックス測定部202により測定されたメトリックス130と、バグ数予測部206により予測されたバグ数である予測バグ数134と、レビュー作業効率予測部208により算出されたレビュー作業効率136と、レビュー実施順序決定部210により決定された実施順序であるレビュー実施順序138とを保存する。
メトリックス測定部202は、ソースプログラム142からレビュー対象候補140より得たプログラム名のソースプログラムを取得し、そのメトリックスを測定する。
ここで、本発明におけるメトリックスについて説明する。メトリックスとは、プログラムから計算可能な数値である。メトリックスの例として、コード行数、プログラムに含まれる制御文の数に依存する数(たとえば、サイクロマティック複雑度、制御構造の最大ネスティング数)、関数の呼び出し数といった数値が挙げられる。
以下において、サイクロマティック複雑度および制御構造の最大ネスティング数について説明する。
文献:Roger S. Pressman著「Software Engineering」McGraw-Hill College; 4th版 (1996/08) ISBN:0070521824によれば、サイクロマティック複雑度は、プログラムのフローグラフを利用して求めることについて記載されている。
図3は、プログラムの一例を示した図である。
図4は、図3に示すプログラムに対応するフローグラフを示した図である。
図3および図4を参照して、フローグラフについて説明する。
フローグラフとは、プログラムを逐次命令群と、制御文(if文やwhile文)に分け、それぞれを頂点とし、処理の順に頂点と頂点を有向枝で結んだものである。
図3に示すプログラムでは、コマンドC1,C4,C5,C7〜C9が逐次命令群であり、コマンドC2,C3,C6が制御文である。
図4に示すグラフは、頂点集合と有向枝の集合からなる。頂点集合は、頂点v〜v、有向枝の集合は、枝e〜e11を要素に持つ。各頂点は、図3で示した各コマンドに対応している。たとえば、頂点vは、コマンドC1に対応している。各枝は、各コマンドの処理の流れを示している。たとえば、図3において、コマンドC1からC2へ処理される。この場合、C1に対応する頂点vを始点、C2に対応する頂点vを終点とする枝eがコマンドC1からC2へ処理の流れを示している。
サイクロマティック複雑度Sは、プログラムのフローグラフの頂点数Nと枝数Eを用いて、S=E−N+2のように定義される。
たとえば、図3に示すプログラムのサイクロマティック複雑度Sを考える。図4のフローグラフでは、頂点数は9、枝数は11である。したがって、サイクロマティック複雑度Sは、11−9+2=4となる。
次に、制御構造の最大ネスティング数について説明する。
制御構造の最大ネスティング数とは、プログラム中の制御構造(条件判定、ループ)がネストしている(入れ子になっている)段数(ネスティング数)の最大値である。たとえば、図3に示すプログラムの最大ネスティング数を考える。行番号6,14の行においてif文が入れ子になっているので、最大ネスティング数は1である。
本発明では、サイクロマティック複雑度をメトリックスとして用いるが、プログラムの品質を定量的に示す値であれば、上記で挙げた例以外の数であってもよい。
レビュー作業所要時間予測部204は、メトリックス130からレビュー対象候補であるソースプログラムのメトリックスを取得し、レビュー作業予測所要時間132を算出する。一般的に、プログラムの規模が大きくなるほどレビューに要する時間は長くなる傾向にある。また、複雑度が高いほど、そのプログラムを理解するのに多くの時間を要することが考えられる。そこで、本実施の形態では、プログラムの規模および複雑度が増大するにつれて、レビュー作業に要する時間も長くなるという関係に基づきレビュー作業予測所要時間を算出する。
バグ数予測部206は、メトリックス130からレビュー対象候補のメトリックスを取得し、予測バグ数134を算出する。上記のように、メトリックスが高いほどバグが含まれている可能性が高い。このため、本実施の形態では、あるプログラムのメトリックスmが定まると、そのプログラムの予測バグ数bが一意に定まるという前提で、予測バグ数bをメトリックスmの関数b=f(m)として算出する。
この関数f(m)は、過去に作成されたソースプログラムのメトリックスmと、実績バグ数Bの間の関係を用いて導かれる。たとえば、回帰分析により、実績バグ数Bがメトリックスmの指数関数B=c1×e(c2×m)(ただし、c1,c2は定数)で近似できた場合、b=f(m)=c1×e(c2×m)を用いて予測バグ数bを算出する。
レビュー作業効率予測部208は、レビュー作業予測所要時間132と予測バグ数134とから、単位時間あたりに検出されるバグ数であるレビュー作業効率136を算出する。
レビュー実施順序決定部210は、レビュー作業効率136に基づき、レビュー作業効率の高い順にレビュー対象候補を並び替え、レビュー実施順序138を決定する。
以上のように、レビュー実施順序決定装置100は、レビュー対象候補に対して、レビューを実施すべき順序を決定する。以下に、レビュー実施順序決定装置100が実行する処理について説明する。
図5は、レビュー実施順序決定装置100がレビューの実施順序を決定する処理の流れを示したフローチャートである。
図5を参照して、レビュー実施順序決定装置100がレビューの実施順序を決定する処理の一例について説明する。
まず、S300では、CPU120は、通信インターフェイス128を介して与えられるレビュー対象候補140から、レビュー対象候補であるソースプログラムのプログラム名リストS(={s1,s2,・・・,sn}(ただし、nはユーザが入力したレビュー対象のプログラム数を示す。以下、同様。))を読み込みハードディスク124に一旦格納する。
同様に、CPU120は、通信インターフェイス128を介して与えられるソースプログラム142から、レビュー対象候補のリストSに従って、レビュー対象候補のソースプログラムを読み込みハードディスク124に一旦格納する。
図6は、レビュー対象候補の一例である。
図6を参照して、レビュー対象候補Sのデータ構造の一例について説明する。
図6において、たとえば、レビュー対象候補Sとして、s1からs6が与えられている。s1からs6は、ポインタ変数であり、これらを参照して、ソース1からソース6というようにソースプログラム名を得ることができる。
また、S300では、CPU120は、プログラム名により、s1からs6と、レビュー対象候補のソースプログラム名に基づき読み込んだソースプログラムとを関連付けておくこともできる。これにより、s1からs6を参照することで、ソースプログラムも得ることができる。
なお、本実施の形態では、レビュー対象候補としてポインタ変数が与えられるとしたが、文字列でプログラム名が与えられていてもよいし、レビュー対象のソースプログラム名が得られれば他の形式でもよい。
図5に戻って、S302では、CPU120は、S300で読み込んだソースプログラムのメトリックスM(S)(={m(s1),・・・,m(sn)})を測定し、ハードディスク124内のメトリックス130に格納する。
ここで、本実施の形態では、ソースプログラムsのメトリックスm(s)として、ソースプログラムsのコード行数l(s)およびソースプログラムsの複雑度f(s)を測定する。なお、複雑度としては、上述したように、サイクロマティック複雑度や制御構造の最大ネスティング数といった、プログラム中の制御文の数に依存するメトリックスを利用する。複雑度f(s)はサイクロマティック複雑度、制御構造の最大ネスティング数のいずれかを単独で利用しても、また、これら二つのメトリックスそれぞれに適当な重みをかけて足し合わせた値を利用しても良い。
図7は、レビュー対象候補とメトリックスおよびその他の算出結果を関連付けた図である。
図7を参照して、レビュー対象候補のメトリックスM(S)の一例について説明する。
図7において、レビュー対象候補Sのプログラム名を表わす列51と、メトリックスM(S)を表わす列52と、レビュー作業予測所要時間T(S)を表わす列53と、予測バグ数B(S)を表わす列54と、レビュー作業効率E(S)を表わす列55とが示されている。
図6で示したソースプログラムに対して、CPU120が列52に示されるように、メトリックスとしてコード行数と複雑度を測定したとする。たとえば、ソース1のメトリックスm(s1)は、コード行数l(s1)が250、複雑度f(s1)が10である。
図5に戻って、S304では、CPU120は、S302で測定したメトリックスに基づき、レビュー作業所要時間T(S)(={t(s1),・・・,t(sn)})を算出し、ハードディスク124内のレビュー作業予測所要時間132に格納する。
ここで、上述したように、本実施の形態では、レビュー作業予測所要時間は、プログラムの規模(コード行数)および複雑度が増加するにつれて増加する関係にあるとする。ここでは、一例として、次の式(1)のように計算する。
Figure 2007323299
ただし、a1は次のようにして算出された定数である。式(1)に、過去にレビューを実施した複数のプログラムごとのコード行数、複雑度および実際に実施したレビューに要した時間を代入し、それぞれa1を算出する。そして、これらの平均値をa1とする。
a1については、予め算出して入力してもよいし、CPU120が、ソースプログラム142から過去にレビューを実施したソースプログラムの情報を読み込み、これらのメトリックス等をもとに算出してもよい。この際、ソースプログラム142には、過去にレビューを実施したソースプログラムごとに、ソースプログラムの情報として、実際に要したレビュー作業時間やレビュー時に指摘されたバグ数が保存されているものとする。また、過去にレビューを実施したソースプログラムを読み込んで、メトリックスを測定してもよいし、予め、ソースプログラムの情報としてメトリックスを保存しておいてもよい。
図7において、列53にレビュー作業予測所要時間T(S)を算出した結果を示す。なお、ここでは、例として、a1=0.1とする。たとえば、ソース1(コード行数l(s1)=250,複雑度f(s1)=10)に対し、式(1)に従ってレビュー作業予測所要時間t(s1)を計算すれば、t(s1)(=0.1×250×10)=250となる。
図5に戻って、S306では、CPU120は、S302で測定したメトリックスに基づき、予測バグ数B(S)(={b(s1),・・・,b(sn)})を算出し、ハードディスク124内の予測バグ数134に格納する。
ここで、上述したように、本実施の形態では、予測バグ数は、プログラムの複雑度が増大するにつれて増加する関係にあるとする。一例として、式(2)のように計算する。
Figure 2007323299
ただし、a2,a3は次のようにして算出された定数である。
ここでは、過去に作成された複数のプログラムごとの複雑度とプログラムごとのレビュー時に検出されたバグ数とが指数分布に従うとして、複雑度とバグ数に対して回帰分析を行なう。まず、式(2)を式(3)のように変換する。
Figure 2007323299
そして、式(3)と、過去に作成されたソースプログラムの複雑度FとBの組(F,B),・・・,(F,B)(ただし、nは過去に作成されたソースプログラムの数を示す。)を用いて、次の式(4)および式(5)によりa2,a3を算出する。
Figure 2007323299
a2,a3については、予め算出して入力してもよいし、CPU120が、過去にレビューを実施したソースプログラムの情報を読み込み、これをもとに算出してもよい。なお、過去にレビューを実施したプログラムの情報には、上述したように、過去にソースプログラムのレビュー時に指摘されたバグ数やメトリックスが保存されているものとする。
図7において、列54に予測バグ数B(S)を算出した結果を示す。なお、ここでは、例として、a2=1,a3=0.1とする。たとえば、ソース1(複雑度f(s1)=10)に対し、式(2)に従って予測バグ数b(s1)を計算すれば、b(s1)(=1×e(0.1×10))=2.72となる。
図5に戻って、S308では、CPU120は、レビュー作業予測所要時間132および予測バグ数134から、レビュー作業効率E(S)(={e(s1),・・・,e(sn)})を算出し、ハードディスク124内のレビュー作業効率136に格納する。
上述のように、ソースプログラムsのレビュー作業効率e(s)は、単位時間あたりに検出されるバグ数である。レビュー作業予測所要時間t(s)と予測バグ数b(s)とを用い、式(6)のように計算する。
Figure 2007323299
図7において、列55にレビュー作業効率E(S)を算出した結果を示す。たとえば、ソース1(レビュー作業予測所要時間t(s1)=250、予測バグ数b(s1)=2.72)に対し、式(6)に従ってレビュー作業効率e(s1)を計算すれば、e(s1)(=2.72÷250)=0.011となる。
図5に戻って、S310では、CPU120は、レビュー作業効率136に基づき、レビュー実施順序を決定し、ハードディスク124内のレビュー実施順序138に格納する。ここでは、上述のように、レビュー作業効率の値が大きいものから順に並べる。
図8は、レビュー実施順序の出力例である。
図8を参照して、決定されたレビュー実施順序について説明する。
図7の列55で示されるレビュー作業効率E(s)の中で、一番値が大きいものはソース5である。したがって、図8において、ソース5が最先にレビューを実施すべきものとして最上位に位置付けられる。以下、レビュー作業効率が高い順に並べられる。
なお、上記で述べたレビュー実施順序決定の手順は一例である。レビュー作業所要時間の算出や予測バグ数の算出をする等の手順は、上記で述べた順に実行することに限られない。
以上のように、本実施の形態に係るレビュー実施順序決定装置によれば、レビュー作業効率に基づいて、レビュー実施順序を決定する。これにより、効率的なレビュー作業を行なうことができる。したがって、限られた時間でより多くのバグを検出できるため、効率的にソフトウェア開発を行なうことが可能である。
[実施の形態2]
本実施の形態に係るレビュー実施順序決定装置によれば、レビュー対象のソースプログラムを作成したプログラマによって過去に作成されたソースプログラムのレビュー時に検出されたバグ数と、そのソースプログラムのメトリックスとの相関関係に基づいて算出したレビュー作業効率により、レビュー順序を決定する。このため、予測バグ数の精度を上げることができる。
図9は、実施の形態2に係るレビュー実施順序決定装置700の構成例を示すブロック図である。
図9を参照して、レビュー実施順序決定装置700の構成について説明する。
レビュー実施順序決定装置700は、実施の形態1に係るレビュー実施順序決定装置100の構成に加え、通信インターフェイス128に対してプログラマ別データベース144が接続される。また、ハードディスク124はプログラマ別メトリックス・バグ数関係式131をさらに保存する。これら以外の構成は、レビュー実施順序決定装置100と同じである。
プログラマ別データベース144は、過去にレビューが行なわれたソースプログラムのプログラマ名と、そのプログラマが作成したソースプログラムのメトリックスおよびレビュー時に検出されたバグの数(以下、「実績バグ数」と呼ぶ)とを関連付けて保存している。
なお、本実施の形態では、プログラマ別データベース144は、通信インターフェイス128を介してコンピュータ本体102に与えられるが、記録媒体によって供給されてもよい。
図10は、レビュー実施順序決定装置700のCPU120の機能的構成を示すブロック図である。
図10を参照して、レビュー実施順序決定装置700のCPU120の機能的構成を説明する。
CPU120は、実施の形態1に係るCPU120のバグ数予測部206に代えて、メトリックス・バグ数関係式決定部203とプログラマ別バグ数予測部205とを有する。
また、記憶部220は、実施の形態1に係る記憶部220の構成に加え、プログラマ別データベース144とプログラマ別メトリックス・バグ数関係式131とを保存する。
メトリックス・バグ数関係式決定部203は、プログラマ別データベース144からレビュー対象のソースプログラムを作成したプログラマによって過去に作成された複数のソースプログラムのメトリックスおよび実績バグ数を取得する。そして、メトリックスが定まると、予測バグ数が一意に定まるものと考え、予測バグ数をメトリックスの関数として算出する。次いで、この関数をプログラマ別メトリックス・バグ数相関関係131として出力する。
プログラマ別バグ数予測部205は、メトリックス130からレビュー対象のソースプログラムのメトリックスを取得すると共に、プログラマ別メトリックス・バグ数関係式131からプログラマ別のメトリックスとバグ数の関係式を取得する。そして、プログラマ別の関係式に基づき、メトリックスにより予測バグ数134を算出する。なお、実施の形態1で述べたように、複雑度が高いプログラムほど多くのバグが含まれていると考えられる。このため、本実施の形態においても、予測バグ数は、プログラムの複雑度が増大するにつれて、増加する量であるとする。
これら以外の構成は、レビュー実施順序決定装置100と同じであり、プログラマ別にメトリックスとバグ数との相関関係を考慮してレビューを実施すべき順番を決定する。以下に、レビュー実施順序決定装置700が実行する処理について説明する。
図11は、レビュー実施順序決定装置700がレビューの実施順序を決定する処理の流れを示したフローチャートである。
図11を参照して、レビュー実施順序決定装置700がレビューの実施順序を決定する処理について説明する。
まず、S900では、CPU120は、通信インターフェイス128を介して与えられるレビュー対象候補140から、レビュー対象候補であるソースプログラムのプログラム名リストS(={s1,s2,・・・,sn}(ただし、nはユーザが入力したレビュー対象のプログラム数を示す。))を読み込みハードディスク124に一旦格納する。
図12は、レビュー対象候補の一例である。
図12を参照して、レビュー対象候補のデータ構造の一例について説明する。
図12で示されるレビュー対象候補S={s1,s2,・・・,s6}は、実施の形態1における図6で示されたレビュー対象候補と同じデータ構造である。CPU120は、このようなレビュー対象候補Sを読み込む。
図11に戻って、S902では、CPU120は、通信インターフェイス128を介して与えられるソースプログラム142から、レビュー対象候補Sのリストに従って、レビュー対象候補のソースプログラムおよび、そのソースプログラムを作成したプログラマのプログラマ名P(S)(={p(s1),・・・,p(sn)})を読み込み、ハードディスク124に一旦格納する。
図13は、ソースプログラム名とそのソースプログラムを作成したプログラマ名とが関連付けを示す図である。
図13を参照して、S902で読み込んだソースプログラム名とプログラマ名とについて説明する。
CPU120は、図13で示すように、レビュー対象となるソースプログラム名と、そのソースプログラムを作成したプログラマ名とを関連付けてハードディスク124に一旦格納する。図13では、たとえば、ソース1の作成者は、プログラマaである。
図11に戻って、S904では、CPU120は、S900で読み込んだソースプログラムのメトリックスM(S)(={m(s1),・・・,m(sn)})を測定し、ハードディスク124内のメトリックス130に格納する。
本実施の形態では、実施の形態1と同様に、ソースプログラムsのメトリックスm(s)として、ソースプログラムsのコード行数l(s)およびソースプログラムsの複雑度f(s)を測定する。
図14は、レビュー対象候補とメトリックスおよび算出結果を関連付けた図である。
図14を参照して、レビュー対象候補のメトリックスの一例について説明する。
図14において、レビュー対象候補Sのプログラム名を表わす列10と、プログラムの作成者であるプログラマ名P(S)を表わす列11と、メトリックスM(S)を表わす列12と、レビュー作業予測所要時間T(S)を表わす列13と、メトリックス・バグ数関係式C(S)を表わす列14と、予測バグ数B(S)を表わす列15と、レビュー作業効率E(S)を表わす列16とが示されている。
本実施の形態では、列12に示されるように、CPU120がメトリックスM(S)として、コード行数と複雑度を測定したとする。たとえば、ソース2のメトリックスm(s2)は、コード行数l(s2)が500、複雑度f(s2)が10である。
図11に戻って、S906では、CPU120は、S904で測定したメトリックスに基づき、レビュー作業所要時間T(S)(={t(s1),・・・,t(sn)})を算出し、ハードディスク124内のレビュー作業予測所要時間132に格納する。
なお、レビュー作業予測所要時間の算出は実施の形態1と同様に、式(1)に従って算出する。
図14において、列13にレビュー作業予測所要時間を算出した結果を示す。なお、ここでは、例として、a1=0.1とする。たとえば、ソース2のプログラム(コード行数l(s2)=500,複雑度f(s2)=10)に対し、式(1)に従ってレビュー作業予測所要時間t(s2)を計算すれば、t(s2)(=0.1×500×10)=500となる。
図11に戻って、S908では、CPU120は、プログラマ別のメトリックス・バグ数関係式131より、プログラマ別のメトリックス・バグ数関係式C(S)を取得する。メトリックス・バグ数関係式の算出方法については後述する。
図14において、列14に取得したメトリックス・バグ数関係式C(S)を示す。図14に示されるように、プログラマごとに対応した関係式が算出される。
図11に戻って、S910では、CPU120は、メトリックス130からメトリックスM(S)を取得し、メトリックス・バグ数関係式C(S)に基づき、予測バグ数B(S)(={b(s1),・・・,b(sn)})を算出する。そして、ハードディスク124内の予測バグ数134に格納する。
図14において、列15に予測バグ数B(S)を算出した結果を示す。たとえば、ソース2(複雑度f(s2)=10)に対し、メトリックス・バグ数関係式C(s2)に従って予測バグ数b(s2)を計算すれば、b(s2)(=0.5×e(0.1×10))=1.36となる。
図11に戻って、S912では、CPU120は、レビュー作業予測所要時間132および予測バグ数134から、レビュー作業効率E(S)(={e(s1),・・・,e(sn)})を算出し、ハードディスク124内のレビュー作業効率136に格納する。
ソースプログラムsのレビュー作業効率e(s)は、上述したように、式(6)に従って算出する。
図14において、列16にレビュー作業効率E(S)を算出した結果を示す。たとえば、ソース2(レビュー作業予測所要時間t(s2)=500、予測バグ数b(s2)=1.36)に対し、式(6)に従ってレビュー作業効率e(s1)を計算すれば、e(s2)(=1.36÷500)=0.003となる。
図11に戻って、S914では、CPU120は、レビュー作業効率136に基づき、レビュー実施順序を決定し、ハードディスク124内のレビュー実施順序138に格納する。ここでは、上述のように、レビュー作業効率の値が大きいものから順に並べる。
図15は、レビュー実施順序の出力例である。
図15を参照して、決定されたレビュー実施順序について説明する。
図14の列16で示されるレビュー作業効率E(s)の中で、一番値が大きいものはソース5である。したがって、図15において、ソース5が最先にレビューを実施すべきものとして最上位に位置付けられる。以下、レビュー作業効率が高い順に並べられる。
なお、上記で述べたレビュー実施順序決定の手順は一例である。レビュー作業所要時間の算出や予測バグ数の算出、プログラマ別メトリックス・バグ数関係式の取得は、上記で述べた順に実行することに限られない。
次に、ステップS908で取得した、メトリックス・バグ数関係式の算出方法について説明する。
図16は、メトリックス・バグ数相関関係式を算出する手順を示したフローチャートである。
図16を参照して、メトリックス・バグ数相関関係式の算出について説明する。
S1400で、CPU120は、プログラマ別データベース144より、S902で取得したプログラマ名に従って、プログラマ別のメトリックスと実績バグ数をハードディスク124に一旦格納する。
図17は、プログラマ別のメトリックスと実績バグ数との関連付けを示した図である。
図17を参照して、プログラマ別のメトリックスと実績バグ数との関連付けについて説明する。
CPU120は、図17に示すように、プログラマ別にメトリックスと実績バグ数とを関連付けて読み込み、ハードディスク124に一旦格納する。たとえば、図17では、ファイル20では、プログラマaについてのメトリックスと実績バグ数とが関連付けて示されている。なお、ここでは、メトリックスとして複雑度が示されている。
同様にファイル22は、プログラマbについてのメトリックスと実績バグ数とが関連付けて示されている。レビュー対象のソースプログラムのプログラマごとにファイルが作成されていてもよいし、同一のファイルになっていてもよい。
次いで、S1402で、CPU120は、プログラマによって過去に作成された複数のプログラムごとの複雑度Fとプログラムごとのレビュー時に検出された実績バグ数Bとが次の式(7)のような関係があるとして、プログラマごとの複雑度Fと実績バグ数Bとに対して回帰分析を行なう。
Figure 2007323299
なお、a4,a5は実施の形態1で示した算出方法と同様の方法で算出できる。
まず、式(7)を式(8)のように変換する。
Figure 2007323299
そして、式(8)と、プログラマによって過去に作成されたソースプログラムの複雑度FとBの組(F,B),・・・,(F,B)(ただし、nはプログラマが過去に作成されたソースプログラムの数を示す。)を用いて、実施の形態1で示した、式(4)および式(5)に基づき、プログラマごとにa4,a5を算出する。
図18は、プログラマaのメトリックスと実績バグ数との関連付けを示した図である。
図18を参照して、プログラマaについてのメトリックスと実績バグ数との関係式の算出について説明する。
図18に示すように、CPU120がプログラマaの複雑度と実績バグ数とを読み込んだとする。CPU120は、これらと、式(4)および式(5)に基づいてa4,a5を計算し、a4≒1、a5≒0.1を算出する。
最後に、S1304で、CPU120は、メトリックス・バグ数関係式をプログラマ別メトリックス・バグ数関係式131に格納する。
ここでは、CPU120は、S1402で算出したプログラマごとのa4およびa5を、式(7)に代入した関係式を出力する。
図19は、プログラマごとにメトリックス・バグ数関係式を示した図である。
図19を参照して、メトリックス・バグ数関係式について説明する。
図19に示すように、メトリックス・バグ数関係式は、S1302で算出したa4およびa5を、式(7)に代入した式となる。たとえば、プログラマaに対しては、ステップS1402で得られたa4≒1、a5≒0.1を式(7)に代入し、(バグ数)=1×e(0.1×複雑度)という関係式が出力される。
上述のようして、プログラマ別のメトリックス・バグ数関係式を算出する。
以上で説明したように、本実施の形態に係るレビュー実施順序決定装置によれば、レビュー対象のソースプログラムを作成したプログラマが、過去に作成したソースプログラムに含まれていたバグ数とそのソースプログラムのメトリックスとの相関関係に基づいてレビュー作業効率を算出し、レビュー順序を決定する。これにより、予測バグ数の精度を上げることができる。したがって、限られた時間でより多くのバグを検出できるため、効率的にソフトウェア開発を行なうことが可能である。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
実施の形態1に係るレビュー実施順序決定装置100の構成例を示すブロック図である。 レビュー実施順序決定装置100のCPU120の機能的構成を示すブロック図である。 プログラムの一例を示した図である。 図3に示すプログラムに対応するフローグラフを示した図である。 レビュー実施順序決定装置100がレビューの実施順序を決定する処理の流れを示したフローチャートである。 レビュー対象候補の一例である。 レビュー対象候補とメトリックスおよびその他の算出結果を関連付けた図である。 レビュー実施順序の出力例である。 実施の形態2に係るレビュー実施順序決定装置700の構成例を示すブロック図である。 レビュー実施順序決定装置700のCPU120の機能的構成を示すブロック図である。 レビュー実施順序決定装置700がレビューの実施順序を決定する処理の流れを示したフローチャートである。 レビュー対象候補の一例である。 ソースプログラム名とそのソースプログラムを作成したプログラマ名とが関連付けを示す図である。 レビュー対象候補とメトリックスおよび算出結果を関連付けた図である。 レビュー実施順序の出力例である。 メトリックス・バグ数相関関係式を算出する手順を示したフローチャートである。 プログラマ別のメトリックスと実績バグ数との関連付けを示した図である。 プログラマaのメトリックスと実績バグ数との関連付けを示した図である。 プログラマごとにメトリックス・バグ数関係式を示した図である。
符号の説明
100,700 レビュー実施順序決定装置、102 コンピュータ本体、104 モニタ、106 FDドライブ、108 光ディスクドライブ、110 キーボード、112 マウス、116 FD、118 CD−ROM、120 CPU、122 メモリ、124 ハードディスク、128 通信インターフェイス、130 メトリックス、131 プログラマ別メトリックス・バグ数関係式、132 レビュー作業所要時間、134 予測バグ数、136 レビュー作業効率、138 レビュー実施順序、140 レビュー対象候補、142 ソースプログラム、144 プログラマ別データベース、202 メトリックス測定部、203 メトリックス・バグ数関係式決定部、204 レビュー作業所要時間予測部、205 プログラマ別バグ数予測部、206 バグ数予測部、208 レビュー作業効率予測部、210 レビュー実施順序決定部。

Claims (10)

  1. バグを検出するためのレビューの対象である複数のプログラムと、前記プログラムごとの構造を示す第1のメトリックスとを関連付けて記憶するための記憶手段と、
    前記第1のメトリックスに基づき、前記プログラムごとに第1のバグ数を算出するためのバグ数予測手段と、
    前記第1のメトリックスに基づき、前記プログラムごとに前記レビューに要する時間を算出するためのレビュー所要時間予測手段と、
    前記第1のバグ数と前記レビューに要する時間とから、前記プログラムごとに、単位時間あたりに検出される第2のバグ数を算出するためのレビュー作業効率予測手段と、
    前記第2のバグ数に基づき、前記複数のプログラムに対して前記レビューを実行する順序を決定するためのレビュー実施順序決定手段とを備える、レビュー実施順序決定装置。
  2. 前記レビュー実施順序決定手段は、前記第2のバグ数の大きな順に前記レビューを実行するよう前記順序を決定する、請求項1記載のレビュー実施順序決定装置。
  3. 前記第1のメトリックスは、前記プログラムの規模および前記プログラムに含まれる制御文の数に依存する数である第1の複雑度を含み、
    前記レビュー所要時間予測手段は、前記プログラムごとの前記規模および前記第1の複雑度の増加に伴って増加するよう予め定められた関係式に基づいて、前記レビューに要する時間を算出する、請求項2記載のレビュー実施順序決定装置。
  4. 前記バグ数予測手段は、前記第1の複雑度の増加に伴って増加するよう予め定められた関係式に基づいて、前記第1のバグ数を算出する、請求項3記載のレビュー実施順序決定装置。
  5. 前記記憶手段は、過去に作成された複数のプログラムごとの第2の複雑度と、前記過去に作成された複数のプログラムごとに含まれていた第3のバグ数とを関連付けて記憶し、
    前記バグ数予測手段は、前記第2の複雑度と前記第3のバグ数とが指数分布に従うとして、前記第2の複雑度および前記第3のバグ数に対して行なった回帰分析から求めた結果に基づいて、前記第1の複雑度により前記第1のバグ数を算出する、請求項4記載のレビュー実施順序決定装置。
  6. 前記記憶手段は、前記レビューの対象となる前記複数のプログラムごとの作成者と、前記作成者が過去に作成したプログラムの情報とを関連付けて記憶し、
    前記バグ数予測手段は、前記レビューの対象となるプログラムの前記作成者が過去に作成したプログラムの前記情報に基づいて、前記第1の複雑度の増加に伴って増加するよう予め定められた関係式により前記第1のバグ数を算出する、請求項3記載のレビュー実施順序決定装置。
  7. 前記作成者が過去に作成したプログラムの前記情報は、前記過去に作成したプログラムの第3の複雑度および前記過去に作成したプログラムに含まれていた第4のバグ数との関連付けを含み、
    前記バグ数予測手段は、前記第3の複雑度と前記第4のバグ数とが指数分布に従うとして、前記第3の複雑度および前記第4のバグ数に対して行なった回帰分析から求めた結果に基づいて、前記第1の複雑度により前記第1のバグ数を算出する、請求項6記載のレビュー実施順序決定装置。
  8. バグを検出するためのレビューの対象である複数のプログラムに対して、前記レビューを実行する順序を決定する処理を、演算部および記憶部を有するコンピュータに実行させるためのプログラムであって、
    前記演算部が、前記レビューの対象である複数のプログラムと、前記プログラムごとの構造を示す第1のメトリックスとを前記記憶部から読み込むステップと、
    前記演算部が、前記第1のメトリックスに基づき、前記プログラムごとに第1のバグ数を算出するステップと、
    前記演算部が、前記第1のメトリックスに基づき、前記プログラムごとに前記レビューに要する時間を算出するステップと、
    前記演算部が、前記第1のバグ数と前記レビューに要する時間とから、前記プログラムごとに、単位時間あたりに検出される第2のバグ数を算出するステップと、
    前記演算部が、前記第2のバグ数に基づき、前記複数のプログラムに対して、前記レビューを実行する順序を決定するステップとを備える、レビュー実施順序決定プログラム。
  9. 請求項8記載のレビュー実施順序決定プログラムを格納したコンピュータ読み取り可能な記録媒体。
  10. バグを検出するためのレビューの対象である複数のプログラムに対して、前記レビューを実行する順序を決定する方法であって、
    前記レビューの対象である複数のプログラムと、前記プログラムごとの構造を示す第1のメトリックスとを読み込むステップと、
    前記第1のメトリックスに基づき、前記プログラムごとに第1のバグ数を算出するステップと、
    前記第1のメトリックスに基づき、前記プログラムごとに前記レビューに要する時間を算出するステップと、
    前記第1のバグ数と前記レビューに要する時間とから、前記プログラムごとに、単位時間あたりに検出される第2のバグ数を算出するステップと、
    前記第2のバグ数に基づき、前記複数のプログラムに対して、前記レビューを実行する順序を決定するステップとを備える、レビュー実施順序決定方法。
JP2006151917A 2006-05-31 2006-05-31 レビュー実施順序決定装置、レビュー実施順序決定プログラム、レビュー実施順序決定プログラムが格納された記録媒体およびレビュー実施順序決定方法 Pending JP2007323299A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006151917A JP2007323299A (ja) 2006-05-31 2006-05-31 レビュー実施順序決定装置、レビュー実施順序決定プログラム、レビュー実施順序決定プログラムが格納された記録媒体およびレビュー実施順序決定方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006151917A JP2007323299A (ja) 2006-05-31 2006-05-31 レビュー実施順序決定装置、レビュー実施順序決定プログラム、レビュー実施順序決定プログラムが格納された記録媒体およびレビュー実施順序決定方法

Publications (1)

Publication Number Publication Date
JP2007323299A true JP2007323299A (ja) 2007-12-13

Family

ID=38856061

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006151917A Pending JP2007323299A (ja) 2006-05-31 2006-05-31 レビュー実施順序決定装置、レビュー実施順序決定プログラム、レビュー実施順序決定プログラムが格納された記録媒体およびレビュー実施順序決定方法

Country Status (1)

Country Link
JP (1) JP2007323299A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016133946A (ja) * 2015-01-19 2016-07-25 株式会社日立製作所 ソースコードレビュー方法及びそのシステム
JP2019194818A (ja) * 2018-05-02 2019-11-07 株式会社野村総合研究所 ソフトウェア不具合予測装置
CN112905224A (zh) * 2019-12-04 2021-06-04 阿里巴巴集团控股有限公司 一种用于代码评审的耗时确定方法、装置及设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0298750A (ja) * 1988-10-05 1990-04-11 Nec Corp バグ修正装置
JPH0876992A (ja) * 1994-09-07 1996-03-22 Toshiba Eng Co Ltd ソフトウェア品質評価管理装置及びその方法
JPH09212387A (ja) * 1996-01-31 1997-08-15 Matsushita Electric Works Ltd プログラム開発支援装置
JP2003256206A (ja) * 2002-02-28 2003-09-10 Toshiba Corp ソフトウェアシステムのテスト計画作成支援方法およびテスト計画作成支援プログラム
JP2004086319A (ja) * 2002-08-23 2004-03-18 Hitachi Information Systems Ltd ソフトウェアの品質評価方法及び品質評価システム
JP2004334321A (ja) * 2003-04-30 2004-11-25 Ricoh Co Ltd 生産性ナレッジ構築方法、ソフトウェア開発工数目標決定方法、同方法を実行するためのプログラム

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0298750A (ja) * 1988-10-05 1990-04-11 Nec Corp バグ修正装置
JPH0876992A (ja) * 1994-09-07 1996-03-22 Toshiba Eng Co Ltd ソフトウェア品質評価管理装置及びその方法
JPH09212387A (ja) * 1996-01-31 1997-08-15 Matsushita Electric Works Ltd プログラム開発支援装置
JP2003256206A (ja) * 2002-02-28 2003-09-10 Toshiba Corp ソフトウェアシステムのテスト計画作成支援方法およびテスト計画作成支援プログラム
JP2004086319A (ja) * 2002-08-23 2004-03-18 Hitachi Information Systems Ltd ソフトウェアの品質評価方法及び品質評価システム
JP2004334321A (ja) * 2003-04-30 2004-11-25 Ricoh Co Ltd 生産性ナレッジ構築方法、ソフトウェア開発工数目標決定方法、同方法を実行するためのプログラム

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016133946A (ja) * 2015-01-19 2016-07-25 株式会社日立製作所 ソースコードレビュー方法及びそのシステム
JP2019194818A (ja) * 2018-05-02 2019-11-07 株式会社野村総合研究所 ソフトウェア不具合予測装置
JP7190246B2 (ja) 2018-05-02 2022-12-15 株式会社野村総合研究所 ソフトウェア不具合予測装置
CN112905224A (zh) * 2019-12-04 2021-06-04 阿里巴巴集团控股有限公司 一种用于代码评审的耗时确定方法、装置及设备
CN112905224B (zh) * 2019-12-04 2024-04-30 阿里巴巴集团控股有限公司 一种用于代码评审的耗时确定方法、装置及设备

Similar Documents

Publication Publication Date Title
US11609840B2 (en) Systems, methods, and devices for vertically integrated instrumentation and trace reconstruction
CN101957773B (zh) 用于多轮次动态概要分析的方法及其系统
US8286143B2 (en) Method and system for monitoring code change impact on software performance
US20180024911A1 (en) Software code debugger for quick detection of error root causes
US8776014B2 (en) Software build analysis
US8938729B2 (en) Two pass automated application instrumentation
WO2019143542A1 (en) Time-weighted risky code prediction
US8898649B2 (en) Application program analysis method, analysis system and recording medium for identifying a contributing factor for an invalid operation of an application program
US8359291B2 (en) Architecture-aware field affinity estimation
US9189372B2 (en) Trace coverage analysis
JP6048957B2 (ja) 情報処理装置、プログラム、及び情報処理方法
JP2007323299A (ja) レビュー実施順序決定装置、レビュー実施順序決定プログラム、レビュー実施順序決定プログラムが格納された記録媒体およびレビュー実施順序決定方法
JP6471615B2 (ja) 性能情報生成プログラム、性能情報生成方法及び情報処理装置
JP2009104252A (ja) デバッグ支援装置およびデバッグ支援方法
CN109814924B (zh) 一种软件复杂度计算方法
JP4870956B2 (ja) 組み込み用プログラム生成方法、組み込み用プログラム開発システム、及び情報テーブル部
US7533314B2 (en) Unit test extender
JP2008090699A (ja) トレースロギング方法、装置及びプログラム
CN116088934B (zh) 一种软件开发工作量确定方法及服务器
JP2020087087A (ja) 修正候補特定プログラム
JP2009064125A (ja) サーバ装置、そのプログラム
JP6926921B2 (ja) コンパイルプログラム、コンパイル方法及び並列処理装置
US10534691B2 (en) Apparatus and method to improve accuracy of performance measurement for loop processing in a program code
JP2019125134A (ja) 検証支援プログラム、検証支援方法、および情報処理装置
JP2009015437A (ja) ベンチマークテスト装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080806

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110531

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110607

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20111018