ソフトウェアリポジトリに おける コードクローン作成者 ・ 利用者関係...

24
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka Univ ソソソソソソソソソソソソソソソ ソソソソソソソソソソ ソソソソソソソソソソソソソソ ○ 森森森森 森森森 森森森森 森森森森 †† 森森森森 森森森森 † 森森森森森森森 森森森森森森森 †† 森森森森森森森森森森森森森 森森森森森森森

description

ソフトウェアリポジトリに おける コードクローン作成者 ・ 利用者関係 分析手法とその適用. ○ 森脇 匠 哉 † 井垣宏 † 山中裕樹 † 吉田則裕 †† 井上克郎 † 楠本真二 †. † 大阪大学大学院 情報科学研究科 †† 奈良 先端 科学 技術 大学院大学 情報科学研究科. ソースコードの再利用 [1]. 既存のソースコードのコピーアンドペーストにより 行われる. メリット 同じソースコードを二度書かなくて済む ⇒ 生産性の向上 テスト済みのソースコードの再利用 ⇒ 信頼性の向上 ソースコードの再利用は難しい [2] - PowerPoint PPT Presentation

Transcript of ソフトウェアリポジトリに おける コードクローン作成者 ・ 利用者関係...

Page 1: ソフトウェアリポジトリに おける コードクローン作成者 ・ 利用者関係 分析手法とその適用

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

ソフトウェアリポジトリにおけるコードクローン作成者・利用者関係分析手法と

その適用

○ 森脇匠哉† 井垣宏† 山中裕樹†

吉田則裕†† 井上克郎† 楠本真二†

† 大阪大学大学院 情報科学研究科†† 奈良先端科学技術大学院大学 情報科学研究

Page 2: ソフトウェアリポジトリに おける コードクローン作成者 ・ 利用者関係 分析手法とその適用

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

ソースコードの再利用 [1]

メリット同じソースコードを二度書かなくて済む ⇒ 生産性の向上テスト済みのソースコードの再利用 ⇒ 信頼性の向上

ソースコードの再利用は難しい [2]

ソースコードの内容を理解していなければならないコピーアンドペースト後にコード修正が必要な場合もある

再利用しやすいソースコードや開発者がどのようなときに再利用を行うかを分析することが再利用支援において重要である

既存のソースコードのコピーアンドペーストにより行われる

コピー

コピー

[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] 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.

Page 3: ソフトウェアリポジトリに おける コードクローン作成者 ・ 利用者関係 分析手法とその適用

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

既存研究 [3]

686 名の OSS 開発者へ再利用に関するアンケートを実施

再利用を積極的に行う開発者の特徴再利用のメリットを強く認識している

生産性,品質

関わっているプロジェクト数や開発者数が多い成熟していないプロジェクトに携わっている

再利用に関する定量的な分析の必要性が主張されている[3] 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.

Page 4: ソフトウェアリポジトリに おける コードクローン作成者 ・ 利用者関係 分析手法とその適用

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

コードクローン技術を用いたソースコードの再利用分析

コードクローン:同一または類似したコード片を持つものクローンセット:互いにコードクローンであるコード片の集合

コードクローンクローン

セット

コードクローン検出技術を用いた既存の再利用分析研究開発者ごとの再利用傾向の可視化 [4]

再利用の規模や性質を分析 [5]

[4]Mihai Balint, Tudor Girba, and Radu Marinescu. How developers copy. In Proceedings of International Conference on Program Comprehension 2006, pp. 56–65,2006.[5]Lars Heinemann, Florian Deissenboeck, Mario Gleirscher, Benjamin Hummel, and Maximilian Irlbeck. On the Extent and Nature of Software Reuse in Open Source Java Projects. In Proceedings of the 12th International Conference on Top Productivity Through Software Reuse, ICSR’11, pp. 207–222, Berlin, Heidelberg, 2011.

コピー

コピー

Page 5: ソフトウェアリポジトリに おける コードクローン作成者 ・ 利用者関係 分析手法とその適用

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

複数のプロジェクトに対する分析を行うにはプロジェクト間での再利用を分析する必要がある

