Max-SMT द्वारे लवचिक आणि सर्वोत्तम अवलंबित्व व्यवस्थापन
Author
Venue
IEEE/ACM आंतरराष्ट्रीय सॉफ्टवेअर अभियांत्रिकी परिषद (ICSE), २०२३
Abstract
NPM सारखे पॅकेज मॅनेजर सॉफ्टवेअर विकासासाठी अत्यावश्यक झाले आहेत. NPM रिपॉझिटरीमध्ये 2 दशलक्षाहून अधिक पॅकेजेस आहेत आणि ती दर आठवड्याला 43 अब्जाहून अधिक डाउनलोड पुरवते. दुर्दैवाने, NPM च्या अवलंबित्व सोडवणुकीत अनेक कमतरता आहेत. 1) NPM लालची आहे आणि अनेकदा अवलंबित्वांच्या नवीनतम आवृत्त्या स्थापित करण्यात अपयशी ठरते; 2) NPM चा अल्गोरिदम पुनरावृत्त अवलंबित्व आणि फुगलेला कोड निर्माण करतो, जे कोड आकार कमी ठेवण्याची गरज असलेल्या वेब अनुप्रयोगांसाठी विशेषतः हानिकारक आहे; 3) NPM चे भेद्यता दुरुस्ती अल्गोरिदमही लालची आहे आणि नवीन भेद्यता निर्माण करू शकते; आणि 4) अवलंबित्व पुनरावृत्त करण्याची NPM ची क्षमता स्टेटफुल फ्रेमवर्कमध्ये अडचणी निर्माण करू शकते आणि त्यावर उपाय करण्यासाठी बरीच काळजी घ्यावी लागते. जरी विद्यमान साधने या समस्या सोडवण्याचा प्रयत्न करतात, तरी ती नाजूक असतात, अवलंबित्व वृक्षात नंतर होणाऱ्या बदलांवर अवलंबून असतात, सर्वोत्तमतेची हमी देत नाहीत, किंवा एकत्रित करता येत नाहीत. आम्ही Pacsolve सादर करतो, जे अवलंबित्व सोडवण्यासाठी एक एकत्रित फ्रेमवर्क आणि अंमलबजावणी आहे, ज्यामुळे सानुकूल करण्यायोग्य बंधने आणि अनुकूलन उद्दिष्टे ठरवता येतात. आम्ही Pacsolve वापरून Maxnpm तयार करतो, जे NPM साठी एक संपूर्ण, थेट वापरता येणारे पर्यायी साधन आहे, जे विकासकांना अवलंबित्व स्थापित करताना एकापेक्षा जास्त उद्दिष्टे एकत्र करण्याची क्षमता देते. आम्ही NPM इकोसिस्टममधील पॅकेजेसच्या मोठ्या नमुन्यासह Maxnpm चे मूल्यांकन करतो आणि दाखवतो की ते: 1) 33% प्रकरणांमध्ये NPM च्या ऑडिटिंग टूलपेक्षा डिपेन्डन्सीमधील अधिक असुरक्षितता कमी करू शकते; 2) 14% प्रकरणांमध्ये NPM पेक्षा नवीन डिपेन्डन्सी निवडते; आणि 3) 21% प्रकरणांमध्ये NPM पेक्षा कमी डिपेन्डन्सी निवडते. आमचा सर्व कोड आणि डेटा ओपन असून उपलब्ध आहे.
