Errors of omission in software received much attention in recent years. Recent studies find that omission errors are harder to detect than errors of commission. Several change recommendation approaches are also designed to reduce omission errors.
As a first step toward understanding why errors of omissions occur and how such errors could be prevented, this paper investigates the characteristics of supplementary bug fixes in three open source projects, Eclipse JDT core, Mozilla and Eclipse SWT. Supplementary bug fixes refer to code changes that address a bug ID that was fixed before. Our study shows that 22.46\% to 32.81\% of bug IDs were mentioned in more than one revision, indicating that an initial attempt to fix bugs is often incomplete. Further, our study finds that the location of supplementary bug fixes is correlated with the location of the initial bug fixes\textemdash
90.81\% and 72.29\% of supplementary bug fixes are made to the same line location as initial fixes in Eclipse JDT and SWT respectively. 67.34\% and 68.17\% of newly modified files in supplementary bug fixes have structural dependencies (method calls, field access, and subtyping relations) to the initial bug fix location. In contrast to a conventional wisdom that missed updates to code clones often lead to errors, our study result indicates that only a small portion of supplementary bug fixes is similar to the content of initial bug fixes. This result implies that additional change locations cannot be predicted by code clone analysis alone.
최근 소프트웨어 개발 시 생기는 누락에 의한 오류에 대한 연구가 많은 관심을 받고 있다. 최근 연구는 누락에 의한 오류가 다른 종류의 오류들보다 더 찾기 어렵다는 것을 밝혔으며, 부가적인 수정을 위해 살펴볼 위치를 제시하거나, 부가적인 수정 방법을 제시함으로써 누락에 의한 오류를 줄이는 여러 가지 방법론이 제안되었다.
이 논문은 누락에 의한 오류가 생기는 이유와 누락에 의한 오류를 사전에 방지하기 위한 방법에 대한 이해를 위해 Eclipse JDT core, Mozilla, Eclipse SWT 세 가지 오픈 소스 프로젝트를 대상으로 부가적인 버그 수정의 특징에 대해 살펴본다. 결과적으로 22.46\% 에서 32.81\%의 소프트웨어 버그가 한 번 이상 고쳐지는 것을 보였으며, 이 결과는 버그를 고치기 위한 첫 번째 수정이 상당한 확률로 잘못되었다는 것을 보인다. 또한, 우리는 부가적인 소프트웨어 버그 수정이 첫 번째 수정과 연관되어 있을 가능성이 높다는 것을 보였다. 부가적인 수정에서 첫 번째 수정과 같은 파일을 고칠 경우에, 90.81\%와 72.29\%가 파일 내 같은 위치에 생긴다는 것을 확인했으며, 부가적인 수정에서 첫 번째 수정과 다른 파일을 고칠 경우에, 67.34\%와 68.17\%가 첫 번째 수정에서 고쳐진 파일과 구조적 의존관계가 있다는 것을 보였다. 또한, 코드 클론이 주로 누락에 의한 오류를 야기한다는 기존의 지식과는 달리 부가적인 수정의 일부분만이 첫 번째 수정의 코드와 비슷하다는 것을 보였다. 이 결과는 부가적인 버그 수정이 코드 클론만을 이용해서는 높은 신뢰도로 예측될 수 없을 것이라는 것을 시사한다.