Skip to main content
QUICK REVIEW

[논문 리뷰] Clone Removal in Java Programs as a Process of Stepwise Unification

Daniel Speicher, Andri Bremm|arXiv (Cornell University)|2013. 01. 11.
Software Engineering Research참고 문헌 5인용 수 4
한 줄 요약

이 논문은 프로그램 의존성 그래프(PDGs) 상에서 단계적 통일 단계를 모델링함으로써 Java 프로그램에서 클론 제거를 자동화하는 접근법을 제안한다. 데이터 및 제어 의존성 분석을 통해 통일 가능한 문장을 식별하고, 메서드 추출이나 람다 표현식과 같은 리팩터링을 적용하며, 백트래킹을 사용해 정확하고 동작을 유지하는 리팩터링 제안을 생성한다. 클론 제거를 위한 것이다.

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.

연구 동기 및 목표

  • 기존 클론 탐지 도구의 격차를 보완하기 위해, 클론을 식별하지만 제거 방법을 제안하지 않는 점을 해결하기 위해.
  • 프로그램 동작을 유지하면서 코드 클론을 제거하는 정확한 리팩터링 시퀀스를 체계적이고 자동으로 생성하는 접근법을 제공하기 위해.
  • 리팩터링을 통해 문장과 제어 흐름을 통일하는 과정으로 클론 제거를 모델링하고, PDG 분석을 통해 이 과정을 안내하기 위해.
  • 람다 표현식이나 메서드 추출과 같은 리팩터링을 활용해, 표현식이나 제어 구조가 다른 복잡한 클론 유형을 처리할 수 있도록 하기 위해.

제안 방법

  • 각 클론 후보에 대해 프로그램 의존성 그래프(PDGs)를 구축하여 제어 및 데이터 의존성을 모델링하고, 메서드 호출을 읽기/쓰기 액세스로 포함한다.
  • PDG를 비교하여 통일 가능한 문장을 식별하고, 이름 변경, 매개변수 도입, 타입 일반화와 같은 리팩터링을 고려한다.
  • 클론 제거를 위한 유효한 리팩터링 순서를 탐색하기 위해 가능한 통일 단계에 대한 백트래킹을 적용한다.
  • 비통일 가능한 문장을 분리하기 위해 메서드 추출 및 람다 표현식 추출 리팩터링을 사용하며, 특히 표현식이나 제어 흐름의 차이가 있는 경우에 유용하다.
  • 데이터 의존성 순서를 유지하여 의미적 정확성을 확보하고, 의도하지 않은 동작 변경을 방지하기 위해 반의존성도 처리한다.
  • 정확한 리팩터링 적용을 위해 기존 도구인 JTransformer를 활용해 AST 및 바인딩 정보를 제공한다.

실험 결과

연구 질문

  • RQ1어떻게 체계적으로 프로그램 동작을 유지하면서 코드 클론을 제거하는 리팩터링 시퀀스를 생성할 수 있는가?
  • RQ2프로그래밍 의존성 그래프(PDGs)는 통일 가능한 문장을 식별하고 리팩터링 결정을 안내하는 데 어떤 역할을 하는가?
  • RQ3메서드 추출, 람다 표현식, 매개변수 순서 조정과 같은 리팩터링 중에서 비동일한 클론을 통일하는 데 가장 효과적인 것은 무엇인가?
  • RQ4어떻게 제어 흐름을 안전하게 재구조화하여 비통일 가능한 문장을 분리하면서도 프로그램 의미를 유지할 수 있는가?
  • RQ5람다 표현식을 사용하는 것이 템플릿 메서드와 같은 디자인 패턴보다 클론 제거에 더 적합한 상황은 어떤 경우인가?

주요 결과

  • PDG 분석에서 유도된 리팩터링 시퀀스를 적용함으로써 비동일한 클론을 통일된 코드로 변환하는 데 성공했다.
  • 람다 표현식은 매개변수가 다른 메서드 호출과 같은 다름 표현식을 효과적으로 추출할 수 있게 해주며, 복잡한 디자인 패턴이 필요로 하지 않는다.
  • 비통일 가능한 문장이 제한된 데이터 의존성과 함께 연속적인 블록을 이룰 경우, 메서드 추출 리팩터링이 효과적으로 비통일 가능한 문장을 분리하는 데 유용하다.
  • 통일 단계에 대한 백트래킹을 통해 도구는 여러 유효한 리팩터링 순서를 탐색하고 제안할 수 있어 클론 제거의 유연성을 높였다.
  • 기존 클론 탐지 도구가 식별한 관련 메서드 쌍에 집중함으로써 전체 프로그램 비교를 피함으로써 클론 제거 비용을 감소시켰다.
  • 메서드 호출과 별칭을 포함한 확장된 데이터 의존성 모델링을 통한 PDG 사용은 안전한 리팩터링 지점 식별 정확도를 향상시켰다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.