[논문 리뷰] An Empirical Study of Usages, Updates and Risks of Third-Party Libraries in Java Projects
이 논문은 806개의 자바 오픈소스 프로젝트에서 제3자 라이브러리 사용, 업데이트, 위험 요소를 대규모 실증적으로 분석한 것으로, 13,565개의 라이브러리를 분석하여 광범위한 오래된 라이브러리 사용과 지연된 업데이트를 확인했다. 이는 세밀한 API 호출 그래프 분석을 통해 위험하고 오래된 라이브러리 버전을 식별하는 버그 기반 경고 시스템을 제안하며, 인기 있는 라이브러리 릴리스의 31.6%가 심각한 버그를 포함하고 있고, 개발자들이 이를 안전하게 업데이트할 수 있는 실질적인 신호를 확보하지 못하고 있음을 입증한다.
Third-party libraries are a central building block to develop software systems. However, outdated third-party libraries are commonly used, and developers are usually less aware of the potential risks. Therefore, a quantitative and holistic study on usages, updates and risks of third-party libraries can provide practical insights to improve the ecosystem sustainably. In this paper, we conduct such a study in the Java ecosystem. Specifically, we conduct a library usage analysis (e.g., usage intensity and outdatedness) and a library update analysis (e.g., update intensity and delay) using 806 open-source projects. The two analyses aim to quantify usage and update practices holistically from the perspective of both open-source projects and third-party libraries. Then, we conduct a library risk analysis (e.g., potential risk and developer response) in terms of bugs with 15 popularly-used third-party libraries. This analysis aims to quantify the potential risk of using outdated libraries and the developer response to the risk. Our findings from the three analyses provide practical insights to developers and researchers on problems and potential solutions in maintaining third-party libraries (e.g., smart alerting and automated updating of outdated libraries). To demonstrate the usefulness of our findings, we propose a bug-driven alerting system for assisting developers to make confident decisions in updating third-party library versions. We have released our dataset to foster valuable applications and improve the ecosystem.
연구 동기 및 목표
- 자바 오픈소스 프로젝트에서 제3자 라이브러리의 실제 사용 및 업데이트 패턴을 이해하기 위해.
- 특히 시스템 안정성에 영향을 줄 수 있는 보안 외 버그를 포함한 오래된 라이브러리 버전과 관련된 위험을 정량화하기 위해.
- 개발자들이 언제이고 어떤 라이브러리를 업데이트할지 결정하는 데 도움이 되는 실질적이고 세밀한 경고가 부족한 문제를 해결하기 위해.
- 라이브러리 유지보수 및 생태계 지속 가능성 향상을 위한 실증적 증거와 실용적 통찰을 제공하기 위해.
- 실제 코드 영향을 기반으로 위험 인식 업데이트를 우선시하는 프로토타입 경고 시스템을 개발하고 구현하기 위해.
제안 방법
- 806개의 오픈소스 자바 프로젝트와 13,565개의 제3자 라이브러리에서 라이브러리 사용 및 업데이트 관행에 대한 정량적 분석을 수행했다.
- 프로젝트 내에서 실제로 호출되는지 여부를 식별하기 위해 API 사용을 추적하고, 버그가 있거나 변경된 메서드가 실제로 호출되는지 파악하기 위해, 버전화된 생태계 수준의 호출 그래프를 구축했다.
- 혼합 방법 위험 분석을 수행했다: 15개의 인기 있는 라이브러리의 릴리스 이력과 버그 보고서에 대한 정량적 분석에 더하여, 개발자의 반응을 평가하기 위한 인간 연구도 수행했다.
- 실제로 프로젝트에서 사용되는 심각한 보안 외 버그가 존재하는 경우, 오래된 라이브러리 버전을 경고하는 프로토타입 경고 시스템을 설계했다.
- 정적 및 동적 분석 기법을 사용하여, 라이브러리 버전의 변경 사항(예: 버그 수정, API 변경)이 프로젝트 코드에 의미 있는 영향을 미치는지 평가했다.
- 결과를 실용적인 시스템에 통합하여, 개발자들이 업데이트 결정을 내리는 데 설득력 있고 세밀한 신호를 제공했다.
실험 결과
연구 질문
- RQ1RQ1: 자바 프로젝트에서 제3자 라이브러리의 사용 강도와 사용의 오래됨 정도는 어떠한가?
- RQ2RQ2: 다양한 프로젝트 간 제3자 라이브러리의 업데이트 강도와 업데이트 지연 정도는 어떠한가?
- RQ3RQ3: 오래된 제3자 라이브러리를 사용할 경우 잠재적인 위험은 무엇이며, 개발자들은 이러한 위험에 어떻게 반응하는가?
- RQ4RQ4: 버그가 있는 라이브러리 버전을 업데이트할 때 개발자가 정보 기반 결론을 내릴 수 있도록 도와주는 실용적인 경고 시스템을 어떻게 구축할 수 있는가?
주요 결과
- 제3자 라이브러리의 77.4%는 오직 한 개의 오픈소스 프로젝트에서만 사용되며, 이는 높은 분산성과 낮은 재사용성을 나타낸다.
- 라이브러리의 약 60.0%는 모든 프로젝트에서 최대 2%의 API만 호출되며, 이는 대부분의 라이브러리 기능이 실제로 사용되지 않는다는 것을 암시한다.
- 38.0%의 프로젝트가 최신 릴리스에서 10개 이상의 버전이 뒤진 라이브러리를 사용하고 있어, 광범위한 오래됨 현상을 보여준다.
- 54.9%의 프로젝트가 라이브러리 종속성의 절반 이상을 업데이트하지 않아, 유지보수 관행이 열악함을 드러낸다.
- 50.5%의 프로젝트가 평균적으로 60일 이상의 업데이트 지연을 경험하며, 더 안전한 신규 릴리스를 채택하는 데 상당한 지연이 있음을 보여준다.
- 15개의 인기 있는 라이브러리 릴리스 중 31.6%가 심각한 버그를 포함하고 있으며, 이러한 버그 중 많은 부분이 실제 프로젝트에서 발생하고 있어 오래된 릴리스 사용의 위험성을 강조한다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.