メトリクス値の変化に基づく コードクローンの編集傾向分析 井上研究室 東 誠 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
© Copyright 2024 ExpyDoc