Presentation is loading. Please wait.

Presentation is loading. Please wait.

ソースコードの変更履歴における メトリクス値の変化を用いた ソフトウェアの特性分析

Similar presentations


Presentation on theme: "ソースコードの変更履歴における メトリクス値の変化を用いた ソフトウェアの特性分析"— Presentation transcript:

1 ソースコードの変更履歴における メトリクス値の変化を用いた ソフトウェアの特性分析
井上研究室 博士前期課程2年 村尾 憲治

2 概要 ソフトウェアに関する知識の獲得 ソースコードに対する ソフトウェアメトリクス値の変遷
→ 多大な労力が必要 ソースコードに対する       ソフトウェアメトリクス値の変遷 効率的なソフトウェアの開発や保守に 役立つ情報(ソフトウェアの特性)を提供

3 ソフトウェアに関する知識 ソフトウェアに関する深い知識は,その開発や保守を行うにあたり有益 開発者が知識を得るには 多大な労力が必要
問題を発生しやすいモジュール → 効率的な開発や保守 ソフトウェアの開発されてきた過程 → 今後の開発の見通し 開発者が知識を得るには     多大な労力が必要

4 ソフトウェアに関する知識の提供 ソフトウェアの開発履歴から知識を提供 ソフトウェアのソースコードから知識を提供 バージョン管理システム
ソフトウェアメトリクス

5 バージョン管理システム ソフトウェアの開発履歴を保存・提供するシステム ソースコードがどのように変更されてきたか分かる
開発者 開発者 ソフトウェアの開発履歴を保存・提供するシステム 全ての変更の内容が    システムに蓄積される バージョン 管理システム チェックアウト チェックイン ソースコードがどのように変更されてきたか分かる 変更 作業用コピー 開発者

6 ※値が大きいほどモジュール(クラス)が複雑であることを示す
ソフトウェアメトリクス ソフトウェアの複雑さや信頼性などの指標 CKメトリクス 継承 DIT (depth of inheritance tree)       NOC (number of children) 結合 RFC (response for a class)        CBO (coupling between object-class) クラスの   内部複雑度 WMC (weighted methods per class)  LCOM (lack of cohesion in method) ※値が大きいほどモジュール(クラス)が複雑であることを示す 問題の発生しやすいモジュールの特定[1] [1] V. R. Basili, et al. A Validation of Object-Oriented Design Metrics as Quality Indicators. TSE, Vol.22, No.10, pp , 1994

7 対象ソフトウェアにおける何らかの傾向や性質(ソフトウェアの特性)に関する情報を提供
目的 対象ソフトウェアにおける何らかの傾向や性質(ソフトウェアの特性)に関する情報を提供 メトリクス値の安定しないモジュール 対象ソフトウェアにおいて値の安定しないメトリクス 各変更がソフトウェアに与えた影響の程度 各開発者がソフトウェアに与えた影響の程度

8 ソフトウェアの特性 メトリクス値の安定しないモジュール 対象ソフトウェアにおいて値の安定しないメトリクス
利用例) 将来バグが頻繁に発生するモジュールの特定 対象ソフトウェアにおいて値の安定しないメトリクス 利用例) 設計上の欠陥の把握 各変更がソフトウェアに与えた影響の程度 利用例) 開発過程の理解 各開発者がソフトウェアに与えた影響の程度 利用例) 開発者の評価

9 提案手法:概要 バージョン管理システムとソフトウェアメトリクスを利用 メトリクス値の変動の激しさを表す指標(変動度)をユーザに提示
→ 変更毎のメトリクス値を取得 メトリクス値の変動の激しさを表す指標(変動度)をユーザに提示 → 変動度からソフトウェアの特性を把握

10 開発過程を通じたメトリクス値の変動の激しさを表す指標
変動度 開発過程を通じたメトリクス値の変動の激しさを表す指標 エントロピー 正規化エントロピー 四分位偏差 四分位分散係数 ハミング距離 ユークリッド距離 マハラノビス距離 メトリクス値の変化量 モジュールの変動度 メトリクスの変動度 変更の変動度 (モジュール,メトリクス)の変動度 (モジュール,変更)の変動度 (モジュール,メトリクス,変更)の変動度

