オブジェクト指向開発における フォールト発生早期予測手法の 一提案 神谷 年洋†,楠本 真二†,井上 克郎†‡ †大阪大学大学院基礎工学研究科 ‡奈良先端科学技術大学院大学情報科学研究科 背景 複雑度メトリクスはソフトウェア部品の複雑 さを計測する. エラー修正(レビュー・テスト・フォールト修 正)に必要な労力を,計測されたメトリクス 値から予測する. Chidamberと Kemererのメトリクス(以下 C&Kメトリクス)はオブジェクト指向ソフトウェ ア向けの代表的な複雑度メトリクスである. 1 C&Kメトリクス [1] [1] S.R. Chidamber and C.F. Kemerer, A Metrics Suite for Object Oriented Design, IEEE Trans. on software eng., vol., 20, No. 6, Jun 1994. C&Kメトリクスは以下の3つの観点からクラ スの複雑さを評価する: DIT (Depth of inheritance tree) 継承 NOC (Number of children) RFC(Response for a class) 結合 CBO(Coupling between object-class) WMC(Weighted methods par class) クラスの 内部複雑度 LCOM(Lack of cohesion in method) 2 C&Kメトリクスの有効性 C&Kメトリクスの有効性を評価した研究 Chidamberと KemererはC&Kメトリクスが Weyukerの性質を満たすことを確認した [1]. Basiliらは クラスのフォールトを予測する際 は,C&Kメトリクスが従来のコードメトリクスより 精度が高いことを実験的に確認した [2]. Briandらは C&Kメトリクスを含む多くの設計メ トリクスを比較した [3]. [2] V.R. Basili, L.C.Briand, W.L.Mélo, A Validation of Object-Oriented Design Metrics as Quality Indicators, IEEE Trans. on software eng., vol. 22, No. 10, Oct 1996. [3] L.C. Briand, J.W.Daly, and J.K.Wüst, A Unified Framework for Coupling Measurement in Object-Oriented Systems, IEEE Trans. on software eng., vol.25, No.1, Jan/Feb 1999. 3 C&Kメトリクスを設計に適用する 上での問題点 C&Kメトリクスの一部は,アルゴリズムや呼 び出し関係といった,設計フェーズの後期 になるまで入手できない情報を必要とする. これまでの研究では,C&Kメトリクスはソー スコードに適用されてきた. レビューやテスト労力の割り当てにメトリク スによる予測を用いる場合,クラス(部品) のフォールト予測は早期に行えることが望 ましい. 4 提案する手法 設計の初期段階からメトリクスを計測する手法 1. 設計・実装フェーズに4つのチェックポイントを導入する. 2. 各チェックポイントで計測可能なメトリクスの集合を決 定する. 3. 各チェックポイントで,計測されたメトリクスによる多変 量ロジスティック回帰分析を行い,それぞれのクラス (部品)にフォールトが発生するかしないかを予測する. 実験によって,各チェックポイントにおけるメトリク ス集合のフォールト予測精度を確認する. 5 チェックポイントと開発プロセス 分 析 CP1: クラス間の関係と属性が決定される シ 設ス 計テ ム オ ブ 設ジ 計ェ ク ト 実 装 CP2: 導出,インターフェイス(メソッド),再利用ク ラスが決定される CP3: メソッドのアルゴリズムが開発される CP4: ソースコードが書かれる t 6 利用されるメトリクス 6種類のC&Kメトリクス CBOR(Coupling to reused classes) CBON(Coupling to newly-developed classes) CBO + CBON = CBO NIV(Number of instance variables) SLOC(Source lines of code) 7 チェックポイントとメトリクス 分 析 シ 設ス 計テ ム オ ブ 設ジ 計ェ ク ト 実 装 CP1: クラス間の関係と属性が決定される S1 = { NIV, CBON } CP2: 導出,インターフェイス(メソッド),再利用ク ラスが決定される S2 = S1 { CBOR, CBO, WMC, DIT, NOC } CP3: メソッドのアルゴリズムが開発される S3 = S2 { RFC, LCOM } CP4: ソースコードが書かれる S4 = S2 { SLOC } t 8 フォールト発生の予測 “Multivariate logistic regression is a standard technique based on maximum likelihood estimation, to analyze the relationships between measures and fault-proneness of classes.” P1: フォールト発生予測 (フォールトが検出される確 率) CBO, NIV: メトリクスの計測値 C0, C1, C2: 係数 1 P1 (CBO, NIV ) 1 exp((C0 C1 CBO C2 NIV )) 9 実験の概要 1997年8月にある企業の新人研修で行わ れた5日間に渡るC++プログラム開発演習. 開発者は新入社員であり,研修によりオブ ジェクト指向設計とC++言語によるプログ ラミングを修得している. 複数の開発チームが同一の要求仕様書に 基づいてメール配送システムを作成する. 10 収集データ フォールトに関するデータ (エラー追跡ツールを用いて収集) コードレビューとテストで発見されたフォールト フォールト修正に要した時間 メトリクスデータ (メトリクス抽出ツールを用いて,ソースコードから抽出) 新規開発されたクラスのメトリクス値 17人の開発者の,141のクラスから,80個のフォー ルトに関するデータが収集された. 11 実験データの統計量 メトリクス 最小 最大 平均 NIV CBON CBOR CBO DIT NOC RFC LCOM SLOC 4 0.53 0.86 1.39 3.44 0 8.23 22.42 96.43 0.57 フォールト 0 0 0 0 0 0 0 0 5 0 14 3 4 5 6 0 27 190 420 17 標準偏差 2.67 0.99 0.99 1.59 1.41 0 6.81 36.84 81.01 1.93 CP 1 1 2 2 2 2 3 3 4 12 メトリクスによる予測(1/2) 収集されたメトリクスデータに多変量ロジスティッ ク回帰分析を行って予測式を作成した. CP1における予測 フォールト無 予測 フォールト無 112 実測 フォールト有 18(43) フォールト有 2 9(37) 括弧内の数字はそれらのクラスのフォールト数 13 メトリクスによる予測 (2/2) CP2 における予測 フォールト無 予測 フォールト無 109 実測 フォールト有 11(20) フォールト有 5 16(60) CP3 における予測 フォールト無 フォールト有 予測 フォールト無 111 3 実測 フォールト有 9(18) 18(62) CP4 における予測 フォールト無 フォールト有 予測 フォールト無 111 3 実測 フォールト有 8(14) 19(66) 14 予測精度評価のための指標 予測精度を評価するための2つの指標 [2]. 完全性: 実際にフォールトがあったクラスのうち,フォ ールトありと予測されていたクラスの割合 正確性: フォールトありと予測されたクラスのうち,実 際にフォールトがあったクラスの割合 フォールト無 フォールト有 フォールト無 112 18 2 9 9 0.33 完全性 18 9 9 0.82 正確性 29 予測 実測 フォールト有 15 予測精度 100 精度(%) 90 80 70 60 50 40 30 82 85 76 86 70 59 63 正確性 完全性 33 20 10 0 CP1 CP2 CP3 CP4 全体としては,プロセスが進むにつれて予測の精 度は改善する. 正確性はすべてのCPで概して高めである. 完全性は後期のCPの方が高い. 16 考察(1/2) CP1では少数のクラスがフォールト有と予測され, その82%にフォールトが発見される. CP1での予測は,フォールトを含むであろうクラス を「シード」する目的に用いる. ↓ シードされたクラスは重点的にレビュー・テストさ れるクラスの候補になる. シードされたクラスの分布が設計レビューの判断 基準になる. 17 考察(2/2) CP3での予測精度の向上のために 結合の種類を区別する,「細粒度」C++設計メ トリクスを援用する. サイクロマチック数などを用いて,メソッドの複 雑さを適正に重み付けするWMCを用いる. 18 まとめと展望 オブジェクト指向開発において,クラスにフ ォールトが作りこまれるかどうかを早期に 予測する手法を提案した. 今後の研究課題: 他のメトリクスを利用する 設計書に直接適用する 支援ツールを開発する 19
© Copyright 2024 ExpyDoc