บันทึกการวิจัย
การสร้างโค้ดภายใต้ข้อจำกัดสำหรับวิศวกรรมซอฟต์แวร์
การจำแนกเชิงปฏิบัติระหว่างข้อจำกัดด้านไวยากรณ์ ข้อจำกัดด้านชนิด ขอบเขตการคงสภาพ และการตรวจรับระดับพฤติกรรมสำหรับโค้ดที่สร้างขึ้น
คำตอบโดยตรง
การสร้างโค้ดแบบมีข้อจำกัดรับประกันสิ่งใดในกระบวนงานวิศวกรรมซอฟต์แวร์
รับประกันได้เฉพาะคุณสมบัติที่ข้อจำกัดบังคับใช้อย่างชัดเจนเท่านั้น การถอดรหัสที่มีไวยากรณ์เป็นข้อจำกัดสามารถรับประกันว่าผลลัพธ์อยู่ในไวยากรณ์ ส่วนวิธีที่คำนึงถึงชนิดข้อมูลสามารถมุ่งรักษาความถูกต้องของชนิดข้อมูล แต่ไม่มีวิธีใดเพียงลำพังที่พิสูจน์ความถูกต้องของงาน ความสมมูลเชิงความหมาย การคงรักษาพฤติกรรม หรือความเฉพาะที่ของการแก้ไขได้
เหตุผลที่ความแตกต่างนี้สำคัญ
วิธีการและหลักประกันที่กล่าวอ้างต้องอ้างอิงขอบเขตที่สังเกตได้เดียวกัน
คำว่า “มีข้อจำกัด” ยังไม่สมบูรณ์จนกว่าจะระบุคุณสมบัติที่ถูกจำกัด ตัวถอดรหัสอาจบังคับใช้วากยสัมพันธ์ ตัวตรวจสอบชนิดอาจจำกัดส่วนต่อที่ถูกต้อง เครื่องมือแก้ไขอาจปกป้องบริเวณที่เลือก และกระบวนงานซ่อมแซมอาจยอมรับเฉพาะตัวเลือกที่ผ่านการทดสอบ กลไกเหล่านี้แก้ปัญหาคนละประเภท
การประเมินที่มีประโยชน์จึงต้องทำให้กลไกควบคุมสอดคล้องกับสิ่งที่อ้างว่ารับประกัน การผ่านตัวแจงเป็นหลักฐานที่เกี่ยวข้องกับวากยสัมพันธ์ แต่ไม่ใช่หลักฐานว่าโปรแกรมตอบสนองคำขอหรือคงพฤติกรรมนอกบริเวณที่แก้ไข
กระบวนการเชิงปฏิบัติ
ระบุคุณสมบัติที่ต้องการ
พิจารณาว่าข้อกำหนดเกี่ยวข้องกับไวยากรณ์ ชนิดข้อมูล APIs ความเฉพาะบริเวณของซอร์สโค้ด คุณสมบัติคงตัวเชิงโครงสร้าง การทดสอบ หรือข้อตกลงอื่นที่สังเกตได้
เลือกจุดบังคับใช้
บังคับใช้ข้อจำกัดระหว่างการถอดรหัสเมื่อทำได้ หรือใช้วิธีเสนอผลลัพธ์แล้วตรวจสอบ หากสมบัตินั้นตรวจได้เฉพาะหลังการสร้าง
แยกการตรวจสอบเพื่อยอมรับผลออกจากกัน
ทดสอบความสำเร็จของงานและคุณสมบัติที่ได้รับการปกป้อง แม้ตัวถอดรหัสจะรับประกันวากยสัมพันธ์หรือชนิดข้อมูลอยู่แล้ว
รายงานพฤติกรรมการปฏิเสธและความล้มเหลว
วิธีการที่มีข้อจำกัดควรเปิดเผยความถี่ที่ตัวเลือกถูกปฏิเสธ ระบุว่ายังสามารถเข้าถึงคำตอบที่ถูกต้องได้หรือไม่ และสิ่งใดที่ยังไม่ได้ตรวจสอบ
หลักฐานที่ต้องกำหนดให้มี
ความหนักแน่นของข้ออ้างขึ้นอยู่กับสมบัติที่วัดภายหลังการสร้างหรือการถอดรหัส
- ระบุคุณสมบัติที่ถูกจำกัดในรูปที่สังเกตได้
- แยกกลไกการบังคับใช้กับการตรวจสอบภายหลังการสร้างออกจากกัน
- ความถูกต้องของวากยสัมพันธ์หรือชนิดข้อมูลไม่ได้ถูกนำเสนอว่าเป็นความถูกต้องเชิงหน้าที่
- วัดความเฉพาะที่โดยตรงเมื่อข้อกล่าวอ้างครอบคลุมถึงการที่โค้ดคงเดิม
- มีการรายงานความล้มเหลวของข้อจำกัด อัตราการปฏิเสธ และอัตราความสำเร็จของงาน
สิ่งที่งานวิจัยซึ่งเชื่อมโยงไว้รายงาน
- งานศึกษาตัวแปรแฝงแบบลำดับชั้นที่เชื่อมโยงไว้ตรึงโค้ดที่เรียนรู้บางตำแหน่ง และวัดอัตราการแจงส่วนหลังถอดรหัส เสรีภาพในการแก้ไข และความหลากหลาย
- นี่คือการทดลองควบคุมบางส่วนที่ตรวจสอบได้ มิใช่การรับประกันอย่างเป็นทางการด้านไวยากรณ์ ชนิด ความหมาย หรือพฤติกรรม
- คุณค่าของงานนี้ต่อกระบวนงานแบบมีข้อจำกัดอยู่ที่ส่วนควบคุมซึ่งระบุอย่างชัดเจนและระเบียบวิธีการวัด มิใช่ข้ออ้างว่าการตรึงตัวแปรแฝงทดแทนการตรวจสอบความถูกต้องอย่างเป็นทางการได้
ขอบเขตของการศึกษา
- ข้อจำกัดต่างชนิดอาจขัดแย้งกัน การจำกัดที่เข้มงวดยิ่งขึ้นอาจตัดคำตอบที่ถูกต้องออกหรือลดความหลากหลายของการสร้าง
- การทดสอบหลังการสร้างให้หลักฐานได้เฉพาะพฤติกรรมที่การทดสอบนั้นครอบคลุม
- บทความที่เชื่อมโยงไว้ไม่ได้ประเมินการถอดรหัสภายใต้ข้อจำกัดเชิงรูปนัย หรือการซ่อมแซมซอฟต์แวร์ระดับคลังโค้ด
แหล่งข้อมูลหลักและงานที่เกี่ยวข้อง
โปรดอ้างอิงบทความที่เชื่อมโยงไว้สำหรับวิธีการดั้งเดิม การวัด และข้อจำกัดที่ระบุ
- Inspectable Control for Structure-Preserving Software Regeneration
บทความหลักของเว็บไซต์ว่าด้วยการควบคุมบางส่วนที่ตรวจสอบได้ในปริภูมิแฝงแบบลำดับชั้น
- Constrained Decoding of Diffusion LLMs with Context-Free Grammars
ข้อจำกัดทางไวยากรณ์ที่นิยามอย่างเป็นทางการระหว่างการถอดรหัสดิฟฟิวชัน
- Type-Constrained Code Generation with Language Models
ข้อจำกัดที่ตระหนักถึงชนิดสำหรับการสร้างโค้ดด้วยแบบจำลองภาษา