200 likes | 270 Vues
ソースコードの変更履歴における メトリクス値の変化を用いた ソフトウェアの特性分析. 井上研究室 博士前期課程 2 年 村尾 憲治. 概要. ソフトウェアに関する知識の獲得 → 多大な労力が必要. ソースコードに対する ソフトウェアメトリクス値の変遷. 効率的なソフトウェアの開発や保守に 役立つ情報(ソフトウェアの特性)を提供. ソフトウェアに関する知識. 問題を発生しやすいモジュール → 効率的な開発や保守 ソフトウェアの開発されてきた過程 → 今後の開発の見通し. ソフトウェアに関する深い知識は,その開発や保守を行うにあたり有益.
E N D
ソースコードの変更履歴におけるメトリクス値の変化を用いたソフトウェアの特性分析ソースコードの変更履歴におけるメトリクス値の変化を用いたソフトウェアの特性分析 井上研究室 博士前期課程2年 村尾 憲治
概要 ソフトウェアに関する知識の獲得 → 多大な労力が必要 ソースコードに対する ソフトウェアメトリクス値の変遷 効率的なソフトウェアの開発や保守に 役立つ情報(ソフトウェアの特性)を提供
ソフトウェアに関する知識 • 問題を発生しやすいモジュール → 効率的な開発や保守 • ソフトウェアの開発されてきた過程 → 今後の開発の見通し ソフトウェアに関する深い知識は,その開発や保守を行うにあたり有益 開発者が知識を得るには 多大な労力が必要
ソフトウェアに関する知識の提供 • ソフトウェアの開発履歴から知識を提供 • ソフトウェアのソースコードから知識を提供 バージョン管理システム ソフトウェアメトリクス
バージョン管理システム 開発者 開発者 ソフトウェアの開発履歴を保存・提供するシステム 全ての変更の内容が システムに蓄積される バージョン 管理システム チェックアウト チェックイン ソースコードがどのように変更されてきたか分かる 変更 作業用コピー 開発者
ソフトウェアメトリクス ソフトウェアの複雑さや信頼性などの指標 CKメトリクス ※値が大きいほどモジュール(クラス)が複雑であることを示す 問題の発生しやすいモジュールの特定[1] [1] V. R. Basili, et al. A Validation of Object-Oriented Design Metrics as Quality Indicators. TSE, Vol.22, No.10, pp.751-761, 1994
目的 • メトリクス値の安定しないモジュール • 対象ソフトウェアにおいて値の安定しないメトリクス • 各変更がソフトウェアに与えた影響の程度 • 各開発者がソフトウェアに与えた影響の程度 対象ソフトウェアにおける何らかの傾向や性質(ソフトウェアの特性)に関する情報を提供
ソフトウェアの特性 • メトリクス値の安定しないモジュール 利用例) 将来バグが頻繁に発生するモジュールの特定 • 対象ソフトウェアにおいて値の安定しないメトリクス 利用例) 設計上の欠陥の把握 • 各変更がソフトウェアに与えた影響の程度 利用例) 開発過程の理解 • 各開発者がソフトウェアに与えた影響の程度 利用例) 開発者の評価
提案手法:概要 バージョン管理システムとソフトウェアメトリクスを利用 → 変更毎のメトリクス値を取得 メトリクス値の変動の激しさを表す指標(変動度)をユーザに提示 → 変動度からソフトウェアの特性を把握
エントロピー • 正規化エントロピー • 四分位偏差 • 四分位分散係数 • ハミング距離 • ユークリッド距離 • マハラノビス距離 • メトリクス値の変化量 変動度 • モジュールの変動度 • メトリクスの変動度 • 変更の変動度 • (モジュール,メトリクス)の変動度 • (モジュール,変更)の変動度 • (モジュール,メトリクス,変更)の変動度 開発過程を通じたメトリクス値の変動の激しさを表す指標
エントロピー メトリクス値が同じ回数と変更回数から導出 計測対象の粒度(次元): (モジュール,メトリクス) メトリクス値 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 エントロピーが大きいほど変動が激しい
モジュールの変動度 モジュールの変動度 (fluctuation of module) 例)エントロピーによるモジュールの変動度 対象のモジュールおけるエントロピーの総和 メトリクス モジュールの変動度が大きいほど, 全体的にメトリクス値の変動が激しい
メトリクス値 バージョン 管理システム 手順1:メトリクス値の変遷を取得 4 m3 3 m2 2 m1 1 • モジュールの変動度 • メトリクスの変動度 • 変更の変動度 • (モジュール,メトリクス)の変動度 • (モジュール,変更)の変動度 • (モジュール,メトリクス,変更)の変動度 手順2:変動度の計測 c1 c2 c3 c4 c5 変更 手順3:ソフトウェアの特性分析 ユーザ グラフによる変動度の可視化など 提案手法:手順
提案手法の実装 手法の手順1~2を自動で行うツールを作成 ツールの対象
適用事例:概要(1/2) 複数のオープンソースソフトウェアに対し,手法を実装したツールを適用 対象ソフトウェア • FreeMind • JHotDraw • HelpSetMaker 利用したメトリクス • CKメトリクス (RFC, CBO, LCOM, NOC, DIT) • 対象クラスの行数(LOC)
適用事例:概要(2/2) 各種変動度からソフトウェアの特性を導出 • モジュールの変動度 • メトリクスの変動度 • 変更の変動度 • (モジュール,メトリクス)の変動度 • (モジュール,変更)の変動度 • (モジュール,メトリクス,変更)の変動度
適用事例:モジュールの変動度(1/3) モジュールの変動度が大 • 他のモジュールに影響 • 他のモジュールから影響 • 頻繁に変更されている 問題の発生しやすい状態 モジュール モジュールの変動度が大きいクラスに注意すれば, 効率的な開発や保守が望める
適用事例:モジュールの変動度(2/3) • 開発履歴を前半と後半に分割 • 前半の開発履歴から変動度を計測 • 前半の開発履歴における最後の変更時での メトリクス値を計測 • 後半の開発履歴におけるバグ修正変更を調査 • それぞれの上位何%が後半のバグ修正の何%を含んでいるか,その関係を調査 将来のバグ修正の予測効果に関する実験
ランキングの上位20% • モジュールの変動度 97~100%の予測 • メトリクス値 22~89%の予測 適用事例:モジュールの変動度(3/3) バグ修正被覆率(%) モジュールの変動度は 将来のバグ修正の予測に有効 モジュールの変動度/メトリクス値ランキング被覆率(%)
まとめ • メトリクス値の変遷から変動度を導出し,ソフトウェアの特性を分析する手法を提案 • 手法を実装したツールを作成し,複数のオープンソースソフトウェアに適用 今後の課題 ツールの拡張 • C++やC#など,他のプログラミング言語への対応 • Subversionなど,他のバージョン管理システムへの対応 様々な変動度からそれぞれ有益なソフトウェアの特性を取得