再利用分析における課題 (1/2)

プロジェクト Bプロジェクト A

コピー

コピー

コピー

Page 6: ソフトウェアリポジトリに おける コードクローン作成者 ・ 利用者関係 分析手法とその適用

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

再利用分析における課題 (2/2)

コードクローン

コードクローン作成者

コードクローン利用者

コピー

A B

コピー

C コードクローン利用者

開発者によって再利用に関するモチベーションは異なる誰が誰のソースコードを再利用したかを分析する必要がある

クローンセット中のコードクローンの内,実装日時が最も古いコード片を実装した開発者

既存のコード片を再利用した開発者

作成者の定義 利用者の定義

Page 7: ソフトウェアリポジトリに おける コードクローン作成者 ・ 利用者関係 分析手法とその適用

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

目的

O1 :開発者ごとの再利用傾向がどの程度異なるか再利用回数の多いクローンセットはユニークな利用者数も多いかコミット数の多い開発者はコードクローンの作成数と利用数も多いか

O2: どのようなソースコードが多くの開発者に再利用されやすいか

ユニークな利用者数の多いコードクローンと,再利用回数は多いがユニークな利用者数の少ないコードクローンに違いがあるか

O3 :どのような開発者が再利用を積極的に行うかコードクローンの作成数と利用数の多い開発者にどのような特徴があるか

Page 8: ソフトウェアリポジトリに おける コードクローン作成者 ・ 利用者関係 分析手法とその適用

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

再利用分析の概要

STEP2 :クローンセット遷移情報の検出

STEP1 :合成リポジトリの作成

STEP4 :コードクローン作成者と利用者の特定

STEP3 :クローンセット遷移情報のマージ

入力:複数のリポジトリ クローンセット

遷移情報(1,2)

出力:クローンセット毎のコードクローン作成者と利用者

クローンセット履歴

クローンセット遷移情報 (N-

1,N)

rev. N-1

rev. 1

rev. 2

・・・

rev. N

Page 9: ソフトウェアリポジトリに おける コードクローン作成者 ・ 利用者関係 分析手法とその適用

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

リポジトリ B

rev. B2

2012/4/4

rev. B1

2012/2/4

リポジトリ A

rev. A2

2012/3/2

rev. A1

2012/1/2

複数プロジェクトのリポジトリからチェックアウトを行い,合成リポジトリを作成

STEP1 :合成リポジトリの作成

a1.java

a1’.java

b1.java

b1’.java

合成リポジト

リ C

合成 rev. 22012/2/4

合成 rev. 32012/3/2

合成 rev. 12012/1/2

合成 rev. 42012/4/4

a1.javaA

Aa1.java

Aa1’.java

Aa1’.java

b1.java

b1’.java

B

Brev. B2

2012/4/4

rev. B1

2012/2/4

rev. A2

2012/3/2

rev. A1

2012/1/2

b1.javaB

時系列順に並べ替え

Page 10: ソフトウェアリポジトリに おける コードクローン作成者 ・ 利用者関係 分析手法とその適用

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

STEP2 :クローンセット遷移情報の検出 (1/2)

Added

新リビジョン旧リビジョン

コードクローンを「 Stable 」「 Added 」に分類する [6]

本研究では再利用傾向を分析するため「 Added 」に注目

コピー

クローンセット A

クローンセット A

Stable

[7] 山中裕樹 , 崔恩瀞 , 吉田則裕 , 井上克郎 , 佐野建樹 . “ コードクローン変更管理システムの開発と実プロジェクトへの適用” ,ソフトウェアエンジニアリングシンポジウム 2012 論文集 , pp.1–8, aug 2012.

Page 11: ソフトウェアリポジトリに おける コードクローン作成者 ・ 利用者関係 分析手法とその適用

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

STEP2 :クローンセット遷移情報の検出 (2/2)

隣接する 2 リビジョンのコードクローンから遷移情報を取得する [6]コードクローン

情報( 合成 rev. 1)

コードクローン情報

( 合成 rev. 2)

