Max-SMT aracılığıyla Esnek ve Optimal Bağımlılık Yönetimi
Author
Venue
IEEE/ACM Uluslararası Yazılım Mühendisliği Konferansı (ICSE), 2023
Abstract
NPM gibi paket yöneticileri, yazılım geliştirme için vazgeçilmez hale gelmiştir. NPM deposu 2 milyondan fazla paketi barındırır ve her hafta 43 milyardan fazla indirme işlemine hizmet eder. Ne yazık ki, NPM bağımlılık çözücüsünün birkaç eksikliği vardır. 1) NPM açgözlüdür ve genellikle bağımlılıkların en yeni sürümlerini yükleyemez; 2) NPM'nin algoritması, bağımlılıkların yinelenmesine ve kodun şişmesine yol açar; bu durum, kod boyutunu en aza indirmesi gereken web uygulamaları için özellikle kötüdür; 3) NPM'nin güvenlik açığı düzeltme algoritması da açgözlüdür ve hatta yeni güvenlik açıklarına yol açabilir; ve 4) NPM'nin bağımlılıkları yineleme özelliği, durum bilgisi olan çerçeveleri bozabilir ve bu sorunu aşmak için çok dikkatli olunması gerekir. Mevcut araçlar bu sorunları çözmeye çalışsa da ya kırılgandır, bağımlılık ağacında sonradan yapılan değişikliklere dayanır, optimaliteyi garanti etmez ya da birleştirilemez. Özelleştirilebilir kısıtlamalar ve optimizasyon hedeflerine izin veren, bağımlılık çözümü için birleştirici bir çerçeve ve uygulama olan Pacsolve'u sunuyoruz. Pacsolve'u, geliştiricilerin bağımlılıkları yüklerken birden fazla hedefi birleştirmelerine olanak tanıyan, NPM'nin eksiksiz ve hazır bir yedeği olan Maxnpm'yi oluşturmak için kullanıyoruz. Maxnpm'yi NPM ekosisteminden alınan geniş bir paket örneklemi ile değerlendiriyoruz ve şunu gösteriyoruz: 1) vakaların %33'ünde bağımlılıklardaki güvenlik açıklarını NPM'nin denetim aracından daha fazla azaltabilir; 2) vakaların %14'ünde NPM'den daha yeni bağımlılıklar seçer; ve 3) vakaların %21'inde NPM'den daha az bağımlılık seçer. Tüm kod ve verilerimiz açıktır ve erişime açıktır.
