신경망 기반 변경 예측: 소프트웨어 변경 사항과 그 효과 간의 관계 규명
요약
소프트웨어 변경 사항과 그에 따른 동적 효과 사이의 관계를 학습하고 예측하는 '신경망 기반 변경 예측(Neural Change Prediction)' 기술을 제안합니다. 코드 실행 없이 의미론적 변화를 예측하는 과제를 해결하며, 코드 수정 위치 식별 및 효과 예측에 활용 가능합니다.
핵심 포인트
- 신경망 기반의 소프트웨어 변경 및 효과 예측 기술 제안
- 코드 변이(mutation)를 통한 (변경, 동작) 쌍 학습 방식
- 특징 위치 식별, 소프트웨어 진화 및 수리 분야 활용 가능
- 사전 지식 없이 실행 가능한 모든 소프트웨어 산출물에 적용 가능
소프트웨어 개발의 상당 부분은 소프트웨어 변경 사항(software changes)과 그 효과(effects) 사이의 관계를 이해하는 것을 중심으로 이루어집니다. 만약 우리가 이러한 관계를 학습하고 예측할 수 있다면, 그러한 예측은 소프트웨어 공학(software engineering)의 여러 분야에 이익을 줄 수 있습니다. 최근 인공지능(artificial intelligence)의 발전이 소프트웨어 공학 작업에서 큰 가능성을 보여주었지만, 코드를 실행하지 않고 코드의 의미론(semantics)을 예측하는 것은 여전히 큰 과제로 남아 있습니다. 본 논문에서는 소프트웨어 변경 사항과 프로그램 동작에 미치는 동적 효과(dynamic effects) 사이의 연관성을 학습하고 예측하는 새롭고 근본적인 기술인 신경망 기반 변경 예측(Neural Change Prediction)을 제시합니다. 구체적으로, 주어진 프로그램과 테스트 입력에 대해, 우리는 코드에 수많은 변이(mutations)를 자동으로 적용하고 이러한 변경 사항이 프로그램의 출력(output)을 어떻게 변화시키는지 관찰합니다. 이러한 (소프트웨어 변경, 동작 변경) 쌍으로부터 우리는 다음과 같은 모델을 생성합니다: (1) 원하는 동작의 변경이 있을 때, 코드가 어디서 어떻게 변경되어야 하는지 예측합니다 (특징 위치 식별(feature localization), 소프트웨어 진화(software evolution), 소프트웨어 수리(software repair)); (2) 주어진 코드 변경에 대해, 이 코드 변경이 출력에 어떤 영향을 미치는지 예측합니다 (효과 예측(effect prediction)). 우리는 Neural Change Prediction의 범용성과 폭넓은 적용 가능성을 입증하기 위해 CSS 설정 파일에 대한 상세한 사례 연구와 Python 프로그램에 대한 평가를 수행했습니다. Neural Change Prediction은 수많은 변이(따라서 테스트 대상 프로그램의 수많은 실행)를 필요로 하지만, Neural Change Prediction은 완전히 자동화되어 있으며 코드나 그 의미론에 대한 사전 지식을 요구하지 않으므로, 실행이 가능하고 출력을 관찰할 수 있는 모든 소프트웨어 산출물(software artifact)에 적용할 수 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 arXiv Codex (cs.SE)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기