コードクローン情報

( 合成 rev. N-1)

比較クローンセッ

ト A

クローンセット遷移情報(1,2)

クローンセット A

クローンセット A

クローンセット遷移情報 (N-1,N)

合成

リポ

ジト

C

コードクローン情報

( 合成 rev. N)

比較

……

Page 12: ソフトウェアリポジトリに おける コードクローン作成者 ・ 利用者関係 分析手法とその適用

12Software 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)

クローンセット A のクローンセット履歴

合成 rev. N合成 rev. N-1合成 rev. 2

クローンセット遷移情報 (N-1,N)

マージ

合成 rev. 3

合成 rev. 1

合成 rev. 2 でクローンセットが発生

合成 rev. N でクローンセットにコードクローンが追加

Page 13: ソフトウェアリポジトリに おける コードクローン作成者 ・ 利用者関係 分析手法とその適用

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

クローンセット A のクローンセット履歴

rev. Nrev. N-1

C(2012/3/2)

rev. 2

A(2012/1/2)

B(2012/2/2)

コードクローン作成者:クローンセット中のコードクローンの内,実装日時が最も古いコード片の開発者コードクローン利用者:既存のコード片を再利用した開発者

STEP4 :コードクローン作成者と利用者の特定

開発者 A

開発者 B

作成者

開発者 C

利用者

利用者

B(2012/2/2)

A(2012/1/2) A(2012/1/2)

B(2012/2/2)

Page 14: ソフトウェアリポジトリに おける コードクローン作成者 ・ 利用者関係 分析手法とその適用

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

実験概要対象

プロジェクト名

eclipse.platform.text eclipse.pde

実装言語 Java Java

開発期間 2001/5/2 ~ 2003/12/22 2002/4/11 ~ 2003/12/18

リビジョン数 1369 144

開発者数 19 名 3 名

手順STEP1 :上記のリポジトリを時系列順にチェックアウトし,合成リポジトリを作成STEP2 :隣接する合成リビジョン間のクローンセット遷移情報を取得STEP3 :合成リビジョン (1 ~ 1513) におけるクローンセット履歴の取得STEP4 :コードクローン作成者と利用者の特定出力結果の分析

リビジョンをまたがってコピーの行われたクローンセットを対象とする

Page 15: ソフトウェアリポジトリに おける コードクローン作成者 ・ 利用者関係 分析手法とその適用

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

出力結果

969 156 5

検出クローンセット数: 969個特定のリビジョンで発生後再利用の行われなかったクローンセット: 813個リビジョンをまたがった再利用が行われたクローンセット: 156個( 分析対象 )

プロジェクト間コードクローンを含むクローンセット: 5個

コピー

プロジェクト間

コードクローン

コピー

813

Page 16: ソフトウェアリポジトリに おける コードクローン作成者 ・ 利用者関係 分析手法とその適用

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

目的

O1 :開発者ごとの再利用傾向がどの程度異なるか再利用回数の多いクローンセットはユニークな利用者数も多いかコミット数の多い開発者はコードクローンの作成数と利用数も多いか

O2: どのようなソースコードが多くの開発者に再利用されやすいか

ユニークな利用者数の多いコードクローンと,再利用回数は多いがユニークな利用者数の少ないコードクローンに違いがあるか

O3 :どのような開発者が再利用を積極的に行うかコードクローンの作成数と利用数の多い開発者にどのような特徴があるか

Page 17: ソフトウェアリポジトリに おける コードクローン作成者 ・ 利用者関係 分析手法とその適用

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

再利用回数の多いクローンセットの特徴分析

0 20 40 60 80 100 120 140 16002468

101214161820

再利用回数

ユニークな利用者数

クローンセット ID

再利用回数と利用者数に相関がなかった利用者数の多いクローンセットにも再利用回数の少ないものがある様々な再利用のされ方が存在する

再利用回数: 18回利用者数: 3 名

再利用回数: 4回利用者数: 3 名

再利用回数: 14回利用者数: 1 名

Page 18: ソフトウェアリポジトリに おける コードクローン作成者 ・ 利用者関係 分析手法とその適用

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

