Skip to main content
QUICK REVIEW

[論文レビュー] Clone Removal in Java Programs as a Process of Stepwise Unification

Daniel Speicher, Andri Bremm|arXiv (Cornell University)|Jan 11, 2013
Software Engineering Research参考文献 5被引用数 4
ひとこと要約

この論文では、プログラム依存グラフ(PDGs)上で一連の統一ステップを適用することで、Javaプログラムにおけるクローン削除を自動化する段階的統一アプローチを提案する。データおよび制御依存関係を分析することで、統一可能なステートメントを特定し、メソッド抽出やラmda式などのリファクタリングを適用し、バックトラッキングを用いて動作を保全する正確なリファクタリング提案を生成する。

ABSTRACT

Cloned code is one of the most important obstacles against consistent software maintenance and evolution. Although today's clone detection tools find a variety of clones, they do not offer any advice how to remove such clones. We explain the problems involved in finding a sequence of changes for clone removal and suggest to view this problem as a process of stepwise unification of the clone instances. Consequently the problem can be solved by backtracking over the possible unification steps.

研究の動機と目的

  • 既存のクローン検出ツールには、クローンを特定するだけで削除方法を提案しないというギャップを埋める。
  • 動作を保全する正確なリファクタリングシーケンスを生成する体系的で自動化されたアプローチを提供する。
  • クローン削除を、リファクタリングによってステートメントおよび制御フローを統一するプロセスとしてモデル化する。
  • 特に式や制御構造が異なるような複雑なクローンタイプに対応するため、ラmda式抽出やメソッド抽出などのリファクタリングを活用する。

提案手法

  • 各クローン候補に対して、制御およびデータ依存関係(メソッド呼び出しを読み取り/書き込みアクセスとして含む)をモデル化したプログラム依存グラフ(PDGs)を構築する。
  • PDGの比較を通じて、リファクタリング(リネーム、パラメータ導入、型の一般化など)を考慮して、統一可能なステートメントを特定する。
  • クローンを削除する有効なリファクタリングシーケンスを探索するために、可能な統一ステップに対するバックトラッキングを適用する。
  • 式や制御フローの差異がある場合の非統一可能なステートメントを分離するために、メソッド抽出およびラmda式抽出リファクタリングを用いる。
  • データ依存の順序を保持することで意味的整合性を確保し、誤った動作変更を防ぐためにアンチ依存関係の処理も行う。
  • 正確なリファクタリング適用のため、ASTおよびバインディング情報の提供を目的とした既存ツール(JTransformerなど)を活用する。

実験結果

リサーチクエスチョン

  • RQ1Javaプログラムにおけるコードクローンを削除するため、どのように体系的に動作を保全するリファクタリングシーケンスを生成できるか?
  • RQ2プログラム依存グラフ(PDGs)は、統一可能なステートメントを特定し、リファクタリング意思決定をガイドする上で果たす役割は何か?
  • RQ3メソッド抽出、ラmda式、パラメータの順序変更といったリファクタリングのうち、非同一クローンを統一するために最も効果的なものは何か?
  • RQ4制御フローを安全に再構築することで、非統一可能なステートメントを分離しながらも、プログラムの意味を保全するにはどうすればよいか?
  • RQ5ラmda式の使用が、テンプレートメソッドパターンよりもクローン削除に適している状況はどのようなものか?

主な発見

  • PDG分析に基づくリファクタリングのシーケンスを適用することで、非同一クローンを統一されたコードに変換できることを実証した。
  • ラmda式は、異なるパラメータを持つメソッド呼び出しのような異なる式を効果的に抽出可能であり、複雑なデザインパターンを必要としない。
  • データ依存関係が限定的で連続したブロックを形成する非統一可能なステートメントに対しては、メソッド抽出リファクタリングが効果的である。
  • 統一ステップに対するバックトラッキングにより、ツールは複数の有効なリファクタリングシーケンスを探索・提案可能となり、クローン削除における柔軟性が向上する。
  • 既存のクローン検出ツールが特定した関連するメソッドペアに限定することで、全プログラム比較を避けることにより、クローン削除のコストを低減できる。
  • メソッド呼び出しやエイリアスを含む拡張されたデータ依存関係モデルを備えたPDGsの活用により、安全なリファクタリングポイントの特定精度が向上した。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。