이 사이트의 콘텐츠는 인공지능(AI) 또는 기계 번역 기술을 사용하여 번역되었으며 오류가 있을 수 있습니다.

Skip to content
Systems

Max-SMT를 통한 유연하고 최적화된 종속성 관리

Author

도널드 핀크니(노스이스턴 대학교), 페데리코 카사노(노스이스턴 대학교), 아르준 구하, 조나단 벨(노스이스턴 대학교), 마시밀리아노 쿨포(독립 연구원), 토드 갬블린(로렌스 리버모어 국립 연구소)

Venue

IEEE/ACM 국제 소프트웨어 공학 컨퍼런스(ICSE), 2023

Abstract

NPM과 같은 패키지 관리자는 소프트웨어 개발에 필수적인 요소가 되었습니다. NPM 저장소에는 200만 개 이상의 패키지가 호스팅되어 있으며 매주 430억 건 이상의 다운로드가 이루어집니다. 안타깝게도 NPM의 종속성 해결기(dependency solver)에는 몇 가지 단점이 있습니다. 1) NPM은 탐욕적(greedy)이어서 종속성의 최신 버전을 설치하지 못하는 경우가 많습니다; 2) NPM의 알고리즘은 의존성 중복과 코드 부풀림을 초래하며, 이는 코드 크기를 최소화해야 하는 웹 애플리케이션에 특히 치명적입니다; 3) NPM의 취약점 수정 알고리즘 또한 탐욕적이어서 새로운 취약점을 유발할 수도 있습니다; 그리고 4) NPM의 의존성 중복 기능은 상태 기반 프레임워크를 손상시킬 수 있으며, 이를 우회하기 위해 많은 주의가 필요합니다. 기존 도구들은 이러한 문제를 해결하려 시도하지만, 불안정하거나 의존성 트리에 대한 사후 변경에 의존하거나, 최적성을 보장하지 못하거나, 조합이 불가능한 경우가 많습니다. 우리는 사용자 정의 제약 조건과 최적화 목표를 허용하는 의존성 해결을 위한 통합 프레임워크이자 구현체인 Pacsolve를 제시합니다. 우리는 Pacsolve를 사용하여 NPM을 완벽하게 대체할 수 있는 Maxnpm을 구축했으며, 이를 통해 개발자는 의존성을 설치할 때 여러 목표를 결합할 수 있게 되었습니다. 우리는 NPM 생태계의 방대한 패키지 샘플을 대상으로 Maxnpm을 평가한 결과, 다음과 같은 성능을 확인했습니다: 1) 33%의 사례에서 NPM의 감사 도구보다 더 많은 의존성 취약점을 감소시킵니다; 2) 14%의 사례에서 NPM보다 최신 버전의 의존성을 선택합니다; 3) 21%의 사례에서 NPM보다 적은 수의 의존성을 선택합니다. 모든 소스 코드와 데이터는 공개되어 있으며 누구나 이용할 수 있습니다.