200 likes | 324 Views
オブジェクト指å‘開発ã«ãŠã‘ã‚‹ フォールト発生早期予測手法㮠一æ案. 神谷 å¹´æ´‹ †, æ¥ æœ¬ 真二 †, 井上 克郎 †‡ †大阪大å¦å¤§å¦é™¢åŸºç¤Žå·¥å¦ç ”究科 ‡ 奈良先端科å¦æŠ€è¡“大å¦é™¢å¤§å¦æƒ…å ±ç§‘å¦ç ”究科. 背景. 複雑度メトリクスã¯ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢éƒ¨å“ã®è¤‡é›‘ã•ã‚’計測ã™ã‚‹ . エラー修æ£ï¼ˆãƒ¬ãƒ“ュー・テスト・フォールト修æ£ï¼‰ã«å¿…è¦ãªåŠ´åŠ›ã‚’ , 計測ã•ã‚ŒãŸãƒ¡ãƒˆãƒªã‚¯ã‚¹å€¤ã‹ã‚‰äºˆæ¸¬ã™ã‚‹ï¼Ž Chidamber 㨠Kemerer ã®ãƒ¡ãƒˆãƒªã‚¯ã‚¹ ( 以下 C&K メトリクス ) ã¯ã‚ªãƒ–ジェクト指å‘ソフトウェアå‘ã‘ã®ä»£è¡¨çš„ãªè¤‡é›‘度メトリクスã§ã‚ã‚‹. C&K メトリクス [1].
E N D
オブジェクト指向開発におけるフォールト発生早期予測手法の一提案オブジェクト指向開発におけるフォールト発生早期予測手法の一提案 神谷 年洋†,楠本 真二†,井上 克郎†‡ †大阪大学大学院基礎工学研究科 ‡奈良先端科学技術大学院大学情報科学研究科
背景 • 複雑度メトリクスはソフトウェア部品の複雑さを計測する. • エラー修正(レビュー・テスト・フォールト修正)に必要な労力を,計測されたメトリクス値から予測する. • Chidamberと Kemererのメトリクス(以下C&Kメトリクス)はオブジェクト指向ソフトウェア向けの代表的な複雑度メトリクスである.
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つの観点からクラスの複雑さを評価する:
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.
C&Kメトリクスを設計に適用する上での問題点 • C&Kメトリクスの一部は,アルゴリズムや呼び出し関係といった,設計フェーズの後期になるまで入手できない情報を必要とする. • これまでの研究では,C&Kメトリクスはソースコードに適用されてきた. • レビューやテスト労力の割り当てにメトリクスによる予測を用いる場合,クラス(部品)のフォールト予測は早期に行えることが望ましい.
提案する手法 設計の初期段階からメトリクスを計測する手法 • 設計・実装フェーズに4つのチェックポイントを導入する. • 各チェックポイントで計測可能なメトリクスの集合を決定する. • 各チェックポイントで,計測されたメトリクスによる多変量ロジスティック回帰分析を行い,それぞれのクラス(部品)にフォールトが発生するかしないかを予測する. 実験によって,各チェックポイントにおけるメトリクス集合のフォールト予測精度を確認する.
チェックポイントと開発プロセス 分析 CP1: クラス間の関係と属性が決定される システム 設計 CP2: 導出,インターフェイス(メソッド),再利用クラスが決定される オブジェクト 設計 CP3: メソッドのアルゴリズムが開発される 実装 CP4: ソースコードが書かれる t
利用されるメトリクス • 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)
チェックポイントとメトリクス 分析 CP1: クラス間の関係と属性が決定される S1 = { NIV, CBON } システム 設計 CP2: 導出,インターフェイス(メソッド),再利用クラスが決定される S2 = S1 { CBOR, CBO, WMC, DIT, NOC } オブジェクト 設計 CP3: メソッドのアルゴリズムが開発される S3 = S2 { RFC, LCOM } 実装 CP4: ソースコードが書かれる S4 = S2 { SLOC } t
フォールト発生の予測 “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: 係数
実験の概要 • 1997年8月にある企業の新人研修で行われた5日間に渡るC++プログラム開発演習. • 開発者は新入社員であり,研修によりオブジェクト指向設計とC++言語によるプログラミングを修得している. • 複数の開発チームが同一の要求仕様書に基づいてメール配送システムを作成する.
収集データ • フォールトに関するデータ (エラー追跡ツールを用いて収集) • コードレビューとテストで発見されたフォールト • フォールト修正に要した時間 • メトリクスデータ (メトリクス抽出ツールを用いて,ソースコードから抽出) • 新規開発されたクラスのメトリクス値 17人の開発者の,141のクラスから,80個のフォールトに関するデータが収集された.
メトリクスによる予測(1/2) 収集されたメトリクスデータに多変量ロジスティック回帰分析を行って予測式を作成した. CP1における予測 括弧内の数字はそれらのクラスのフォールト数
予測精度評価のための指標 予測精度を評価するための2つの指標 [2]. 完全性: 実際にフォールトがあったクラスのうち,フォールトありと予測されていたクラスの割合 正確性: フォールトありと予測されたクラスのうち,実際にフォールトがあったクラスの割合 完全性 正確性
予測精度 全体としては,プロセスが進むにつれて予測の精度は改善する. • 正確性はすべてのCPで概して高めである. • 完全性は後期のCPの方が高い.
考察(1/2) • CP1では少数のクラスがフォールト有と予測され,その82%にフォールトが発見される. • CP1での予測は,フォールトを含むであろうクラスを「シード」する目的に用いる. ↓ • シードされたクラスは重点的にレビュー・テストされるクラスの候補になる. • シードされたクラスの分布が設計レビューの判断基準になる.
考察(2/2) • CP3での予測精度の向上のために • 結合の種類を区別する,「細粒度」C++設計メトリクスを援用する. • サイクロマチック数などを用いて,メソッドの複雑さを適正に重み付けするWMCを用いる.
まとめと展望 オブジェクト指向開発において,クラスにフォールトが作りこまれるかどうかを早期に予測する手法を提案した. 今後の研究課題: • 他のメトリクスを利用する • 設計書に直接適用する • 支援ツールを開発する