11 エントロピー メトリクス値が同じ回数と変更回数から導出 エントロピーが大きいほど変動が激しい
計測対象の粒度(次元): (モジュール,メトリクス) メトリクス値 4 m3 m1 変更回数:5,値2:4回,値3:1回 3 m2 ≒0.72 2 m1 m2 変更回数:5,値1,2,3:1回,値4:2回 1 ≒1.9 m3 変更回数:3,値1,3,4:1回 c1 c2 c3 c4 c5 変更 ≒1.6 エントロピーが大きいほど変動が激しい

12 モジュールの変動度が大きいほど, 全体的にメトリクス値の変動が激しい
モジュールの変動度    (fluctuation of module) 例)エントロピーによるモジュールの変動度 対象のモジュールおけるエントロピーの総和 メトリクス モジュールの変動度が大きいほど,  全体的にメトリクス値の変動が激しい

13 提案手法:手順 モジュールの変動度 手順1:メトリクス値の変遷を取得 1 2 3 c1 c2 c3 c4 4 c5 m1 m2 m3 変更
バージョン 管理システム モジュールの変動度 メトリクスの変動度 変更の変動度 (モジュール,メトリクス)の変動度 (モジュール,変更)の変動度 (モジュール,メトリクス,変更)の変動度 手順2:変動度の計測 ユーザ グラフによる変動度の可視化など 手順3:ソフトウェアの特性分析

14 提案手法の実装 手法の手順1~2を自動で行うツールを作成 ツールの対象 プログラミング言語 Java バージョン管理システム CVS
モジュールの粒度 クラス 使用可能なメトリクス CKメトリクス,     対象クラスの行数など

15 適用事例:概要(1/2) 複数のオープンソースソフトウェアに対し,手法を実装したツールを適用 対象ソフトウェア 利用したメトリクス
ソフトウェア名 FreeMind 対象開発期間 2000/08~2008/01 開発者数 12 総変更回数 225 最初の変更時の ソースコードの総行数 3,882 最後の変更時の  ソースコードの総行数 39,350 FreeMind JHotDraw HelpSetMaker 利用したメトリクス CKメトリクス      (RFC, CBO, LCOM, NOC, DIT) 対象クラスの行数(LOC)

16 適用事例:概要(2/2) 各種変動度からソフトウェアの特性を導出 モジュールの変動度 メトリクスの変動度 変更の変動度
(モジュール,メトリクス)の変動度 (モジュール,変更)の変動度 (モジュール,メトリクス,変更)の変動度

17 モジュールの変動度が大きいクラスに注意すれば, 効率的な開発や保守が望める
適用事例:モジュールの変動度(1/3) モジュールの変動度が大 他のモジュールに影響 他のモジュールから影響 頻繁に変更されている    問題の発生しやすい状態 モジュール モジュールの変動度が大きいクラスに注意すれば,     効率的な開発や保守が望める

18 適用事例:モジュールの変動度 (2/3) 将来のバグ修正の予測効果に関する実験 開発履歴を前半と後半に分割 前半の開発履歴から変動度を計測
前半の開発履歴における最後の変更時での  メトリクス値を計測 後半の開発履歴におけるバグ修正変更を調査 それぞれの上位何%が後半のバグ修正の何%を含んでいるか,その関係を調査

19 適用事例:モジュールの変動度 (3/3) ランキングの上位20% モジュールの変動度 メトリクス値
バグ修正被覆率(%) ランキングの上位20% モジュールの変動度 97~100%の予測 メトリクス値 22~89%の予測 モジュールの変動度は 将来のバグ修正の予測に有効 モジュールの変動度/メトリクス値ランキング被覆率(%)

20 まとめ メトリクス値の変遷から変動度を導出し,ソフトウェアの特性を分析する手法を提案
手法を実装したツールを作成し,複数のオープンソースソフトウェアに適用 今後の課題 ツールの拡張 C++やC#など,他のプログラミング言語への対応 Subversionなど,他のバージョン管理システムへの対応 様々な変動度からそれぞれ有益なソフトウェアの特性を取得


Download ppt "ソースコードの変更履歴における メトリクス値の変化を用いた ソフトウェアの特性分析"

Similar presentations


Ads by Google