Konten di situs ini telah diterjemahkan menggunakan kecerdasan buatan (AI) atau teknologi penerjemahan mesin, dan mungkin terdapat kesalahan.

Skip to content
Systems

Pengelolaan Ketergantungan yang Fleksibel dan Optimal melalui Max-SMT

Author

Donald Pinckney (Northeastern), Federico Cassano (Northeastern), Arjun Guha, Jonathan Bell (Northeastern), Massimiliano Culpo (peneliti independen), Todd Gamblin (Lawrence Livermore National Lab)

Venue

Konferensi Internasional IEEE/ACM tentang Rekayasa Perangkat Lunak (ICSE), 2023

Abstract

Manajer paket seperti NPM telah menjadi hal yang sangat penting dalam pengembangan perangkat lunak. Repositori NPM menampung lebih dari 2 juta paket dan melayani lebih dari 43 miliar unduhan setiap minggu. Sayangnya, pemecah ketergantungan NPM memiliki beberapa kekurangan. 1) NPM bersifat rakus dan sering gagal menginstal versi terbaru dari ketergantungan; 2) Algoritma NPM menyebabkan duplikasi dependensi dan kode yang membengkak, yang sangat merugikan bagi aplikasi web yang perlu meminimalkan ukuran kode; 3) Algoritma perbaikan kerentanan NPM juga bersifat rakus, dan bahkan dapat memperkenalkan kerentanan baru; serta 4) Kemampuan NPM untuk menduplikasi dependensi dapat merusak kerangka kerja berstatus dan memerlukan banyak perhatian untuk diatasi. Meskipun alat yang ada mencoba mengatasi masalah ini, alat-alat tersebut rentan, bergantung pada perubahan pasca-instalasi pada pohon dependensi, tidak menjamin keoptimalan, atau tidak dapat diintegrasikan. Kami memperkenalkan Pacsolve, sebuah kerangka kerja dan implementasi terpadu untuk pemecahan dependensi yang memungkinkan batasan dan tujuan optimasi yang dapat disesuaikan. Kami menggunakan Pacsolve untuk membangun Maxnpm, pengganti lengkap dan siap pakai untuk NPM, yang memberdayakan pengembang untuk menggabungkan berbagai tujuan saat menginstal dependensi. Kami mengevaluasi Maxnpm dengan sampel besar paket dari ekosistem NPM dan menunjukkan bahwa Maxnpm dapat: 1) mengurangi lebih banyak kerentanan dalam dependensi daripada alat audit NPM dalam 33% kasus; 2) memilih dependensi yang lebih baru daripada NPM dalam 14% kasus; dan 3) memilih dependensi yang lebih sedikit daripada NPM dalam 21% kasus. Semua kode dan data kami terbuka dan tersedia.