บันทึกการวิจัย

การสร้างโค้ดภายใต้ข้อจำกัดสำหรับวิศวกรรมซอฟต์แวร์

การจำแนกเชิงปฏิบัติระหว่างข้อจำกัดด้านไวยากรณ์ ข้อจำกัดด้านชนิด ขอบเขตการคงสภาพ และการตรวจรับระดับพฤติกรรมสำหรับโค้ดที่สร้างขึ้น

แชร์บันทึกการวิจัยนี้แชร์

คำตอบโดยตรง

การสร้างโค้ดแบบมีข้อจำกัดรับประกันสิ่งใดในกระบวนงานวิศวกรรมซอฟต์แวร์

รับประกันได้เฉพาะคุณสมบัติที่ข้อจำกัดบังคับใช้อย่างชัดเจนเท่านั้น การถอดรหัสที่มีไวยากรณ์เป็นข้อจำกัดสามารถรับประกันว่าผลลัพธ์อยู่ในไวยากรณ์ ส่วนวิธีที่คำนึงถึงชนิดข้อมูลสามารถมุ่งรักษาความถูกต้องของชนิดข้อมูล แต่ไม่มีวิธีใดเพียงลำพังที่พิสูจน์ความถูกต้องของงาน ความสมมูลเชิงความหมาย การคงรักษาพฤติกรรม หรือความเฉพาะที่ของการแก้ไขได้

เหตุผลที่ความแตกต่างนี้สำคัญ

วิธีการและหลักประกันที่กล่าวอ้างต้องอ้างอิงขอบเขตที่สังเกตได้เดียวกัน

คำว่า “มีข้อจำกัด” ยังไม่สมบูรณ์จนกว่าจะระบุคุณสมบัติที่ถูกจำกัด ตัวถอดรหัสอาจบังคับใช้วากยสัมพันธ์ ตัวตรวจสอบชนิดอาจจำกัดส่วนต่อที่ถูกต้อง เครื่องมือแก้ไขอาจปกป้องบริเวณที่เลือก และกระบวนงานซ่อมแซมอาจยอมรับเฉพาะตัวเลือกที่ผ่านการทดสอบ กลไกเหล่านี้แก้ปัญหาคนละประเภท

การประเมินที่มีประโยชน์จึงต้องทำให้กลไกควบคุมสอดคล้องกับสิ่งที่อ้างว่ารับประกัน การผ่านตัวแจงเป็นหลักฐานที่เกี่ยวข้องกับวากยสัมพันธ์ แต่ไม่ใช่หลักฐานว่าโปรแกรมตอบสนองคำขอหรือคงพฤติกรรมนอกบริเวณที่แก้ไข

กระบวนการเชิงปฏิบัติ

  1. ระบุคุณสมบัติที่ต้องการ

    พิจารณาว่าข้อกำหนดเกี่ยวข้องกับไวยากรณ์ ชนิดข้อมูล APIs ความเฉพาะบริเวณของซอร์สโค้ด คุณสมบัติคงตัวเชิงโครงสร้าง การทดสอบ หรือข้อตกลงอื่นที่สังเกตได้

  2. เลือกจุดบังคับใช้

    บังคับใช้ข้อจำกัดระหว่างการถอดรหัสเมื่อทำได้ หรือใช้วิธีเสนอผลลัพธ์แล้วตรวจสอบ หากสมบัตินั้นตรวจได้เฉพาะหลังการสร้าง

  3. แยกการตรวจสอบเพื่อยอมรับผลออกจากกัน

    ทดสอบความสำเร็จของงานและคุณสมบัติที่ได้รับการปกป้อง แม้ตัวถอดรหัสจะรับประกันวากยสัมพันธ์หรือชนิดข้อมูลอยู่แล้ว

  4. รายงานพฤติกรรมการปฏิเสธและความล้มเหลว

    วิธีการที่มีข้อจำกัดควรเปิดเผยความถี่ที่ตัวเลือกถูกปฏิเสธ ระบุว่ายังสามารถเข้าถึงคำตอบที่ถูกต้องได้หรือไม่ และสิ่งใดที่ยังไม่ได้ตรวจสอบ

