เนื้อหาในเว็บไซต์นี้ได้รับการแปลโดยใช้ปัญญาประดิษฐ์ (AI) หรือเทคโนโลยีการแปลด้วยเครื่อง และอาจมีข้อผิดพลาด

Skip to content
Systems

การจัดการการพึ่งพาที่ยืดหยุ่นและเหมาะสมที่สุดผ่าน Max-SMT

Author

โดนัลด์ พิงค์นีย์ (นอร์ธอีสเทิร์น), เฟเดริโก คาสซาโน (นอร์ธอีสเทิร์น), อรชุน กูฮา, โจนาธาน เบลล์ (นอร์ธอีสเทิร์น), มัสซิมิเลียโน คัลโป (อิสระ), ทอดด์ แกมบลิน (ห้องปฏิบัติการแห่งชาติลอว์เรนซ์ ลิเวอร์มอร์)

Venue

การประชุมวิชาการนานาชาติ IEEE/ACM ด้านวิศวกรรมซอฟต์แวร์ (ICSE), 2023

Abstract

ผู้จัดการแพ็กเกจเช่น NPM ได้กลายเป็นสิ่งจำเป็นสำหรับการพัฒนาซอฟต์แวร์. คลังแพ็กเกจของ NPM มีแพ็กเกจให้บริการมากกว่า 2 ล้านตัว และให้บริการดาวน์โหลดมากกว่า 43,000 ล้านครั้งทุกสัปดาห์. อย่างน่าเสียดายที่ตัวแก้ปัญหาการพึ่งพาของ NPM มีข้อบกพร่องหลายประการ. 1) NPM มีความโลภ และมักล้มเหลวในการติดตั้งเวอร์ชันล่าสุดของแพ็กเกจที่พึ่งพา; 2) อัลกอริทึมของ NPM นำไปสู่การมี dependency ซ้ำซ้อนและโค้ดที่พองตัว ซึ่งส่งผลเสียอย่างยิ่งต่อเว็บแอปพลิเคชันที่ต้องการลดขนาดโค้ดให้น้อยที่สุด 3) อัลกอริทึมในการแก้ไขช่องโหว่ของ NPM ก็มีความโลภเช่นกัน และอาจทำให้เกิดช่องโหว่ใหม่ได้ 4) ความสามารถของ NPM ในการทำซ้ำ dependency สามารถทำให้เฟรมเวิร์กที่มีสถานะ (stateful) ทำงานผิดพลาดได้ และต้องใช้ความระมัดระวังอย่างมากในการแก้ไขปัญหา แม้ว่าเครื่องมือที่มีอยู่พยายามแก้ไขปัญหาเหล่านี้ แต่พวกมันมักจะเปราะบาง พึ่งพาการเปลี่ยนแปลงย้อนหลังในต้นไม้การพึ่งพา ไม่รับประกันความเหมาะสมที่สุด หรือไม่สามารถรวมกันได้ เราขอนำเสนอ Pacsolve ซึ่งเป็นกรอบการทำงานและการใช้งานที่รวมการแก้ปัญหาการพึ่งพาเข้าด้วยกัน ซึ่งอนุญาตให้มีข้อจำกัดและเป้าหมายการปรับให้เหมาะสมที่ปรับแต่งได้ เราใช้ Pacsolve เพื่อสร้าง Maxnpm ซึ่งเป็นตัวแทนที่สมบูรณ์และสามารถแทนที่ NPM ได้ทันที ซึ่งช่วยให้ผู้พัฒนาสามารถรวมวัตถุประสงค์หลายอย่างเมื่อติดตั้งการพึ่งพา เราประเมิน Maxnpm ด้วยตัวอย่างขนาดใหญ่ของแพ็กเกจจากระบบนิเวศ NPM และแสดงให้เห็นว่ามันสามารถ: 1) ลดช่องโหว่ในแพ็กเกจที่พึ่งพาได้มากกว่าเครื่องมือตรวจสอบของ NPM ใน 33% ของกรณี; 2) เลือกแพ็กเกจที่พึ่งพาที่ใหม่กว่า NPM ใน 14% ของกรณี; และ 3) เลือกแพ็กเกจที่พึ่งพาน้อยกว่า NPM ใน 21% ของกรณี โค้ดและข้อมูลทั้งหมดของเราเปิดเผยและพร้อมใช้งาน