Max-SMT-এর মাধ্যমে নমনীয় ও সর্বোত্তম নির্ভরতা ব্যবস্থাপনা
Author
Venue
আইইইই/এসিএম আন্তর্জাতিক সফটওয়্যার ইঞ্জিনিয়ারিং সম্মেলন (আইসিএসই), ২০২৩
Abstract
NPM-এর মতো প্যাকেজ ম্যানেজারগুলো সফটওয়্যার ডেভেলপমেন্টের জন্য অপরিহার্য হয়ে উঠেছে। NPM রিপোজিটরিতে ২ মিলিয়নেরও বেশি প্যাকেজ রয়েছে এবং এটি প্রতি সপ্তাহে ৪৩ বিলিয়নেরও বেশি ডাউনলোড সরবরাহ করে। দুর্ভাগ্যবশত, NPM-এর ডিপেনডেন্সি সলভারটির বেশ কিছু ত্রুটি রয়েছে। 1) NPM লোভী এবং প্রায়ই ডিপেনডেন্সির নতুনতম সংস্করণ ইনস্টল করতে ব্যর্থ হয়; 2) NPM-এর অ্যালগরিদমের কারণে নির্ভরতাগুলো দ্বিগুণ হয়ে যায় এবং কোড ফুলে ওঠে, যা বিশেষ করে ওয়েব অ্যাপ্লিকেশনগুলোর জন্য ক্ষতিকর, যেগুলো কোডের আকার সর্বনিম্ন রাখতে চায়; 3) NPM-এর ভলিউনারেবিলিটি ফিক্সিং অ্যালগরিদমটিও লোভী, এবং এটি নতুন ভলিউনারেবিলিটিও সৃষ্টি করতে পারে; এবং 4) নির্ভরতাগুলো দ্বিগুণ করার NPM-এর ক্ষমতা স্টেটফুল ফ্রেমওয়ার্কগুলো ভেঙে দিতে পারে এবং এর বিকল্প খুঁজে পেতে প্রচুর যত্ন প্রয়োজন। যদিও বিদ্যমান টুলগুলো এই সমস্যাগুলো সমাধানের চেষ্টা করে, সেগুলো বা তো ভাঙনশীল, বা নির্ভরশীলতা বৃক্ষের পরবর্তী পরিবর্তনের ওপর নির্ভর করে, বা সর্বোত্তমতার নিশ্চয়তা দেয় না, বা যৌগিক নয়। আমরা Pacsolve উপস্থাপন করছি, একটি একীভূত ফ্রেমওয়ার্ক ও বাস্তবায়ন যা নির্ভরশীলতা সমাধানের জন্য কাস্টমাইজযোগ্য সীমাবদ্ধতা ও অপ্টিমাইজেশন লক্ষ্য নির্ধারণের সুযোগ দেয়। Pacsolve ব্যবহার করে আমরা Maxnpm তৈরি করেছি, যা NPM-এর সম্পূর্ণ, ড্রপ-ইন বিকল্প, যা ডেভেলপারদের ইনস্টল করার সময় একাধিক উদ্দেশ্য একসঙ্গে বাস্তবায়ন করার ক্ষমতা দেয়। আমরা NPM ইকোসিস্টেমের প্যাকেজের একটি বৃহৎ নমুনা ব্যবহার করে Maxnpm-এর মূল্যায়ন করেছি এবং দেখিয়েছি যে এটি: ১) ৩৩% ক্ষেত্রে NPM-এর অডিটিং টুলের তুলনায় নির্ভরতায় আরও দুর্বলতা কমাতে পারে; ২) ১৪% ক্ষেত্রে NPM-এর তুলনায় নতুন নির্ভরতা বেছে নেয়; এবং ৩) ২১% ক্ষেত্রে NPM-এর তুলনায় কম নির্ভরতা বেছে নেয়। আমাদের সমস্ত কোড এবং ডেটা উন্মুক্ত এবং উপলব্ধ।
