Upload
neil-richardson
View
34
Download
4
Embed Size (px)
DESCRIPTION
ソースコードの変更履歴における メトリクス値の変化を用いた ソフトウェアの特性分析. 井上研究室 博士前期課程 2 年 村尾 憲治. 概要. ソフトウェアに関する知識の獲得 → 多大な労力が必要. ソースコードに対する ソフトウェアメトリクス値の変遷. 効率的なソフトウェアの開発や保守に 役立つ情報(ソフトウェアの特性)を提供. ソフトウェアに関する知識. 問題を発生しやすいモジュール → 効率的な開発や保守 ソフトウェアの開発されてきた過程 → 今後の開発の見通し. ソフトウェアに関する深い知識は,その開発や保守を行うにあたり有益. - PowerPoint PPT Presentation
Citation preview
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
ソースコードの変更履歴におけるメトリクス値の変化を用いた
ソフトウェアの特性分析
井上研究室博士前期課程 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.751-761, 1994
ソフトウェアの複雑さや信頼性などの指標
7
目的
• メトリクス値の安定しないモジュール• 対象ソフトウェアにおいて値の安定しないメトリクス• 各変更がソフトウェアに与えた影響の程度• 各開発者がソフトウェアに与えた影響の程度
対象ソフトウェアにおける何らかの傾向や性質(ソフトウェア
の特性)に関する情報を提供
8
ソフトウェアの特性
• メトリクス値の安定しないモジュール利用例) 将来バグが頻繁に発生するモジュールの特定
• 対象ソフトウェアにおいて値の安定しないメトリクス利用例) 設計上の欠陥の把握
• 各変更がソフトウェアに与えた影響の程度利用例) 開発過程の理解
• 各開発者がソフトウェアに与えた影響の程度利用例) 開発者の評価
9
提案手法:概要
バージョン管理システムとソフトウェアメトリクスを利用→ 変更毎のメトリクス値を
取得
メトリクス値の変動の激しさを表す指標(変動度)をユーザに提示→ 変動度からソフトウェアの特性を
把握
10
変動度
• モジュールの変動度• メトリクスの変動度• 変更の変動度• (モジュール,メトリクス)の変
動度• (モジュール,変更)の変動度• (モジュール,メトリクス,変
更)の変動度
開発過程を通じたメトリクス値の変動の激しさを表す指標
• エントロピー• 正規化エントロピー• 四分位偏差• 四分位分散係数• ハミング距離• ユークリッド距離• マハラノビス距離• メトリクス値の変化
量
H
Q
QDH
DE
DM
CV
H
11
エントロピー
メトリクス値が同じ回数と変更回数から導出
1
2
3
c1 c2 c3 c4
計測対象の粒度(次元): (モジュール,メトリクス)
4
c5
m1
m2
m3
変更
メトリクス値
エントロピーが大きいほど変動が激しい
ii ppH log
m1
m2
m3
変更回数: 5 ,値 2 : 4 回,値3 : 1 回変更回数: 5 ,値 1,2,3 : 1 回,値 4 : 2 回変更回数: 3 ,値 1,3,4 : 1 回
)loglog( 51
51
54
54 H
)loglog3( 52
52
51
51 H
)log3( 31
31H ≒1.6
≒0.72
≒1.9
12
モジュールの変動度
モジュールの変動度 (fluctuation of module)
例)エントロピーによるモジュールの変動度対象のモジュールおけるエントロピーの総和
FMD
MT
HHFMD )(メトリク
ス
モジュールの変動度が大きいほど, 全体的にメトリクス値の変動が
激しい
13
提案手法:手順
• モジュールの変動度• メトリクスの変動度• 変更の変動度• (モジュール,メトリクス)の変動度• (モジュール,変更)の変動度• (モジュール,メトリクス,変更)の変動度
手順 2 :変動度の計測
バージョン 管理シス
テム
ユーザ
グラフによる変動度の可視化など
手順 3 :ソフトウェアの特性分析
手順 1 :メトリクス値の変遷を取得
1
2
3
c1 c2 c3 c4
4
c5
m1
m2
m3
変更
メトリクス値
14
提案手法の実装
手法の手順 1 ~ 2 を自動で行うツールを作成ツールの対象プログラミング言語 Java
バージョン管理システム CVS
モジュールの粒度 クラス
使用可能なメトリクスCK メトリクス, 対象クラスの
行数など
15
適用事例:概要( 1/2 )
複数のオープンソースソフトウェアに対し,手法を実装したツールを適用対象ソフトウェア
• FreeMind• JHotDraw• HelpSetMaker
ソフトウェア名 FreeMind
対象開発期間 2000/08 ~2008/01
開発者数 12
総変更回数 225
最初の変更時の ソースコードの総行数 3,882
最後の変更時の ソースコードの総行
数39,350
利用したメトリクス• CK メトリクス
( RFC, CBO, LCOM, NOC, DIT )• 対象クラスの行数( LOC )
16
適用事例:概要( 2/2 )
各種変動度からソフトウェアの特性を導出 • モジュールの変動度
• メトリクスの変動度• 変更の変動度• (モジュール,メトリクス)の変動度• (モジュール,変更)の変動度• (モジュール,メトリクス,変更)の変
動度
17
0
2
4
6
8
10
12
14
適用事例:モジュールの変動度( 1/3 )
モジュールの変動度が大– 他のモジュールに影響– 他のモジュールから影響– 頻繁に変更されている
問題の発生しやすい状態
)(HFMD
モジュールの変動度が大きいクラスに注意すれば, 効率的な開発や保
守が望める
モジュール
18
適用事例:モジュールの変動度( 2/3 )
1. 開発履歴を前半と後半に分割2. 前半の開発履歴から変動度を計測3. 前半の開発履歴における最後の変更時での
メトリクス値を計測4. 後半の開発履歴におけるバグ修正変更を調査5. それぞれの上位何 % が後半のバグ修正の何
% を含んでいるか,その関係を調査
将来のバグ修正の予測効果に関する実験
19
0
10
20
30
40
50
60
70
80
90
100
0 10 20 30 40 50 60 70 80 90 100
5モジュールの変動度(全 種)
6メトリクス(全 種)
適用事例:モジュールの変動度( 3/3 )
バグ修正被覆率(%)
モジュールの変動度は 将来のバグ修正の予測に
有効 モジュールの変動度/メトリクス値ランキング被覆率(%)
ランキングの上位20%• モジュールの変動度
97 ~ 100% の予測• メトリクス値
22 ~ 89%の予測
20
まとめ
• メトリクス値の変遷から変動度を導出し,ソフトウェアの特性を分析する手法を提案
• 手法を実装したツールを作成し,複数のオープンソースソフトウェアに適用
今後の課題ツールの拡張
• C++ や C# など,他のプログラミング言語への対応• Subversion など,他のバージョン管理システムへの対応
様々な変動度からそれぞれ有益なソフトウェアの特性を取得