コミット数の多い開発者についての分析

コミット数と再利用数に相関がなかったコードクローン作成者や利用者である開発者は限られている

再利用の少ない開発者に対しての支援の必要性が考えられる

A764

B370

C76

D74

E68

F66

G43

H33

I15

J10

K10

L9

M9

N8

O7

P6

Q6

R5

S5

T4

0

50

100

150

200

250

3720 9 4 1 4

163

247

38

5 8 4 2 4

作成数再利用数

開発者 IDコミット数

回数 コミット数: 74

回作成数: 0 回再利用数: 0 回

コミット数:370 回作成数: 20 回再利用数: 247回

Page 19: ソフトウェアリポジトリに おける コードクローン作成者 ・ 利用者関係 分析手法とその適用

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

再利用されやすいソースコードの分析(1/2)

ユニークな利用者数の多い (3 名 ) クローンセット設定の初期化を行っているソースコード

UI操作について実装を行っているソースコード

pref.setDefault(P_UNKNOWN_ELEMENT, WARNING);pref.setDefault(P_UNKNOWN_ATTRIBUTE, WARNING);・・・

gestureMap.put("E", "org.eclipse.ui.navigate.forwardHistory");gestureMap.put("N", "org.eclipse.ui.file.save");・・・

Page 20: ソフトウェアリポジトリに おける コードクローン作成者 ・ 利用者関係 分析手法とその適用

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

再利用されやすいソースコードの分析(2/2)

ユニークな利用者数の多い (3 名 ) クローンセット色設定についての実装を行っているソースコード

開発者によって違いが出にくいような実装についての再利用が多い単純で理解しやすいソースコードが多い

if (store.contains(LINE_NUMBER_COLOR)) { if (store.isDefault(LINE_NUMBER_COLOR)) rgb= PreferenceConverter.getDefaultColor(store, LINE_NUMBER_COLOR); else rgb= PreferenceConverter.getColor(store, LINE_NUMBER_COLOR);・・・

Page 21: ソフトウェアリポジトリに おける コードクローン作成者 ・ 利用者関係 分析手法とその適用

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

積極的に再利用を行う開発者の特徴分析

関わっているプロジェクト数に関わらず開発者ごとにさまざまな再利用傾向がみられる

A48

I31

D19

B19

S9

H8

N8

C7

E7

J7

K7

L7

O7

P7

Q7

G6

T6

F5

M5

R5

0

50

100

150

200

250

300

3720

1 9 4 4

163

2

247

438

5 8 4

作成数再利用数

開発者 ID関わっている Eclipse プロジェクト数

Page 22: ソフトウェアリポジトリに おける コードクローン作成者 ・ 利用者関係 分析手法とその適用

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

考察

O1 :開発者ごとの再利用傾向がどの程度異なるか再利用回数とユニークな利用者数の相関はないコミット数が多くても作成数・利用数はさまざまである

O2: どのようなソースコードが多くの開発者に再利用されやすいか

開発者によって違いが出にくいような実装を行っているソースコード単純で理解しやすいソースコード

O3 :どのような開発者が再利用を積極的に行うか多くのプロジェクトに携わっていても開発者によって再利用・被再利用回数はさまざまである

Page 23: ソフトウェアリポジトリに おける コードクローン作成者 ・ 利用者関係 分析手法とその適用

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

まとめと今後の課題まとめ

複数プロジェクトにおけるコードクローンの作成者と利用者についての分析手法を提案提案手法を適用し,コードクローン作成者と利用者を分析再利用傾向には個人差があり,再利用の少ない開発者への支援の必要性を示した

今後の課題より大規模なリポジトリへの適用

数千~一万リビジョン, 3 つ以上のプロジェクト

開発者の特徴分類・評価手法の構築コードクローン作成数・再利用数などで開発者を分類

再利用支援ソフトウェアの作成開発者へ再利用できそうなソースコードを提案

Page 24: ソフトウェアリポジトリに おける コードクローン作成者 ・ 利用者関係 分析手法とその適用

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