(57)【特許請求の範囲】
【請求項１】
パワー変換関数が有するフィルタパラメータに基づいて、ソフトウェアメトリクスの値にパワー変換を適用して、説明変数を生成するパワーフィルタ適用工程と、
前記説明変数と予測モデルとを用いて、二値の判別又は数値を予測する予測モデル適用工程と、
前記フィルタパラメータを決定するフィルタパラメータ決定工程と、
前記予測モデルの評価値を求め、当該評価値に基づいて、前記予測モデル適用工程で用いる予測モデルパラメータを決定する予測モデル学習工程と、をコンピュータが実行し、
前記フィルタパラメータ決定工程では、前記予測モデルの評価値が適正な方向に変化するようにフィルタパラメータを更新する処理を繰り返し、
前記パワーフィルタ適用工程では、前記評価値が適正な方向に変化しなくなったときのフィルタパラメータを用いることを特徴とする予測方法。
【請求項２】
ソフトウェアの各種情報からソフトウェアメトリクスの値を計測するメトリクス計測工程を、前記コンピュータが更に実行し、
前記予測モデル学習工程では、ソフトウェアメトリクスの値にパワー変換を適用したものを説明変数とし、前記二値又は数値の過去の値を応答変数として予測モデルパラメータを決定することを特徴とする請求項１に記載の予測方法。
【請求項３】
前記フィルタパラメータ決定工程では、前記フィルタパラメータのとりうる値に制限をかけて前記フィルタパラメータを決定することを特徴とする請求項１又は２に記載の予測方法。
【請求項４】
前記二値は、障害の有無を示す二値を含むことを特徴とする請求項１〜３のいずれか一項に記載の予測方法。
【請求項５】
前記数値は、ソフトウェアを変更する工数を含むことを特徴とする請求項１〜３のいずれか一項に記載の予測方法。
【請求項６】
前記予測モデルとして、回帰分析を用いることを特徴とする請求項１〜５のいずれか一項に記載の予測方法。
【請求項７】
前記予測モデルの評価値として、赤池情報量基準（ＡＩＣ）を用いることを特徴とする請求項１〜６のいずれか一項に記載の予測方法。
【請求項８】
パワー変換関数が有するフィルタパラメータに基づいて、ソフトウェアメトリクスの値にパワー変換を適用して、説明変数を生成し、
前記説明変数と予測モデルとを用いて、二値の判別又は数値を予測し、
前記説明変数を生成する処理で用いる前記フィルタパラメータを決定し、
前記予測モデルの評価値を求め、当該評価値に基づいて、前記予測する処理で用いる予測モデルパラメータを決定する、処理をコンピュータに実行させ、
前記フィルタパラメータを決定する処理では、前記予測モデルの評価値が適正な方向に変化するようにフィルタパラメータを更新する処理を繰り返し、
前記パワー変換では、前記評価値が適正な方向に変化しなくなったときのフィルタパラメータを用いることを特徴とする予測プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は、予測方法及び予測プログラムに関する。
【背景技術】
【０００２】
ソフトウェアの障害予測は、ソフトウェアの品質向上の手段として従来から大きな成果を上げている。ソフトウェアの障害予測には、統計モデルを用いた回帰分析や、機械学習を用いたデータマイニングの手法などが用いられる。特に、回帰分析を用いる場合、単なる障害の有無のみでなく連続値（障害発生率）が予測できるため、障害予防活動の優先順位付けやリスク見積もりに応用でき、産業上の利用価値が高い。なお、ソフトウェア障害予測に関する著名な論文である非特許文献１では、ロジスティック回帰分析が用いられており、同手法は現在まで広く一般的に用いられている。
【０００３】
また、ソフトウェアを変更する工数（ソフトウェアの工数）の予測も、ソフトウェア開発の品質向上や効率化に大きな成果を上げている。ソフトウェアの工数予測には、障害予測と同様、統計的手法やデータマイニングの手法が広く用いられるが、連続値を予測する必要があることから、回帰分析を利用するのが一般的である。例えば、ソフトウェア工数予測の論文である非特許文献２では、両側対数変換線形回帰分析を用いており、この手法も近年では標準的な手法である。なお、障害予測技術と工数予測技術の両技術は、入力として「ソフトウェアメトリクス」という同じ範疇に属するデータを用い、統計モデルを用いた回帰分析に基づく予測を行うという共通性を有している。ソフトウェアメトリクスは、対象のソフトウェアやそのソフトウェアを開発・保守しているプロジェクトの活動情報から採取した情報である。
【０００４】
一般的に、障害予測や工数予測を行う場合、予測に用いる予測モデルを作成する「準備」と、作成された予測モデルを用いて実際の予測を行う「実施」の２つのフェーズが実行される。「準備」の段階では、説明変数と応答変数の組のデータを過去のソフトウェアデータベースから作成し、その説明変数から応答変数をできるだけ正しく予測できるように予測モデルを学習させる。一方、「実施」の段階では、予測対象のソフトウェアから計測された説明変数を予測モデルに適用し、予測値である応答変数を計算する。
【０００５】
図２１には、従来における障害予測装置の構成の一例が示されている。図２１の障害予測装置では、予測モデル作成手段が予測モデルを作成する準備段階を行う。この予測モデル作成手段では、第１メトリクス計測手段において過去ソースコードＤＢ内のソースコード情報から計測される各種ソフトウェアメトリクスが説明変数となり、過去障害情報ＤＢから取得される障害情報が応答変数となる。予測モデル学習手段では、これら説明変数と応答変数を用いて予測モデルを学習し、学習結果の予測モデルを表現する予測モデルパラメータを予測手段に対して出力する。これに対し、予測手段においては、第２メトリクス計測手段が分析対象ソースコードから各種メトリクスを計測した結果が説明変数となる。そして、予測モデル適用手段では入力された予測モデルパラメータで表現される予測モデルに対し入力された説明変数を適用し、計算された応答変数を障害予測結果として出力する。なお、従来における工数予測手段の構成も図２１とほぼ同様であるが、図２１の「過去障害情報ＤＢ」が「過去工数情報ＤＢ」となり、「障害予測結果」が「工数予測結果」となる点が異なる。
【０００６】
ここで、ソフトウェアの障害発生や工数は、技術的や自然的な要因によるものに限らず、人間の思索や経済的社会的な外部の環境変化、予測不能な偶発要因など様々な要因により影響を受ける。このため、測定可能なメトリクスのみではすべての障害発生や工数の要因を説明するには十分ではない。そのため、より高い予測性能を得るために入手できた情報を最大限活用するための様々な改良が試みられ続けている。
【０００７】
その試みの一つとして予測モデルの式を探索的に決定するアプローチがある。このアプローチは、例えば、適切な予測モデルの式を見出すために三角関数や除算など任意の関数や演算子を遺伝的アルゴリズムにて組み合わせて探索しようというものである。
【０００８】
また、別の試みとして、入手したメトリクスの情報を最大限活かすために、メトリクスの値を前処理にてフィルタリングするアプローチがある。例えば、非特許文献２には、対数関数でメトリクスを予め変換しておくログフィルタリングによってソフトウェアの工数予測の性能が向上する可能性があると述べられている。ログフィルタリングを適用する場合、(1)全てのメトリクスに適用する、(2)専門知識に基づいて見込みのありそうなメトリクス（概ねコードサイズメトリクスなど）に適用する、(3)適用不適用の全ての組み合わせを試す、など種々の試みがなされている。図２２には、ログフィルタリングが行われる予測装置の構成の一例が示されている。図２２では、第１、第２メトリクス計測手段の後段に、第１、第２ログフィルタ適用手段が設けられている。
【先行技術文献】
【非特許文献】
【０００９】
【非特許文献１】V.R. Basili, L.C. Briand, and W.L. Melo, “A Validation of Object-Oriented Design Metrics as Quality Indicators,” IEEE Transactions on Software Engineering, vol. 22, no. 10, pp. 751-761, 1996. URL: http://dx.doi.org/10.1109/32.544352
【非特許文献２】門田暁人, 小林健一, “線形重回帰モデルを用いたソフトウェア開発工数予測における対数変換の効果,” コンピュータソフトウェア, vol. 27, No. 4, pp. 234-239, 2010. URL: http://joi.jlc.jst.go.jp/JST.JSTAGE/jssst/27.4_234
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、上述したような予測モデル式を探索するアプローチでは、関数空間を闇雲に探すことになるため探索空間が膨大となり、探索に長時間を要するおそれがある。また、予測性能も然程高くないなどの課題もある。
【００１１】
これに対し、上述したようなフィルタリングで前処理するアプローチでは、計算時間のオーバヘッドがわずかでありながらその予測改善効果は高く、また、解釈が容易であるという利点がある。しかるに、フィルタリングで前処理するアプローチは、処理が単純なだけあってメトリクスの持つ情報を十分活かしきることができず、予測性能の向上は限定的であり、十分な性能を発揮するには至っていない。
【００１２】
そこで本件は上記の課題に鑑みてなされたものであり、予測性能を向上することが可能な予測方法及び予測プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
本明細書に記載の予測方法は、パワー変換関数が有するフィルタパラメータに基づいて、ソフトウェアメトリクスの値にパワー変換を適用して、説明変数を生成するパワーフィルタ適用工程と、前記説明変数と予測モデルとを用いて、二値の判別又は数値を予測する予測モデル適用工程と、前記フィルタパラメータを決定するフィルタパラメータ決定工程と、前記予測モデルの評価値を求め、当該評価値に基づいて、前記予測モデル適用工程で用いる予測モデルパラメータを決定する予測モデル学習工程と、をコンピュータが実行し、前記フィルタパラメータ決定工程では、前記予測モデルの評価値が適正な方向に変化するようにフィルタパラメータを更新する処理を繰り返し、前記パワーフィルタ適用工程では、前記評価値が適正な方向に変化しなくなったときのフィルタパラメータを用いる予測方法である。
【００１４】
本明細書に記載の予測プログラムは、パワー変換関数が有するフィルタパラメータに基づいて、ソフトウェアメトリクスの値にパワー変換を適用して、説明変数を生成し、前記説明変数と予測モデルとを用いて、二値の判別又は数値を予測し、前記説明変数を生成する処理で用いる前記フィルタパラメータを決定し、前記予測モデルの評価値を求め、当該評価値に基づいて、前記予測する処理で用いる予測モデルパラメータを決定する、処理をコンピュータに実行させ、前記フィルタパラメータを決定する処理では、前記予測モデルの評価値が適正な方向に変化するようにフィルタパラメータを更新する処理を繰り返し、前記パワー変換では、前記評価値が適正な方向に変化しなくなったときのフィルタパラメータを用いる予測プログラムである。
【発明の効果】
【００１５】
本明細書に記載の予測方法及び予測プログラムは、予測性能を向上することができるという効果を奏する。
【図面の簡単な説明】
【００１６】
【図１】第１の実施形態に係る障害予測装置のハードウェア構成を示す図である。
【図２】障害予測装置の機能ブロック図である。
【図３】あるソフトウェアにおけるメトリクス「loc」と障害発生率（障害率）との関係を示すグラフである。
【図４】あるソフトウェアにおけるメトリクス「uniq Op」と障害発生率（障害率）との関係を示すグラフである。
【図５】シフト係数αを０、正規化係数ｍを１に固定してパワー係数λを０，１，２の３種に変化させたパワー変換の関数プロットである。
【図６】フィルタパラメータ決定手段と予測モデル学習手段の詳細な構成を示すブロック図である。
【図７】メトリクス情報の一例を示す図である。
【図８】メトリクスの意味を示す図（表）である。
【図９】フィルタパラメータの一例を示す図である。
【図１０】計測されたメトリクスデータの一例を示す図である。
【図１１】障害情報データの一例を示す図である。
【図１２】予測モデルパラメータの一例を示す図である。
【図１３】使用メトリクスリストを示す図である。
【図１４】図６の変数選択手段の処理を示すフローチャートである。
【図１５】図６のモデル追加変数探索手段の処理を示すフローチャートである。
【図１６】図６のモデル除去変数探索手段の処理を示すフローチャートである。
【図１７】図６のパワー係数決定手段の処理を示すフローチャートである。
【図１８】図１８（ａ）〜図１８（ｃ）は、第１の実施形態の効果を説明するための図である。
【図１９】第２の実施形態に係る工数予測装置の機能ブロック図である。
【図２０】工数情報データの一例を示す図である。
【図２１】従来技術を説明するための図（その１）である。
【図２２】従来技術を説明するための図（その２）である。
【発明を実施するための形態】
【００１７】
《第１の実施形態》
以下、ソフトウェアの障害予測装置１００の一実施形態について、図１〜図１８に基づいて詳細に説明する。図１には、ソフトウェアの障害予測装置１００のハードウェア構成が示されている。図１に示すように、障害予測装置１００は、ＣＰＵ９０、ＲＯＭ９２、ＲＡＭ９４、表示部９３、入力部９５、記憶部（ここではＨＤＤ（Hard Disk Drive））９６、及び可搬型記憶媒体用ドライブ９９等を備えており、障害予測装置１００の構成各部は、バス９８に接続されている。表示部９３は、液晶ディスプレイ等を含み、入力部９５は、キーボード、マウス等を含む。障害予測装置１００では、ＲＯＭ９２あるいはＨＤＤ９６に格納されているプログラム（予測プログラム）、或いは可搬型記憶媒体用ドライブ９９が可搬型記憶媒体９１から読み取ったプログラム（予測プログラム）をＣＰＵ９０が実行することにより、図２の各部の機能が実現される。
【００１８】
図２には障害予測装置１００の機能ブロック図が示されている。なお、図２の矢印は、処理の流れ及びそれに伴うデータの流れを表すものである。図２に示すように、障害予測装置１００は、ＣＰＵ９０が予測プログラムを実行することで、予測モデル作成手段１０、及び予測手段２０としての機能を実現している。なお、図２には、ＨＤＤ９６等に格納される過去ソースコードＤＢ３０、過去障害情報ＤＢ３２、分析対象ソースコード３４、及び障害予測結果３６も図示されている。
【００１９】
予測モデル作成手段１０は、障害予測のための予測モデルを作成する準備段階の処理を実行する手段であり、予測手段２０は、実際に障害予測する実施段階の処理を実行する手段である。ここで、本実施形態では、予測の単位をモジュールと呼ぶものとする。モジュールはソフトウェアの一部分であり、通常、ソースコード１本やクラス１つに相当する。なお、本実施形態では、モジュール１つがソースコード１本であるものとする。
【００２０】
ここで、本実施形態の障害予測装置１００は、従来のログフィルタを用いた障害予測装置（図２２参照）と同様、入力されたソースコードから計測されたメトリクスにフィルタリングを行って、予測モデルの説明変数とする。ただし、本実施形態では、フィルタリングにパワーフィルタを用いる。ここで、ログフィルタで使用される対数関数はパラメータを有さないのに対し、パワーフィルタで使用されるパワー変換関数はパラメータを有している（なお、ログフィルタで使用される対数関数は、厳密には、底をパラメータとして持つが、底の変換は定数倍にしか過ぎず、回帰分析では、定数乗数は最終結果に影響を及ぼさないため、底はパラメータとして扱われることはない）。このフィルタ及びパラメータの違いにより、本実施形態の障害予測装置１００は、図２２とは異なる構成となっている。
【００２１】
予測モデル作成手段１０は、図２に示すように、第１メトリクス計測手段１２と、フィルタパラメータ決定手段１４と、第１パワーフィルタ適用手段１６と、予測モデル学習手段１８と、を有する。また、予測手段２０は、第２メトリクス計測手段２２と、第２パワーフィルタ適用手段２４と、予測モデル適用手段２６と、を有する。
【００２２】
なお、本実施形態では、第２パワーフィルタ適用手段２４（及び第１パワーフィルタ適用手段１６）において、パワーフィルタの技術を導入している。ここで、ソースコードの属性値（例えばソースコード行数や循環的複雑度など）を示すソフトウェアメトリクスの多くは、パワー変換（別名べき変換）を行うパワーフィルタによって障害との相関が向上するという性質がある。すなわち、本実施形態では、パワーフィルタを用いることで、より性能の高いソフトウェア障害予測を実現する。
【００２３】
以下、パワーフィルタについて詳細に説明する。なお、以下においては、典型的な予測モデルであるロジスティック回帰分析にパワーフィルタを適用する場合を例にとり説明する。
【００２４】
次式（１）はロジスティック回帰分析の予測モデル式である。
【数１】
0005803469.tif 000002
【００２５】
上式（１）のうち、ｘ1，ｘ2，…ｘnは説明変数、ｎは説明変数の個数を表す。また、ｙは応答変数（予測値）である。また、ａ0，ａ1，ａ2，…ａnはモデルのパラメータであり、特に回帰分析では偏回帰係数と呼ばれる。expは指数関数である。
【００２６】
ここで、「予測」とは、上記予測モデル式に説明変数ｘ1，ｘ2，…ｘnを代入し、予測値ｙを求めることをいう。また、「予測モデルの学習」とは、説明変数ｘ1，ｘ2，…ｘnとそれに対応する応答変数の実測値ｚの組の集合からなるサンプルデータが与えられたときに、ｙとｚの差異を表す評価関数が最小になるようなｙが出力されるように、パラメータ（偏回帰係数）ａ0，ａ1，ａ2，…ａnを決定することをいう。なお、一般的には、最尤推定法を用いて、パラメータａ0，ａ1，ａ2，…ａnが決定される。
【００２７】
ここで、メトリクスｗiから説明変数ｘiを得るために用いられるフィルタｆiを関数ｘi＝ｆi(ｗi)で表すとすれば、上式（１）より、フィルタを用いたロジスティック回帰分析の予測モデル式は次式（２）で表すことができる。
【数２】
0005803469.tif 000003
【００２８】
この場合、パワーフィルタに用いるパワー変換関数は、次式（３）で表される。
【数３】
0005803469.tif 000004
【００２９】
上式（３）のうち、λはパワー係数、αはシフト係数、ｍは正規化係数である。シフト係数αは、上式（３）のｗ＋αの項を正値に保つために設けられている。このシフト係数αは、メトリクス値ｗの値域集合をＷとしたとき、Ｗの最小値ｍｉｎ（Ｗ）を用いて次式（４）で決定される。なお、εは適当な正の小さな値であるものとし、本実施形態ではεとして１を採用する。
【数４】
0005803469.tif 000005
【００３０】
一方、正規化係数ｍは出力値の大小を調整するために設けられている。正規化係数ｍは、メトリクス値ｗの値域集合をＷとし、Ｗの要素数を｜Ｗ｜とすると、次式（５）にて決定される。
【数５】
0005803469.tif 000006
【００３１】
上式（５）からすれば、正規化係数ｍはシフトしたメトリクス値ｗ＋αの相乗平均であるといえる。また、正規化係数ｍは、ｆ（ｗ）の中ではＷが定まれば定まる乗数である。この場合、上式（２）から明らかなように、回帰式の偏回帰係数がｆ（ｗ）に乗数として係るため、ｍが如何なる値になろうと最終的な出力である回帰式には変化を及ぼさない。そのため、本実施形態ではｍ＝１と固定するものとする。
【００３２】
なお、以下においては、パワー係数λとシフト係数αの組＜λ，α＞をパワーフィルタの「フィルタパラメータ」と呼ぶものとする。パワー係数λはパワーフィルタの振る舞いを定めるパラメータである。
【００３３】
次に、パワーフィルタの適用がソフトウェアの障害予測の予測性能向上にどのように寄与するかの概要について説明する。
【００３４】
まず、回帰分析の前処理に置くフィルタに対する要請について説明する。予測問題は最適な予測式を関数空間から探索する探索問題である。探索範囲に良い予測を行える式があるか、探索量は実用的に計算可能な範囲に収まるか、の２点が高い性能を持つ予測を行うための要件である。したがって、フィルタを前処理として付加することはすなわちそのフィルタがメトリクスの情報を活かして予測に貢献し、計算量が現実的であるという要件を持つ。計算量が少ないというのは概ねパラメータが少ないことに等しい。すなわち、少ないパラメータでメトリクスと予測値の相関を最大化するような変換がフィルタとして理想的である。ここで、ログフィルタは、パラメータが０個であり、計算量の要件では満足するが、予測改善効果に乏しいという課題を持つ。
【００３５】
これに対し、パワーフィルタはパラメータが上述の通り実質１個であり０個より多いものの、予測改善効果は高い。これについて、以下説明する。
【００３６】
ソフトウェアメトリクスは、その多くが人工的に設計された測定量であり、値が大きいほど障害数や障害密度、難易度、工数などが増加するような意図を持って設計されている（まれに逆のものもある）。これは、自然界の測定量がある区間で最適となるものが多い（例えば、培養地のｐＨを説明変数とした生存予測問題においてｐＨが６．３から７．５の範囲で予測生存率が一定以上になる、など）ことに比べ特徴的である。すなわち、メトリクスの多くが予測値に対し単調増加性（まれに単調減少性）を持つことがソフトウェアの予測問題の特徴である。しかし、メトリクスと予測値が単調性を持つとは言え、比例関係を持つとまでは一般的に言えない。例えば、図３には、あるソフトウェアにおけるメトリクス「loc」と障害発生率（障害率）との関係が示され、図４には、メトリクス「uniq Op」と障害発生率（障害率）の関係が示されている。なお、図３、図４中の各点はソースコード１０００本の平均を示し、図中の曲線は全点の平滑曲線を示す。これらの曲線は、ともに単調増加の傾向を持つが、図３では、「loc」が増加するとともに障害率の増加傾向は低下し、図４では、「uniq Op」が増加するとともに障害率の増加傾向は増大していくという異なる非線形な関係を持つ。
【００３７】
上式（１）のように回帰分析の多くは説明変数の線形式を構成要素として含み、予測値または予測値の変形に対し線形関係にあることが仮定される。例えば、ロジスティック回帰では説明変数は対数オッズ比と線形関係にあることが仮定される。これは、この線形関係から外れると予測モデルの性能が低下することを意味する。そのため、説明変数に適切な変換を施して線形関係からの逸脱を防ぐこととすれば、予測モデルの性能低下を抑える効果が期待できる。ここで、パワー変換の性質に注目する。図５はシフト係数αを０、正規化係数ｍを１に固定してパワー係数λを０，１，２の３種に変化させたパワー変換の関数プロットである。図５から明らかなように、λを変化させることで単調増加の性質を保ちながら自由に増加傾向を変化させることができる。この性質により、パワー変換は１パラメータでありながら線形関係からの逸脱を防ぐことを目的として適切な変換を表現できる潜在力を持つ。
【００３８】
ただし、パワーフィルタでは、説明変数ごとにパワー係数λを決定することが単純でないという課題がある。説明変数が複数になる場合は、ある説明変数のためのパワー係数が他の説明変数のためのパワー係数に相互に影響を及ぼすためである。
【００３９】
なお、パワー変換そのものは既知であり、本発明とは別の応用が既にある。パワー変換は数値の集合の分布の歪度を変化させる性質を持つため、そこに利用価値が見出される場合がある。例えば、特開２００６−２２８１８１号公報には、製品のバラつきが正規分布に従っていない場合に、正規分布を用いた品質管理手法を適用するため、パワー変換を適用して歪度を０にし、正規分布に近づける技術が開示されている。
【００４０】
図２に戻り、予測モデル作成手段１０及び予測手段２０が有する各手段について、具体的に説明する。
【００４１】
＜予測モデル作成手段１０の各手段について＞
まず、予測モデル作成手段１０の各手段（第１メトリクス計測手段１２、フィルタパラメータ決定手段１４、第１パワーフィルタ適用手段１６、予測モデル学習手段１８）について詳細に説明する。
【００４２】
第１メトリクス計測手段１２は、過去ソースコードＤＢ３０からソースコード情報を取得し、当該ソースコード情報からモジュール単位で各種メトリクスを計測する。
【００４３】
より具体的には、第１メトリクス計測手段１２は、まず、過去ソースコードＤＢ３０から、モジュールに対応するソースコードを取得する。次いで、第１メトリクス計測手段１２は、ソースコードの静的解析を行い、それぞれについてメトリクスを計測する。ここで、例えば、メトリクス「loc」は「コメント行と空行を取り除いたソースコード行数」と慣習的に定義されている。なお、各メトリクスの計測法は、それぞれ定められており、その詳細については、文献（T. J. McCabe, “A Complexity Measure,” IEEE Transactions on Software Engineering, Vol. 2, No. 4, pp 308-320, 1976. URL: http://dx.doi.org/10.1109/TSE.1976.233837）や、文献（M. H. Halstead, “Elements of Software Science,” Elsevier, 1977, ISBN:0444002057.）や、文献（S. R. Chidamber, and C. K. Kemerer, "A Metrics Suite for Object Oriented Design", IEEE Transactions on Software Engineering, Vol.20, No.6, June 1994. URL: http://dx.doi.org/10.1109/32.295895）に記載されている。また、第１メトリクス計測手段１２は、モジュールに対して計測されたメトリクスごとの数値をメトリクスデータとして、フィルタパラメータ決定手段１４及び第１パワーフィルタ適用手段１６に対して出力する。
【００４４】
フィルタパラメータ決定手段１４は、第１メトリクス計測手段１２で計測された各種メトリクスと、予測モデル学習手段１８の学習過程の中間結果とから、フィルタパラメータを決定する。フィルタパラメータ決定手段１４では、フィルタパラメータを、第１パワーフィルタ適用手段１６に随時出力するとともに、学習後の最終的なフィルタパラメータを予測手段２０に対し出力する。
【００４５】
ここで、図６には、フィルタパラメータ決定手段１４と予測モデル学習手段１８の、より詳細な構成が示されている。図６に示すように、フィルタパラメータ決定手段１４は、シフト係数決定手段４０と、モデル追加変数探索手段４４と、モデル除去変数探索手段４６と、パワー係数決定手段４８と、を有している。また、フィルタパラメータ決定手段１４は、内部メモリとして、メトリクス情報７２と、フィルタパラメータ７４と、を有する。
【００４６】
ここで、メトリクス情報７２は、図７に示すような表形式データである。具体的には、メトリクス情報７２は、計測されたメトリクスの種類数の行数を有し、１行が計測されたメトリクスの名前の項目とそのメトリクスに対応するシフト係数の項目の２つの項を含む。なお、図７のメトリクス名「loc，vg，n，…」については、図８のような意味（説明の欄参照）を有している。
【００４７】
また、フィルタパラメータ７４は、図９に示すような表形式のデータである。具体的には、フィルタパラメータ７４は、メトリクス名、そのメトリクスに対応するパワー係数λ、及びシフト係数αの３項からなる行を、フィルタリング対象のメトリクスの数だけ並べた表形式のデータ構造で表現される。
【００４８】
シフト係数決定手段４０は、第１メトリクス計測手段１２から入力されるメトリクスデータを受け取ると、メトリクスごとのシフト係数（α）を決定し、メトリクス情報７２を設定する。
【００４９】
より具体的には、シフト係数決定手段４０は、入力されたメトリクスデータのメトリクスごとに、入力されたメトリクス値の値域集合をＷとして、上式（４）にてシフト係数αを求める。また、シフト係数決定手段４０は、メトリクス情報７２（図７）に新しい行を追加する処理を実行する。
【００５０】
モデル追加変数探索手段４４は、予測モデル学習手段１８内の変数選択手段５０からの要求により、予測モデルに追加することで予測モデルを改良可能な説明変数を探索する。また、モデル除去変数探索手段４６は、予測モデル学習手段１８内の変数選択手段５０からの要求により、予測モデルから除去することで予測モデルを改良可能な説明変数を探索する。これら、説明変数の探索方法については、後に詳述する。
【００５１】
パワー係数決定手段４８は、モデル追加変数探索手段４４及びモデル除去変数探索手段４６からの要求により、パワー係数λを決定する。なお、パワー係数λの決定方法については、後に詳述する。
【００５２】
図２に戻り、第１パワーフィルタ適用手段１６は、各種メトリクスにフィルタを適用して説明変数とする。なお、第１パワーフィルタ適用手段１６が用いるフィルタ（パワーフィルタ）は、フィルタパラメータ決定手段１４で決定されたフィルタパラメータを利用したフィルタである。
【００５３】
ここで、第１パワーフィルタ適用手段１６の処理について、具体的に説明する。まず、第１パワーフィルタ適用手段１６は、フィルタパラメータ決定手段１４からフィルタパラメータを受け取る。また、第１パワーフィルタ適用手段１６は、第１メトリクス計測手段１２から、各メトリクスにつき数値データを受け取る。このとき、メトリクスの数は任意個であり、メトリクスごとの数値データの個数はモジュールの数と等しいものとする。なお、計測されたメトリクスのデータの一例を図１０に示す。図１０においては、各行は過去ソースコードＤＢ３０のモジュール１つに相当する。各行にはモジュールのＩＤのほかに計測されたメトリクスの値がそれぞれ格納される。ここで、前述のように、メトリクスのデータ値はｗで表すものとし、第１パワーフィルタ適用手段１６の出力値である説明変数をｘで表すものとする。
【００５４】
第１パワーフィルタ適用手段１６は、フィルタパラメータの組＜λ,α＞が指定されているメトリクスについては、出力値ｘとして次式（６）（式（６）は、式（３）のｍを１としたもの）のｆ（ｗ）の値を説明変数として出力する。
【数６】
0005803469.tif 000007
【００５５】
また、第１パワーフィルタ適用手段１６は、フィルタパラメータが指定されていないメトリクスに関しては、出力値ｘとしてｗの値をそのまま説明変数データとして、予測モデル学習手段１８に対して出力するものとする。
【００５６】
予測モデル学習手段１８は、過去障害情報ＤＢ３２から取得した障害情報を応答変数とし、当該応答変数と、第１パワーフィルタ適用手段１６から出力される説明変数とから予測モデルを学習する。なお、学習の過程においてはフィルタパラメータ決定手段１４と連携するものとする。また、予測モデル学習手段１８は、予測モデルの学習が完了した場合に、予測モデルパラメータを外部（予測手段２０）に出力する。なお、この予測モデルパラメータの出力と同時に、フィルタパラメータ決定手段１４からは、最終的なフィルタパラメータが外部（予測手段２０）に出力される。
【００５７】
ここで、予測モデル学習手段１８は、図６に示すように、モデルパラメータ決定手段５２と、変数選択手段５０と、を有している。また、予測モデル学習手段１８は、内部メモリとして、予測モデルパラメータ７６を有している。
【００５８】
モデルパラメータ決定手段５２は、第１パワーフィルタ適用手段１６から、メトリクスに対しフィルタが適用された出力値を説明変数データとして受け取る。また、過去障害情報ＤＢ３２から、障害情報データ（図１１）を応答変数データとして受け取る。図１１の障害情報データはモジュールごとに１行、各行ごとにモジュールのＩＤの項目と障害の有無を示す項目の２項目を持つ表形式で表される。この図１１の例では、「defects」の項目が障害の有無（TRUE＝有り、FALSE＝無し）を示している。
【００５９】
また、モデルパラメータ決定手段５２は、フィルタパラメータ決定手段１４内のパワー係数決定手段４８からの要求により、偏回帰係数ａiの決定を行う。そして、モデルパラメータ決定手段５２は、学習後、最終的な予測モデルパラメータを予測手段２０に対し出力する。
【００６０】
ここで、予測モデルパラメータ７６は、予測モデルを特定するためのパラメータであり、説明変数の個数に１を加えた行数からなる表形式のデータ構造で表現される（図１２参照）。図１２の各行は、ＩＤ、説明変数の元となるメトリクスの名前、対応する説明変数の偏回帰係数の３項からなる。ＩＤが０の行は特定の説明変数には割り付けられず、上式（２）のα0の値を格納するために設けられている（そのため、ＩＤが０の行のメトリクス名の項目は使用されない）。それ以外の行は、ＩＤがｉの行は上式（２）の偏回帰係数αiの値を格納する。
【００６１】
変数選択手段５０は、予測モデルに使用する説明変数を選択する。性能の高い予測を実現するためには、必ずしも全ての入力データを用いる必要は無い。すなわち、障害と相関が無く、予測に役立たないデータもあり、しばしば、用いると予測性能を落とすような悪影響を及ぼすデータもある。変数選択手段５０はそのようなデータを取り除く。
【００６２】
＜予測手段２０の各手段について＞
次に、図２に示す予測手段２０の各手段（第２メトリクス計測手段２２、第２パワーフィルタ適用手段２４、予測モデル適用手段２６）について詳細に説明する。
【００６３】
第２メトリクス計測手段２２は、分析対象ソースコード３４からソースコードを取得し、当該ソースコードからモジュール単位で各種メトリクスを計測する。ここで、第２メトリクス計測手段２２の機能は、上述した第１メトリクス計測手段１２と同様である。ただし、第２メトリクス計測手段２２は、予測モデルパラメータで指定された説明変数として使用されるメトリクスのリストを参照することで、障害予測に使用しないメトリクスを測定しないようにしてもよい。使用されるメトリクスのリストは、予測モデルパラメータのうち、メトリクス名の項に含まれるメトリクス名のリストである。図１３は図１２に対応した使用メトリクスリストの一例を示す図である。
【００６４】
第２パワーフィルタ適用手段２４は、予測モデル作成手段１０から入力されたフィルタパラメータに基づいて、各種メトリクスにフィルタを適用して説明変数とする。
【００６５】
より具体的には、第２パワーフィルタ適用手段２４は、予測モデル作成手段１０からフィルタパラメータを取得すると、各メトリクスにつき数値データを受け取る。このとき、メトリクスの数は任意個であり、メトリクスごとのデータの数も任意個である。計測されたメトリクスのデータは図１０の表と同様の形式である。また、第２パワーフィルタ適用手段２４は、フィルタパラメータ＜λ,α＞が指定されているメトリクスに基づいて、式（６）の説明変数ｘ（＝ｆ（ｗ））の値を説明変数データとして出力する。なお、第２パワーフィルタ適用手段２４は、フィルタパラメータが指定されていないメトリクスについては出力しないものとする。
【００６６】
予測モデル適用手段２６は、予測モデル作成手段１０から入力された予測モデルパラメータで表現される予測モデルに対し説明変数を適用し、計算された応答変数を障害予測結果３６として出力する。
【００６７】
ここで、予測モデル作成手段１０から取得される予測モデルパラメータで指定されたメトリクスの数をｎとする。また、予測モデルパラメータのＩＤが０の行の偏回帰係数の値をａ0と表記し、ＩＤがｋの行の偏回帰係数の値をａkと表記する。また、予測モデル適用手段２６が第２パワーフィルタ適用手段２４から受け取る、モジュールＳiに関して予測モデルパラメータで指定されたメトリクスごとの説明変数の値をｘ1(i)，ｘ2(i)，…ｘn(i)と表記する。
【００６８】
この場合、予測モデル適用手段２６は、上式（１）に基づく次式（７）を用いてｙ(i)を計算し、y(i)の値をモジュールＳiの障害予測結果３６の値として出力する。
【数７】
0005803469.tif 000008
【００６９】
次に、フィルタパラメータ決定手段１４及び予測モデル学習手段１８の具体的な処理について、図１４〜図１７のフローチャートに沿って説明する。
【００７０】
図１４のフローチャートは、既知の変数増減法にパワーフィルタのパラメータ決定を組み込めるよう改良した処理である。なお、既知の変数増減法については、文献（W. N. Venables, and B. D. Ripley, “Modern Applied Statistics with S. Fourth edition,” Springer, ISBN 0-387-95457-0, 2002.）に記載されている。
【００７１】
図１４の処理では、まず、ステップＳ１４０１において、図６の変数選択手段５０が、予測モデルパラメータの初期値を設定することで、初期予測モデルを設定する。この初期予測モデルは、既知のフィルタリングを施さないロジスティック回帰分析に対して定石的に行われる変数増減法を実施することで求めることができる。また、予測モデルパラメータの初期値の設定は、初期予測モデルに使用された説明変数のメトリクスを予測モデルパラメータのメトリクス名の項目に設定することで行うことができる。この場合、偏回帰係数の項目は未設定のままで構わない。なお、別の方法として、初期予測モデルとして説明変数を全く用いないモデルを用いても良い。また、別の方法として、初期予測モデルとして全てのメトリクスを説明変数として用いるモデルを用いても良い。
【００７２】
次いで、ステップＳ１４０２では、変数選択手段５０が、モデル追加変数探索手段４４に要求を送ることで、モデル追加変数探索手段４４に、モデルを改良可能な、モデルに追加する説明変数の探索を行わせる。この場合、変数選択手段５０は、モデル追加変数探索手段４４からの応答を待つ。応答は変数のメトリクス名または「無し」のいずれかである。応答が「無し」でなければ改良されたモデルを表すデータ（予測モデルパラメータと同形式）も付加情報として応答に含まれる。
【００７３】
モデル追加変数探索手段４４では、変数選択手段５０からの要求を受けて、図１５のフローチャートに沿った処理を実行する。
【００７４】
図１５の処理では、まず、ステップＳ１５０１において、モデル追加変数探索手段４４が、予測モデル学習手段１８内の予測モデルパラメータ７６で表されるモデルをコピーして「モデルＡ」とする。このコピーは、予測モデルパラメータと同じデータ形式（図１２参照）で表現される。また、モデル追加変数探索手段４４は、モデルＡに追加する候補となるメトリクスの説明変数のリストＬを作成する。この場合、モデル追加変数探索手段４４は、内部メモリのメトリクス情報７２を調べ、モデルＡに含まれていない説明変数のメトリクスをリストＬの要素とする。
【００７５】
次いで、ステップＳ１５０２では、モデル追加変数探索手段４４が、メモリＣを用意し、当該メモリＣを空にする。更に、モデル追加変数探索手段４４は、メモリＥを用意し、当該メモリＥに、フィルタパラメータ７４をコピーする。
【００７６】
次いで、ステップＳ１５０３では、モデル追加変数探索手段４４が、メモリＤを用意し、当該メモリＤにモデルＡの評価値を格納する。ここで、本実施形態では、モデルの評価値として、ＡＩＣ(赤池情報量基準)を用いることとする。モデルの最大尤度をＬ、モデルの自由度をｆとした場合、ＡＩＣは次式（８）で定義される。なお、モデルの自由度ｆは、(説明変数の数＋１)である。
【数８】
0005803469.tif 000009
【００７７】
次いで、ステップＳ１５０４では、モデル追加変数探索手段４４が、リストＬが空か否かを判断する。ここでの判断が否定された場合には、ステップＳ１５０５に移行する。
【００７８】
ステップＳ１５０５に移行すると、モデル追加変数探索手段４４は、リストＬから１つ説明変数を取り出し、当該説明変数をモデルＡに加えて、モデルＢを作成する。モデルＢは予測モデルパラメータ７６と同じデータ形式で表現されるものである。
【００７９】
次いで、ステップＳ１５０６では、モデル追加変数探索手段４４が、パワー係数決定手段４８に対してモデルＢとともに要求を送る。これにより、パワー係数決定手段４８において、パワー係数決定処理が実行される。モデル追加変数探索手段４４では、パワー係数決定手段４８からの応答を待つ。
【００８０】
以下、パワー係数決定手段４８による処理（パワー係数決定処理）について、図１７のフローチャートに沿って詳細に説明する。
【００８１】
図１７の処理では、まず、ステップＳ１７０１において、パワー係数決定手段４８が、フィルタパラメータ７４を空に初期化する。また、パワー係数決定手段４８は、送られてきたモデルＢに含まれる説明変数のメトリクスごとにフィルタパラメータ７４に行を追加し、メトリクス名の項を設定する。パワー係数λは仮の値として１に設定する。
【００８２】
次いで、ステップＳ１７０２では、送られてきたモデルＢに含まれる説明変数のメトリクスごとにメトリクス情報７２から該当するシフト係数αを取得し、フィルタパラメータ７４の該当行に設定する。
【００８３】
次いで、ステップＳ１７０３では、パワー係数決定手段４８が、パワー係数の算出処理を実行する。具体的には、以下の処理を行う。
【００８４】
（Ａ）  まず、パワー係数決定手段４８は、フィルタパラメータ７４を第１パワーフィルタ適用手段１６に出力する。次いで、パワー係数決定手段４８は、モデルパラメータ決定手段５２に要求を送り、モデルパラメータを決定する。この際、モデル追加変数探索手段４４から送信されてきたモデル（モデルＢ）のデータをモデルパラメータ決定手段５２に送る。そして、パワー係数決定手段４８は、モデルパラメータ決定手段５２の応答を待つ。
【００８５】
ここで、モデルパラメータ決定手段５２は、以下の処理を行う。
（ａ）  モデルパラメータ決定手段５２は、パワー係数決定手段４８から、モデルＢを表現するデータ（予測モデルパラメータ７６と同形式のデータ）を受け取る。
（ｂ）  次いで、モデルパラメータ決定手段５２は、第１パワーフィルタ適用手段１６から、メトリクスに対しフィルタが適用された出力値を説明変数データとして受け取る。
（ｃ）  次いで、モデルパラメータ決定手段５２は、過去障害情報ＤＢ３２から、障害情報データを応答変数データとして受け取る。
（ｄ）  次いで、モデルパラメータ決定手段５２は、予測モデルのパラメータを決定する。この場合、式（１）について、説明変数がｎ個あるとして、それらをｘ1〜ｘnで表し、それに対応する偏回帰係数をａ1〜ａnで表し、切片をａ0で表すとする。そして、モデルパラメータ決定手段５２は、与えられた説明変数データと応答変数データから式（１）の偏回帰係数ａ0〜ａnを既知の技術で求める。既知の技術としては、最尤推定法を用いることができる。すなわち、モデルの仮定の下で、応答変数の実測値が発生する確率（尤度）を最大にするよう、偏回帰係数ａ0〜ａnを推定することができる。なお、最尤推定法の実施には反復再重み付け最小二乗法(Iteratively Reweighted Least Square method;ＩＲＬＳ法)を用いるものとする。なお、ＩＲＬＳ法の詳細については、文献（P. J. Green, "Iteratively reweighted least squares for maximum likelihood estimation, and some robust and resistant alternatives", Journal of Royal Statistical Society B46, 149-192, 1984. URL: http://www.jstor.org/pss/2345503）に記載されている。
（ｅ）  次いで、モデルパラメータ決定手段５２は、上記において定まる値（各偏回帰係数ａ0〜ａnの値を含む予測モデルパラメータ７６と同形式のデータと、予測モデルの最大尤度）を応答として、フィルタパラメータ決定手段１４に返す。
以上のようにして、モデルパラメータ決定手段５２からの応答を受け取ると、パワー係数決定手段４８は、次の処理に移行する。
【００８６】
（Ｂ）パワー係数決定手段４８は、受け取った応答に基づいて、モデルＢの評価値を計算する。この場合、パワー係数決定手段４８は、モデルの評価値として、ＡＩＣ(赤池情報量基準)を用いることとする。ＡＩＣは前述のように上式（８）で定義される。
【００８７】
（Ｃ）  次いで、パワー係数決定手段４８は、パワー係数の変更によりモデルを改良可能であるか否かを判断する。ここでの判断方法について、以下説明する。
【００８８】
フィルタパラメータ７４にメトリクスがｎ個格納されているとし、i番目のメトリクスのパワー係数をλi（＝λ1〜λn）とする。このλ1〜λnは、ステップＳ１７０３によりモデルパラメータ決定手段５２の説明変数データに影響を及ぼし、上記（Ｂ）の処理において得られるモデルの評価値に影響を及ぼす。すなわち、モデルの評価値をＶとすると、上記（Ａ），（Ｂ）の処理の系においてＶは次式（９）で表されるようなλ1〜λnの関数となる。
【数９】
0005803469.tif 000010
【００８９】
すなわち、「パワー係数の変更によりモデルを改良可能か判定する」とは、上記評価値Ｖが、λ1〜λnを変更することにより、より小さくできるかどうか、という意味である（評価値が小さいほど予測モデルが良いことを示す場合を想定）。したがって、評価値Ｖを小さくできる間は上記（Ａ）、（Ｂ）の処理を反復することになる。これは、すなわち、多変数関数最適化（最小化）問題である。つまり、ステップＳ１７０３は、収束判定と逐次更新を表しており、これには既知の多変数関数最適化アルゴリズムを使用することができる。なお、基本的には、λ1〜λnの範囲に制約を与えない最適化アルゴリズムを用い、例えばＢＦＧＳ法を用いて最適なλ1〜λnを求める。なお、ＢＦＧＳ法の詳細については、例えば、文献（J. C. Nash, “Compact Numerical Methods for Computers. Linear Algebra and Function Minimisation,” Adam Hilger, 1990. ISBN-13: 978-0852743195）に記載されている。
【００９０】
上記（Ｃ）の判断が肯定された場合、すなわち、パワー係数の変更によってモデルが改良できると判断された場合には、フィルタパラメータを更新し、上述した（Ａ），（Ｂ）の処理を再度実行する。一方、上記（Ｃ）の判断が否定された場合、すなわち、パワー係数の変更によってモデルが改良できないと判断された場合には、ステップＳ１７０４に移行する。
【００９１】
なお、パワーフィルタリングの挙動を安定させたい場合には、パワー係数λ1〜λnの範囲に制約を課すことが有効である。例えば、本実施形態では、−３≦λi≦３という制約を課してその制約内で最適なλ1〜λnを求めることができる。この目的のためには、本実施形態では、L-BFGS-B法を用いることができる。なお、L-BFGS-B法の詳細については文献（R. H. Byrd, P. Lu, J. Nocedal, and C. Zhu, “A limited memory algorithm for bound constrained optimization,” SIAM Journal on Scientific Computing, 16, pp. 1190?1208, 1995. URL: http://dx.doi.org/10.1137/0916069）に記載されている。
【００９２】
なお、計算量を低減するためには、さらに強い制約を課す方法を採用しても良い。例えば、λの値の選択肢を−１，０，１，２の４つに絞ってその制約内で最適なλ1〜λnを求める方法を採用しても良い。
【００９３】
上記ステップＳ１７０３を経て、ステップＳ１７０４に移行すると、パワー係数決定手段４８は、モデル追加変数探索手段４４に対して、応答を返し、図１７の全処理を終了する。なお、応答には、モデルＢに対応する予測モデルパラメータ７６と同形式のデータ、及びモデルＢの評価値が含まれる。
【００９４】
図１５に戻り、次のステップＳ１５０７では、モデル追加変数探索手段４４が、モデルＢの評価値がメモリＤの値より良い（良いモデルの場合に小さい値となるモデル評価値の場合には、比較して小さい）か否かを判断する。ここでの判断が否定された場合には、ステップＳ１５０４に戻るが、肯定された場合には、ステップＳ１５０８に移行する。
【００９５】
ステップＳ１５０８に移行した場合、モデル追加変数探索手段４４は、ステップＳ１５０５で取り出した変数のメトリクス名をメモリＣに格納するとともに、モデルＢの評価値（ＡＩＣ）をメモリＤに格納する。また、モデル追加変数探索手段４４は、モデルＢをモデルＡにコピーするとともに、フィルタパラメータ７４をメモリＥにコピーする。その後は、ステップＳ１５０４に戻る。
【００９６】
一方、ステップＳ１５０４の判断が肯定された場合、すなわち、全説明変数についてのステップＳ１５０５〜Ｓ１５０８の処理が終了した場合、ステップＳ１５０９に移行する。ステップＳ１５０９では、モデル追加変数探索手段４４は、メモリＣが空か否かを判断する。ここでの判断が肯定された場合、すなわち、ステップＳ１５０８の処理が一度も行われなかった場合には、ステップＳ１５１１に移行するが、否定された場合には、ステップＳ１５１０に移行する。
【００９７】
ステップＳ１５１０に移行した場合、モデル追加変数探索手段４４は、メモリＣの指す説明変数を改良可能な追加変数として付加情報（モデルＢ）とともに、変数選択手段５０に対して、応答する。
【００９８】
一方、ステップＳ１５１１に移行した場合には、モデル追加変数探索手段４４は、改良可能な追加変数は「無し」であることを、変数選択手段５０に対して、応答する。
【００９９】
上記のようにステップＳ１５１０又はステップＳ１５１１を経た後は、モデル追加変数探索手段４４は、ステップＳ１５１２において、メモリＥの内容をフィルタパラメータ７４にコピーし、図１５の全処理を終了する。
【０１００】
なお、変数選択手段５０は、モデル追加変数探索手段４４からの応答を受け取った段階で、図１４のステップＳ１４０３に移行する。
【０１０１】
ステップＳ１４０３では、変数選択手段５０は、ステップＳ１４０２で得られた応答でモデルを改良可能な追加変数があれば、モデルに追加する。このモデルの追加は、具体的には、応答の付加情報のモデルを表すデータを予測モデルパラメータ７６にコピーすることにより行われる。
【０１０２】
次いで、ステップＳ１４０４では、変数選択手段５０が、モデル除去変数探索手段４６に要求を送ることで、モデルを改良可能なモデルから除去する説明変数を探索する。そして、変数選択手段５０は、モデル除去変数探索手段４６からの応答を待つ。この場合の応答は、変数のメトリクス名又は「無し」のいずれかである。応答が「無し」でなければ、応答には、改良されたモデルを表すデータ（予測モデルパラメータ７６と同形式）も付加情報として含まれる。また、応答には、偏回帰係数一式（上式（１）のａ0〜ａn）も含まれる。
【０１０３】
モデル除去変数探索手段４６では、図１６のフローチャートに沿った処理が実行される。なお、図１６の処理は、図１５の処理とほぼ同一の処理である（図１６において太線で示す処理が異なっている）。より具体的には、ステップ１５０１の「モデルＡに追加する候補となる変数のリストＬを作成」が、ステップ１６０１において「モデルＡに含まれる変数のリストＬを作成」となっている点、ステップＳ１５０５の「リストＬから１つ変数を取り出し、モデルＡに加えたモデルＢを作成」が、ステップＳ１６０５において「リストＬから１つ変数を取り出し、モデルＡから除去したモデルＢを作成」となっている点、及び、ステップＳ１５１０、Ｓ１５１１の「追加変数」が、ステップＳ１６１０、Ｓ１６１１において「除去変数」となっている点が異なっている。
【０１０４】
図１６の処理において、モデル除去変数探索手段４６から変数選択手段５０に対して応答が出されると、図１４の次のステップＳ１４０５に移行する。ステップＳ１４０５では、変数選択手段５０が、ステップＳ１４０４で得られた応答においてモデルを改良可能な除去変数があった場合に、その除去変数をモデルから除去する。
【０１０５】
次いで、ステップＳ１４０６では、変数選択手段５０は、ステップＳ１４０３、Ｓ１４０５のいずれかまたは両方でモデルが変更されたか否かを判断する。ここでの判断が肯定された場合には、ステップＳ１４０２に戻り、上記と同様の処理を繰り返す。一方、ステップＳ１４０６の判断が否定された場合には、図１４の全処理を終了する。このように、本実施形態では、モデルが改良できる間は、説明変数の追加又は削除を行い（ステップＳ１４０２〜Ｓ１４０５の処理を繰返し）、モデルが改良できなくなった段階で、図１４の全処理を終了する。この図１４の処理が終了した時点で、予測モデル学習手段１８による学習が終了したことになる。
【０１０６】
このようにして学習が終了した段階で、予測モデル学習手段１８からは、予測モデルパラメータが予測モデル適用手段２６に対して出力される。また、フィルタパラメータ決定手段１４からは、フィルタパラメータが第２パワーフィルタ適用手段２４に対して出力される。そして、予測手段２０においては、これら予測モデルパラメータとフィルタパラメータを用いた障害予測が実行されることになる。以上により、フィルタパラメータ決定手段１４と予測モデル学習手段１８の処理の説明を終了する。
【０１０７】
ここで、本第１の実施形態による障害予測の効果について、本第１の実施形態を用いた実際のデータに対する障害予測結果と、既存技術を用いた障害予測結果とを比較しつつ説明する。
【０１０８】
ここでは、評価データとして、実際のソフトウェアプロジェクトである、NASA MDP (Metrics Data Program) リポジトリに収められたデータセット「ＣＭ１」を用いることとする。なお、NASA MDPについては文献（NASA IV&V Facility, “Metrics Data Program,” http://mdp.ivv.nasa.gov/）や、文献（G. Boetticher, T. Menzies, and T. Ostrand, “PROMISE Repository of empirical software engineering data,” http://promisedata.org/ repository, West Virginia University, Department of Computer Science, 2007.）から入手することが可能である。ここで、「ＣＭ１」はＣ言語で記述された機器制御アプリケーションである。モジュール数４９６からなるソフトウェアプロジェクトであり、それぞれのモジュールにつき２１種のメトリクスが計測され、障害の有無の情報が与えられている。
【０１０９】
本比較では、第１の実施形態の障害予測方法を用いて、１０分割交差検定を、異なる分割にて１０回行った。その平均の結果を図１８（ａ）に示す。また、比較対象の既存技術として、メトリクス「loc」に対しログフィルタリングを施したロジスティック回帰分析に対しても同様に行った。その平均の結果を図１８（ｂ）に示す。
【０１１０】
図１８（ａ）では、実際に障害があったモジュールのうち、予測で「障害あり」とされたものは４２．５個、予測で「障害無し」とされたものが５．５個であったことを示す。同様に、実際に障害が無かったモジュールのうち、予測で「障害あり」とされたものは１５１．１個、予測で「障害無し」とされたものが２９６．９個であったことを示す。図１８（ｂ）も同様の内容のデータである。
【０１１１】
ここで、予測性能を示す指標として一般的に用いられるものに、精度（Precision）と再現率（Recall）がある。精度は「障害あり」と予測されたもののうち、実際に障害であったものの割合であり、予測の正確さを示す指標である。再現率は、実際に障害であったもののうち、「障害あり」と予測されたものの割合であり、予測漏れの少なさを示す指標である。図１８（ｃ）に、図１８（ａ）、図１８（ｂ）の結果から算出した、第１の実施形態と既存技術の精度と再現率を示し、また第１の実施形態による上昇倍率を示す。
【０１１２】
本第１の実施形態によれば、既存の障害予測技術の前段にパワーフィルタを挿入することにより、精度が１．１３倍、再現率が１．１０倍上昇していることが判る。
【０１１３】
以上、詳細に説明したように、本第１の実施形態によると、障害予測装置１００では、第２パワーフィルタ適用手段２４が、フィルタパラメータに基づいて、ソフトウェアメトリクスの値にパワー変換を適用して、説明変数を生成し、予測モデル適用手段２６が、説明変数と予測モデルとを用いて、二値の判別又は数値を予測する。また、障害予測装置１００では、フィルタパラメータ決定手段１４が、ソフトウェアメトリクスの過去の値に基づいて、フィルタパラメータを決定し、予測モデル学習手段１８が、予測モデルの評価値を求め、当該評価値に基づいて、予測モデル適用手段２６で用いる予測モデルパラメータを決定する。この場合、フィルタパラメータ決定手段１４は、予測モデルの評価値が適正な方向に変化するように（予測モデルが改良されるように）フィルタパラメータ（パワー係数λ）を更新する処理を繰り返す。また、第２パワーフィルタ適用手段２４では、評価値が適正な方向に変化しなくなったとき（これ以上予測モデルが改良されなくなったとき）のフィルタパラメータ（パワー係数λ）を用いる。このように、本第１の実施形態では、パワーフィルタを用いることとしているので、ソフトウェアメトリクスの障害との相関が向上し、これにより、予測性能を向上することができる。また、フィルタパラメータを評価値が適正な方向に変化するように更新する処理を繰り返すので、ある説明変数のためのパワー係数が他の説明変数のためのパワー係数に対して影響を及ぼすような場合でも、現実的な時間で適切なフィルタパラメータの計算が可能となる。また、パワーフィルタを用いることで、過学習に対して頑健で、解釈が容易になるという効果も生じる。
【０１１４】
また、本第１の実施形態では、第１メトリクス計測手段１２が、ソフトウェアの各種情報からソフトウェアメトリクスの値を計測し、予測モデル学習手段１８が、ソフトウェアメトリクスの値にパワー変換を適用したものを説明変数とし、過去障害情報を応答変数として予測モデルパラメータを決定する。これにより、本第１の実施形態では、パワーフィルタを考慮した適切な予測モデルパラメータの決定（予測モデルの学習）が可能となる。
【０１１５】
なお、上記第１の実施形態では、評価値が小さいほど予測モデルが良いことを示す場合を例にとり説明したが、これに限られるものではない。評価値としては、予測モデルが良いほど大きい値となるような評価値を採用することとしてもよい。この場合、ステップＳ１７０３において、「パワー係数の変更によりモデルを改良可能か判定する」際には、λ1〜λnを変更することにより、評価値がより大きくなるか否かを判定することとすればよい。
【０１１６】
《第２の実施形態》
以下、第２の実施形態について説明する。本第２の実施形態は、工数予測を行うための工数予測装置１００’に関するものである。図１９には、工数予測装置１００’の構成（機能ブロック図）が概略的に示されている。
【０１１７】
図１９の工数予測装置１００’は、上述した第１の実施形態の障害予測装置１００と比較して、以下の（Ａ）〜（Ｃ）の差異を有している。
【０１１８】
（Ａ）予測モデル学習手段に入力する応答変数のためのデータとして、外部の過去工数情報ＤＢ３２’から工数情報データを受け取る。工数情報データは、図２０に示すように、モジュールごとに１行、各行ごとにモジュールのＩＤの項目と工数の実数値（man-hour）の項目の２項目を持つ表形式で表される。
【０１１９】
（Ｂ）予測モデルが異なる。上記第１の実施形態では式（１）に示すようなロジスティック回帰分析を用いたが、本第２の実施形態では対数線形回帰分析を用いる。すなわち、式（１）を次式（１０）に、式（２）を次式（１１）に、式（７）を次式（１２）に置き換える。
【数１０】
0005803469.tif 000011
【数１１】
0005803469.tif 000012
【数１２】
0005803469.tif 000013
【０１２０】
（Ｃ）予測結果が異なる。工数予測では、工数予測結果（man-hour）３６’が出力される。
【０１２１】
その他については、第１の実施形態と同一となっている。
【０１２２】
以上説明したように、本第２の実施形態では、上記第１の実施形態と同様の構成を有しているため、工数予測において上記第１の実施形態と同様の効果（予測性能の向上等）を得ることができる。
【０１２３】
なお、上記各実施形態では、説明変数となるメトリクスをソースコードに対して計測する場合について説明したが、これに限られるものではない。メトリクスは、例えば、ソフトウェアを構成するデータやそのソフトウェアを開発・保守しているプロジェクトの活動情報に対しても計測することができる。
【０１２４】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、処理装置が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。
【０１２５】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ（Digital Versatile Disc）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）などの可搬型記録媒体の形態で販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１２６】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１２７】
上述した実施形態は本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。
【０１２８】
なお、以上の説明に関して更に以下の付記を開示する。
（付記１）  フィルタパラメータに基づいて、ソフトウェアメトリクスの値にパワー変換を適用して、説明変数を生成するパワーフィルタ適用工程と、
前記説明変数と予測モデルとを用いて、二値の判別又は数値を予測する予測モデル適用工程と、
前記フィルタパラメータを決定するフィルタパラメータ決定工程と、
前記予測モデルの評価値を求め、当該評価値に基づいて、前記予測モデル適用工程で用いる予測モデルパラメータを決定する予測モデル学習工程と、をコンピュータが実行し、
前記フィルタパラメータ決定工程では、前記予測モデルの評価値が適正な方向に変化するようにフィルタパラメータを更新する処理を繰り返し、
前記パワーフィルタ適用工程では、前記評価値が適正な方向に変化しなくなったときのフィルタパラメータを用いることを特徴とする予測方法。
（付記２）  ソフトウェアの各種情報からソフトウェアメトリクスの値を計測するメトリクス計測工程を、前記コンピュータが更に実行し、
前記予測モデル学習工程では、ソフトウェアメトリクスの値にパワー変換を適用したものを説明変数とし、前記二値又は数値の過去の値を応答変数として予測モデルパラメータを決定することを特徴とする付記１に記載の予測方法。
（付記３）  前記フィルタパラメータ決定工程では、前記フィルタパラメータのとりうる値に制限をかけて前記フィルタパラメータを決定することを特徴とする付記１又は２に記載の予測方法。
（付記４）  前記二値は、障害の有無を示す二値を含むことを特徴とする付記１〜３のいずれかに記載の予測方法。
（付記５）  前記数値は、前記ソフトウェアを変更する工数を含むことを特徴とする付記１〜３のいずれかに記載の予測方法。
（付記６）  前記予測モデルとして回帰分析を用いることを特徴とする付記１〜５のいずれかに記載の予測方法。
（付記７）  前記予測モデルの評価値として、赤池情報量基準（ＡＩＣ）を用いることを特徴とする付記１〜６のいずれかに記載の予測方法。
（付記８）  フィルタパラメータに基づいて、ソフトウェアメトリクスの値にパワー変換を適用して、説明変数を生成し、
前記説明変数と予測モデルとを用いて、二値の判別又は数値を予測し、
前記説明変数を生成する処理で用いる前記フィルタパラメータを決定し、
前記予測モデルの評価値を求め、当該評価値に基づいて、前記予測する処理で用いる予測モデルパラメータを決定する、処理をコンピュータに実行させ、
前記フィルタパラメータを決定する処理では、前記予測モデルの評価値が適正な方向に変化するようにフィルタパラメータを更新する処理を繰り返し、
前記パワー変換では、前記評価値が適正な方向に変化しなくなったときのフィルタパラメータを用いることを特徴とする予測プログラム。
（付記９）  ソフトウェアの各種情報からソフトウェアメトリクスの値を計測する処理を、前記コンピュータに更に実行させ、
前記予測モデルパラメータを決定する処理では、ソフトウェアメトリクスの値にパワー変換を適用したものを説明変数とし、前記二値又は数値の過去の値を応答変数として予測モデルパラメータを決定することを特徴とする付記８に記載の予測プログラム。
（付記１０）  前記フィルタパラメータを決定する処理では、前記フィルタパラメータのとりうる値に制限をかけて前記フィルタパラメータを決定することを特徴とする付記８又は９に記載の予測プログラム。
（付記１１）  前記二値は、障害の有無を示す二値を含むことを特徴とする付記８〜１０のいずれかに記載の予測プログラム。
（付記１２）  前記数値は、前記ソフトウェアを変更する工数を含むことを特徴とする付記８〜１０のいずれかに記載の予測プログラム。
（付記１３）  前記予測モデルとして回帰分析を用いることを特徴とする付記８〜１２のいずれかに記載の予測プログラム。
（付記１４）  前記予測モデルの評価値として、赤池情報量基準（ＡＩＣ）を用いることを特徴とする付記８〜１３のいずれかに記載の予測プログラム。
【符号の説明】
【０１２９】
１２  第１メトリクス計測手段
１４  フィルタパラメータ決定手段
１８  予測モデル学習手段
２４  第２パワーフィルタ適用手段
２６  予測モデル適用手段
９０  ＣＰＵ（コンピュータ）
【図１】
0005803469.tif 000014
【図２】
0005803469.tif 000015
【図３】
0005803469.tif 000016
【図４】
0005803469.tif 000017
【図５】
0005803469.tif 000018
【図６】
0005803469.tif 000019
【図７】
0005803469.tif 000020
【図８】
0005803469.tif 000021
【図９】
0005803469.tif 000022
【図１０】
0005803469.tif 000023
【図１１】
0005803469.tif 000024
【図１２】
0005803469.tif 000025
【図１３】
0005803469.tif 000026
【図１４】
0005803469.tif 000027
【図１５】
0005803469.tif 000028
【図１６】
0005803469.tif 000029
【図１７】
0005803469.tif 000030
【図１８】
0005803469.tif 000031
【図１９】
0005803469.tif 000032
【図２０】
0005803469.tif 000033
【図２１】
0005803469.tif 000034
【図２２】
0005803469.tif 000035