[Paper] 구조조정에서 안정화까지: 반복적 코드 가독성 리팩토링에 대한 대규모 실험 with Large Language Models

발행: (2026년 2월 25일 오후 09:05 GMT+9)
9 분 소요
원문: arXiv

Source: arXiv - 2602.21833v1

개요

이 논문은 대형 언어 모델(LLMs)을 활용하여 Java 코드를 자동으로 리팩터링함으로써 가독성을 향상시키는 방법을 조사한다. GPT‑5.1을 사용해 230개의 코드 스니펫에 대해 대규모 다중‑반복 실험을 수행함으로써, 저자들은 LLM‑기반 리팩터링이 혼란스러운 구조 재조정에서 안정적인 “optimally readable” 형태로 진화하는 과정을 밝혀낸다.

핵심 기여

  • 대규모 실증 연구: 최첨단 LLM(GPT‑5.1)을 사용한 반복적인 가독성 중심 리팩토링.
  • 3단계 분류 체계: 구현, 구문, 주석 수준의 코드 변경을 세분화하여 리팩토링 중 미세 변환을 포착.
  • 수렴 패턴 발견: 초기 반복에서는 코드를 적극적으로 재구성하고, 이후 반복에서는 일관되고 가독성 높은 버전으로 안정화.
  • 수렴이 견고함을 입증: 다양한 코드 변형에서도 일관되며 프롬프트 스타일에 약간만 영향을 받음.
  • 오픈 데이터셋 및 실험 파이프라인: 다른 연구자와 도구 개발자가 비교 연구에 재사용 가능.

방법론

  1. 스니펫 선택 및 변형 – 230개의 Java 스니펫을 오픈‑소스 프로젝트에서 수집했습니다. 각 스니펫은 자동으로 변형되어 여러 “변형”(예: 변수 이름 변경, 문장 순서 재배열)을 만들어 견고성을 테스트했습니다.
  2. 프롬프트 전략 – 세 가지 프롬프트 디자인을 비교했습니다:
    • Baseline: “코드 가독성을 위해 리팩터링하세요.”
    • Factor‑specific: “이름과 주석을 개선하세요.”
    • Iterative: “이전 리팩터링을 다시 적용하세요.”
  3. 반복 리팩터링 루프 – 각 스니펫‑변형에 대해 LLM을 연속으로 다섯 번 호출했으며, 이전 출력을 입력으로 다시 전달했습니다.
  4. 변경 분류 – 저자들은 연속 버전을 diff하고 편집을 다음과 같이 라벨링했습니다:
    • Implementation (논리 재구성, 메서드 추출)
    • Syntactic (포맷팅, 공백, 순서)
    • Comment‑level (문서 추가/수정).
  5. 정확성 검사 – 스니펫에 포함된 단위 테스트를 각 반복 후에 실행하여 기능 동작이 유지되는지 확인했습니다.
  6. 일반화 테스트 – 보류된 “새로운” 스니펫 집합을 처리하여 관찰된 패턴이 학습 데이터 외에도 적용되는지 확인했습니다.

결과 및 발견

관찰데이터가 보여준 내용
재구성 → 안정화첫 2‑3번 반복에서는 큰 규모의, 종종 방해가 되는 편집(예: 메서드 추출, 변수 이름 변경)이 발생했습니다. 4‑5번 반복에서는 변경이 사소한 포맷팅이나 주석 수정으로 축소되어 수렴을 나타냈습니다.
변형 간 일관성입력 코드가 크게 변형되었음에도 불구하고 LLM은 동일한 수렴 곡선을 따랐으며, 이는 내부적인 “가독성 최적점”을 시사합니다.
프롬프트 영향특정 가독성 요소를 명시적으로 요청하면 LLM이 주석 수준의 편집으로 더 많이 유도되었지만, 전체 수렴 일정에는 크게 영향을 주지 않았습니다.
기능 안전성재구성된 스니펫의 96 % 이상이 각 반복 후 원래 단위 테스트를 통과했으며, 가독성 향상이 기능을 깨뜨리는 경우가 드물다는 것을 보여줍니다.
새 코드에 대한 견고성보지 못한 스니펫에서도 동일한 수렴 패턴이 나타났으며, 이는 해당 행동이 데이터셋에 국한되지 않고 모델 전반에 걸친 것임을 강화합니다.

실용적인 시사점

  • 툴링 신뢰도 – 개발자는 LLM 기반 리팩터링 어시스턴트를 CI 파이프라인에 통합할 수 있으며, 몇 번의 패스 후 모델이 안정적이고 가독성 높은 버전으로 수렴하여 코드를 반복적으로 깨뜨리지 않는다는 것을 알 수 있습니다.
  • 반복 워크플로 – 한 번만 실행하는 리팩터링 대신 반복적인 접근(예: 3‑4번 패스)이 더 좋고 예측 가능한 결과를 제공합니다.
  • 프롬프트 설계 가이드 – 간단한 “더 가독성 있게 만들어 주세요” 프롬프트가 잘 작동하며, 명시적인 요소를 추가하면 결과를 미세 조정할 뿐이므로 팀은 프롬프트를 가볍게 유지할 수 있습니다.
  • 품질 게이트 – 기능적 정확성이 대부분 유지되므로, 팀은 모델의 변경량이 일정 크기 이하로 떨어졌을 때 멈추는 “가독성 수렴” 게이트를 추가할 수 있습니다.
  • 크로스 모델 벤치마킹 – 공개된 데이터셋을 통해 개발자는 다양한 LLM(Claude, Gemini 등)을 동일한 가독성 작업에서 비교할 수 있어, 스택에 가장 비용 효율적인 옵션을 선택하는 데 도움이 됩니다.

제한 사항 및 향후 연구

  • 모델 특수성 – 실험은 GPT‑5.1에만 제한되었으며, 다른 아키텍처는 다른 수렴 속도나 품질을 보일 수 있습니다.
  • 언어 범위 – Java 코드 조각만을 조사했으며, 결과가 동적 타입 언어 또는 다른 관용구를 가진 언어(예: Python, JavaScript)로 직접 적용되지 않을 수 있습니다.
  • 가독성 지표 – 연구는 인간이 해석한 가독성 향상에 의존했으며, 향후 연구에서는 객관적인 지표(예: 순환 복잡도, Halstead) 등을 통합해 개선 효과를 정량화할 수 있습니다.
  • 장기 유지보수 – LLM이 리팩터링한 코드가 향후 수동 편집이나 하위 도구(정적 분석, 코드 리뷰 봇) 등에 미치는 영향은 아직 미지수입니다.

핵심 요약: 이 연구는 LLM이 몇 차례의 반복적인 과정을 통해 코드를 신뢰성 있게 “정리”할 수 있음을 보여주며, 개발 팀이 정확성을 해치지 않으면서 가독성을 높이는 실용적이고 위험도가 낮은 방법을 제공합니다.

저자

  • Norman Peitek
  • Julia Hess
  • Sven Apel

논문 정보

  • arXiv ID: 2602.21833v1
  • 카테고리: cs.SE
  • 출판일: 2026년 2월 25일
  • PDF: PDF 다운로드
0 조회
Back to Blog

관련 글

더 보기 »