(57)【要約】【課題】レビューの効率を上げるようなレビュー実施順序決定装置を提供する。【解決手段】レビュー実施順序決定装置１００のＣＰＵ１２０は、ソースプログラムのメトリックスを測定するためのメトリックス測定部２０２と、レビュー対象のメトリックスに基づきレビュー作業に要する時間を算出するためのレビュー作業所要時間予測部２０４と、レビュー対象のメトリックスに基づきレビュー対象のプログラムに含まれる可能性のあるバグの数を算出するためのバグ数予測部２０６と、レビュー対象候補のソースプログラムから単位時間あたりに検出されるバグ数を算出するためのレビュー作業効率予測部２０８と、レビューを実施する順序を決定するためのレビュー実施順序決定部２１０とを有する。【選択図】図２
2007323299.tif 000002
【特許請求の範囲】
【請求項１】
バグを検出するためのレビューの対象である複数のプログラムと、前記プログラムごとの構造を示す第１のメトリックスとを関連付けて記憶するための記憶手段と、
前記第１のメトリックスに基づき、前記プログラムごとに第１のバグ数を算出するためのバグ数予測手段と、
前記第１のメトリックスに基づき、前記プログラムごとに前記レビューに要する時間を算出するためのレビュー所要時間予測手段と、
前記第１のバグ数と前記レビューに要する時間とから、前記プログラムごとに、単位時間あたりに検出される第２のバグ数を算出するためのレビュー作業効率予測手段と、
前記第２のバグ数に基づき、前記複数のプログラムに対して前記レビューを実行する順序を決定するためのレビュー実施順序決定手段とを備える、レビュー実施順序決定装置。
【請求項２】
前記レビュー実施順序決定手段は、前記第２のバグ数の大きな順に前記レビューを実行するよう前記順序を決定する、請求項１記載のレビュー実施順序決定装置。
【請求項３】
前記第１のメトリックスは、前記プログラムの規模および前記プログラムに含まれる制御文の数に依存する数である第１の複雑度を含み、
前記レビュー所要時間予測手段は、前記プログラムごとの前記規模および前記第１の複雑度の増加に伴って増加するよう予め定められた関係式に基づいて、前記レビューに要する時間を算出する、請求項２記載のレビュー実施順序決定装置。
【請求項４】
前記バグ数予測手段は、前記第１の複雑度の増加に伴って増加するよう予め定められた関係式に基づいて、前記第１のバグ数を算出する、請求項３記載のレビュー実施順序決定装置。
【請求項５】
前記記憶手段は、過去に作成された複数のプログラムごとの第２の複雑度と、前記過去に作成された複数のプログラムごとに含まれていた第３のバグ数とを関連付けて記憶し、
前記バグ数予測手段は、前記第２の複雑度と前記第３のバグ数とが指数分布に従うとして、前記第２の複雑度および前記第３のバグ数に対して行なった回帰分析から求めた結果に基づいて、前記第１の複雑度により前記第１のバグ数を算出する、請求項４記載のレビュー実施順序決定装置。
【請求項６】
前記記憶手段は、前記レビューの対象となる前記複数のプログラムごとの作成者と、前記作成者が過去に作成したプログラムの情報とを関連付けて記憶し、
前記バグ数予測手段は、前記レビューの対象となるプログラムの前記作成者が過去に作成したプログラムの前記情報に基づいて、前記第１の複雑度の増加に伴って増加するよう予め定められた関係式により前記第１のバグ数を算出する、請求項３記載のレビュー実施順序決定装置。
【請求項７】
前記作成者が過去に作成したプログラムの前記情報は、前記過去に作成したプログラムの第３の複雑度および前記過去に作成したプログラムに含まれていた第４のバグ数との関連付けを含み、
前記バグ数予測手段は、前記第３の複雑度と前記第４のバグ数とが指数分布に従うとして、前記第３の複雑度および前記第４のバグ数に対して行なった回帰分析から求めた結果に基づいて、前記第１の複雑度により前記第１のバグ数を算出する、請求項６記載のレビュー実施順序決定装置。
【請求項８】
バグを検出するためのレビューの対象である複数のプログラムに対して、前記レビューを実行する順序を決定する処理を、演算部および記憶部を有するコンピュータに実行させるためのプログラムであって、
前記演算部が、前記レビューの対象である複数のプログラムと、前記プログラムごとの構造を示す第１のメトリックスとを前記記憶部から読み込むステップと、
前記演算部が、前記第１のメトリックスに基づき、前記プログラムごとに第１のバグ数を算出するステップと、
前記演算部が、前記第１のメトリックスに基づき、前記プログラムごとに前記レビューに要する時間を算出するステップと、
前記演算部が、前記第１のバグ数と前記レビューに要する時間とから、前記プログラムごとに、単位時間あたりに検出される第２のバグ数を算出するステップと、
前記演算部が、前記第２のバグ数に基づき、前記複数のプログラムに対して、前記レビューを実行する順序を決定するステップとを備える、レビュー実施順序決定プログラム。
【請求項９】
請求項８記載のレビュー実施順序決定プログラムを格納したコンピュータ読み取り可能な記録媒体。
【請求項１０】
バグを検出するためのレビューの対象である複数のプログラムに対して、前記レビューを実行する順序を決定する方法であって、
前記レビューの対象である複数のプログラムと、前記プログラムごとの構造を示す第１のメトリックスとを読み込むステップと、
前記第１のメトリックスに基づき、前記プログラムごとに第１のバグ数を算出するステップと、
前記第１のメトリックスに基づき、前記プログラムごとに前記レビューに要する時間を算出するステップと、
前記第１のバグ数と前記レビューに要する時間とから、前記プログラムごとに、単位時間あたりに検出される第２のバグ数を算出するステップと、
前記第２のバグ数に基づき、前記複数のプログラムに対して、前記レビューを実行する順序を決定するステップとを備える、レビュー実施順序決定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア開発において、そのレビュー作業に使用される技術に関する。特に、レビューの順序を決定するための装置、レビューの順序を決定するためのプログラム、レビューの順序を決定するためのプログラムが格納された記録媒体およびレビューの順序を決定する方法に関する。
【背景技術】
【０００２】
現在、さまざまな分野でコンピュータが日常的に使われている。このため、コンピュータを制御するためのソフトウェアに欠陥があったときにもたらされる誤作動により、社会に与える影響は非常に大きなものとなる可能性がある。このような事態を防ぐために、ソフトウェア開発においては、ソフトウェアの信頼性を確保することが重要である。
【０００３】
その一方で、市場の競争激化によってソフトウェアの開発期間の短縮化が要請されており、ソフトウェア開発において、ソースプログラムの品質上問題となる箇所を検出するためのレビュー作業に割くことができる時間は限られる。このため、効率よくレビューを行ない、短時間にできるだけ多くのバグを検出する必要がある。
【０００４】
効率よくレビューを行なうには、単位時間当たりに検出されるバグ数が最も多いと予測されるソースプログラムからレビューを行なうことが、開発するソフトウェアの品質を確保する上で望ましい。
【０００５】
特許文献１では、ソースプログラムの品質を示すメトリックスを用いて効率的なレビューを支援する方法が示されている。この方法によれば、まず、ソースプログラムから測定される、３つのメトリックス（サイクロマティック複雑度、制御構造の最大ネスティング数、ステップ数）と、それぞれのメトリックスの重要度を用いて、品質値を算出する。そして、この品質値が大きいほど、潜在的なバグが多く含まれるとして、品質値が大きいものからレビューするようにレビュー順序が決定される。
【特許文献１】特開平９−２１２３８７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１の発明は、レビューに要する時間を考慮せず、潜在的に含まれるバグ数のみから、レビューを行なうソースプログラムの順序が決定される。このため、複数のソースプログラムの中で最もレビューに時間を要するものが、最先にレビューを実施するように決定される場合がある。この場合、限られたレビュー時間内において、より多くのバグを検出するという、効率的なレビューが実行できない可能性がある。
【０００７】
また、特許文献１の発明では、バグ数を予測する際に、過去にバグの少ないプログラムを作成してきたプログラマが作成するプログラムはバグが少ない傾向にあることが考慮されていない。このため、予測したバグ数の精度が低くなる傾向にある。
【０００８】
本発明は、上記の問題を改善するために成されたものであって、その目的は、レビューの効率を上げるようなレビュー実施順序決定装置を提供することにある。
【課題を解決するための手段】
【０００９】
本発明の１つの局面に従うと、バグを検出するためのレビューの対象である複数のプログラムと、プログラムごとの構造を示す第１のメトリックスとを関連付けて記憶するための記憶手段と、第１のメトリックスに基づき、プログラムごとに第１のバグ数を算出するためのバグ数予測手段と、第１のメトリックスに基づき、プログラムごとにレビューに要する時間を算出するためのレビュー所要時間予測手段と、第１のバグ数とレビューに要する時間とから、プログラムごとに、単位時間あたりに検出される第２のバグ数を算出するためのレビュー作業効率予測手段と、第２のバグ数に基づき、複数のプログラムに対してレビューを実行する順序を決定するためのレビュー実施順序決定手段とを備える、レビュー実施順序決定装置を提供する。
【００１０】
好ましくは、レビュー実施順序決定手段は、第２のバグ数の大きな順にレビューを実行するよう順序を決定する。
【００１１】
好ましくは、第１のメトリックスは、プログラムの規模およびプログラムに含まれる制御文の数に依存する数である第１の複雑度を含み、レビュー所要時間予測手段は、プログラムごとの規模および第１の複雑度の増加に伴って増加するよう予め定められた関係式に基づいて、レビューに要する時間を算出する。
【００１２】
好ましくは、バグ数予測手段は、第１の複雑度の増加に伴って増加するよう予め定められた関係式に基づいて、第１のバグ数を算出する。
【００１３】
好ましくは、記憶手段は、過去に作成された複数のプログラムごとの第２の複雑度と、過去に作成された複数のプログラムごとに含まれていた第３のバグ数とを関連付けて記憶し、バグ数予測手段は、第２の複雑度と第３のバグ数とが指数分布に従うとして、第２の複雑度および第３のバグ数に対して行なった回帰分析から求めた結果に基づいて、第１の複雑度により第１のバグ数を算出する。
【００１４】
好ましくは、記憶手段は、レビューの対象となる複数のプログラムごとの作成者と、作成者が過去に作成したプログラムの情報とを関連付けて記憶し、バグ数予測手段は、レビューの対象となるプログラムの作成者が過去に作成したプログラムの情報に基づいて、第１の複雑度の増加に伴って増加するよう予め定められた関係式により第１のバグ数を算出する。
【００１５】
好ましくは、作成者が過去に作成したプログラムの情報は、過去に作成したプログラムの第３の複雑度および過去に作成したプログラムに含まれていた第４のバグ数との関連付けを含み、バグ数予測手段は、第３の複雑度と第４のバグ数とが指数分布に従うとして、第３の複雑度および第４のバグ数に対して行なった回帰分析から求めた結果に基づいて、第１の複雑度により第１のバグ数を算出する。
【００１６】
本発明の他の局面に従うと、バグを検出するためのレビューの対象である複数のプログラムに対して、レビューを実行する順序を決定する処理を、演算部および記憶部を有するコンピュータに実行させるためのプログラムであって、演算部が、レビューの対象である複数のプログラムと、プログラムごとの構造を示す第１のメトリックスとを記憶部から読み込むステップと、演算部が、第１のメトリックスに基づき、プログラムごとに第１のバグ数を算出するステップと、演算部が、第１のメトリックスに基づき、プログラムごとにレビューに要する時間を算出するステップと、演算部が、第１のバグ数とレビューに要する時間とから、プログラムごとに、単位時間あたりに検出される第２のバグ数を算出するステップと、演算部が、第２のバグ数に基づき、複数のプログラムに対して、レビューを実行する順序を決定するステップとを備える。
【００１７】
本発明のさらに他の局面に従うと、上記レビュー実施順序決定プログラムを格納したコンピュータ読み取り可能な記録媒体を提供する。
【００１８】
本発明のさらに他の局面に従うと、バグを検出するためのレビューの対象である複数のプログラムに対して、レビューを実行する順序を決定する方法であって、レビューの対象である複数のプログラムと、プログラムごとの構造を示す第１のメトリックスとを読み込むステップと、第１のメトリックスに基づき、プログラムごとに第１のバグ数を算出するステップと、第１のメトリックスに基づき、プログラムごとにレビューに要する時間を算出するステップと、第１のバグ数とレビューに要する時間とから、プログラムごとに、単位時間あたりに検出される第２のバグ数を算出するステップと、第２のバグ数に基づき、複数のプログラムに対して、レビューを実行する順序を決定するステップとを備える。
【発明の効果】
【００１９】
本発明によれば、レビュー作業効率に基づいて、レビュー実施順序を決定する。これにより、効率的なレビュー作業を行なうことができる。したがって、限られた時間でより多くのバグを検出できるため、効率的にソフトウェア開発を行なうことが可能である。
【発明を実施するための最良の形態】
【００２０】
以下、図面を参照しつつ本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについては詳細な説明は繰り返さない。
【００２１】
本発明に係るレビュー実施順序決定装置は、以下で説明するように、レビュー対象となるプログラムの実施順序をレビュー作業効率が高いものから順に実施するよう順番を決定するものである。これにより、効率的なレビュー作業を行なうことができる。
【００２２】
［実施の形態１］
図１は、実施の形態１に係るレビュー実施順序決定装置１００の構成例を示すブロック図である。
【００２３】
図１を参照して、レビュー実施順序決定装置１００の構成について説明する。
レビュー実施順序決定装置１００は、コンピュータ本体１０２と、コンピュータ本体１０２とバス１２６を介して接続される、フレキシブルディスク（Flexible Disk、以下ＦＤ）１１６に情報を読み書きするためのＦＤドライブ１０６と、ＣＤ−ＲＯＭ（Compact Disc Read-Only Memory）１１８等の光ディスク上の情報を読み込むための光ディスクドライブ１０８と、外部とデータの授受を行なうための通信インターフェイス１２８と、表示装置としてのモニタ１０４と、入力装置としてのキーボード１１０およびマウス１１２とを備える。また、通信インターフェイス１２８を経由して、外部より、レビューを実施すべきソースプログラムのファイル名のリストであるレビュー対象候補１４０およびソースプログラムのファイルとしてソースプログラム１４２が与えられる。コンピュータ本体１０２は、バス１２６に接続されたＣＰＵ（Central Processing Unit）１２０と、ＲＯＭ（Read Only Memory）およびＲＡＭ（Random Access Memory）を含むメモリ１２２と、直接アクセスメモリ装置、たとえば、ハードディスク１２４を含む。
【００２４】
ハードディスク１２４は、メトリックス１３０と、レビュー作業予測所要時間１３２と、予測バグ数１３４と、レビュー作業効率１３６と、レビュー実施順序１３８とを保存する。
【００２５】
また、光ディスクドライブ１０８にはＣＤ−ＲＯＭ１１８などの光ディスクが装着される。ＦＤドライブ１０６にはＦＤ１１６が装着される。なお、ＣＤ−ＲＯＭ１１８は、コンピュータ本体に対してインストールされるプログラム等の情報を記録可能な媒体であれば、他の媒体、たとえば、ＤＶＤ−ＲＯＭ（Digital Versatile Disc）やメモリーカードなどでもよく、その場合は、コンピュータ本体１０２には、これらの媒体を読み取ることが可能なドライブ装置が設けられる。
【００２６】
レビューの実施順序を決定するためのプログラム（以下、「実施順序決定プログラム」と呼ぶ）は、ＦＤ１１６またはＣＤ−ＲＯＭ１１８等の記録媒体によって供給される。実施順序決定プログラムがコンピュータ本体１０２によって実行されることにより、上述のようなレビューの実施順序が決定される。また、実施順序決定プログラムは、他のコンピュータより通信インターフェイス１２８を経由しコンピュータ本体１０２に供給されてもよい。
【００２７】
また、本実施の形態では、レビュー対象候補１４０およびソースプログラム１４２は、通信インターフェイス１２８を介してコンピュータ本体１０２に与えられるが、記録媒体によって供給されてもよい。
【００２８】
ＣＰＵ１２０は、メモリ１２２をワーキングメモリとして、上述の実施順序決定プログラムに従った処理を実行する。
【００２９】
実施順序決定プログラムは、上述の通り、ＣＰＵ１２０により実行されるソフトウェアである。一般的に、こうしたソフトウェアは、ＣＤ−ＲＯＭ１１８、ＦＤ１１６等の記憶媒体に格納されて流通し、光ディスクドライブ１０８またはＦＤドライブ１０６等により記録媒体から読み取られてハードディスク１２４に一旦格納される。または、コンピュータ１００がネットワークに接続されている場合には、ネットワーク上のサーバから一旦ハードディスク１２４にコピーされる。そうしてさらにハードディスク１２４からメモリ１２２中のＲＡＭに読み出されてＣＰＵ１２０により実行される。なお、ネットワーク接続されている場合には、ハードディスク１２４に格納することなくＲＡＭに直接ロードして実行するようにしてもよい。
【００３０】
図１に示したコンピュータのハードウェア自体およびその動作原理は一般的なものである。したがって、本発明の機能を実現するに当り本質的な部分は、ＦＤ１１６、ＣＤ−ＲＯＭ１１８、ハードディスク１２４等の記録媒体に記憶されたソフトウェアである。
【００３１】
図２は、レビュー実施順序決定装置１００のＣＰＵ１２０の機能的構成を示すブロック図である。
【００３２】
図２を参照して、レビュー実施順序決定装置１００のＣＰＵ１２０の機能的構成を説明する。
【００３３】
ＣＰＵ１２０は、ソースプログラムのメトリックスを測定するためのメトリックス測定部２０２と、レビュー対象のメトリックスに基づきレビュー作業に要する時間を算出するためのレビュー作業所要時間予測部２０４と、レビュー対象のメトリックスに基づきレビュー対象のプログラムに含まれる可能性のあるバグの数を算出するためのバグ数予測部２０６と、レビュー対象候補のソースプログラムから単位時間あたりに検出されるバグ数（以下、「レビュー作業効率」と呼ぶ）を算出するためのレビュー作業効率予測部２０８と、レビューを実施する順序を決定するためのレビュー実施順序決定部２１０とを有する。
【００３４】
記憶部２２０は、ハードディスク１２４と通信インターフェイス１２８を介して接続される外部の記憶装置等を総称したものである。
【００３５】
記憶部２２０は、レビューを実施すべきソースプログラムのプログラム名のリストであるレビュー対象候補１４０と、ソースプログラムのファイルが格納されているソースプログラム１４２と、メトリックス測定部２０２により測定されたメトリックス１３０と、バグ数予測部２０６により予測されたバグ数である予測バグ数１３４と、レビュー作業効率予測部２０８により算出されたレビュー作業効率１３６と、レビュー実施順序決定部２１０により決定された実施順序であるレビュー実施順序１３８とを保存する。
【００３６】
メトリックス測定部２０２は、ソースプログラム１４２からレビュー対象候補１４０より得たプログラム名のソースプログラムを取得し、そのメトリックスを測定する。
【００３７】
ここで、本発明におけるメトリックスについて説明する。メトリックスとは、プログラムから計算可能な数値である。メトリックスの例として、コード行数、プログラムに含まれる制御文の数に依存する数（たとえば、サイクロマティック複雑度、制御構造の最大ネスティング数）、関数の呼び出し数といった数値が挙げられる。
【００３８】
以下において、サイクロマティック複雑度および制御構造の最大ネスティング数について説明する。
【００３９】
文献：Roger S. Pressman著「Software Engineering」McGraw-Hill College; 4th版 (1996/08) ISBN:0070521824によれば、サイクロマティック複雑度は、プログラムのフローグラフを利用して求めることについて記載されている。
【００４０】
図３は、プログラムの一例を示した図である。
図４は、図３に示すプログラムに対応するフローグラフを示した図である。
【００４１】
図３および図４を参照して、フローグラフについて説明する。
フローグラフとは、プログラムを逐次命令群と、制御文（ｉｆ文やｗｈｉｌｅ文）に分け、それぞれを頂点とし、処理の順に頂点と頂点を有向枝で結んだものである。
【００４２】
図３に示すプログラムでは、コマンドＣ１，Ｃ４，Ｃ５，Ｃ７〜Ｃ９が逐次命令群であり、コマンドＣ２，Ｃ３，Ｃ６が制御文である。
【００４３】
図４に示すグラフは、頂点集合と有向枝の集合からなる。頂点集合は、頂点ｖ１〜ｖ９、有向枝の集合は、枝ｅ１〜ｅ１１を要素に持つ。各頂点は、図３で示した各コマンドに対応している。たとえば、頂点ｖ１は、コマンドＣ１に対応している。各枝は、各コマンドの処理の流れを示している。たとえば、図３において、コマンドＣ１からＣ２へ処理される。この場合、Ｃ１に対応する頂点ｖ１を始点、Ｃ２に対応する頂点ｖ２を終点とする枝ｅ１がコマンドＣ１からＣ２へ処理の流れを示している。
【００４４】
サイクロマティック複雑度Ｓは、プログラムのフローグラフの頂点数Ｎと枝数Ｅを用いて、Ｓ＝Ｅ−Ｎ＋２のように定義される。
【００４５】
たとえば、図３に示すプログラムのサイクロマティック複雑度Ｓを考える。図４のフローグラフでは、頂点数は９、枝数は１１である。したがって、サイクロマティック複雑度Ｓは、１１−９＋２＝４となる。
【００４６】
次に、制御構造の最大ネスティング数について説明する。
制御構造の最大ネスティング数とは、プログラム中の制御構造（条件判定、ループ）がネストしている（入れ子になっている）段数（ネスティング数）の最大値である。たとえば、図３に示すプログラムの最大ネスティング数を考える。行番号６，１４の行においてｉｆ文が入れ子になっているので、最大ネスティング数は１である。
【００４７】
本発明では、サイクロマティック複雑度をメトリックスとして用いるが、プログラムの品質を定量的に示す値であれば、上記で挙げた例以外の数であってもよい。
【００４８】
レビュー作業所要時間予測部２０４は、メトリックス１３０からレビュー対象候補であるソースプログラムのメトリックスを取得し、レビュー作業予測所要時間１３２を算出する。一般的に、プログラムの規模が大きくなるほどレビューに要する時間は長くなる傾向にある。また、複雑度が高いほど、そのプログラムを理解するのに多くの時間を要することが考えられる。そこで、本実施の形態では、プログラムの規模および複雑度が増大するにつれて、レビュー作業に要する時間も長くなるという関係に基づきレビュー作業予測所要時間を算出する。
【００４９】
バグ数予測部２０６は、メトリックス１３０からレビュー対象候補のメトリックスを取得し、予測バグ数１３４を算出する。上記のように、メトリックスが高いほどバグが含まれている可能性が高い。このため、本実施の形態では、あるプログラムのメトリックスｍが定まると、そのプログラムの予測バグ数ｂが一意に定まるという前提で、予測バグ数ｂをメトリックスｍの関数ｂ＝ｆ（ｍ）として算出する。
【００５０】
この関数ｆ（ｍ）は、過去に作成されたソースプログラムのメトリックスｍと、実績バグ数Ｂの間の関係を用いて導かれる。たとえば、回帰分析により、実績バグ数Ｂがメトリックスｍの指数関数Ｂ＝ｃ１×ｅ（ｃ２×ｍ）（ただし、ｃ１，ｃ２は定数）で近似できた場合、ｂ＝ｆ（ｍ）＝ｃ１×ｅ（ｃ２×ｍ）を用いて予測バグ数ｂを算出する。
【００５１】
レビュー作業効率予測部２０８は、レビュー作業予測所要時間１３２と予測バグ数１３４とから、単位時間あたりに検出されるバグ数であるレビュー作業効率１３６を算出する。
【００５２】
レビュー実施順序決定部２１０は、レビュー作業効率１３６に基づき、レビュー作業効率の高い順にレビュー対象候補を並び替え、レビュー実施順序１３８を決定する。
【００５３】
以上のように、レビュー実施順序決定装置１００は、レビュー対象候補に対して、レビューを実施すべき順序を決定する。以下に、レビュー実施順序決定装置１００が実行する処理について説明する。
【００５４】
図５は、レビュー実施順序決定装置１００がレビューの実施順序を決定する処理の流れを示したフローチャートである。
【００５５】
図５を参照して、レビュー実施順序決定装置１００がレビューの実施順序を決定する処理の一例について説明する。
【００５６】
まず、Ｓ３００では、ＣＰＵ１２０は、通信インターフェイス１２８を介して与えられるレビュー対象候補１４０から、レビュー対象候補であるソースプログラムのプログラム名リストＳ（＝｛ｓ１，ｓ２，・・・，ｓｎ｝（ただし、ｎはユーザが入力したレビュー対象のプログラム数を示す。以下、同様。））を読み込みハードディスク１２４に一旦格納する。
【００５７】
同様に、ＣＰＵ１２０は、通信インターフェイス１２８を介して与えられるソースプログラム１４２から、レビュー対象候補のリストＳに従って、レビュー対象候補のソースプログラムを読み込みハードディスク１２４に一旦格納する。
【００５８】
図６は、レビュー対象候補の一例である。
図６を参照して、レビュー対象候補Ｓのデータ構造の一例について説明する。
【００５９】
図６において、たとえば、レビュー対象候補Ｓとして、ｓ１からｓ６が与えられている。ｓ１からｓ６は、ポインタ変数であり、これらを参照して、ソース１からソース６というようにソースプログラム名を得ることができる。
【００６０】
また、Ｓ３００では、ＣＰＵ１２０は、プログラム名により、ｓ１からｓ６と、レビュー対象候補のソースプログラム名に基づき読み込んだソースプログラムとを関連付けておくこともできる。これにより、ｓ１からｓ６を参照することで、ソースプログラムも得ることができる。
【００６１】
なお、本実施の形態では、レビュー対象候補としてポインタ変数が与えられるとしたが、文字列でプログラム名が与えられていてもよいし、レビュー対象のソースプログラム名が得られれば他の形式でもよい。
【００６２】
図５に戻って、Ｓ３０２では、ＣＰＵ１２０は、Ｓ３００で読み込んだソースプログラムのメトリックスＭ（Ｓ）（＝｛ｍ（ｓ１），・・・，ｍ（ｓｎ）｝）を測定し、ハードディスク１２４内のメトリックス１３０に格納する。
【００６３】
ここで、本実施の形態では、ソースプログラムｓのメトリックスｍ（ｓ）として、ソースプログラムｓのコード行数ｌ（ｓ）およびソースプログラムｓの複雑度ｆ（ｓ）を測定する。なお、複雑度としては、上述したように、サイクロマティック複雑度や制御構造の最大ネスティング数といった、プログラム中の制御文の数に依存するメトリックスを利用する。複雑度ｆ（ｓ）はサイクロマティック複雑度、制御構造の最大ネスティング数のいずれかを単独で利用しても、また、これら二つのメトリックスそれぞれに適当な重みをかけて足し合わせた値を利用しても良い。
【００６４】
図７は、レビュー対象候補とメトリックスおよびその他の算出結果を関連付けた図である。
【００６５】
図７を参照して、レビュー対象候補のメトリックスＭ（Ｓ）の一例について説明する。
図７において、レビュー対象候補Ｓのプログラム名を表わす列５１と、メトリックスＭ（Ｓ）を表わす列５２と、レビュー作業予測所要時間Ｔ（Ｓ）を表わす列５３と、予測バグ数Ｂ（Ｓ）を表わす列５４と、レビュー作業効率Ｅ（Ｓ）を表わす列５５とが示されている。
【００６６】
図６で示したソースプログラムに対して、ＣＰＵ１２０が列５２に示されるように、メトリックスとしてコード行数と複雑度を測定したとする。たとえば、ソース１のメトリックスｍ（ｓ１）は、コード行数ｌ（ｓ１）が２５０、複雑度ｆ（ｓ１）が１０である。
【００６７】
図５に戻って、Ｓ３０４では、ＣＰＵ１２０は、Ｓ３０２で測定したメトリックスに基づき、レビュー作業所要時間Ｔ（Ｓ）（＝｛ｔ（ｓ１），・・・，ｔ（ｓｎ）｝）を算出し、ハードディスク１２４内のレビュー作業予測所要時間１３２に格納する。
【００６８】
ここで、上述したように、本実施の形態では、レビュー作業予測所要時間は、プログラムの規模（コード行数）および複雑度が増加するにつれて増加する関係にあるとする。ここでは、一例として、次の式（１）のように計算する。
【００６９】
【数１】
2007323299.tif 000003
【００７０】
ただし、ａ１は次のようにして算出された定数である。式（１）に、過去にレビューを実施した複数のプログラムごとのコード行数、複雑度および実際に実施したレビューに要した時間を代入し、それぞれａ１を算出する。そして、これらの平均値をａ１とする。
【００７１】
ａ１については、予め算出して入力してもよいし、ＣＰＵ１２０が、ソースプログラム１４２から過去にレビューを実施したソースプログラムの情報を読み込み、これらのメトリックス等をもとに算出してもよい。この際、ソースプログラム１４２には、過去にレビューを実施したソースプログラムごとに、ソースプログラムの情報として、実際に要したレビュー作業時間やレビュー時に指摘されたバグ数が保存されているものとする。また、過去にレビューを実施したソースプログラムを読み込んで、メトリックスを測定してもよいし、予め、ソースプログラムの情報としてメトリックスを保存しておいてもよい。
【００７２】
図７において、列５３にレビュー作業予測所要時間Ｔ（Ｓ）を算出した結果を示す。なお、ここでは、例として、ａ１＝０．１とする。たとえば、ソース１（コード行数ｌ（ｓ１）＝２５０，複雑度ｆ（ｓ１）＝１０）に対し、式（１）に従ってレビュー作業予測所要時間ｔ（ｓ１）を計算すれば、ｔ（ｓ１）（＝０．１×２５０×１０）＝２５０となる。
【００７３】
図５に戻って、Ｓ３０６では、ＣＰＵ１２０は、Ｓ３０２で測定したメトリックスに基づき、予測バグ数Ｂ（Ｓ）（＝｛ｂ（ｓ１），・・・，ｂ（ｓｎ）｝）を算出し、ハードディスク１２４内の予測バグ数１３４に格納する。
【００７４】
ここで、上述したように、本実施の形態では、予測バグ数は、プログラムの複雑度が増大するにつれて増加する関係にあるとする。一例として、式（２）のように計算する。
【００７５】
【数２】
2007323299.tif 000004
【００７６】
ただし、ａ２，ａ３は次のようにして算出された定数である。
ここでは、過去に作成された複数のプログラムごとの複雑度とプログラムごとのレビュー時に検出されたバグ数とが指数分布に従うとして、複雑度とバグ数に対して回帰分析を行なう。まず、式（２）を式（３）のように変換する。
【００７７】
【数３】
2007323299.tif 000005
【００７８】
そして、式（３）と、過去に作成されたソースプログラムの複雑度ＦｉとＢｉの組（Ｆ１，Ｂ１），・・・，（Ｆｎ，Ｂｎ）（ただし、ｎは過去に作成されたソースプログラムの数を示す。）を用いて、次の式（４）および式（５）によりａ２，ａ３を算出する。
【００７９】
【数４】
2007323299.tif 000006
【００８０】
ａ２，ａ３については、予め算出して入力してもよいし、ＣＰＵ１２０が、過去にレビューを実施したソースプログラムの情報を読み込み、これをもとに算出してもよい。なお、過去にレビューを実施したプログラムの情報には、上述したように、過去にソースプログラムのレビュー時に指摘されたバグ数やメトリックスが保存されているものとする。
【００８１】
図７において、列５４に予測バグ数Ｂ（Ｓ）を算出した結果を示す。なお、ここでは、例として、ａ２＝１，ａ３＝０．１とする。たとえば、ソース１（複雑度ｆ（ｓ１）＝１０）に対し、式（２）に従って予測バグ数ｂ（ｓ１）を計算すれば、ｂ（ｓ１）（＝１×ｅ（０．１×１０））＝２．７２となる。
【００８２】
図５に戻って、Ｓ３０８では、ＣＰＵ１２０は、レビュー作業予測所要時間１３２および予測バグ数１３４から、レビュー作業効率Ｅ（Ｓ）（＝｛ｅ（ｓ１），・・・，ｅ（ｓｎ）｝）を算出し、ハードディスク１２４内のレビュー作業効率１３６に格納する。
【００８３】
上述のように、ソースプログラムｓのレビュー作業効率ｅ（ｓ）は、単位時間あたりに検出されるバグ数である。レビュー作業予測所要時間ｔ（ｓ）と予測バグ数ｂ（ｓ）とを用い、式（６）のように計算する。
【００８４】
【数５】
2007323299.tif 000007
【００８５】
図７において、列５５にレビュー作業効率Ｅ（Ｓ）を算出した結果を示す。たとえば、ソース１（レビュー作業予測所要時間ｔ（ｓ１）＝２５０、予測バグ数ｂ（ｓ１）＝２．７２）に対し、式（６）に従ってレビュー作業効率ｅ（ｓ１）を計算すれば、ｅ（ｓ１）（＝２．７２÷２５０）＝０．０１１となる。
【００８６】
図５に戻って、Ｓ３１０では、ＣＰＵ１２０は、レビュー作業効率１３６に基づき、レビュー実施順序を決定し、ハードディスク１２４内のレビュー実施順序１３８に格納する。ここでは、上述のように、レビュー作業効率の値が大きいものから順に並べる。
【００８７】
図８は、レビュー実施順序の出力例である。
図８を参照して、決定されたレビュー実施順序について説明する。
【００８８】
図７の列５５で示されるレビュー作業効率Ｅ（ｓ）の中で、一番値が大きいものはソース５である。したがって、図８において、ソース５が最先にレビューを実施すべきものとして最上位に位置付けられる。以下、レビュー作業効率が高い順に並べられる。
【００８９】
なお、上記で述べたレビュー実施順序決定の手順は一例である。レビュー作業所要時間の算出や予測バグ数の算出をする等の手順は、上記で述べた順に実行することに限られない。
【００９０】
以上のように、本実施の形態に係るレビュー実施順序決定装置によれば、レビュー作業効率に基づいて、レビュー実施順序を決定する。これにより、効率的なレビュー作業を行なうことができる。したがって、限られた時間でより多くのバグを検出できるため、効率的にソフトウェア開発を行なうことが可能である。
【００９１】
［実施の形態２］
本実施の形態に係るレビュー実施順序決定装置によれば、レビュー対象のソースプログラムを作成したプログラマによって過去に作成されたソースプログラムのレビュー時に検出されたバグ数と、そのソースプログラムのメトリックスとの相関関係に基づいて算出したレビュー作業効率により、レビュー順序を決定する。このため、予測バグ数の精度を上げることができる。
【００９２】
図９は、実施の形態２に係るレビュー実施順序決定装置７００の構成例を示すブロック図である。
【００９３】
図９を参照して、レビュー実施順序決定装置７００の構成について説明する。
レビュー実施順序決定装置７００は、実施の形態１に係るレビュー実施順序決定装置１００の構成に加え、通信インターフェイス１２８に対してプログラマ別データベース１４４が接続される。また、ハードディスク１２４はプログラマ別メトリックス・バグ数関係式１３１をさらに保存する。これら以外の構成は、レビュー実施順序決定装置１００と同じである。
【００９４】
プログラマ別データベース１４４は、過去にレビューが行なわれたソースプログラムのプログラマ名と、そのプログラマが作成したソースプログラムのメトリックスおよびレビュー時に検出されたバグの数（以下、「実績バグ数」と呼ぶ）とを関連付けて保存している。
【００９５】
なお、本実施の形態では、プログラマ別データベース１４４は、通信インターフェイス１２８を介してコンピュータ本体１０２に与えられるが、記録媒体によって供給されてもよい。
【００９６】
図１０は、レビュー実施順序決定装置７００のＣＰＵ１２０の機能的構成を示すブロック図である。
【００９７】
図１０を参照して、レビュー実施順序決定装置７００のＣＰＵ１２０の機能的構成を説明する。
【００９８】
ＣＰＵ１２０は、実施の形態１に係るＣＰＵ１２０のバグ数予測部２０６に代えて、メトリックス・バグ数関係式決定部２０３とプログラマ別バグ数予測部２０５とを有する。
【００９９】
また、記憶部２２０は、実施の形態１に係る記憶部２２０の構成に加え、プログラマ別データベース１４４とプログラマ別メトリックス・バグ数関係式１３１とを保存する。
【０１００】
メトリックス・バグ数関係式決定部２０３は、プログラマ別データベース１４４からレビュー対象のソースプログラムを作成したプログラマによって過去に作成された複数のソースプログラムのメトリックスおよび実績バグ数を取得する。そして、メトリックスが定まると、予測バグ数が一意に定まるものと考え、予測バグ数をメトリックスの関数として算出する。次いで、この関数をプログラマ別メトリックス・バグ数相関関係１３１として出力する。
【０１０１】
プログラマ別バグ数予測部２０５は、メトリックス１３０からレビュー対象のソースプログラムのメトリックスを取得すると共に、プログラマ別メトリックス・バグ数関係式１３１からプログラマ別のメトリックスとバグ数の関係式を取得する。そして、プログラマ別の関係式に基づき、メトリックスにより予測バグ数１３４を算出する。なお、実施の形態１で述べたように、複雑度が高いプログラムほど多くのバグが含まれていると考えられる。このため、本実施の形態においても、予測バグ数は、プログラムの複雑度が増大するにつれて、増加する量であるとする。
【０１０２】
これら以外の構成は、レビュー実施順序決定装置１００と同じであり、プログラマ別にメトリックスとバグ数との相関関係を考慮してレビューを実施すべき順番を決定する。以下に、レビュー実施順序決定装置７００が実行する処理について説明する。
【０１０３】
図１１は、レビュー実施順序決定装置７００がレビューの実施順序を決定する処理の流れを示したフローチャートである。
【０１０４】
図１１を参照して、レビュー実施順序決定装置７００がレビューの実施順序を決定する処理について説明する。
【０１０５】
まず、Ｓ９００では、ＣＰＵ１２０は、通信インターフェイス１２８を介して与えられるレビュー対象候補１４０から、レビュー対象候補であるソースプログラムのプログラム名リストＳ（＝｛ｓ１，ｓ２，・・・，ｓｎ｝（ただし、ｎはユーザが入力したレビュー対象のプログラム数を示す。））を読み込みハードディスク１２４に一旦格納する。
【０１０６】
図１２は、レビュー対象候補の一例である。
図１２を参照して、レビュー対象候補のデータ構造の一例について説明する。
【０１０７】
図１２で示されるレビュー対象候補Ｓ＝｛ｓ１，ｓ２，・・・，ｓ６｝は、実施の形態１における図６で示されたレビュー対象候補と同じデータ構造である。ＣＰＵ１２０は、このようなレビュー対象候補Ｓを読み込む。
【０１０８】
図１１に戻って、Ｓ９０２では、ＣＰＵ１２０は、通信インターフェイス１２８を介して与えられるソースプログラム１４２から、レビュー対象候補Ｓのリストに従って、レビュー対象候補のソースプログラムおよび、そのソースプログラムを作成したプログラマのプログラマ名Ｐ（Ｓ）（＝｛ｐ（ｓ１），・・・，ｐ（ｓｎ）｝）を読み込み、ハードディスク１２４に一旦格納する。
【０１０９】
図１３は、ソースプログラム名とそのソースプログラムを作成したプログラマ名とが関連付けを示す図である。
【０１１０】
図１３を参照して、Ｓ９０２で読み込んだソースプログラム名とプログラマ名とについて説明する。
【０１１１】
ＣＰＵ１２０は、図１３で示すように、レビュー対象となるソースプログラム名と、そのソースプログラムを作成したプログラマ名とを関連付けてハードディスク１２４に一旦格納する。図１３では、たとえば、ソース１の作成者は、プログラマａである。
【０１１２】
図１１に戻って、Ｓ９０４では、ＣＰＵ１２０は、Ｓ９００で読み込んだソースプログラムのメトリックスＭ（Ｓ）（＝｛ｍ（ｓ１），・・・，ｍ（ｓｎ）｝）を測定し、ハードディスク１２４内のメトリックス１３０に格納する。
【０１１３】
本実施の形態では、実施の形態１と同様に、ソースプログラムｓのメトリックスｍ（ｓ）として、ソースプログラムｓのコード行数ｌ（ｓ）およびソースプログラムｓの複雑度ｆ（ｓ）を測定する。
【０１１４】
図１４は、レビュー対象候補とメトリックスおよび算出結果を関連付けた図である。
図１４を参照して、レビュー対象候補のメトリックスの一例について説明する。
【０１１５】
図１４において、レビュー対象候補Ｓのプログラム名を表わす列１０と、プログラムの作成者であるプログラマ名Ｐ（Ｓ）を表わす列１１と、メトリックスＭ（Ｓ）を表わす列１２と、レビュー作業予測所要時間Ｔ（Ｓ）を表わす列１３と、メトリックス・バグ数関係式Ｃ（Ｓ）を表わす列１４と、予測バグ数Ｂ（Ｓ）を表わす列１５と、レビュー作業効率Ｅ（Ｓ）を表わす列１６とが示されている。
【０１１６】
本実施の形態では、列１２に示されるように、ＣＰＵ１２０がメトリックスＭ（Ｓ）として、コード行数と複雑度を測定したとする。たとえば、ソース２のメトリックスｍ（ｓ２）は、コード行数ｌ（ｓ２）が５００、複雑度ｆ（ｓ２）が１０である。
【０１１７】
図１１に戻って、Ｓ９０６では、ＣＰＵ１２０は、Ｓ９０４で測定したメトリックスに基づき、レビュー作業所要時間Ｔ（Ｓ）（＝｛ｔ（ｓ１），・・・，ｔ（ｓｎ）｝）を算出し、ハードディスク１２４内のレビュー作業予測所要時間１３２に格納する。
【０１１８】
なお、レビュー作業予測所要時間の算出は実施の形態１と同様に、式（１）に従って算出する。
【０１１９】
図１４において、列１３にレビュー作業予測所要時間を算出した結果を示す。なお、ここでは、例として、ａ１＝０．１とする。たとえば、ソース２のプログラム（コード行数ｌ（ｓ２）＝５００，複雑度ｆ（ｓ２）＝１０）に対し、式（１）に従ってレビュー作業予測所要時間ｔ（ｓ２）を計算すれば、ｔ（ｓ２）（＝０．１×５００×１０）＝５００となる。
【０１２０】
図１１に戻って、Ｓ９０８では、ＣＰＵ１２０は、プログラマ別のメトリックス・バグ数関係式１３１より、プログラマ別のメトリックス・バグ数関係式Ｃ（Ｓ）を取得する。メトリックス・バグ数関係式の算出方法については後述する。
【０１２１】
図１４において、列１４に取得したメトリックス・バグ数関係式Ｃ（Ｓ）を示す。図１４に示されるように、プログラマごとに対応した関係式が算出される。
【０１２２】
図１１に戻って、Ｓ９１０では、ＣＰＵ１２０は、メトリックス１３０からメトリックスＭ（Ｓ）を取得し、メトリックス・バグ数関係式Ｃ（Ｓ）に基づき、予測バグ数Ｂ（Ｓ）（＝｛ｂ（ｓ１），・・・，ｂ（ｓｎ）｝）を算出する。そして、ハードディスク１２４内の予測バグ数１３４に格納する。
【０１２３】
図１４において、列１５に予測バグ数Ｂ（Ｓ）を算出した結果を示す。たとえば、ソース２（複雑度ｆ（ｓ２）＝１０）に対し、メトリックス・バグ数関係式Ｃ（ｓ２）に従って予測バグ数ｂ（ｓ２）を計算すれば、ｂ（ｓ２）（＝０．５×ｅ（０．１×１０））＝１．３６となる。
【０１２４】
図１１に戻って、Ｓ９１２では、ＣＰＵ１２０は、レビュー作業予測所要時間１３２および予測バグ数１３４から、レビュー作業効率Ｅ（Ｓ）（＝｛ｅ（ｓ１），・・・，ｅ（ｓｎ）｝）を算出し、ハードディスク１２４内のレビュー作業効率１３６に格納する。
【０１２５】
ソースプログラムｓのレビュー作業効率ｅ（ｓ）は、上述したように、式（６）に従って算出する。
【０１２６】
図１４において、列１６にレビュー作業効率Ｅ（Ｓ）を算出した結果を示す。たとえば、ソース２（レビュー作業予測所要時間ｔ（ｓ２）＝５００、予測バグ数ｂ（ｓ２）＝１．３６）に対し、式（６）に従ってレビュー作業効率ｅ（ｓ１）を計算すれば、ｅ（ｓ２）（＝１．３６÷５００）＝０．００３となる。
【０１２７】
図１１に戻って、Ｓ９１４では、ＣＰＵ１２０は、レビュー作業効率１３６に基づき、レビュー実施順序を決定し、ハードディスク１２４内のレビュー実施順序１３８に格納する。ここでは、上述のように、レビュー作業効率の値が大きいものから順に並べる。
【０１２８】
図１５は、レビュー実施順序の出力例である。
図１５を参照して、決定されたレビュー実施順序について説明する。
【０１２９】
図１４の列１６で示されるレビュー作業効率Ｅ（ｓ）の中で、一番値が大きいものはソース５である。したがって、図１５において、ソース５が最先にレビューを実施すべきものとして最上位に位置付けられる。以下、レビュー作業効率が高い順に並べられる。
【０１３０】
なお、上記で述べたレビュー実施順序決定の手順は一例である。レビュー作業所要時間の算出や予測バグ数の算出、プログラマ別メトリックス・バグ数関係式の取得は、上記で述べた順に実行することに限られない。
【０１３１】
次に、ステップＳ９０８で取得した、メトリックス・バグ数関係式の算出方法について説明する。
【０１３２】
図１６は、メトリックス・バグ数相関関係式を算出する手順を示したフローチャートである。
【０１３３】
図１６を参照して、メトリックス・バグ数相関関係式の算出について説明する。
Ｓ１４００で、ＣＰＵ１２０は、プログラマ別データベース１４４より、Ｓ９０２で取得したプログラマ名に従って、プログラマ別のメトリックスと実績バグ数をハードディスク１２４に一旦格納する。
【０１３４】
図１７は、プログラマ別のメトリックスと実績バグ数との関連付けを示した図である。
図１７を参照して、プログラマ別のメトリックスと実績バグ数との関連付けについて説明する。
【０１３５】
ＣＰＵ１２０は、図１７に示すように、プログラマ別にメトリックスと実績バグ数とを関連付けて読み込み、ハードディスク１２４に一旦格納する。たとえば、図１７では、ファイル２０では、プログラマａについてのメトリックスと実績バグ数とが関連付けて示されている。なお、ここでは、メトリックスとして複雑度が示されている。
【０１３６】
同様にファイル２２は、プログラマｂについてのメトリックスと実績バグ数とが関連付けて示されている。レビュー対象のソースプログラムのプログラマごとにファイルが作成されていてもよいし、同一のファイルになっていてもよい。
【０１３７】
次いで、Ｓ１４０２で、ＣＰＵ１２０は、プログラマによって過去に作成された複数のプログラムごとの複雑度Ｆｉとプログラムごとのレビュー時に検出された実績バグ数Ｂｉとが次の式（７）のような関係があるとして、プログラマごとの複雑度Ｆｉと実績バグ数Ｂｉとに対して回帰分析を行なう。
【０１３８】
【数６】
2007323299.tif 000008
【０１３９】
なお、ａ４，ａ５は実施の形態１で示した算出方法と同様の方法で算出できる。
まず、式（７）を式（８）のように変換する。
【０１４０】
【数７】
2007323299.tif 000009
【０１４１】
そして、式（８）と、プログラマによって過去に作成されたソースプログラムの複雑度ＦｉとＢｉの組（Ｆ１，Ｂ１），・・・，（Ｆｎ，Ｂｎ）（ただし、ｎはプログラマが過去に作成されたソースプログラムの数を示す。）を用いて、実施の形態１で示した、式（４）および式（５）に基づき、プログラマごとにａ４，ａ５を算出する。
【０１４２】
図１８は、プログラマａのメトリックスと実績バグ数との関連付けを示した図である。
図１８を参照して、プログラマａについてのメトリックスと実績バグ数との関係式の算出について説明する。
【０１４３】
図１８に示すように、ＣＰＵ１２０がプログラマａの複雑度と実績バグ数とを読み込んだとする。ＣＰＵ１２０は、これらと、式（４）および式（５）に基づいてａ４，ａ５を計算し、ａ４≒１、ａ５≒０．１を算出する。
【０１４４】
最後に、Ｓ１３０４で、ＣＰＵ１２０は、メトリックス・バグ数関係式をプログラマ別メトリックス・バグ数関係式１３１に格納する。
【０１４５】
ここでは、ＣＰＵ１２０は、Ｓ１４０２で算出したプログラマごとのａ４およびａ５を、式（７）に代入した関係式を出力する。
【０１４６】
図１９は、プログラマごとにメトリックス・バグ数関係式を示した図である。
図１９を参照して、メトリックス・バグ数関係式について説明する。
【０１４７】
図１９に示すように、メトリックス・バグ数関係式は、Ｓ１３０２で算出したａ４およびａ５を、式（７）に代入した式となる。たとえば、プログラマａに対しては、ステップＳ１４０２で得られたａ４≒１、ａ５≒０．１を式（７）に代入し、（バグ数）＝１×ｅ（０．１×複雑度）という関係式が出力される。
【０１４８】
上述のようして、プログラマ別のメトリックス・バグ数関係式を算出する。
以上で説明したように、本実施の形態に係るレビュー実施順序決定装置によれば、レビュー対象のソースプログラムを作成したプログラマが、過去に作成したソースプログラムに含まれていたバグ数とそのソースプログラムのメトリックスとの相関関係に基づいてレビュー作業効率を算出し、レビュー順序を決定する。これにより、予測バグ数の精度を上げることができる。したがって、限られた時間でより多くのバグを検出できるため、効率的にソフトウェア開発を行なうことが可能である。
【０１４９】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【０１５０】
【図１】実施の形態１に係るレビュー実施順序決定装置１００の構成例を示すブロック図である。
【図２】レビュー実施順序決定装置１００のＣＰＵ１２０の機能的構成を示すブロック図である。
【図３】プログラムの一例を示した図である。
【図４】図３に示すプログラムに対応するフローグラフを示した図である。
【図５】レビュー実施順序決定装置１００がレビューの実施順序を決定する処理の流れを示したフローチャートである。
【図６】レビュー対象候補の一例である。
【図７】レビュー対象候補とメトリックスおよびその他の算出結果を関連付けた図である。
【図８】レビュー実施順序の出力例である。
【図９】実施の形態２に係るレビュー実施順序決定装置７００の構成例を示すブロック図である。
【図１０】レビュー実施順序決定装置７００のＣＰＵ１２０の機能的構成を示すブロック図である。
【図１１】レビュー実施順序決定装置７００がレビューの実施順序を決定する処理の流れを示したフローチャートである。
【図１２】レビュー対象候補の一例である。
【図１３】ソースプログラム名とそのソースプログラムを作成したプログラマ名とが関連付けを示す図である。
【図１４】レビュー対象候補とメトリックスおよび算出結果を関連付けた図である。
【図１５】レビュー実施順序の出力例である。
【図１６】メトリックス・バグ数相関関係式を算出する手順を示したフローチャートである。
【図１７】プログラマ別のメトリックスと実績バグ数との関連付けを示した図である。
【図１８】プログラマａのメトリックスと実績バグ数との関連付けを示した図である。
【図１９】プログラマごとにメトリックス・バグ数関係式を示した図である。
【符号の説明】
【０１５１】
１００，７００  レビュー実施順序決定装置、１０２  コンピュータ本体、１０４  モニタ、１０６  ＦＤドライブ、１０８  光ディスクドライブ、１１０  キーボード、１１２  マウス、１１６  ＦＤ、１１８  ＣＤ−ＲＯＭ、１２０  ＣＰＵ、１２２  メモリ、１２４  ハードディスク、１２８  通信インターフェイス、１３０  メトリックス、１３１  プログラマ別メトリックス・バグ数関係式、１３２  レビュー作業所要時間、１３４  予測バグ数、１３６  レビュー作業効率、１３８  レビュー実施順序、１４０  レビュー対象候補、１４２  ソースプログラム、１４４  プログラマ別データベース、２０２  メトリックス測定部、２０３  メトリックス・バグ数関係式決定部、２０４  レビュー作業所要時間予測部、２０５  プログラマ別バグ数予測部、２０６  バグ数予測部、２０８  レビュー作業効率予測部、２１０  レビュー実施順序決定部。
【図１】
2007323299.tif 000010
【図２】
2007323299.tif 000011
【図３】
2007323299.tif 000012
【図４】
2007323299.tif 000013
【図５】
2007323299.tif 000014
【図６】
2007323299.tif 000015
【図７】
2007323299.tif 000016
【図８】
2007323299.tif 000017
【図９】
2007323299.tif 000018
【図１０】
2007323299.tif 000019
【図１１】
2007323299.tif 000020
【図１２】
2007323299.tif 000021
【図１３】
2007323299.tif 000022
【図１４】
2007323299.tif 000023
【図１５】
2007323299.tif 000024
【図１６】
2007323299.tif 000025
【図１７】
2007323299.tif 000026
【図１８】
2007323299.tif 000027
【図１９】
2007323299.tif 000028