20
e Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka Uni ソソソソソソソソソソソソソソソ ソソソソソソソソソソソソソ ソソソソソソソソソソソ ソソソソソ ソソソソソソ 2 ソ ソソ ソソ

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

Embed Size (px)

DESCRIPTION

ソースコードの変更履歴における メトリクス値の変化を用いた ソフトウェアの特性分析. 井上研究室 博士前期課程 2 年 村尾 憲治. 概要. ソフトウェアに関する知識の獲得 → 多大な労力が必要. ソースコードに対する       ソフトウェアメトリクス値の変遷. 効率的なソフトウェアの開発や保守に 役立つ情報(ソフトウェアの特性)を提供. ソフトウェアに関する知識. 問題を発生しやすいモジュール → 効率的な開発や保守 ソフトウェアの開発されてきた過程 → 今後の開発の見通し. ソフトウェアに関する深い知識は,その開発や保守を行うにあたり有益. - PowerPoint PPT Presentation

Citation preview

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

Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

ソースコードの変更履歴におけるメトリクス値の変化を用いた

ソフトウェアの特性分析

井上研究室博士前期課程 2 年

村尾 憲治

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

2

概要

効率的なソフトウェアの開発や保守に 役立つ情報(ソフトウェアの特

性)を提供

ソースコードに対する       ソフトウェアメトリ

クス値の変遷

ソフトウェアに関する知識の獲得→ 多大な労力が必要

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

3

ソフトウェアに関する知識

• 問題を発生しやすいモジュール→ 効率的な開発や保守

• ソフトウェアの開発されてきた過程→ 今後の開発の見通し

ソフトウェアに関する深い知識は,その開発や保守を行うにあたり有益

開発者が知識を得るには     多大な労力が必要

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

4

ソフトウェアに関する知識の提供

• ソフトウェアの開発履歴から知識を提供

• ソフトウェアのソースコードから知識を提供

バージョン管理システム

ソフトウェアメトリクス

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

5

バージョン管理システム

開発者

変更

作業用コピー

チェックアウ

バージョン 管理シス

テム チェックイン

開発者 開発者ソフトウェアの開発履歴を保存・提供するシステ

ム全ての変更の内容が    システムに蓄積され

ソースコードがどのように変更されてきたか

分かる

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

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

ソフトウェアの複雑さや信頼性などの指標

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

7

目的

• メトリクス値の安定しないモジュール• 対象ソフトウェアにおいて値の安定しないメトリクス• 各変更がソフトウェアに与えた影響の程度• 各開発者がソフトウェアに与えた影響の程度

対象ソフトウェアにおける何らかの傾向や性質(ソフトウェア

の特性)に関する情報を提供

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

8

ソフトウェアの特性

• メトリクス値の安定しないモジュール利用例) 将来バグが頻繁に発生するモジュールの特定

• 対象ソフトウェアにおいて値の安定しないメトリクス利用例) 設計上の欠陥の把握

• 各変更がソフトウェアに与えた影響の程度利用例) 開発過程の理解

• 各開発者がソフトウェアに与えた影響の程度利用例) 開発者の評価

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

9

提案手法:概要

バージョン管理システムとソフトウェアメトリクスを利用→ 変更毎のメトリクス値を

取得

メトリクス値の変動の激しさを表す指標(変動度)をユーザに提示→ 変動度からソフトウェアの特性を

把握

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

10

変動度

• モジュールの変動度• メトリクスの変動度• 変更の変動度• (モジュール,メトリクス)の変

動度• (モジュール,変更)の変動度• (モジュール,メトリクス,変

更)の変動度

開発過程を通じたメトリクス値の変動の激しさを表す指標

• エントロピー• 正規化エントロピー• 四分位偏差• 四分位分散係数• ハミング距離• ユークリッド距離• マハラノビス距離• メトリクス値の変化

H

Q

QDH

DE

DM

CV

H

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

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

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

12

モジュールの変動度

モジュールの変動度    (fluctuation of module)

例)エントロピーによるモジュールの変動度対象のモジュールおけるエントロピーの総和

FMD

MT

HHFMD )(メトリク

モジュールの変動度が大きいほど,  全体的にメトリクス値の変動が

激しい

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

13

提案手法:手順

• モジュールの変動度• メトリクスの変動度• 変更の変動度• (モジュール,メトリクス)の変動度• (モジュール,変更)の変動度• (モジュール,メトリクス,変更)の変動度

手順 2 :変動度の計測

バージョン 管理シス

テム

ユーザ

グラフによる変動度の可視化など

手順 3 :ソフトウェアの特性分析

手順 1 :メトリクス値の変遷を取得

1

2

3

c1 c2 c3 c4

4

c5

m1

m2

m3

変更

メトリクス値

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

14

提案手法の実装

手法の手順 1 ~ 2 を自動で行うツールを作成ツールの対象プログラミング言語 Java

バージョン管理システム CVS

モジュールの粒度 クラス

使用可能なメトリクスCK メトリクス,     対象クラスの

行数など

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

15

適用事例:概要( 1/2 )

複数のオープンソースソフトウェアに対し,手法を実装したツールを適用対象ソフトウェア

• FreeMind• JHotDraw• HelpSetMaker

ソフトウェア名 FreeMind

対象開発期間 2000/08 ~2008/01

開発者数 12

総変更回数 225

最初の変更時の ソースコードの総行数 3,882

最後の変更時の  ソースコードの総行

数39,350

利用したメトリクス• CK メトリクス      

( RFC, CBO, LCOM, NOC, DIT )• 対象クラスの行数( LOC )

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

16

適用事例:概要( 2/2 )

各種変動度からソフトウェアの特性を導出 • モジュールの変動度

• メトリクスの変動度• 変更の変動度• (モジュール,メトリクス)の変動度• (モジュール,変更)の変動度• (モジュール,メトリクス,変更)の変

動度

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

17

0

2

4

6

8

10

12

14

適用事例:モジュールの変動度( 1/3 )

モジュールの変動度が大– 他のモジュールに影響– 他のモジュールから影響– 頻繁に変更されている

   問題の発生しやすい状態

)(HFMD

モジュールの変動度が大きいクラスに注意すれば,     効率的な開発や保

守が望める

モジュール

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

18

適用事例:モジュールの変動度( 2/3 )

1. 開発履歴を前半と後半に分割2. 前半の開発履歴から変動度を計測3. 前半の開発履歴における最後の変更時での 

 メトリクス値を計測4. 後半の開発履歴におけるバグ修正変更を調査5. それぞれの上位何 % が後半のバグ修正の何

% を含んでいるか,その関係を調査

将来のバグ修正の予測効果に関する実験

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

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%の予測

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

20

まとめ

• メトリクス値の変遷から変動度を導出し,ソフトウェアの特性を分析する手法を提案

• 手法を実装したツールを作成し,複数のオープンソースソフトウェアに適用

今後の課題ツールの拡張

• C++ や C# など,他のプログラミング言語への対応• Subversion など,他のバージョン管理システムへの対応

様々な変動度からそれぞれ有益なソフトウェアの特性を取得