スライド 1

メトリクス値の変化に基づく
コードクローンの編集傾向分析
井上研究室
東 誠
2008/2/22
特別研究発表会
1
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
コードクローン
• ソースコード中に存在する同一,もしくは類似
したコード片を同一システム中に持つコード
片
– 以降単にクローンと呼ぶ
• クローンの検出と除去が研究されてきた
ソースファイルF1
ソースファイルF2
クローンペア
コードクローン
コードクローン
クローンペア
クローンペア
特別研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
2
2008/2/22
クローンが保守性に与える影響
クローンはソフトウェア保守を困難にする場合がある
– バグ修正などコード変更をする際、全てのクローンに対し
て変更が必要
– 保守作業の手間が増大
クローンが保守性を悪化させるとは限らない[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.
特別研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
3
2008/2/22
クローン管理の必要性
全てのクローンを取り除くのではなく,必要なク
ローンだけ除去する
– 保守性を悪化させるクローンは除去する
– 開発者が意図的に作成したクローンは除去しな
い
特別研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
4
2008/2/22
本研究の着目点
クローンを編集した開発者
– 異なる役割や目的を持つ
– 経験に差がある
• 開発者によってクローンの編集内容に特徴が表れ
るのではないか
例 : 経験の浅い開発者によって編集されたクローンは保守
性を悪化させる
• 特徴によってクローンを区別し,管理することができ
るのではないか
特別研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
5
2008/2/22
本研究の目的
各開発者のクローンに対する編集傾向を調査
編集傾向 : クローンを編集する時に表れる特徴
例 : 開発者Aはクローンを長くすることが多い
編集傾向を知るためにメトリクス値の変化を調
べる
特別研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
6
2008/2/22
調査方法の概略
1 ソースコードの
版管理システム
(ソフトウェアの
編集履歴を
格納するシステム)
スナップショット
の取得
2 クローン検出
3 クローン対応関係
(同じ位置にあるクローンの関係)
の抽出
4 メトリクス値の
変化の取得
開
発
者
5 開発者間の差の検定
α
α
メトリクスα
メトリクスβ
A
{+2, 0, …}
{0, 0, …}
A +
B
{0, -3, …}
{+1, 0, …}
B
特別研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
-
7
2008/2/22
1 スナップショットの取得
• 版管理システムを用いる
– ソフトウェアの編集履歴を格納するシステム
– 本研究において用いる情報
• 編集されたファイルの変更差分
• 編集した開発者
• 編集した日時
• 各開発者がソースコードを編集した直後のスナップ
ショットを取得
特別研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
8
2008/2/22
2 クローンの検出
各スナップショット中のクローンを検出
特別研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
9
2008/2/22
3 クローン対応関係の抽出
メトリクス値の変化を取得するために,連続するスナッ
プショット間のクローン対応関係を抽出する
クローン対応関係 : 2つのスナップショット中の同じファイル
の同じ位置にあるクローン間の関係[2]
クローン対応関係
クローン対応関係
[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.
特別研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
10
2008/2/22
4 メトリクス値の変化の取得
• クローンの様々なメトリクス値を計算する
• クローン対応関係にある2つのクローン間のメトリク
ス値の差を計算する
• クローンが存在するスナップショットを編集した開発
者毎に,メトリクス値の変化を集める
開発者A
開発者B
メトリクスα
{+2, 0, +1, …}
{0, 0, +4…}
メトリクスβ
{0, -3, -5…}
{+1, 0, +2…}
特別研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
11
2008/2/22
5 開発者間の差の検定
メトリクス値の変化の分布と検定結果から,
各開発者によるメトリクス値の変化を以下の3
種類に分類する
– 他の開発者に比べてメトリクス値を大きくする傾
向がある
– 他の開発者に比べてメトリクス値を小さくする傾
向がある
– 他の開発者と差があるとはいえない
特別研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
12
2008/2/22
調査内容 1/2
実際のソフトウェア開発履歴に対して調査
• 調査対象
– PostgreSQLの編集履歴
– 1997/07/01~1998/12/31を半年間ずつの3つの
期間に分け,それぞれの期間に行われた各編集
直後のソースコードのスナップショットを取得
• 期間1 : 1997/07/01~1997/12/31
• 期間2 : 1998/01/01~1998/06/30
• 期間3 : 1998/07/01~1998/12/31
特別研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
13
2008/2/22
調査内容 2/2
• クローン検出:CCFinderX
• 使用したメトリクス
複雑度メトリクス : 値が大きいほど複雑なクローン
であることを表す
•
•
•
•
•
LEN : クローンの長さ(トークンの数)
TKS : クローン中のトークンの種類数
COND : クローン中の条件分岐の数
LOOP : クローン中のループ文の数
McCabe : LOOP+COND
特別研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
14
2008/2/22
検定結果
開発者
期間
LEN
TKS
LOOP
COND
McCabe
A
B
C
D
E F G H
1 2 3 1 2 3 1 2 3 1 2 3 2 2 3 3 3
+ - - - +
+
+
+
+ - -
+
+ + - - -
+
- -
-
-
-
+ +
+ +
• クローンを複雑にする開発者 : F
• クローンを簡単にする開発者 : B, C
• 期間によって傾向が異なる開発者 : A, D
特別研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
15
2008/2/22
開発者によるクローン管理方法
開発者は目的を達成するために,前に編集した箇所
やその付近を連続して編集する傾向がある
• 開発者Fが編集したクローンは,今後複雑になる可
能性が高い
→ 今の複雑度が低くても,除去した方が良い
• 開発者Bや開発者Cが編集したクローンは,今後簡
単になる可能性が高い
→ 今の複雑度が高くても,除去を急ぐ必要はない
特別研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
16
2008/2/22
まとめと今後の課題
• メトリクス値の変化を用いてクローンの編集
傾向を調査
– メトリクス値の変化は開発者ごとに差があった
– 各開発者に編集傾向があることが分かった
• 今後の課題
– 他のメトリクス値を用いた編集傾向の調査
– 開発者以外の要因(モジュール等)の影響の除外
特別研究発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
17
2008/2/22