スライド 1

コードクローンのメトリクス値と
開発者の相関の調査
東誠† 肥後芳樹‡ 早瀬康裕‡
松下誠‡ 井上克郎‡
† 大阪大学基礎工学部情報科学科
‡ 大阪大学大学院情報科学研究科
2008/3/13
情報処理学会 第70回 全国大会
1
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
コードクローン
• ソースコード中に存在する同一または類似し
たコード片
– 以降単にクローンと呼ぶ
• クローンの検出と除去が研究されてきた
ソースファイルF1
ソースファイルF2
コードクローン
コードクローン
情報処理学会 第70回 全国大会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
2
2008/3/13
クローンが保守性に与える影響
クローンはソフトウェア保守を困難にする場合があ
る
– バグ修正などコード変更をする際、全てのクローンに対し
て同じ変更を検討する必要がある
– 保守作業の手間が増大
クローンが保守性を悪化させるとは限らない[1]
– 例 : プラットフォーム変更の際に,仮想化層を書く代わり
に作成するクローン
[1]C. Kapser and M. W. Godfrey: ““Cloning Considered Harmful” Considered
Harmful”, Proceedings of the 13th Working Conference on Reverse Engineering
(WCRE 2006), pp.19-28, 2006.
情報処理学会 第70回 全国大会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
3
2008/3/13
クローン管理の必要性
全てのクローンを取り除くのではなく,必要な
クローンだけ除去する
– 保守性を悪化させるクローンは除去する
– 明確な理由があって作成したクローンは様子を
見る
情報処理学会 第70回 全国大会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
4
2008/3/13
着目点
クローンを編集した開発者
– 異なる役割や目的を持つ
– 経験に差がある
• 開発者によってクローンの編集内容に特徴が表れ
るのではないか
例 : 経験の浅い開発者によって編集されたクローンは保守
性を悪化させる
• 特徴によってクローンを区別し,管理することができ
るのではないか
情報処理学会 第70回 全国大会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
5
2008/3/13
本研究の目的
クローン管理に役立つ情報を提供する
メトリクス値の変化を用いて,各開発者のクロー
ンに対する編集傾向を調査する
編集傾向 : クローンを編集する時に現れる特徴
例 : 開発者Aはクローンを長くすることが多い
情報処理学会 第70回 全国大会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
6
2008/3/13
調査方法の概略
1 ソースコードの
版管理システム
(ソフトウェアの
編集履歴を
格納するシステム)
スナップショット
の取得
2 クローン
検出
3 クローン対応関係
の抽出
4 メトリクス値の
変化の取得
開
発
者
5 開発者間の差の検定
α
β
メトリクスα
メトリクスβ
A
{+2, 0, …}
{0, 0, …}
A +
B
{0, -3, …}
{+1, 0, …}
B
情報処理学会 第70回 全国大会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
-
7
2008/3/13
1 : スナップショットの取得
• 版管理システムを用いる
– ソフトウェアの編集履歴を格納するシステム
– 本研究において用いる情報
編集されたファイルの変更差分,編集した開発者,編集日時
• 各開発者がソースコードを編集した直後の時点のス
ナップショットを取得
開発者Aが編集
↓
開発者Bが編集
↓
開発者Cが編集
版管理システム
開発者Aが
編集
開発者Bが
編集
情報処理学会 第70回 全国大会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
開発者Cが
編集
8
2008/3/13
2 : クローンの検出
各スナップショットごとに,その中のクローンを
検出
開発者Aが
編集
開発者Bが
編集
開発者Cが
編集
情報処理学会 第70回 全国大会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
9
2008/3/13
3 : クローン対応関係の抽出
メトリクス値の変化を取得するために,連続するス
ナップショット間のクローン対応関係を抽出する
クローン対応関係 : 連続する2つのスナップショット中の
同じファイルの同じ位置にあるクローン間の関係[2]
→ 編集前のスナップショット中の各クローンが,編集後の
スナップショット中のどのクローンと対応しているかを特定
クローン
対応関係
クローン
対応関係
開発者Aが
開発者Bが
編集
編集
クローン
対応関係
クローン
対応関係
開発者Cが
編集
[2]M. Kim and D. Notkin : “Using a clone genealogy extractor for understanding and supporting evolution of code clones”, Proceedings of the
2nd International Workshop on Mining Software Repositories, pp.17-21, 2005.
情報処理学会 第70回 全国大会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
10
2008/3/13
4 : メトリクス値の変化の取得
1. クローンの様々なメトリクス値を計算する
2. クローン対応関係にある2つのクローン間のメトリ
クス値の差を計算する
3. クローンが存在するスナップショットを編集した開
発者毎に,メトリクス値の変化を集める
α : +2
β:0
α:0
β : +1
α:0
β : -3
開発者Aが
編集
α:0
β : -4
開発者Bが
編集
開発者B
開発者C
メトリクスα
{+2, 0}
{0, 0}
メトリクスβ
{0, -3}
{+1, -4}
開発者Cが
編集
情報処理学会 第70回 全国大会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
11
2008/3/13
5 : 開発者間の差の検定
• 各メトリクスに対し,各開発者が他の開発者
とメトリクス値の変化に差があるかを検定
• 差があるメトリクス及び開発者ごとに,値の変
化の分布を用いて,変化の傾向を分類
他の開発者が編集した時よりも
– 大きくなる傾向にある
– 小さくなる傾向にある
• 各メトリクス値の変化の傾向を用いて,各開
発者の編集傾向を判断
情報処理学会 第70回 全国大会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
12
2008/3/13
調査内容 1/2
実際のソフトウェア編集履歴に対して調査
– 調査対象
• PostgreSQLの編集履歴
• 1997/01/01~1999/06/30を半年間ずつに分け,各期
間中の編集履歴に対して調査
各期間は古い順に1から通し番号をつける
– クローン検出:CCFinderX
情報処理学会 第70回 全国大会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
13
2008/3/13
調査内容 2/2
– 使用したメトリクス
• 複雑度メトリクス : 値が大きいほど複雑なクローンであ
ることを表す
–
–
–
–
–
LEN : クローンの長さ(トークンの数)
TKS : クローン中のトークンの種類数
LOOP : クローン中のループ文の数
COND : クローン中の条件分岐の数
McCabe : LOOP+COND
• 開発者の編集傾向
– 大きくなるメトリクスの方が多い → クローンを複雑にする
– 小さくなるメトリクスの方が多い → クローンを簡単にする
– 両者の個数が等しい → どちらともいえない
情報処理学会 第70回 全国大会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
14
2008/3/13
開発に参加した開発者
1997/01/01~1999/06/30 に開発に参加
した開発者は13名
クローンを編集した開発者は12名
期間 開発に参加した クローンを編集した クローンを編集した開発者
開発者数
開発者数
1
6
5
D, G, I, J, K
2
5
4
D, G, I, J
3
7
6
D, G, H, I, J, L
4
8
7
A, D, E, G, H, I, J
5
10
10
A, B, C, D, E, F, G, H, I, J
情報処理学会 第70回 全国大会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
15
2008/3/13
検定結果 1/2
開発者
A
B
期間
4
LEN
+ -
5
5
C
1
2
- +
3
D
4
5
4
+
E
5
5
-
TKS
+ +
- -
LOOP
+
-
COND
+
McCabe
+
-
開発者の
+ + + -
編集傾向
- -
- -
- -
- -
- -
- -
• クローンを複雑にする開発者 : A, B
• クローンを簡単にする開発者 : C, D, E
情報処理学会 第70回 全国大会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
16
2008/3/13
検定結果 2/2
開発者
期間
F
G
H
I
1 2 3 4 5 3 4 5 1 2 3 4 5 1
+
LEN
- +
+
LOOP
COND
+
McCabe
+
開発者の
+
編集傾向
-
+ -
K L
2 3 4 5 1 3
- + - - - - -
+
TKS
J
+ -
+ - -
-
+ +
+ + -
+ - - + -
+
+ + -
- - + -
+
+ + -
- - + - + - + -
• 期間によって傾向が変化する開発者 : F, G, H, I
• 明確な傾向が見つからなかった開発者 : J, K, L
情報処理学会 第70回 全国大会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
17
2008/3/13
5
開発者によるクローン管理方法 1/2
開発者は目的を達成するために,前に編集した箇
所やその付近を連続して編集する傾向がある
• 開発者A, Bが編集したクローンは,その後複雑にな
る可能性が高い
→ 複雑度が低くても,除去した方が良い
• 開発者C, D, Eが編集したクローンは,その後簡単
になる可能性が高い
→ 複雑度が高くても,除去を急ぐ必要はない
情報処理学会 第70回 全国大会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
18
2008/3/13
開発者によるクローン管理方法 2/2
• 期間によって傾向が変化することもあるので,
調査を続けて傾向を確認する
• 明確な傾向が見つからなかった開発者は調
査を続ける
→ 傾向が見つかればクローン管理に利用
する
情報処理学会 第70回 全国大会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
19
2008/3/13
まとめと今後の課題
• クローンのメトリクス値と開発者の相関を調査
– メトリクス値の変化は開発者毎に差があった
– 一定の傾向でメトリクス値を変化させ続ける開発
者がいた
• 今後の課題
– 他のメトリクス値と開発者の相関の調査
– 開発者以外の要因(モジュール等)の影響の除外
– クローンのメトリクス値の変化予測
情報処理学会 第70回 全国大会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
20
2008/3/13