開発履歴を用いたコードクローン作成者と利用者の 分

開発履歴を用いたコードクローン作成者と利用者の
分析手法とその適用
井上研究室
森脇匠哉
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
ソースコードの再利用[1]
既存のソースコードのコピーアンドペーストにより行われる
コードクローン技術によって検出可能[2]
様々なコードクローン検出ツールが提案されている
コピー
クローンセット
コピー
メリット
コードクローン
テスト済みのソースコードの再利用 ⇒ 信頼性の向上
同じソースコードを二度書かなくて済む ⇒ 生産性の向上
ソースコードの再利用は難しい[3]
ソースコードの内容を理解していなければならない
コピーアンドペースト後にコード修正が必要な場合もある
[1] Trivedi Prakriti and Kumar Rajeev. Software metrics to estimate software quality using software component reusability. IJCSI International Journal of
Computer Science Issues, Vol. 9, pp. 144–149, 2012.
[2] 肥後 芳樹, 楠本 真二, 井上 克郎, “コードクローン検出とその関連技術”, 電子情報通信学会論文誌, Vol. J91-D, pp.1465-1481, 2008.
2
[3] Will Tracz. Confessions of a used-program salesman: Lessons learned. In Proceedings of the 1995 Symposium on Software Reusability, SSR ’95, pp.
11–13, New York, NY, USA, 1995.
ACM.Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
Software
再利用分析における課題(1/2)
既存の研究では単一プロジェクトを対象とする場合が多い[4]
組織は複数のプロジェクトを持ち,プロジェクト間再利用が行われる
可能性がある
プロジェクトA
コピー
コピー
プロジェクトB
コピー
[4] Mihai Balint, Tudor Girba, and Radu Marinescu. How developers copy. ICPC, pp.56–65, 2006.
3
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
再利用分析における課題(2/2)
開発者の再利用傾向は,開発者のモチベーションによって異なる[5]
開発者の再利用傾向を定量的に分析した既存研究はほとんど存在しない
コードクローン
作成者
A
作成者の定義
クローンセット中のコード
クローンの内,実装日
時が最も古いコード片
を実装した開発者
コピー
コードクローン
利用者
コードクローン
B
利用者の定義
コピー 既存のコード片を再利
用した開発者
C
コードクローン
利用者
[5] Manuel Sojer and Joachim Henkel. Code Reuse in Open Source Software Development Quantitative Evidence, Drivers, and Impediments. Journal of the
Association for Information Systems, Vol. 11, No. 12, 2010.
4
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
目的
複数プロジェクトを対象としてコードクローン作成者と利用者の分析を行
うことで,どの程度開発者ごとに再利用傾向が異なるのかを明らかにする
RQ1:再利用回数の多いクローンセットとコードクローン利用者数が多いク
ローンセットが一致するか
RQ2:プロジェクト間コードクローンの作成者と利用者について,両プロジェク
トで開発をしている開発者とそうでない開発者で違いがあるか
RQ3:コードクローン利用者数の多いコードクローンと,再利用回数は多いが
コードクローン利用者数の少ないコードクローンに違いがあるか
RQ4:コードクローンの作成数と利用数の多い開発者にどのような特徴があ
るか
RQ5:コミット数の多い開発者はコードクローンの作成数と利用数が多いか
5
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
再利用分析の概要
入力:複数のリポジトリ
rev1
rev2
クローンセット
遷移情報(N-1,N)
revN
STEP4:
コードクローン作成者
と利用者の特定
…
…
・
・
・
revN-1
…
STEP1:
リポジトリのマージ
STEP2:クローン遷移情報の検出
クローンセット
遷移情報(1,2)
STEP3:
クローンセット
遷移情報のマージ
クローンセット履歴
出力:クローンセット毎の
コードクローン作成者と利用者
…
6
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
STEP1:リポジトリのマージ
複数プロジェクトのリポジトリをマージする
リポジトリA
rev1
2012/1/2
rev2
2012/2/2
rev3
2012/3/2
リポジトリX
a1.java
a1.java
a1’.java
a2.java
a2.java
リポジトリB
rev1
2012/2/4
rev2
2012/4/4
b1.java
b1’.java
rev1
2012/1/2
rev2
2012/2/2
rev3
2012/2/4
rev4
2012/3/2
rev5
2012/4/4
a1.java
a1.java
a2.java
a1.java
a2.java
b1.java
a1’.java
a2.java
b1.java
a1’.java
a2.java
b1’.java
7
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
STEP2:クローン遷移情報の検出
隣接する2リビジョンのコードクローンから遷移情報を取得する[6]
コードクローン情報
(リビジョン1)
クローンセット遷移情報(1,2)
比較
クローンセットA
…
…
リ
ポ
ジ
ト
リ
X
コードクローン情報
(リビジョン2)
コードクローン情報
(リビジョンN-1)
クローンセット遷移情報(N-1,N)
比較
コードクローン情報
(リビジョンN)
クローンセットA
クローンセットA
[6]山中裕樹, 崔恩瀞, 吉田則裕, 井上克郎, 佐野建樹. コードクローン変更管理システムの開発と実プロジェクトへの適用.
8
ソフトウェアエンジニアリングシンポジウム2012論文集,
第2012巻,
pp.1–8,
aug
2012.
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
STEP3:クローン遷移情報のマージ
2リビジョン間のクローン遷移情報のマージを行い,複数リビジョン間に
おけるクローン遷移情報(クローンセット履歴)を得る
クローンセット
遷移情報(1,2)
クローンセット
遷移情報(2,3)
…
クローンセット
遷移情報(N-2,N-1)
クローンセット
遷移情報(N-1,N)
マージ
クローンセットAのクローンセット履歴
…
リビジョン1
リビジョン2
リビジョン3
リビジョンN-1
リビジョンN
9
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
STEP4:コードクローン作成者と利用者の特定
コードクローン作成者:クローンセット中のコードクローンの内,
実装日時が最も古いコード片の開発者
コードクローン利用者:既存のコード片を再利用した開発者
クローンセットAのクローンセット履歴
開発者A
作成者
A(2012/1/2)
…
B(2012/2/2)
C(2012/3/2)
利用者
開発者B
リビジョン2
利用者
リビジョンN-1
リビジョンN
開発者C
10
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
実験概要
準備
OSSからGitで管理されている2つのJavaプロジェクトのリポジトリを用意
プロジェクト名
eclipse.platform.text
eclipse.pde
開発期間
2001/5/2 ~ 2003/12/22
2002/4/11 ~ 2003/12/18
リビジョン数
1369
144
開発者数
19名
3名
手順
STEP1:上記のリポジトリをGitの機能を利用して1つのリポジトリにマージ
STEP2:マージしたリポジトリのリビジョン間クローン遷移情報を取得
STEP3:リビジョン1~1513におけるクローンセット履歴の取得
STEP4:コードクローン利用者と作成者の特定
出力結果の分析
11
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
出力結果
検出クローンセット数:969個
リビジョンをまたがった再利用:156個
プロジェクト間コードクローンを含むクローンセット:5個
969
156
5
コピー
コピー
プロジェクト間
コードクローン
12
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
Research Questions
RQ1
再利用回数の多いクローンセットとコードクローン利用者数が多いクローンセット
が一致するか
RQ2
プロジェクト間コードクローンの作成者と利用者について,両プロジェクトで開発を
している開発者とそうでない開発者で違いがあるか
RQ3
コードクローン利用者数の多いコードクローンと,再利用回数は多いコードクロー
ン利用者数の少ないコードクローンに違いがあるか
RQ4
コードクローンの作成数と利用数の多い開発者にどのような特徴があるか
RQ5
コミット数の多い開発者はコードクローンの作成数と利用数が多いか
13
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
RQ1:再利用回数とユニークな利用者数
20
18
16
14
12
10
8
6
4
2
0
再利用回数:18回
利用者数:3名
再利用回数
再利用回数:14回
利用者数:1名
ユニークな利用者数
再利用回数:4回
利用者数:3名
0
50
100
150
クローンセットID
再利用回数が多ければ利用者数が多いわけではない
再利用回数が少なくても,利用者数の多いクローンセットがある
様々な再利用のされ方が存在する
14
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
RQ5:開発者ごとのコードクローン作成数と再利用数
247
250
コミット数:370回
作成数:20回
再利用数:247回
200
163
回数
150
コミット数:74回
作成数:0回
再利用数:0回
100
50
37
38
20
9
作成数
再利用数
5 48
14
44
2
0
A B C D E F G H I J K
764 370 76 74 68 66 43 33 15 10 10
開発者ID
コミット数
L
9
M
9
N
8
O
7
P
6
Q
6
R
5
S
5
T
4
コミット数が多いと再利用数も多いというわけではない
コードクローン作成者や利用者である開発者は限られている
再利用の少ない開発者に対しての支援の必要性が考えられる
15
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
まとめと今後の課題
まとめ
複数プロジェクトにおけるコードクローンの作成者と利用者について
の分析手法を提案
提案手法を適用し,コードクローン作成者と利用者の分析を行った
再利用傾向には個人差があり,再利用の少ない開発者への支援
の必要性を示した
今後の課題
大規模なリポジトリへの適用
数千~一万リビジョン
3つ以上のプロジェクト
再利用支援ソフトウェアの作成
コードクローン作成者と利用者のインタラクション
16
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
質疑応答
17
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
18
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University