หลักฐานที่ต้องกำหนดให้มี

ความหนักแน่นของข้ออ้างขึ้นอยู่กับสมบัติที่วัดภายหลังการสร้างหรือการถอดรหัส

  • ระบุคุณสมบัติที่ถูกจำกัดในรูปที่สังเกตได้
  • แยกกลไกการบังคับใช้กับการตรวจสอบภายหลังการสร้างออกจากกัน
  • ความถูกต้องของวากยสัมพันธ์หรือชนิดข้อมูลไม่ได้ถูกนำเสนอว่าเป็นความถูกต้องเชิงหน้าที่
  • วัดความเฉพาะที่โดยตรงเมื่อข้อกล่าวอ้างครอบคลุมถึงการที่โค้ดคงเดิม
  • มีการรายงานความล้มเหลวของข้อจำกัด อัตราการปฏิเสธ และอัตราความสำเร็จของงาน

สิ่งที่งานวิจัยซึ่งเชื่อมโยงไว้รายงาน

  • งานศึกษาตัวแปรแฝงแบบลำดับชั้นที่เชื่อมโยงไว้ตรึงโค้ดที่เรียนรู้บางตำแหน่ง และวัดอัตราการแจงส่วนหลังถอดรหัส เสรีภาพในการแก้ไข และความหลากหลาย
  • นี่คือการทดลองควบคุมบางส่วนที่ตรวจสอบได้ มิใช่การรับประกันอย่างเป็นทางการด้านไวยากรณ์ ชนิด ความหมาย หรือพฤติกรรม
  • คุณค่าของงานนี้ต่อกระบวนงานแบบมีข้อจำกัดอยู่ที่ส่วนควบคุมซึ่งระบุอย่างชัดเจนและระเบียบวิธีการวัด มิใช่ข้ออ้างว่าการตรึงตัวแปรแฝงทดแทนการตรวจสอบความถูกต้องอย่างเป็นทางการได้

อ่านภาพรวมสิ่งพิมพ์ ค้นหาในเนื้อหาฉบับเต็มของบทความ

ขอบเขตของการศึกษา

  • ข้อจำกัดต่างชนิดอาจขัดแย้งกัน การจำกัดที่เข้มงวดยิ่งขึ้นอาจตัดคำตอบที่ถูกต้องออกหรือลดความหลากหลายของการสร้าง
  • การทดสอบหลังการสร้างให้หลักฐานได้เฉพาะพฤติกรรมที่การทดสอบนั้นครอบคลุม
  • บทความที่เชื่อมโยงไว้ไม่ได้ประเมินการถอดรหัสภายใต้ข้อจำกัดเชิงรูปนัย หรือการซ่อมแซมซอฟต์แวร์ระดับคลังโค้ด
เปรียบเทียบการสร้างภายใต้ข้อจำกัดกับการแก้ไขและการซ่อมแซม

แหล่งข้อมูลหลักและงานที่เกี่ยวข้อง

โปรดอ้างอิงบทความที่เชื่อมโยงไว้สำหรับวิธีการดั้งเดิม การวัด และข้อจำกัดที่ระบุ

  1. Inspectable Control for Structure-Preserving Software Regeneration

    บทความหลักของเว็บไซต์ว่าด้วยการควบคุมบางส่วนที่ตรวจสอบได้ในปริภูมิแฝงแบบลำดับชั้น

  2. Constrained Decoding of Diffusion LLMs with Context-Free Grammars

    ข้อจำกัดทางไวยากรณ์ที่นิยามอย่างเป็นทางการระหว่างการถอดรหัสดิฟฟิวชัน

  3. Type-Constrained Code Generation with Language Models

    ข้อจำกัดที่ตระหนักถึงชนิดสำหรับการสร้างโค้ดด้วยแบบจำลองภาษา

ดูแลโดย . หน้านี้สรุปหลักฐานที่มีอยู่และไม่ได้เพิ่มผลการทดลองใดนอกเหนือจากแหล่งอ้างอิง

ดูบันทึกวิจัยทั้งหมด