開発履歴を用いたコードクローン作成者と利用者の 分析手法とその適用 井上研究室 森脇匠哉 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
© Copyright 2025 ExpyDoc