मैक्स-एसएमटी के माध्यम से लचीला और इष्टतम निर्भरता प्रबंधन
Author
Venue
आईईईई/एसीएम अंतर्राष्ट्रीय सम्मेलन ऑन सॉफ्टवेयर इंजीनियरिंग (ICSE), 2023
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 की तुलना में कम निर्भरताएँ चुनता है। हमारा सारा कोड और डेटा खुला और उपलब्ध है।
