プロセスメトリクス利用による Fault

SQiP2010 B3-3
プロセスメトリクス利用による Fault-Prone クラス予測精度の向上
Improvement of the Fault-prone class prediction precision by the process metrics use
NEC IT ソフトウェア事業本部
NEC
IT Software Operations Unit
1)
○纐纈 伸子
川村 真弥 1) 野村 准一 1)
野中 誠 2)
○Nobuko Koketsu1) Shinya Kawamura1) Jyunichi Nomura1) Makoto Nonaka2)
Abstract The general purpose of our study is to introduce a more precise and effective quality assurance
practice into our software development organization that has been applying quality assurance activities mainly
focusing on process metrics. The fault-prone (FP) module prediction technique is one of promising techniques
that meets our goal. In this paper, we explain our attempt to build several FP class prediction models to predict
defects that would be detected in a functional testing phase by using our actual product development data. We
also discuss practical consideration how to apply the FP technique to a testing phase in practice to stabilize
software quality earlier than before.
1
はじめに
大規模・複雑化するソフトウェアにおいて,その信頼性に対する顧客や社会からの要求はます
ます高まっている.一方で,市場が要求する機能をタイムリーかつ妥当なコストの範囲で提供す
ることも求められており,ソフトウェアの信頼性を高いレベルで効率的に確保する技術が必要と
なってきている.このような技術ニーズに対して,fault-prone (FP) モジュール予測技法は,有
効な解決策の 1 つとして期待されている.
FP モジュール予測技法は,ソフトウェアを構成するモジュールのうち,欠陥を含んでいる可能
性の高いモジュールを特定する技法である. FP モジュール予測を高い精度で実現できれば,予
測結果に基づいたテスト戦略などの立案と実施ができ,品質保証コストの削減が期待できる.FP
モジュール予測に関する研究は,これまでに数多く行われてきている.初期の研究は 1980 年代
に始まり[1],1990 年代からはオブジェクト指向ソフトウェアを対象に CK (Chidamber & Kemerer)
メトリクス[2]などを説明変数とした予測技法の研究[3][4][5]へと発展した.2000 年以降はオープンソ
ースソフトウェア(OSS) を対象とした研究[6][7][8][9]や,それまで主流だった多重ロジスティック回
帰モデル以外の多様な予測モデルを適用した研究[6][8][10]などが示されており,FP モジュール予測
研究は広がりを見せている.
しかし,これらの FP モジュール予測研究で分析対象とした組織またはデータの文脈は,筆者ら
の所属組織における状況に適合するとは言い難い.筆者らの組織では,1970 年代からの継続的な
ソフトウェア品質改善活動[11]の蓄積があり,品質会計制度[12]と呼ばれる手法を中心とした品質保
証を長年にわたって実施している.また,2004 年には CMMI レベル 5 を達成するなど,ソフトウ
ェアライフサイクルプロセスの成熟度は比較的高い.この状況を踏まえて FP モジュール予測技法
に関する先行研究を検討すると,筆者らの組織において適用する上での課題が指摘できる.たと
えば Basili らの研究[13]は,学生が開発下プロジェクトのデータを用いており,筆者らの所属組織
とはプロセス成熟度の面で文脈が大きく異なる. Zhou らは CK メトリクスを用いた FP モジュー
ル予測研究を横断的に調査した結果,クラス規模やクラス結合度に関するメトリクスが概ね一貫
して統計的有意であったと述べているが[5],文脈の違いを十分に考慮する必要がある.
筆者らは,品質保証の精度を高めるために,蓄積されたメトリクスを用いた従来の品質保証方
NEC ITソフトウェア事業本部
NEC
IT Software Operations Unit
東京都府中市日新町1-10
Tel: 042-364-1111
1-10, Nisshin-cho,Fuchu-Shi, Tokyo Japan
Tel: 042-364-1111
1) NEC ITソフトウェア事業本部
NEC
IT Software Operations Unit
2)東洋大学
Toyo University
SQiP2010 B3-3
式に追加する形で,FP モジュール予測技法の導入を検討している.
本稿の FP モジュール予測では,
クラスをモジュールと同一視しているため,以後本稿での FP モジュール予測を FP クラス予測と
呼ぶ.今回,先行研究の知見および課題を踏まえた上で,実際の開発時に収集したメトリクスを用
いて独自の FP クラス予測モデル式の構築・評価を試みた.その結果,ベイジアンネットワークモ
デルを使い,複雑度や CK メトリクスなどのプロダクトメトリクスのデータに,従来から収集して
いるプロセスメトリクスを組み合わせることで,有効と思われるモデル式を構築することができ
た.更に構築した FP クラス予測をコーディング工程完了時に実施することで,テスト工程での品
質を早期に安定させる方式についても検討を行った.本稿ではこれらを報告する.
2
開発製品およびプロセスの概要
ここでは,筆者らの組織が開発する製品と,開発および品質保証プロセスの概要を述べる.
2.1 開発製品
筆者らの組織では,オペレーティングシステムやシステムソフトウェア製品の開発・保守を行
っている.製品は,特定顧客向けではなく,汎用的な製品である.そのため,出荷後に品質問題
が発生した場合の影響範囲が大きく,高いレベルでの品質確保が特に求められる.製品の開発に
あたっては,既存製品の機能強化をバージョンアップという形で繰り返し実施することが多い.
2.2 開発プロセス
開発プロセスは,製品開発プロセスと品質改善プロセスの 2 つを定義している.製品開発プロ
セスは,図 1 に示したV字型モデルを基本としている.これは,基本設計からコーディングまで
の 4 工程からなる上流工程と,単体テストからシステムテストまでの 3 工程からなるテスト工程
で構成される.それぞれの工程について,成果物,実施作業,および測定項目を定義している.
測定項目のうち,代表的なプロセスメトリクスを表 1 に示す.品質改善プロセスは,製品開発プ
ロセスの全フェーズにわたって体系的
上流工程
テスト工程
出荷 保守
に定義しており,欠陥の未然予防や再発
開発部門
BD:基本設計工程
ST:システム
BDD:基本設計
テスト工程
防止に関する各種の活動が定義されて
BDR:基本設計レビュー
製品開発
FD:機能設計工程
いる.これらの開発プロセスは組織的に
FT:
FDD:機能設計
機能テスト工程
FDR:機能設計レビュー
標準化されており,開発部門が製品を開
DD:詳細設計工程
UT:
DDD:詳細設計
発する際に一律に適用している.
単体テスト工程
DDR:詳細設計レビュー
CD:コーディング工程
2.3 品質保証プロセス
CDC:コーディング
CDR:コードレビュー
品質改善
品質保証プロセスは,開発部門によっ
品質改善活動
品質保証部
て作成された成果物と実施された作業
計画レビュー
仕様書レビュー
受入 製品
品質評価
評価 評価
の両方について,その品質を保証する活
評価計画
評価項目/パッケージ設計・製造
品質管理
メトリクス/データ収集管理、品質監視/分析/評価、品質情報提供
動である.このプロセスは品質保証部門
が第三者の立場で実施している.品質
図 1 開発プロセスと品質保証活動
保証プロセスは,品質評価プロセスと
品質管理プロセスの 2 つを定義してい
る.品質評価プロセスでは,開発計画や仕様書の妥当性確認など,第三者の立場から評価を行う.
一方,品質管理プロセスでは,表 1 に示されるようなデータを開発プロセスの全工程にわたって
測定および収集し,これらを元に品質状況と進捗状況を客観的かつ多角的に判断した上で,問題
点の指摘を行う.
表 1 代表的なプロセスメトリクス
測定対象の工程
メトリクス
開発プロセス共通
開始日遅れ日数,完了日遅れ日数,欠陥数/KL,欠陥摘出率
上流工程のみ
作業進捗率,作業工数/KL,レビュー工数/KL,欠陥摘出数/レビュー工数
テスト工程のみ
テスト項目消化率,テスト項目数/KL,テスト工数/KL
また,複数の製品開発から収集されたデータを用いて横断的な視点で品質分析を行い,品質向上
施策の指示などを行っている.
3
FP クラス予測モデルの開発への適用方法
SQiP2010 B3-3
実際の開発は,製品を機能単位にいくつかのサブシステムに分割して進められる.品質管理の
中心となるのは収集したメトリクスを用いた管理であり,管理は原則としてサブシステム単位に
収集されたデータをもとに実施されている.ある開発では 105KL の開発を7つのサブシステムに
分割し,開発を実施した.そのため,数値で判断できていたのはサブシステム全体の品質までで
ある.これよりも細かい粒度での品質管理は,各開発者が個別に実施する品質分析に委ねていた.
テスト工程では品質会計制度をもとに残存する欠陥数を管理していたが,ここでも同様に,管理
はサブシステム単位である.FP 予測モデル式をソースコードから収集するプロダクトメトリクス
を使って構築すると,更に詳細な単位で構築することが可能となる.例えば上記の開発例では 215
のクラスが存在する.クラス単位で FP 予測を行えば従来は 7 つのサブシステム単位で管理して
いたものが,215 個のクラス単位で品質分析が可能である.筆者らの組織では機能テスト工程以
降に発見された欠陥は,修正内容とソースコードの修正箇所をすべて紐付けて管理している.開
発の速い段階で機能テスト工程以降に修正が発生するクラスの予測を実施し,FP と判定されたク
ラスのテストを優先して実施することで,品質を早期に安定させることができるのではないかと
考えた.そこで実際の開発データを使って FP クラス予測モデル式の構築を試みた.
4
分析対象データの概要
4.1 分析対象データセット
本稿では,汎用的なシステムソフトウェア製品を分析対象として選定した.分析に使用したの
は,新規開発製品の初回開発時および第1回目のバージョンアップ開発時のデータである.バージ
ョンアップ開発時の開発プロセスでは,サブシステムによって工程の区切り方が大きく二通りに
分かれていた.このことはプロセスメトリクスのデータに相応の影響があると考えられるため,
新規開発時と同様の工程で開発したサブシステムを B,そうでないサブシステムを C として分割
し,別々のデータセットとした.開発言語は C および C++を主に使用しているが,そのうちの C++
言語の部分のみを分析対象としている.分析に使用したデータセットの概要を表 2 に示す.
表 2
参照記号
A
B
C
開発内容
新規開発
バージョンアップ開発 1
バージョンアップ開発 2
分析対象データセット概要
開発規模 分析対象規模
105KL
57KL
177KL
165KL
124KL
91KL
クラス数
215
611
450
サブシステム数
7
9
6
4.2 分析対象メトリクス
表 1 のメトリクス以外に,FP モジュール予測の目的で収集したクラス単位のプロダクトメトリ
クスを表 3 に示す.表 3 に示されたメトリクスのうち,CK メトリクスはテクマトリックス社の
Understand[15]を用いて測定した.そのほかのメトリクスは,2.3 節で述べた品質管理プロセスで
継続的に収集している項目であり,社内で作成したツールを用いて測定している.
種別
規模
複雑度
CK
メトリクス
有効行数
メソッド数
サイクロマチック数
分岐条件数
最大ネスティング数
WMC
DIT
NOC
CBO
RFC
LCOM
表 3 クラス単位のプロダクトメトリクス
概要
総行数からコメント行数と空白行数を除いた値(クラス単位で集計)
クラスに含まれるメソッド数.
分岐命令による経路複雑度を表す数値(クラス単位で集計)
分岐命令の条件式の数(クラス単位で集計)
各メソッドの最大ネスティング数のクラス平均値
メソッドの数を,それぞれの重みを考慮した上で合計した値
継承ツリーにおけるルートクラスまでの階層数(上位クラスの数)
直接のサブクラスの数
メソッドやインスタンス変数を参照・実行している他のクラスの数
オブジェクトが受け取るメッセージに応答して実行されるメソッド数の合計
共通の属性を操作するメソッドの数.凝集性の欠如度合いを表す
備考:CK メトリクスは,WMC (Weighted Methods per a Class), DIT (Depth of Inheritance Tree),NOC (Number Of Children),
CBO (Coupling Between Object Classes), RFC (Response For a Class), LCOM (Lack of Cohesion Of Methods) を意味する.
SQiP2010 B3-3
5
Fault-prone クラスの予測
標本データは,表 2 の A~C を使用している.機能テスト以降に欠陥が観測されたクラスに 1
(欠陥有り)を,観測されなかったクラスに 0(欠陥無し)を割り当て,目的変数とした.モデ
ル構築とモデル評価にどのデータセットを用いるかによって,9つの評価パターンが考えられる.
それぞれの評価パターンについて表 4 に示す.
表 4
参照記号
モデル構築データセット
モデル評価データセット
FP クラス予測評価パターン
P1
P2
P3
P4
P5
P6
A
B
C
A
A
B
A
B
C
B
C
A
P7
B
C
P8
C
A
P9
C
B
5.1 FP 予測の評価指標
FP クラス予測の評価指標を表 5 に示す.評価指標は,文献[8]で示される5つの指標のうちの F
値および適合率と,独自に設定した1つの指標とを用いた.この中の F 値は(1)式で与えられ,一
般にトレードオフの関係にある再現率と適合率とのバランスを加味して評価できるため,FP 予測
の評価指標としてよく利用される.
F値 =
2 × Recall × Precision
Recall + Precision
(1)
また,独自指標である早期欠陥クラステスト率は,FP クラス予測の結果に従い「FP と判別された
クラス」「FP でないと判別されたクラス」の順にテストを進めた場合に,早期に欠陥のあるクラ
スをテストできる度合いを示した指標である.具体的には,横軸に機能テスト以降のテスト項目
の消化率,縦軸に摘出された欠陥数をとり,テストの進捗にあわせた欠陥の摘出状況をグラフ化
する.このグラフと横軸で囲まれた面積を用いて,予測モデルの精度を評価したものである(Kaur
らの AUC 評価を参考に設定).経験的には,0.55 以上である程度の有効性が見られ,0.65 以上あ
れば非常に有効であると判断できる.予測精度が高いモデルを構築できると,早期欠陥摘出数も
高くなり,品質安定を早期に図ることが期待できる
表 5
FP クラス予測の評価指標
評価指標
再現率(recall)
適合率(precision)
F値
早期欠陥クラステスト率
実際に欠陥があったモジュールのうち,FP と正しく判別できた割合
FP と判別したモジュールのうち,実際に欠陥があったモジュールの割合
再現率と適合率の調和平均.値が大きいほど,判別の精度が高いことを表す
独自指標.全クラスのうち FP でないと判別されたクラスの割合と再現率との平均値.
今回の FP クラス予測の目的が FP と予測したクラスのテストを早期に行うことでの品質を早く
安定させることを目的としているため,本稿の評価では,早期欠陥クラステスト率を最重要指標
とし,F 値を二番目の主要指標とした.その際に,予測モデルの有効性を確保するための閾値を
設ける.早期欠陥クラステスト率が 0.55 未満または F 値が 0.4 未満の場合(亀井らの研究[6]を参
考に設定),予測モデルは不適合であるとして却下することとする.
5.2 ロジスティック回帰モデルの適用と評価
まず, (2)式で示した多重ロジスティック回帰モデルを使ってモデルの構築・評価を行った.
P=
1
1+ e
− ( C0 + C1 X 1 +L+ C n X n )
(2)
ここで,P は機能テスト以降に欠陥があると判定された確率,Xi は説明変数として選択されたメ
トリクス,Ci は標準化偏回帰係数を表す.モデル構築時の説明変数の選択にはステップワイズ法
を使用した.選択対象とした説明変数と実際に選択された説明変数とを表 6 に示す.表中の対数
変換が有となっているメトリクスは,データの分布に歪みがあったため対数変換を行って正規分
布に近づける処理を施したことを表している.なお,プロダクトメトリクスのデータはクラス単
位で与えられるのに対して,分析に用いたプロセスメトリクスのデータはサブシステム単位で与
えられている点に注意が必要である.A と B で選択されている GUI という説明変数について補足
SQiP2010 B3-3
する.これは対象データの質的な違いに着目して層別したところ,サブシステムを GUI と GUI 以
外で層別した場合にいくつかのメトリクスに顕著な違いがみられたために,サブシステムの層別
が有効であると判断して設定した変数である.
表 6
ロジスティック回帰モデル構築時に選択された説明変数
対数
選択された説明変数
変換
A
B
C
規模
メソッド数
有
○
○
○
有効行数/メソッド数
有
○
○
複雑度
最大ネスティング数
有
○
RFC/メソッド数
有
○
CBO/有効行数
有
○
○
GUI*
無
○
○
上流工程欠陥数/KL
有
○
○
○
プロセスメトリクス
上流工程レビュー工数/KL
有
○
○
UT 欠陥数/KL
有
○
○
UT 項目数/KL
有
○
○
○
UT 工数/KL
有
○
*)GUI のサブシステムのクラスの場合は1,GUI 以外のサブシステムのクラスの場合は0を設定している
メトリクス種別
メトリクス
評価指標値
1.00
A から C の全てのデータセットにおいて,規模メト
リクス,CK メトリクス,プロセスメトリクスからそ
0.80
れぞれ説明変数が選択されている.次にモデルの評
価結果を図 2 に示す.これは構築したモデルを表 4
0.60
不適合モデル閾値
の P1~P9 の各パターンで評価した場合の評価指標
(早期欠陥クラステスト率)
0.40
不適合モデル閾値(F値)
の値を示したものである.
構築データと評価データが同じ場合には,
0.20
適合率
F値
leave-one-out 法を用いて評価した.早期欠陥クラ
早期欠陥クラステスト率
ステスト率または F 値が,それぞれの不適合モデル
0.00
P1
P2
P3
P4
P5
P6
P7
P8
P9
閾値を下回っている場合には,当該モデルは不適合
評価パターン
であると見なされる.構築データと評価データが同
図 2 ロジスティック回帰モデルの評価結果
じ場合には,leave-one-out 法を用いて評価した.
早期欠陥クラステスト率または F 値が,それぞれの
不適合モデル閾値を下回っている場合には,当該モデルは不適合であると見名している.
モデルを構築したデータで評価を行った場合には評価結果の値が高いが(P1,P2 および P3),モ
デルを構築したデータと異なるデータで評価した場合には,6 つのパターンの中で 5 つが不適合
となった.Kaur らの FP 予測では F 値が 0.79 であり[8],亀井らの FP 予測では 0.449 であった[6]
ことを考えても,異なるデータで評価した場合の精度は高いとはいえない.
ここに示した以外にもデータの層別方法の変更や説明変数の選択数を減らすなどしてモデルを
構築・評価したが,やはり構築データと異なるデータで評価する場合には精度の高い評価結果を
得られなかった.一般に線形回帰モデルでは説明変数間の依存関係がないことを前提としている
が,ソフトウェアにおけるプロダクトメトリクスおよびプロセスメトリクスでは,説明変数間の
依存関係が強いため,頑健性の高い予測モデルを構築することは難しいものと考えられる.
5.3 ベイジアンネットワークモデルの適用と評価
線形回帰モデルでは頑健性の高い予測モデルが得られなかったため,次に,説明変数間の依存
関係を前提としたネットワーク型のモデルとして,ベイジアンネットワークを利用した FP クラス
予測を試みた.ベイジアンネットワーク(Bayesian Network)は,因果関係を確率により記述する
ネットワークモデルの 1 つで,因果関係の推論を有向グラフ構造により表すとともに,個々の変
数の関係を条件つき確率で表す確率推論のモデルである.
本稿では,3 種類のベイジアンネットワークについて評価する.それぞれの特徴を表 7 に示す.
BN1 の NaiveBayes は説明変数間の依存関係がないことを前提としているが,最も普及しているベ
イジアンネットワークモデルであるため評価の対象とした.BN2 の TAN は NaiveBayes に説明変数
間の依存関係を導入した手法である.BN3 の Bayes Net が最もネットワークとしての自由度が高
SQiP2010 B3-3
い.また,BN2 と BN3 の説明変数間の依存関係で記されている最大値とは,各説明変数が依存す
る説明変数の数の最大値のことを示している.
表 7
参照
記号
BN1
BN2
BN3
評価対象のベイジアンネットワークモデルの特徴
目的変数と説明変数の 説明変数間の
モデル種別名称
依存関係
依存関係
NaiveBayes
必須
なし
TAN (Tree Augmented NaiveBayes)
必須
あり(最大 1)
Bayes Net
任意
あり(最大 3)
1.00
1.00
0.80
0.80
0.60
評価指標値
評価指標値
頑健性を考慮した上でモデルの予測精度を評価するために,ベイジアンネットワークモデルの
評価では,ブートストラップ法を使用した.具体的には,モデル構築データセットからランダム
に全体の 80%の標本を抽出して構築したモデルを使って評価する繰り返し(イテレーション)を
4000 回行い,その平均値を最終的な予測値としている.モデル構築データセットと評価データセ
ットが同じパターン(P1,P2 および P3)では,cross-validation とブートストラップ法を併用
した.図 3,図 4 および図 5 に,その評価結果を示す.図 3,図 4 および図 5 を比較すると,
図 4 の TAN が,不適合モデルの少なさ,早期欠陥クラステスト率,F 値の全てにおいて,他を上
回っており,最も有効な予測結果を示した.特に,不適合モデルが一つもないという点からは,
一定の頑健性を確保できたと考えることができる.ただし,ブートストラップ法でモデルを構築
する際に,イテレーション毎のモデルの安定性が乏しく,説明変数を固定化したモデルの特定に
は至らなかった.将来的にモデル構築データ数が十分大きくなった場合には,Bayes Net など他
の手法でも精度の高い予測モデルを構築できる可能性も考えられる.
不適合モデル閾値
(早期欠陥クラステスト率)
0.40
不適合モデル閾値(F値)
0.20
不適合モデル閾値
(早期欠陥クラステスト率)
0.40
適合率
F値
早期欠陥クラステスト率
0.00
P1
P2
図 3
P3
P4
P5
P6
評価パターン
P7
P8
P9
P1
P3
図 4
1.00
0.80
0.80
評価指標値
0.60
不適合モデル閾値
(早期欠陥クラステスト率)
不適合モデル閾値(F値)
0.20
P2
NaiveBayes の評価結果
1.00
0.40
不適合モデル閾値(F値)
0.20
適合率
F値
早期欠陥クラステスト率
0.00
評価指標値
0.60
0.00
P5
P6
評価パターン
P7
P8
P9
P8
P9
TAN の評価結果
0.60
不適合モデル閾値
(早期欠陥クラステスト率)
0.40
不適合モデル閾値(F値)
適合率
F値
早期欠陥クラステスト率
0.20
適合率
F値
早期欠陥クラステスト率
P4
0.00
P1
P2
図 5
P3
P4
P5
P6
評価パターン
P7
Bayes Net の評価結果
P8
P9
P1
図 6
P2
P3
P4
P5
P6
評価パターン
P7
TAN(プロセスメトリクスなし)の評価結果
SQiP2010 B3-3
一方,TAN のモデルにおいて,プロセスメトリクスが精度向上に寄与しているかどうかを検証
するために,説明変数からプロセスメトリクスを除いたデータを用いて,モデル構築,評価を行
った.その結果を図 6 に示す.図 4 と図 6 とを比較して,図 6 の方が,不適合モデルの少なさ,
早期欠陥クラステスト率,F 値のいずれにおいても悪化していることから,プロセスメトリクス
は TAN のモデルの予測精度向上に寄与していると言える.
6
実際の開発での利用方法
実際の開発に本モデルを適用し,コーディング工程完了時に予測を行った場合の効果について
考察する.一例として,表 4 の P4 のパターンで,機能テスト工程以降の欠陥の摘出有無の結果
に対し,TAN で構築した FP クラス予測モデル(図 4)を適用した予測結果の関係性について表 8
に示す.
表 8
機能テスト工程以降の欠陥摘出有無と FP クラス予測結果との関係
FPクラス予測結果
合計
欠陥なしと予測
欠陥ありと予測
機能テスト工程以降に欠陥なし
303
149
機能テスト工程以降に欠陥あり
59
100
合計
362
249
実績
452
159
611
表 8 に示すとおり,611 あるクラスのうち,機能テスト工程以降に欠陥の修正が発生したクラ
スは 159 個であった.一方,欠陥が発生する可能性があると予測されたクラスは 249 個であり,
この 249 個のクラスで実際に欠陥による修正が発生したクラスが 100 個であった.テストをどの
クラスにも均等に実施し,テスト項目に対して欠陥が発生する確率が均一であったと仮定した場
合,100 個のクラスから欠陥を摘出するには機能テスト以降のテスト項目を 63% (100/159) 実施
することが必要となる.しかし FP クラス予測で欠陥が発生する可能性が高いと予測されたクラ
スからテストを実施すれば,全体の 41% (249/611) のテスト項目を消化した時点で 100 個のクラ
スから欠陥を摘出することが可能となり,テストの早い段階から品質を向上させることができる.
現実には,テストの進捗に対して欠陥の摘出ペースは一定ではないが,いずれにしても本稿の試
みが品質の早期安定に寄与する可能性は高いと考えられる.また,コーディング工程終了時に欠陥
が残存する可能性が高いクラスを特定することで,再レビューの必要性を検討,あるいは単体テス
トの網羅率を上げる,など機能テスト以前の工程でも品質確保の施策をとることができ,より早
期の品質安定化を実現につなげることができる.
7
おわりに
今回はプロダクトメトリクスおよびプロセスメトリクスを使用して FP クラス予測モデルの構
築・評価を行った.機能テスト以降に欠陥があるクラスを予測するために有効な説明変数を特定
するまでには至らなかったが,プロダクトメトリクスにプロセスメトリクスを加えてベイジアン
ネットワークモデルを構築することで,有効であり,かつ,ある程度の頑健性を持った予測モデ
ルを構築することができた.今回は機能テスト工程以降に摘出された欠陥に対する修正を予測す
るモデル式を構築した.欠陥の中には仕様変更や機能追加要求による修正も含めている.これらは
ソースコードやクラスの構造では測定できない種類の欠陥である.モデル式の精度を向上させる
ためには欠陥の作りこみ原因や分類などを考慮しながら作成する必要があると思われる.
実際の使用場面を想定した場合、サブシステム単位での品質状況の把握と比較するとクラス単
位での品質状況が把握できれば,品質保証の精度を高める効果は高いと思われる.今回の報告で
は,実際の開発場面で適用するには至っていない.説明変数の特定と並行して,実際の開発でモ
デル式を使った予測を効果的に適用するための具体的な方策を検討していきたい.
参考文献
[1] Shen, V., Yu, T., Thebaut, S. and Paulsen, L.: Identifying Error-Prone Software:An Empirical Study,
IEEE Trans. Softw. Eng., Vol.11, No.4, pp.317–324 (1985).
SQiP2010 B3-3
[2] Chidamber, S. and Kemerer, C.: A Metrics Suite for Object Oriented Design, IEEETrans. Softw. Eng.,
Vol.20, pp.476–493 (1994).
[3] Basili, V.R., Briand, L.C. and Melo, W.L.: A validation of object-oriented designmetrics as quality
indicators, IEEE Trans. Softw. Eng., Vol.22, No.10, pp.751–761(1996).
[4] Briand, L.C., W¨ust, J., Daly, J.W. and Porter, D.V.: Exploring the relationshipbetween design measures
and software quality in object-oriented systems, J. Syst.Softw., Vol.51, No.3, pp.245–273 (2000).
347278.
[5] Zhou, Y. and Leung, H.: Empirical Analysis of Object-Oriented Design Metrics for Predicting High and
Low Severity Faults, IEEE Trans. Softw. Eng., Vol.32, No.10, pp.771–789 (2006).
[6] 亀井靖高,森崎修司,門田暁人,松本健一:相関ルール分析とロジスティック回帰分析を組み
合わせた fault-prone モジュール判別方法,情報処理学会論文誌,Vol.49,No.12,pp.3954–3966
(2008).
[7] Gyimothy, T., Ferenc, R. and Siket, I.: Empirical validation of object-oriented metrics on open source
software for fault prediction, IEEE Trans. Softw. Eng., Vol.31, No.10, pp.897–910 (2005).
[8] Kaur, A. and Malhotra, R.: Application of Random Forest in Predicting Fault-Prone Classes, Intl. Conf.
Advanced Computer Theory and Eng. (2008).
[9] Shatnawi, R. and Li, W.: The effectiveness of software metrics in identifying errorprone classes in
post-release software evolution process, J. Syst. Softw., Vol. 81,No.11, pp.1868–1882 (2008).
[10] Menzies, T., Greenwald, J. and Frank, A.: Data Mining Static Code Attributes to Learn Defect
Predictors, IEEE Trans. Softw. Eng., Vol.33, pp.2–13 (2007).
[11] 水野幸男監修,全社 SWQC 活動調整委員会(編):ソフトウェアの総合的品質管理:NEC の SWQC
活動,日科技連出版社(1990).
[12] 誉田直美,ソフトウェア品質会計:NEC の高品質ソフトウェア開発を支える品質保証技術, 日
科技連出版社(2010).
[13] Ohlsson, N. and Alberg, H.: Predicting fault-prone software modules in telephone switches, IEEE
Trans. Softw. Eng., Vol.22, No.12, pp.886–894 (1996).
[14] Fenton, N., Neil, M., Marsh, W., Hearty, P. A. H.P., Radlinski, L. A. R.L. and Krause, P. A. K.P.:
Project Data Incorporating Qualitative Facts for Improved Software Defect Prediction, Proc. 3rd Int'l.
Workshop on Predictor Models in Softw.Eng. (PROMISE'07), 10 pages (2007).
[15] http://www.techmatrix.co.jp/quality/understand/