オブジェクト指向開発における フォールト発生早期予測手法の 一提案

Slides:



Advertisements
Similar presentations
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 1 ソフトウェア部品推薦のための.
Advertisements

シーケンス図の生成のための実行履歴圧縮手法
背景 ソフトウェアの大規模化・複雑化 生産性と品質の向上 ↓ オブジェクト指向分析設計の適用 開発ツールの投入.
情報伝播によるオブジェクト指向プログラム理解支援の提案
Object Group ANalizer Graduate School of Information Science and Technology, Osaka University OGAN visualizes representative interactions between a pair.
Observable modified Condition/Decision coverage
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
CKメトリクスを用いてリファクタリングの 効果を予測する手法の提案
プログラム実行履歴を用いたトランザクションファンクション抽出手法
プログラム実行時情報を用いたトランザクションファンクション抽出手法
メトリクス計測 プラグインプラットフォームMASUの開発
ソースコードの変更履歴における メトリクス値の変化を用いた ソフトウェアの特性分析
オブジェクト指向プログラムのための 動的結合メトリクスの評価
コードクローンに含まれるメソッド呼び出しの 変更度合の分析
コードクローンに含まれるメソッド呼び出しの 変更度合の調査
複雑度と機能量に基づくアプリケーションフレームワークの実験的評価
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
シーケンス図を用いて実行履歴を可視化するデバッグ環境の試作
オブジェクト指向メトリクスを用いた 開発支援法に関する研究
CKメトリクスに基づくリファクタリングの 効果予測手法の提案と実装
ソフトウェアを取り巻く環境の変化がメトリクスに及ぼす影響について
利用関係に基づく類似度を用いたJavaコンポーネント分類ツールの作成
ソフトウェア部品分類手法への コンポーネントランク法の応用
Javaプログラムの変更を支援する 影響波及解析システム
コードクローン検出ツールを用いた ソースコード分析システムの試作と プログラミング演習への適用
プログラム動作理解支援を目的とした オブジェクトの振舞いの同値分割手法
コンポーネントランク法を用いたJavaクラス分類手法の提案
ソフトウェア設計検証 研究室の紹介 知能情報学部 准教授 新田直也.
動的データ依存関係解析を用いた Javaプログラムスライス手法
ソースコードの特徴量を用いた機械学習による メソッド抽出リファクタリング推薦手法
ソースコード縮退による ソースコード理解 神谷年洋 科学技術振興事業団 さきがけ研究21 オブジェクト指向シンポジウム2003.
ソースコードの静的特性を用いた Javaプログラム間類似度測定ツールの試作
決定木 Decision Tree DT 明治大学 理工学部 応用化学科 データ化学工学研究室 金子 弘昌.
UMLモデルを対象とした リファクタリング候補検出の試み
コードクローン検出に基づくデザイン パターン適用支援手法の提案と実現
プログラム理解におけるThin sliceの 統計的調査による有用性評価
バイトコードを単位とするJavaスライスシステムの試作
コードスメルの深刻度がリファクタリングの実施に与える影響の実証的研究
コード片に共通した特性を自動抽出する ソースコード閲覧ツールの試作
シナリオを用いたレビュー手法PBRの追証実験 - UMLで記述された設計仕様書を対象として -
○ 後藤 祥1,吉田 則裕2 ,井岡 正和1 ,井上 克郎1 1大阪大学 2奈良先端科学技術大学院大学
コードクローン分類の詳細化に基づく 集約パターンの提案と評価
コーディングパターンの あいまい検索の提案と実装
JAVAバイトコードにおける データ依存解析手法の提案と実装
コードクローン間の依存関係に基づく リファクタリング支援環境の実装
Q3 On the value of user preferences in search-based software engineering: a case study in software product lines Abdel Salam Sayyad (West Virginia University,
オブジェクトの協調動作を用いた オブジェクト指向プログラム実行履歴分割手法
プログラムスライスを用いた凝集度メトリクスに基づく 類似メソッド集約候補の順位付け手法
設計情報の再利用を目的とした UML図の自動推薦ツール
依存関係の局所性を利用した プログラム依存グラフの 効率的な構築法
保守請負時を対象とした 労力見積のためのメトリクスの提案
コードクローン間の依存関係に基づく リファクタリング支援手法の提案と実現
オープンソースソフトウェアに対する コーディングパターン分析の適用
開発作業の形式化に基づく プロセス評価 松下誠 大阪大学.
コードクローン間の依存関係に基づく リファクタリング支援手法の提案と実現
UMLモデルを対象とした リファクタリング候補検出手法の提案と実現
ロールを基にした構造進化の表現 Role based Evolution Dependency Structure Matrix
欠陥検出を目的とした類似コード検索法 吉田則裕,石尾隆,松下誠,井上克郎 大阪大学 大学院情報科学研究科
JAVAを対象とした 動的複雑度メトリクスの実験的評価
ソフトウェア理解支援を目的とした 辞書の作成法
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
複雑度メトリクスを用いた JAVAプログラム品質特性の実験的評価
コードクローン解析に基づく デザインパターン適用候補の検出手法
回帰テストにおける実行系列の差分の効率的な検出手法
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
識別子の読解を目的とした名詞辞書の作成方法の一試案
オブジェクト指向メトリクスを用いた 開発支援に関する研究 --- VC++とMFCを用いた開発を対象として ---
Detecting Software Modularity Violations
コードクローンを対象とした リファクタリングの有効性に関する調査
Presentation transcript:

オブジェクト指向開発における フォールト発生早期予測手法の 一提案 神谷 年洋†,楠本 真二†,井上 克郎†‡ †大阪大学大学院基礎工学研究科 ‡奈良先端科学技術大学院大学情報科学研究科 大阪大学の神谷年洋です. オブジェクト指向開発におけるフォールト発生早期予測手法の一提案 というタイトルで発表いたします.

背景 複雑度メトリクスはソフトウェア部品の複雑さを計測する. エラー修正(レビュー・テスト・フォールト修正)に必要な労力を,計測されたメトリクス値から予測する. Chidamberと Kemererのメトリクス(以下C&Kメトリクス)はオブジェクト指向ソフトウェア向けの代表的な複雑度メトリクスである. 複雑度メトリクスは,ソフトウェアの複雑さを計測します. 「より複雑なソフトウェアにより多くのフォールとが作りこまれる」という 仮定をもちいて, 計測されたメトリクス値によってエラー修正に必要な労力を予測します. 複雑度メトリクスの中でも,ChidamberとKemererのメトリクスはオブジェクト指向ソフトウェア向けの代表的な複雑度メトリクスです.

C&Kメトリクス [1] C&Kメトリクスは以下の3つの観点からクラスの複雑さを評価する: 継承 [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) それでは,C&Kメトリクスについて説明いたします. ChidamberとKemererはオブジェクト指向設計を計測対象とする6つの複雑度メトリクスを提案しました. C&Kメトリクスは以下の3つの観点,継承,カップリング,内部的な複雑さ,から,クラスの複雑さを評価します. 最初の2つ,DITとNOCはクラスの継承に関する複雑さを計測します. DIT(Depth…)は計測対象のクラスが継承木の中の深さを数えます. NOC(Number…)は計測対象のクラスから直接導出されているクラスの数を数えます. 次の2つ,RFCとCBOはクラス間の結合に関する複雑さを計測します. RFC(Response…)はあるクラスが呼び出すメソッドの数を数えます. CBO(Coupling…)はクラスがメソッドまたは変数によって他のクラスを参照している数を数えます. 最後の2つ,WMCとLCOMはクラスの内部的な複雑度を計測します. WMC(Weighed…)はクラスのメソッドの複雑さを合計したものです. ですが,これまでに発表されている研究事例では,通常,「クラスに定義されているメソッドの数」を用いています. LCOM(Lack…)はクラスのメソッドについての凝集度の欠如を計測します.

C&Kメトリクスの有効性 C&Kメトリクスの有効性を評価した研究 Chidamberと KemererはC&Kメトリクスが Weyukerの性質を満たすことを確認した [1]. Basiliらは クラスのフォールトを予測する際は,C&Kメトリクスが従来のコードメトリクスより精度が高いことを実験的に確認した [2]. Briandらは C&Kメトリクスを含む多くの設計メトリクスを比較した [3]. C&Kメトリクスの有効性を評価した研究には以下のようなものがあります. まず,ChidamberとKemererがC&Kメトリクスを提案した論文の中で, C&KメトリクスがWeyukerの性質を満たすことを確認しました. 次に,Basiliらが行った研究です. オブジェクト指向で課初されたソフトウェアのクラスのフォールトの予測をするという実験を行いました. この実験では,従来のコードメトリクスを組み合わせたものとC&Kメトリクスの比較を行い, C&Kメトリクスのほうがよりよくフォールトを予測できるという結果が得られました. Briandらが行った研究では,C&Kメトリクスを含む多くのメトリクスを比較・分類しています. [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メトリクスを設計に適用する上での問題点 レビューやテスト労力の割り当てにメトリクスによる予測を用いる場合,クラス(部品)のフォールト予測は早期に行えることが望ましい. これまでの研究を振り返ってみると, ChidamberとKemererは,C&Kメトリクスを「設計に対する」メトリクスとして提案しているのですが, C&Kメトリクスはソースコードに対して適用されています. その理由としては, 「C&Kメトリクスの中には,メソッドのアルゴリズムや呼び出し関係といった, 設計フェーズの後期になって初めて入手可能な情報から計算されるものがある」 といったことがあげられます. しかしながら,設計自体の複雑さを計測すれば, レビューやテスト労力の割り当てを行う際にフォールト予測を用いることができます.

提案する手法 設計の初期段階からメトリクスを計測する手法 設計・実装フェーズに4つのチェックポイントを導入する. 各チェックポイントで計測可能なメトリクスの集合を決定する. 各チェックポイントで,計測されたメトリクスによる多変量ロジスティック回帰分析を行い,それぞれのクラス(部品)にフォールトが発生するかしないかを予測する. 実験によって,各チェックポイントにおけるメトリクス集合のフォールト予測精度を確認する. そこで,次のような手法を考えました. まず,オブジェクト指向の設計・実装フェーズに4つのチェックポイントを導入します. 次に,それぞれのチェックポイントで計測可能なメトリクスのサブセットを決定します. 最後に,それぞれのチェックポイントで,計測されたメトリクス値によって,多変量ロジスティック回帰分析という手法を用いて,それぞれのクラスにフォールトが発生するかしないかを予測します. 発表の後半で,この手法の適用実験を行って,それぞれのチェックポイントにおけるメトリクス集合のフォールト予測精度を確認します.

チェックポイントと開発プロセス 分析 実装 t CP1: クラス間の関係と属性が決定される システム 設計 オブジェクト 設計 CP3: メソッドのアルゴリズムが開発される このスライドは開発プロセスと,導入されたチェックポイントを示します. この図では,ランバーらの研究に基づいて,設計プロセスを4つのフェーズ,分析,システム設計,オブジェクト設計,実装,に分けました. 実装 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)

チェックポイントとメトリクス 分析 実装 t 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: 係数 ロジスティック回帰分析は,連続した値をとる独立変数から,2値の値をとる従属変数を予測する式を作成するのに用いられます.この研究においては,ロジスティック回帰分析を用いて,メトリクスの計測値から,フォールとの発生を予測する式を作ります.

実験の概要 1997年8月にある企業の新人研修で行われた5日間に渡るC++プログラム開発演習. 複数の開発チームが同一の要求仕様書に基づいてメール配送システムを作成する.

収集データ フォールトに関するデータ メトリクスデータ 17人の開発者の,141のクラスから,80個のフォールトに関するデータが収集された. (エラー追跡ツールを用いて収集) コードレビューとテストで発見されたフォールト フォールト修正に要した時間 メトリクスデータ (メトリクス抽出ツールを用いて,ソースコードから抽出) 新規開発されたクラスのメトリクス値 17人の開発者の,141のクラスから,80個のフォールトに関するデータが収集された.

実験データの統計量 This table shows the summary of metric values and faults observed in the experiment. Faults is amount of faults found in the class. For example, as for metric DIT, the minimum value is zero, the maximum value is 6, the average is 3.44, and the standard deviation is 1.41.

括弧内の数字はそれらのクラスのフォールト数 メトリクスによる予測(1/2) 収集されたメトリクスデータに多変量ロジスティック回帰分析を行って予測式を作成した. CP1における予測 括弧内の数字はそれらのクラスのフォールト数

メトリクスによる予測 (2/2)

予測精度評価のための指標 予測精度を評価するための2つの指標 [2]. 完全性: 実際にフォールトがあったクラスのうち,フォールトありと予測されていたクラスの割合 正確性: フォールトありと予測されたクラスのうち,実際にフォールトがあったクラスの割合 … これらの2つの指標はトレードオフの関係にありますので,予測の正確さを評価するためには,2つの指標を同時に用います. 完全性 正確性

予測精度 全体としては,プロセスが進むにつれて予測の精度は改善する. 正確性はすべてのCPで概して高めである.

考察(1/2) CP1では少数のクラスがフォールト有と予測され,その82%にフォールトが発見される. ↓ シードされたクラスは重点的にレビュー・テストされるクラスの候補になる. シードされたクラスの分布が設計レビューの判断基準になる.

考察(2/2) CP3での予測精度の向上のために 結合の種類を区別する,「細粒度」C++設計メトリクスを援用する. サイクロマチック数などを用いて,メソッドの複雑さを適正に重み付けするWMCを用いる.

まとめと展望 オブジェクト指向開発において,クラスにフォールトが作りこまれるかどうかを早期に予測する手法を提案した. 今後の研究課題: 他のメトリクスを利用する 設計書に直接適用する 支援ツールを開発する まとめと展望です. この研究では,実験を行い,オブジェクト指向開発の設計フェーズで,クラスにフォールトが作りこまれるかを予測する手法を提案しました. 今後の研究課題として, ChidamberとKemerer以外のメトリクスを用いる. 設計から直接メトリクス値を計測する.