Max-SMT ద్వారా సరళమైన మరియు సరైన ఆధారాల నిర్వహణ
Author
Venue
IEEE/ACM అంతర్జాతీయ సాఫ్ట్వేర్ ఇంజనీరింగ్ సమావేశం (ICSE), 2023
Abstract
NPM వంటి ప్యాకేజీ మేనేజర్లు సాఫ్ట్వేర్ అభివృద్ధికి అత్యవసరమయ్యాయి. NPM రిపోజిటరీ 2 మిలియన్లకు పైగా ప్యాకేజీలను హోస్ట్ చేస్తుంది మరియు ప్రతి వారం 43 బిలియన్లకు పైగా డౌన్లోడ్లను అందిస్తుంది. దురదృష్టవశాత్తు, NPM డిపెండెన్సీ సాల్వర్లో అనేక లోపాలు ఉన్నాయి. 1) NPM గ్రీడీగా ఉంటుంది మరియు తరచుగా డిపెండెన్సీల యొక్క సరికొత్త వెర్షన్లను ఇన్స్టాల్ చేయడంలో విఫలమవుతుంది; 2) NPM యొక్క అల్గారిథమ్ డూప్లికేట్ డిపెండెన్సీలకు మరియు పెరిగిన కోడ్కు దారితీస్తుంది, ఇది కోడ్ పరిమాణాన్ని తగ్గించుకోవాల్సిన వెబ్ అప్లికేషన్లకు ప్రత్యేకంగా హానికరం; 3) NPM యొక్క వల్నరబిలిటీ ఫిక్సింగ్ అల్గారిథమ్ కూడా గ్రీడీగా ఉంటుంది, మరియు కొత్త వల్నరబిలిటీలను కూడా పరిచయం చేయగలదు; మరియు 4) డిపెండెన్సీలను డూప్లికేట్ చేసే NPM యొక్క సామర్థ్యం స్టేట్ఫుల్ ఫ్రేమ్వర్క్లను బ్రేక్ చేయగలదు మరియు దానిని అధిగమించడానికి చాలా జాగ్రత్త అవసరం. ఇప్పటికే ఉన్న సాధనాలు ఈ సమస్యలను పరిష్కరించడానికి ప్రయత్నించినప్పటికీ, అవి లేదా బలహీనంగా ఉంటాయి, డిపెండెన్సీ ట్రీకి తర్వాత చేసే మార్పులపై ఆధారపడతాయి, ఉత్తమమైన ఫలితానికి హామీ ఇవ్వవు, లేదా కలపడానికి వీలుగా ఉండవు. మేము పాక్సోల్వ్ (Pacsolve)ను పరిచయం చేస్తున్నాము, ఇది డిపెండెన్సీ పరిష్కారం కోసం ఒక ఏకీకృత ఫ్రేమ్వర్క్ మరియు అమలు, ఇది అనుకూలీకరించదగిన పరిమితులు మరియు ఆప్టిమైజేషన్ లక్ష్యాలకు అనుమతిస్తుంది. మేము పాక్సోల్వ్ను ఉపయోగించి మాక్స్ఎన్పిఎం (Maxnpm)ను నిర్మించాము, ఇది NPMకు పూర్తి, డ్రాప్-ఇన్ రీప్లేస్మెంట్, ఇది డిపెండెన్సీలను ఇన్స్టాల్ చేసేటప్పుడు బహుళ లక్ష్యాలను కలపడానికి డెవలపర్లకు అధికారం ఇస్తుంది. మేము NPM ఎకోసిస్టమ్ నుండి ప్యాకేజీల యొక్క పెద్ద నమూనాతో Maxnpmను మూల్యాంకనం చేసాము మరియు ఇది: 1) 33% సందర్భాల్లో NPM యొక్క ఆడిటింగ్ సాధనం కంటే డిపెండెన్సీలలోని ఎక్కువ బలహీనతలను తగ్గించగలదని; 2) 14% సందర్భాల్లో NPM కంటే కొత్త డిపెండెన్సీలను ఎంచుకుంటుందని; మరియు 3) 21% సందర్భాల్లో NPM కంటే తక్కువ డిపెండెన్సీలను ఎంచుకుంటుందని చూపించాము. మా కోడ్ మరియు డేటా అంతా ఓపెన్ మరియు అందుబాటులో ఉంది.
