[논문 리뷰] Does chronology matter in JIT defect prediction? A Partial Replication Study
이 연구는 코드 변경 데이터의 연속적 순서가 Just-In-Time (JIT) 결함 예측 모델에 영향을 미치는지 조사한다. 다섯 가지 코드 변경 속성 가족(크기, 확산, 이력, 경험, 목적)과 네 개의 오픈소스 프로젝트에서 수행된 Random Forest 모델을 사용하여, 모델의 예측 능력은 시간이 지남에 따라 안정적이지만, 속성 중요도는 변동이 있음을 발견하였다. 주요 기여는 최근 데이터를 우선시하는 가중치 샘플링 방법으로, 이는 역사적 데이터의 광범위성을 포기하지 않으면서도 모델 캘리브레이션을 향상시켜 성능을 향상시킨다.
Just-In-Time (JIT) models detect the fix-inducing changes (or defect-inducing changes). These models are designed based on the assumption that past code change properties are similar to future ones. However, as the system evolves, the expertise of developers and/or the complexity of the system also changes. In this work, we aim to investigate the effect of code change properties on JIT models over time. We also study the impact of using recent data as well as all available data on the performance of JIT models. Further, we analyze the effect of weighted sampling on the performance of fix-inducing properties of JIT models. For this purpose, we used datasets from Eclipse JDT, Mozilla, Eclipse Platform, and PostgreSQL. We used five families of change-code properties such as size, diffusion, history, experience, and purpose. We used Random Forest to train and test the JIT model and Brier Score and the area under the ROC curve for performance measurement. Our paper suggests that the predictive power of JIT models does not change over time. Furthermore, we observed that the chronology of data in JIT defect prediction models can be discarded by considering all the available data. On the other hand, the importance score of families of code change properties is found to oscillate over time. To mitigate the impact of the evolution of code change properties, it is recommended to use a weighted sampling approach in which more emphasis is placed upon the changes occurring closer to the current time. Moreover, since properties such as "Expertise of the Developer" and "Size" evolve with time, the models obtained from old data may exhibit different characteristics compared to those employing the newer dataset. Hence, practitioners should constantly retrain JIT models to include fresh data.
연구 동기 및 목표
- McIntosh와 Kamei(2020)의 JIT 결함 예측에 관한 연구 결과를 부분 복제 접근 방식을 통해 검증하고 확장하기 위해.
- 소프트웨어 시스템의 진화와 함께 JIT 모델의 예측 능력이 시간이 지남에 따라 떨어지는지 조사하기 위해.
- 코드 변경 속성(예: 크기, 개발자 전문성)의 중요도가 시간이 지남에 따라 어떻게 변화하는지 분석하기 위해.
- 모든 역사적 데이터를 사용하는 것과 최근 데이터만 사용하는 것의 모델 성능에 미치는 영향을 평가하기 위해.
- 최근 변경 사항을 우선시하는 가중치 샘플링 전략을 제안하고, 이의 성능 향상 여부를 평가하기 위해.
제안 방법
- Eclipse JDT, Mozilla, Eclipse Platform, PostgreSQL의 네 개의 오픈소스 프로젝트 데이터셋을 사용하여 원본 JIT 결함 예측 연구를 복제하였다.
- 버전 제어 및 이슈 추적 데이터에서 다섯 가지 코드 변경 속성 가족(크기, 확산, 이력, 경험, 목적)을 추출하였다.
- 성능 지표로 Brier Score(BS)와 AUC를 사용하여 Random Forest 모델을 학습하고 평가하였다.
- 모든 가용 데이터를 사용한 학습과 최근 데이터 서브셋을 사용한 학습 간의 모델 성능을 통계적으로 비교하기 위해 Wilcoxon Signed Rank Test를 적용하였다.
- 최근 변경 사항에 더 높은 가중치를 할당하여 변화하는 코드 속성을 반영하는 가중치 샘플링 전략을 제안하고 평가하였다.
- SZZ 알고리즘을 사용하여 수정 유도 변경 사항을 식별하였으며, 커밋-버그 매핑에 대한 알려진 한계를 고려하여 주의를 기울였다.
실험 결과
연구 질문
- RQ1RQ1: 소프트웨어 시스템의 진화와 함께 JIT 모델의 예측 능력은 시간이 지남에 따라 떨어지는가?
- RQ2RQ2: 코드 변경 속성과 수정 유도 가능성 간의 관계는 시간이 지남에 따라 변화하는가?
- RQ3RQ3: 가중치 샘플링 전략을 통해 데이터의 연속성을 고려함으로써 JIT 모델의 성능을 향상시킬 수 있는가?
주요 결과
- JIT 모델의 예측 능력은 시간이 지나도 안정적이며, 이는 역사적 데이터로 학습한 모델이 시간이 지나도 정확도를 크게 상실하지 않음을 시사한다.
- 코드 변경 속성 가족(예: 크기, 전문성)의 중요도 점수는 시간이 지남에 따라 변동함을 보이며, 이는 특정 기능의 관련성이 시스템 노후화와 함께 변화함을 시사한다.
- 최근 데이터(예: 최근 6개월)만 사용할 경우, 전체 역사적 데이터를 사용하는 것과 유사한 AUC 점수를 유지하면서도 더 나은 모델 캘리브레이션과 분류 능력을 보였다.
- 제안된 가중치 샘플링 전략은 Brier Score(BS)를 향상시켜 더 나은 캘리브레이션을 달성하였으며, 이는 최근 변경 사항을 강조하면서도 대규모 훈련 데이터의 이점을 유지함을 의미한다.
- 모든 가용 데이터로 학습한 모델는 특히 개발자 전문성과 코드 크기와 같은 동적 속성의 경우 오래된 속성 상관관계로 인해 현재의 기능 의존성 구조를 잘못 반영할 수 있다.
- 결과는 실무자들이 현재 개발 패턴과 속성 동적 변화에 맞추어 정기적으로 최근 데이터로 JIT 모델을 재학습해야 한다는 것을 시사한다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.