コードクローンのメトリクス値と 開発者の相関の調査 東誠† 肥後芳樹‡ 早瀬康裕‡ 松下誠‡ 井上克郎‡ † 大阪大学基礎工学部情報科学科 ‡ 大阪大学大学院情報科学研究科 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
© Copyright 2024 ExpyDoc