(57)【要約】【課題】ソフトウェアの信頼性を評価することが可能なソフトウェア信頼性評価装置等を提供する。【解決手段】分割条件決定部１４１は、複数のモジュールから構成されるソフトウェアを分割する分割条件として、モジュール位置、開発者、及び開発時期のうちの少なくとも１つである開発条件と、その分割粒度とを表す情報を取得する。分割部１４２は、分割条件に基づいて、ソフトウェアを部分ソースコードに分割し、部分ソースコード情報を生成する。バグ密度算出部１４３は、ソフトウェア全体の全体バグ密度と、部分ソースコード情報毎の部分バグ密度を算出する。評価部１４４は、全体バグ密度に対して部分バグ密度に偏りがあるか否かを判定する。【選択図】図６
2014123246.tif 000002
【特許請求の範囲】
【請求項１】
複数のモジュールから構成されるソフトウェアの品質を評価するソフトウェア信頼性評価装置であって、
モジュールと、当該モジュールの開発時におけるそのモジュールの品質に影響を与えうる開発条件と、を表す情報を対応付けて記憶する開発条件記憶部と、
開発条件と、当該開発条件を構成する複数の要素を分割する際の分割単位の大きさを表す分割粒度と、を表す情報を記憶する分割設定記憶部と、
モジュールと、当該モジュールにおけるバグの個数と、を表すバグ履歴記憶部と、
分割する条件である開発条件と、当該開発条件の分割粒度とを表す情報を取得する分割条件決定部と、
前記開発条件記憶部から、前記分割条件決定部により取得された開発条件に対応するモジュールを特定し、前記分割設定記憶部に記憶された分割粒度及び前記分割条件決定部により取得された分割粒度に基づいて、前記ソフトウェアを部分ソースコードに分割する分割部と、
前記分割部により生成された部分ソースコード毎に、前記バグ履歴記憶部に記憶されたバグの個数に基づいて、部分ソースコード全体におけるバグの割合を表す部分バグ密度と、ソフトウェア全体におけるバグの割合を表す全体バグ密度と、を算出するバグ密度算出部と、
前記バグ密度算出部により算出された部分バグ密度及び全体バグ密度に基づいて、全体バグ密度に対して部分バグ密度に偏りがあるか否かを判定し、偏りがあると判定した部分バグ密度に対応する部分ソースコードを表す情報を出力する評価部と、
を備えることを特徴とするソフトウェア信頼性評価装置。
【請求項２】
前記開発条件は、前記複数のモジュールの階層構造におけるモジュールの位置、モジュールの開発者、モジュールの開発時期のうち少なくとも１つである、
ことを特徴とする請求項１に記載のソフトウェア信頼性評価装置。
【請求項３】
複数のモジュールから構成されるソフトウェアの品質を評価するソフトウェア信頼性評価方法であって、
モジュールと、当該モジュールの開発時におけるそのモジュールの品質に影響を与えうる開発条件と、を表す情報を対応付けて開発条件記憶部に記憶させる開発条件記憶ステップと、
開発条件と、当該開発条件を構成する複数の要素を分割する際の分割単位の大きさを表す分割粒度と、を表す情報を分割設定記憶部に記憶させる分割設定記憶ステップと、
モジュールと、当該モジュールにおけるバグの個数と、を表す情報をバグ履歴記憶部に記憶させるバグ履歴記憶ステップと、
分割する条件である開発条件と、当該開発条件の分割粒度とを表す情報を取得する分割条件決定ステップと、
前記開発条件記憶部から、前記分割条件決定ステップにおいて取得された開発条件に対応するモジュールを特定し、前記分割設定記憶部に記憶された分割粒度及び前記分割条件決定ステップにおいて取得された分割粒度に基づいて、前記ソフトウェアを部分ソースコードに分割する分割ステップと、
前記分割ステップにおいて生成された部分ソースコード毎に、前記バグ履歴記憶部に記憶されたバグの個数に基づいて、部分ソースコード全体におけるバグの割合を表す部分バグ密度と、ソフトウェア全体におけるバグの割合を表す全体バグ密度と、を算出するバグ密度算出ステップと、
前記バグ密度算出ステップにおいて算出された部分バグ密度及び全体バグ密度に基づいて、全体バグ密度に対して部分バグ密度に偏りがあるか否かを判定し、偏りがあると判定した部分バグ密度に対応する部分ソースコードを表す情報を出力する評価ステップと、
を備えることを特徴とするソフトウェア信頼性評価方法。
【請求項４】
複数のモジュールから構成されるソフトウェアの品質を評価するソフトウェア信頼性評価装置が実行するプログラムであって、前記ソフトウェア信頼性評価装置を、
モジュールと、当該モジュールの開発時におけるそのモジュールの品質に影響を与えうる開発条件と、を表す情報を対応付けて記憶する開発条件記憶手段、
開発条件と、当該開発条件を構成する複数の要素を分割する際の分割単位の大きさを表す分割粒度と、を表す情報を記憶する分割設定記憶手段、
モジュールと、当該モジュールにおけるバグの個数と、を表すバグ履歴記憶手段、
分割する条件である開発条件と、当該開発条件の分割粒度とを表す情報を取得する分割条件決定手段、
前記開発条件記憶手段から、前記分割条件決定手段により取得された開発条件に対応するモジュールを特定し、前記分割設定記憶手段に記憶された分割粒度及び前記分割条件決定手段により取得された分割粒度に基づいて、前記ソフトウェアを部分ソースコードに分割する分割手段、
前記分割手段により生成された部分ソースコード毎に、前記バグ履歴記憶手段に記憶されたバグの個数に基づいて、部分ソースコード全体におけるバグの割合を表す部分バグ密度と、ソフトウェア全体におけるバグの割合を表す全体バグ密度と、を算出するバグ密度算出手段、
前記バグ密度算出手段により算出された部分バグ密度及び全体バグ密度に基づいて、全体バグ密度に対して部分バグ密度に偏りがあるか否かを判定し、偏りがあると判定した部分バグ密度に対応する部分ソースコードを表す情報を出力する評価手段、
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア信頼性評価装置、ソフトウェア信頼性評価方法、及びプログラムに関する。
【背景技術】
【０００２】
ソフトウェアの信頼性を評価する方法として、ゴンペルツ曲線モデルやロジスティック曲線モデルと、バグの発生履歴とから残存するバグの数を予測し、ソフトウェアの信頼性を評価する方法がある。また、これらの曲線モデルのパラメータを推定する方法（例えば、特許文献１参照）や、バグ発生履歴と共にバグ発見効率を入力することにより、ゴンペルツ曲線モデルによるソフトウェアの信頼度成長曲線を補正する方法（例えば、特許文献２参照）等により、ソフトウェアの信頼性予測の精度を向上させる技術が知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０００−１２２８６０号公報
【特許文献２】特開２００８−１７１３０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、バグは、ソースコード中に一様に分布する訳ではなく、偏在する傾向がある。従って、従来の信頼性評価方法では、このバグの偏在性が考慮されていないため、算出された信頼性の精度としては、不十分であった。
【０００５】
本発明は、上述の事情の下になされたもので、より精度良くソフトウェアの信頼性を評価することが可能なソフトウェア信頼性評価装置、方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、本発明に係るソフトウェア信頼性評価装置は、
複数のモジュールから構成されるソフトウェアの品質を評価するソフトウェア信頼性評価装置であって、
モジュールと、当該モジュールの開発時におけるそのモジュールの品質に影響を与えうる開発条件と、を表す情報を対応付けて記憶する開発条件記憶部と、
開発条件と、当該開発条件を構成する複数の要素を分割する際の分割単位の大きさを表す分割粒度と、を表す情報を記憶する分割設定記憶部と、
モジュールと、当該モジュールにおけるバグの個数と、を表すバグ履歴記憶部と、
分割する条件である開発条件と、当該開発条件の分割粒度とを表す情報を取得する分割条件決定部と、
前記開発条件記憶部から、前記分割条件決定部により取得された開発条件に対応するモジュールを特定し、前記分割設定記憶部に記憶された分割粒度及び前記分割条件決定部により取得された分割粒度に基づいて、前記ソフトウェアを部分ソースコードに分割する分割部と、
前記分割部により生成された部分ソースコード毎に、前記バグ履歴記憶部に記憶されたバグの個数に基づいて、部分ソースコード全体におけるバグの割合を表す部分バグ密度と、ソフトウェア全体におけるバグの割合を表す全体バグ密度と、を算出するバグ密度算出部と、
前記バグ密度算出部により算出された部分バグ密度及び全体バグ密度に基づいて、全体バグ密度に対して部分バグ密度に偏りがあるか否かを判定し、偏りがあると判定した部分バグ密度に対応する部分ソースコードを表す情報を出力する評価部と、
を備えることを特徴とする。
【発明の効果】
【０００７】
本発明によれば、より精度良くソフトウェアの信頼性を評価することができる。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施形態に係るソフトウェア信頼性評価装置のハードウェア構成を示すブロック図である。
【図２】モジュール位置分割設定情報の一例を示す図である。
【図３】開発者分割設定情報の一例を示す図である。
【図４】開発条件ＤＢの一例を示す図である。
【図５】バグ履歴ＤＢの一例を示す図である。
【図６】本発明の実施形態に係るソフトウェア信頼性評価装置の機能構成を示すブロック図である。
【図７】信頼性評価処理の流れの一例を示すフローチャートである。
【図８】分割条件調整処理の流れの一例を示すフローチャートである。
【図９】開発時期条件調整処理の流れの一例を示すフローチャートである。
【図１０】モジュール位置条件調整処理の流れの一例を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下、本発明の実施形態を添付図面を参照しながら詳細に説明する。
【００１０】
図１は、本発明の実施形態に係るソフトウェア信頼性装置のハードウェア構成を示す概略ブロック図である。ソフトウェア信頼性評価装置１は、複数のモジュールから構成されるソフトウェアの信頼性を評価する装置であって、図１に示すように、入力部１１０と、出力部１２０と、外部インターフェース（Ｉ／Ｆ）１３０と、制御部１４０と、ＲＯＭ（Read Only Memory）１５０と、ＲＡＭ（Random Access Memory）１６０と、記憶部１７０と、から構成される。
【００１１】
入力部１１０は、ユーザがソフトウェア信頼性評価装置１を操作するためのマウスやキーボード等の入力装置２と接続されており、ユーザによって入力される各種の情報を受け付ける。
【００１２】
出力部１２０は、液晶ディスプレイ等の出力装置３に接続されている。出力部１２０は、制御部１４０により出力された各種の情報を出力する。
【００１３】
外部Ｉ／Ｆ部１３０は、ＣＤ（Compact Disc）等のリムーバブルディスクに対して読み書きするためのドライブ装置（図示せず）等に接続されている。また、外部のネットワーク（例えば、インターネット、ＬＡＮ（Local Area Network）等）に接続するための装置や、制御部１４０が生成した情報を印字するためのプリンタに接続されていてもよい。
【００１４】
制御部１４０は、例えば、ＣＰＵ（Central Processing Unit）から構成されており、ソフトウェア信頼性評価装置１の全体の制御を行う。例えば、制御部１４０は、信頼性評価処理を実行する。信頼性評価処理の詳細については後述する。
【００１５】
ＲＯＭ１５０は、制御部１４０がソフトウェア信頼性評価装置１の全体を制御するためのプログラム等を格納する不揮発性メモリである。例えば、ＲＯＭ１５０は、信頼性評価処理を実行するためのプログラムを格納している。
【００１６】
ＲＡＭ１６０は、制御部１４０が生成した情報や、当該情報を生成するために必要なデータを一時的に格納するための揮発性メモリである。
【００１７】
記憶部１７０は、ハードディスクドライブ等の記憶装置から構成される。具体的には、記憶部１７０は、分割設定ＤＢ（データベース）１７１と、開発条件ＤＢ１７２と、バグ履歴ＤＢ１７３と、を記憶する。
【００１８】
分割設定ＤＢ１７１は、モジュールの開発時において該モジュールの品質に影響を与えうる開発条件毎に、その開発条件のソフトウェアの分割粒度を表す分割設定情報を記憶する。ここで、分割粒度とは、開発条件を構成する複数の要素を分割する際の、分割単位の大きさを表す。なお、本実施形態では、モジュールの開発時において該モジュールの品質に影響を与えうる開発条件の一例として、モジュール位置、開発者、及び開発時期を用いる場合について説明する。
【００１９】
モジュール位置は、評価対象であるソフトウェアを構成する複数のモジュールの階層構造（ソースツリー）における位置を表す。モジュール位置が高いほど、そのモジュール内で生じたバグや、開発途中の使用変更の有無の影響範囲は広くなり、ソフトウェアの品質に影響を与えうる。分割設定ＤＢ１７１は、モジュール位置を開発条件とする分割設定情報として、モジュール位置分割設定情報１７１ａを記憶する。
【００２０】
図２に、モジュール位置分割設定情報１７１ａの一例を示す。図２に示すように、モジュール位置分割設定情報は、モジュールの階層構造と、その分割粒度とを表す。図２に示すモジュール位置分割設定情報は、具体的には、モジュールの階層に応じて、「大モジュール」、「中モジュール」、及び「小モジュール」の３つの分割粒度を有する。
【００２１】
開発者は、モジュールを開発した人を表す。開発者のスキルの程度により、その開発者が開発したモジュールの品質に影響を与えうる。分割設定ＤＢ１７１は、開発者を開発条件とする分割設定情報として、開発者分割設定情報１７１ｂを記憶する。
【００２２】
図３に、開発者分割設定情報１７１ｂの一例を示す。図３に示すように、開発者分割設定情報は、開発者のグループ構成と、その分割基準とを表す。図３に示す開発者分割設定情報は、具体的には、「開発者大」、及び「開発者小」の２つの分割粒度を有する。
【００２３】
開発時期は、そのモジュールが開発された時期を表す。開発時期が、どのような時期か、例えば、開発の最終段階なのか初期段階なのかによって開発者の疲労度や精神的余裕が変わるため、開発時期はソフトウェアの品質に影響を与えうる。開発時期を開発条件とする場合、その分割粒度は、例えば、月や週といった一般的な時期の区切りの他、ユーザ等により予め設定された所定の期間を用いることができる。
【００２４】
開発条件ＤＢ１７２は、ソフトウェアを構成する複数のモジュール毎に、そのモジュールの開発条件を表す情報を記憶する。図４に、開発条件ＤＢ１７２に格納されるデータの一例を示す。図４に示すように、開発条件ＤＢ１７２は、具体的には、モジュール毎に、そのモジュールの開発者と、そのモジュールの開発時期と、を表す情報を記憶する。
【００２５】
バグ履歴ＤＢ１７３は、ソフトウェアを構成する複数のモジュール毎に、バグの個数を表す情報を記憶する。図５に、バグ履歴ＤＢ１７３に格納されるデータの一例を示す。バグの個数は、例えば、そのモジュールに対して行われた試験項目のうち、正常な出力が得られなかった試験項目の個数として取得される。
【００２６】
次に、ソフトウェア信頼性評価装置１の制御部１４０の機能的構成について説明する。図６に示すように、制御部１４０は、分割条件決定部１４１、分割部１４２、バグ密度算出部１４３、評価部１４４として機能する。
【００２７】
分割条件決定部１４１は、評価対象であるソフトウェアを分割する際の分割条件を決定する。具体的には、分割条件決定部１４１は、入力部１１０を介して、ユーザから開発条件及びその分割粒度を表す情報を取得する。また、分割条件決定部１４１は、ユーザから開発条件及びその分割粒度を表す情報を取得しない場合等においては、開発条件と分割粒度の全ての組み合わせについて、分割するよう決定してもよい。
【００２８】
また、分割条件決定部１４１は、評価部１４４により、部分バグ密度に偏りがあると判定された場合に、偏りがあると判定された部分ソースコードについて、再度分割するための分割条件を決定する。
【００２９】
分割部１４２は、分割条件決定部１４１により決定された分割条件に応じて、評価対象であるソフトウェアを分割し、部分ソースコード情報を生成する。部分ソースコード情報は、分割条件に応じて評価対象であるソフトウェアが分割された際の、その分割された各部分に属するモジュールを表す情報である。
【００３０】
バグ密度算出部１４３は、評価対象であるソフトウェア全体に対するバグの割合を表す全体バグ密度と、分割部１４２により生成された各部分ソースコード情報が表すモジュール全体に対するバグの割合を表す部分バグ密度と、を算出する。
【００３１】
具体的には、全体バグ密度Ｄａは、評価対象であるソフトウェア全体における既知のバグの数及び未知のバグの数をそれぞれＫａ及びＵａ、評価対象であるソフトウェア全体の開発ステップ数をＳaとして、以下のようにして、算出される。
Ｄａ＝（Ｋａ＋Ｕａ）／Ｓａ・・・（１）
【００３２】
上記の（１）式において、既知のバグの数Ｋａは、例えば、バグ履歴ＤＢ１７３から、評価対象であるソフトウェアを構成する全モジュールのバグの総数として算出できる。また、未知のバグの数Ｕａは、例えば、ゴンペルツ曲線モデルやロジスティック曲線モデルといった周知のバグの数の予測手法により算出できる。また、開発ステップ数Ｓａは、評価対象であるソフトウェアを構成する全モジュールの総ステップ数から算出できる。
【００３３】
また、部分バグ密度Ｄｐは、分割部１４２により生成された各部分ソースコード情報が表すモジュール全体における既知のバグの数及び未知のバグの数をそれぞれＫｐ及びＵｐ、そのモジュール全体の開発ステップ数をＳｐとして、以下のようにして、算出される。
Ｄｐ＝（Ｋｐ＋Ｕｐ）／Ｓｐ・・・（２）
【００３４】
上記の（２）式において、既知のバグの数Ｋｐは、例えば、バグ履歴ＤＢ１７３から、各部分ソースコード情報が表すモジュール全体のバグの総数として算出できる。また、未知のバグの数Ｕｐは、例えば、ゴンペルツ曲線モデルやロジスティック曲線モデルといった周知のバグの数の予測手法により算出できる。また、開発ステップ数Ｓｐは、分割部１４２により生成された各部分ソースコード情報が表すモジュール全体の総ステップ数から算出できる。
【００３５】
評価部１４４は、バグ密度算出部１４３により算出された全体バグ密度及び部分バグ密度に基づいて、全体バグ密度に対して部分バグ密度に偏りがあるか否かを判定する。具体的には、評価部１４４は、バグ密度算出部１４３において算出された部分バグ密度毎に、部分バグ密度が全体バグ密度よりも所定値以上大きいか否かを判定し、所定値以上大きい場合に部分バグ密度に偏りがあると判定する。
【００３６】
次に、ソフトウェア信頼性評価装置１が実行する信頼性評価処理の流れについて説明する。図７は、ソフトウェア信頼性評価装置１が実行する信頼性評価処理の流れの一例を示すフローチャートである。図７に示す信頼性評価処理は、例えば、入力装置２を介して、ユーザにより信頼性評価処理の実行を開始する旨を表す操作が入力されたことを契機として開始される。また、分割設定ＤＢ１７１、開発条件ＤＢ１７２、バグ履歴ＤＢ１７３に格納されているデータは、予め、評価対象であるソフトウェアから抽出されることにより、もしくはユーザにより入力装置２を介して入力されることにより、記憶部１７０に格納されているものとする。
【００３７】
まず、バグ密度算出部１４３は、全体バグ密度を算出する（ステップＳ１１）。具体的には、バグ密度算出部１４３は、評価対象のソフトウェア全体について、（１）式を用いて全体バグ密度を算出する。
【００３８】
次に、分割条件決定部１４１は、入力部１１０を介してユーザから分割条件として、開発条件と、その分割粒度を表す情報を取得する（ステップＳ１２）。
【００３９】
次に、分割部１４２は、ステップＳ１２において取得された開発条件と、その分割粒度とに基づいて、部分ソースコード情報を生成する（ステップＳ１３）。
【００４０】
部分ソースコード情報の生成について、以下具体的に説明する。例えば、ステップＳ１２において、分割条件決定部１４１は、開発条件として「モジュール位置」、その分割粒度として「モジュール中」を取得したとする。この場合、分割部１４２は、分割設定ＤＢ１７１に格納されたモジュール位置分割設定情報１７１ａを参照して、モジュール中に対応する分割粒度で、評価対象であるソフトウェアを分割し、その部分ソースコードを構成する全モジュールを表す部分ソースコード情報を生成する。
【００４１】
具体的には、図２に示すモジュール位置分割設定情報１７１ａにおいて、分割部１４２は、モジュール中を分割粒度として分割することにより、「ＡＡ」、「ＡＡ」の下位のモジュールである「ＡＡａ」及び「ＡＡｂ」を表す部分ソースコード情報と、「ＡＢ」、「ＡＢ」の下位のモジュールである「ＡＢａ」、「ＡＢｂ」及び「ＡＢｃ」を表す部分ソースコード情報と、の２つの部分ソースコード情報を生成する。
【００４２】
また、分割条件決定部１４１が、複数の開発条件と、それぞれの開発条件の分割粒度を取得した場合は、分割部１４２は、その開発条件と分割粒度との組み合わせにより、評価対象のソフトウェアを分割し、部分ソースコード情報を生成する。
【００４３】
例えば、ステップＳ１２において、分割条件決定部１４１は、開発条件として「モジュール位置」、その分割粒度として「モジュール中」の他、さらに開発条件として「開発時期」、その分割粒度として「月」を取得したとする。この場合、分割部１４１は、分割設定ＤＢ１７１に格納されたモジュール位置分割設定情報１７１ａを参照して、モジュール中に対応する分割粒度で、評価対象であるソフトウェアを分割する。そしてさらに、分割部１４２は、その分割された各部分ソースコード毎に、開発条件ＤＢ１７２を参照して、その部分ソースコードの開発時期を特定する。そして、分割部１４２は、特定された開発時期の月毎に、さらに部分ソースコードを分割することにより、部分ソースコード情報を生成する。
【００４４】
次に、バグ密度算出部１４３は、ステップＳ１３において生成された部分ソースコード情報毎に、部分バグ密度を算出する（ステップＳ１４）。具体的には、バグ密度算出部１４３は、ステップＳ１３において生成された部分ソースコード情報毎に、その部分ソースコード情報が表すモジュール全体について、（２）式を用いて部分バグ密度を算出する。
【００４５】
次に、評価部１４４は、部分ソースコード情報毎に、ステップＳ１１において算出された全体バグ密度に対して、ステップＳ１４において算出された部分バグ密度に偏りがあるか否かを判定する（ステップＳ１５）。具体的には、評価部１４４は、部分バグ密度が、全体バグ密度よりも所定値以上である場合、部分バグ密度に偏りがあると判定する。
【００４６】
そして、評価部１４４は、部分バグ密度に偏りがあると判定した場合（ステップＳ１５；Ｙｅｓ）、分割条件調整処理を実行する（ステップＳ１６）。また、評価部１４４は、部分バグ密度に偏りがないと判定した場合（ステップＳ１５；Ｎｏ）、ステップＳ１７に処理を進める。
【００４７】
図８は、ソフトウェア信頼性評価装置１が実行する分割条件調整処理の流れの一例を示すフローチャートである。
【００４８】
まず、分割条件決定部１４１は、図７のステップＳ１２において取得した開発条件に開発時期を含むか否かを判定する（ステップＳ２１）。
【００４９】
開発時期を含むと判定した場合（ステップＳ２１；Ｙｅｓ）、開発時期条件調整処理を実行する（ステップＳ２２）。開発時期を含まないと判定した場合（ステップＳ２１；Ｎｏ）、ステップＳ２４に処理を進める。
【００５０】
図９は、ソフトウェア信頼性評価装置１が実行する開発時期条件調整処理の流れの一例を示すフローチャートである。この開発時期条件調整処理では、図７のステップＳ１５において部分バグ密度に偏りがあると判定された部分について、開発時期の分割粒度に対応する期間を前後にずらして、再度部分バグ密度を算出することにより、バグ密度が高い時期をさらに精度よく特定することができる。
【００５１】
まず、分割条件決定部１４１は、図７のステップＳ１５において部分バグ密度に偏りがあると判定された部分ソースコード情報について、その開発時期の分割粒度に対応する期間を初期期間として設定する（ステップＳ３１）。また、初期期間からずらした日数を表すｎを０に設定する。
【００５２】
分割条件決定部１４１は、ｎに１をインクリメントする（ステップＳ３２）。
【００５３】
次に、分割条件決定部１４１は、ｎが、ステップＳ１２において取得した開発時期の分割粒度よりも小さいか否かを判定する（ステップＳ３３）。
【００５４】
ｎが分割粒度よりも小さいと判定した場合（ステップＳ３３；Ｙｅｓ）、分割部１４２は、開発条件ＤＢ１７２を参照し、開発時期が、初期期間からｎ日前にずらした期間内であるモジュールについて部分モジュール情報を生成し、バグ密度算出部１４３は、その部分モジュール情報について、部分バグ密度を算出する（ステップＳ３４）。
【００５５】
また、分割部１４２は、開発条件ＤＢ１７２を参照し、開発時期が、初期期間からｎ日後にずらした期間内であるモジュールについて部分モジュール情報を生成し、バグ密度算出部１４３は、その部分モジュール情報について、部分バグ密度を算出する（ステップＳ３５）。そして、処理をステップＳ３２に戻す。
【００５６】
ｎが分割粒度以上であると判定した場合（ステップＳ３３；Ｎｏ）、評価部１４４は、ステップＳ３４及びステップＳ３５において算出された部分バグ密度のうち、最もバグ密度が高い期間を高バグ密度期間として記憶する（ステップＳ３６）。そして、図８のステップＳ２３に進む。
【００５７】
図８に戻って、開発条件に開発時期を含まないと判定した場合（ステップＳ２１；Ｎｏ）、分割条件決定部１４１は、図７のステップＳ１２において取得した開発条件にモジュール位置を含むか否かを判定する（ステップＳ２３）。
【００５８】
開発条件にモジュール位置を含むと判定した場合（ステップＳ２３；Ｙｅｓ）、図１０のモジュール位置条件調整処理に進める（ステップＳ２４）。
【００５９】
図１０は、ソフトウェア信頼性評価装置１が実行するモジュール位置条件調整処理の流れの一例を示すフローチャートである。このモジュール位置条件調整処理では、図７のステップＳ１５において部分バグ密度に偏りがあると判定された部分について、その隣接するモジュールについて、再度部分バグ密度を算出することにより、バグ密度が高いモジュールをさらに精度よく特定することができる。なお、本実施形態において、隣接するモジュールとは、具体的には、モジュールの階層構造における下位にあたるモジュールとする。ただし、隣接するモジュールはこれに限られず、例えば、モジュールの階層構造における親や兄弟も、隣接するモジュールとして考慮してもよい。
【００６０】
まず、分割条件決定部１４１は、分割条件として、開発条件をモジュール位置、その分割粒度を図７のステップＳ１２において取得された分割粒度を決定する（ステップＳ４１）。
【００６１】
次に、分割部１４２は、図７のステップＳ１３と同様に、ステップＳ４１において決定された分割条件に基づいて、部分ソースコード情報を生成する（ステップＳ４２）。
【００６２】
次に、バグ密度算出部１４３は、図７のステップＳ１４と同様に、ステップＳ４２において生成された部分ソースコード情報毎に、部分バグ密度を算出する（ステップＳ４３）。
【００６３】
次に、評価部１４４は、部分バグ密度が、所定値以上のものがあるか否かを判定する（ステップＳ４４）。評価部１４４は、所定値以上のものがないと判定した場合（ステップＳ４４；Ｎｏ）、図８のステップＳ２５に処理を進める。
【００６４】
部分バグ密度が所定値以上のものがあると判定した場合（ステップＳ４４；Ｙｅｓ）、評価部１４４は、隣接するモジュールを１つ選択する（ステップＳ４５）。具体的には、モジュール位置分割設定情報１７１ａを参照して、隣接するモジュールの情報を取得する。
【００６５】
そして、評価部１４４は、隣接するモジュールについて、部分バグ密度が所定値以上か否かを判定する（ステップＳ４６）。評価部１４４は、所定値よりも小さいと判定した場合（ステップＳ４６；Ｎｏ）、ステップＳ４８に処理を進める。
【００６６】
部分バグ密度が所定値以上であると判定した場合（ステップＳ４６；Ｙｅｓ）、評価部１４４は、そのモジュールを高バグ密度モジュールとして記憶する（ステップＳ４７）。
【００６７】
次に、評価部１４４は、未評価の隣接モジュールがあるか否かを判定する（ステップＳ４８）。未評価の隣接モジュールがあると判定した場合（ステップＳ４８；Ｙｅｓ）、ステップＳ４５に処理を戻す。また、未評価の隣接モジュールがないと判定した場合（ステップＳ４８；Ｎｏ）、図８のステップＳ２５に進む。
【００６８】
図８に戻って、評価部１４４は、評価結果として、記憶された高バグ密度期間及び高バグ密度モジュールを表示する（ステップＳ２５）。
【００６９】
図７に戻って、評価部１４４は、ステップＳ１２において取得した分割条件とは異なる分割条件において再度評価するか否かを判定する（ステップＳ１７）。具体的には、評価部１４４は、入力部１１０を介してユーザから再度評価する指示を表す入力を受け付けたか否かを判定する。そして、再度評価すると判定した場合（ステップＳ１７；Ｙｅｓ）、処理をステップＳ１２に戻し、再度評価しないと判定した場合（ステップＳ１７；Ｎｏ）、信頼性評価処理を終了する。
【００７０】
以上説明したように、本実施形態に係るソフトウェア信頼性評価装置１は、ソフトウェアの品質に影響を与える開発条件と、その分割粒度に応じて、ソフトウェアを分割し、部分ソースコード毎にバグ密度を算出する。これにより、ソフトウェアのどの部分においてバグが偏在しているのかを把握でき、ユーザは、ソフトウェアの信頼性を精度よく把握することができる。
【００７１】
以上、本発明の実施形態について説明したが、本発明は実施形態によって限定されるものではない。
【００７２】
例えば、本実施形態において、開発条件であるモジュール位置は、図２のモジュール位置分割設定情報１７１ａに示すように、モジュールの階層構造における位置を表すものとして説明した。しかし、モジュール位置の表し方は、これに限られない。例えば、モジュール間の呼び出し関係を用いて、モジュール位置や、その分割粒度を、モジュール位置分割設定情報１７１ａとしてもよい。
【００７３】
また、本実施形態において、全体バグ密度及び部分バグ密度に代えて、全体残存バグ密度及び部分残存バグ密度を用いて評価してもよい。ここで、残存バグ密度Ｄは、評価対象であるソフトウェア（もしくはモジュール）全体の開発ステップ数に対する、そのソフトウェア（もしくはモジュール）全体の未知のバグの数の割合として表される。
【００７４】
また、本実施形態では、評価部１４４は、バグ密度が高いと判定したモジュールをユーザに表示するとして説明したが、ユーザへの結果の出力態様はこれに限られない。例えば、モジュール位置分割設定情報１７１ａにおけるモジュールと、仕様書に記載されたモジュールとの間の対応関係が予め設定されている場合、仕様書とともにバグ密度が高いと判定されたモジュールを示すように出力してもよい。
【００７５】
また、本発明に係るソフトウェア信頼性評価装置１は、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。例えば、ネットワークに接続されているコンピュータに、上記動作を実行するためのプログラムを、コンピュータシステムが読み取り可能な記録媒体（ＣＤ−ＲＯＭ、ＭＯ等）に格納して配布し、当該プログラムをコンピュータシステムにインストールすることにより、上述の処理を実行するソフトウェア信頼性評価装置１を構成してもよい。
【００７６】
また、コンピュータにプログラムを提供する方法は任意である。例えば、プログラムは、通信回線の掲示板（ＢＢＳ）にアップロードされ、通信回線を介してコンピュータに配信されてもよい。また、プログラムは、プログラムを表す信号により搬送波を変調した変調波により伝送され、この変調波を受信した装置が変調波を復調してプログラムを復元するようにしてもよい。そして、コンピュータは、このプログラムを起動して、ＯＳの制御のもと、他のアプリケーションと同様に実行する。これにより、コンピュータは、上述の処理を実行するソフトウェア信頼性評価装置１として機能する。
【符号の説明】
【００７７】
１  ソフトウェア信頼性評価装置、１１０  入力部、１２０  出力部、１３０  外部Ｉ／Ｆ部、１４０  制御部、１４１  分割条件決定部、１４２  分割部、１４３  バグ密度算出部、１４４  評価部、１５０  ＲＯＭ、１６０  ＲＡＭ、１７０  記憶部、１７１  分割設定ＤＢ、１７１ａ  モジュール位置分割設定情報、１７１ｂ  開発者分割設定情報、１７２  開発条件ＤＢ、１７３  バグ履歴ＤＢ、２  入力装置、３  出力装置
【図１】
2014123246.tif 000003
【図２】
2014123246.tif 000004
【図３】
2014123246.tif 000005
【図４】
2014123246.tif 000006
【図５】
2014123246.tif 000007
【図６】
2014123246.tif 000008
【図７】
2014123246.tif 000009
【図８】
2014123246.tif 000010
【図９】
2014123246.tif 000011
【図１０】
2014123246.tif 000012