กลับไปหน้าบทความ

อ่าน 3 นาที

การตรวจสอบค่าคงที่แบบขยาย

การตรวจสอบแบบคงที่แบบขยาย ( Extended static checking หรือ ESC ) เป็นชื่อเรียกโดยรวมใน วิทยาศาสตร์คอมพิวเตอร์ สำหรับเทคนิคต่างๆ ใน การตรวจสอบ ความถูกต้องของข้อจำกัดโปรแกรมต่างๆ...

การตรวจสอบค่าคงที่แบบขยาย

การตรวจสอบแบบคงที่แบบขยาย ( Extended static checkingหรือESC ) เป็นชื่อเรียกโดยรวมในวิทยาศาสตร์คอมพิวเตอร์สำหรับเทคนิคต่างๆ ในการตรวจสอบความถูกต้องของข้อจำกัดโปรแกรมต่างๆ แบบคงที่[ 1 ] ESC สามารถคิดได้ว่าเป็นรูปแบบที่ขยายของการตรวจสอบประเภทเช่นเดียวกับการตรวจสอบประเภท ESC จะดำเนินการโดยอัตโนมัติในเวลาคอมไพล์ (กล่าวคือโดยไม่ต้องมีการแทรกแซงจากมนุษย์) ซึ่งทำให้แตกต่างจากวิธีการทั่วไปในการตรวจสอบซอฟต์แวร์อย่างเป็นทางการ ซึ่งโดยทั่วไปจะอาศัยการพิสูจน์ที่สร้างขึ้นโดยมนุษย์ ยิ่งไปกว่านั้น ESC ส่งเสริมความเหมาะสมมากกว่าความถูกต้อง โดยมีเป้าหมายเพื่อลดจำนวนผลบวกเท็จ (ข้อผิดพลาดที่ประเมินสูงเกินไปซึ่งไม่ใช่ข้อผิดพลาดจริง กล่าวคือ ESC เข้มงวดเกินไป) อย่างมาก โดยแลกกับการแนะนำ ผลลบ เท็จ บางส่วน (ข้อผิดพลาดที่ประเมินต่ำเกินไปของ ESC จริง แต่ไม่ต้องการความสนใจของโปรแกรมเมอร์ หรือไม่ได้เป็นเป้าหมายของ ESC) [ 2 ] [ 3 ] ESC สามารถระบุข้อผิดพลาดต่างๆ ที่อยู่นอกขอบเขตของตัวตรวจสอบประเภทในปัจจุบัน รวมถึงการหารด้วยศูนย์ การเข้าถึงอาร์เรย์เกินขอบเขตการล้นของจำนวนเต็มและการเข้าถึงค่าว่าง

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

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

การตรวจสอบแบบคงที่แบบขยายได้รับการริเริ่มใน ESC/Modula-3 [ 4 ]และต่อมาในESC/Javaรากฐานของมันมาจากเทคนิคการตรวจสอบแบบคงที่ที่เรียบง่ายกว่า เช่น การดีบักแบบคงที่[ 5 ]หรือlintและFindBugsภาษาอื่นๆ อีกหลายภาษาได้นำ ESC มาใช้ รวมถึง Spec# และSPARKadaและVHDL VSPEC อย่างไรก็ตาม ปัจจุบันยังไม่มีภาษาการเขียนโปรแกรมซอฟต์แวร์ใดที่ใช้กันอย่างแพร่หลายซึ่งมีการตรวจสอบแบบคงที่แบบขยายในสภาพแวดล้อมการพัฒนาพื้นฐาน

ดูเพิ่มเติม

อ่านเพิ่มเติม

  • Cormac Flanagan; K. Rustan M. Leino, Mark Lillibridge, Greg Nelson, James B. Saxe, Raymie Stata (2002). "การตรวจสอบแบบคงที่เพิ่มเติมสำหรับ Java". รายงานการประชุม ACM SIGPLAN 2002 ว่าด้วยการออกแบบและการใช้งานภาษาโปรแกรม . หน้า 234. doi : 10.1145/512529.512558 . ISBN 978-1581134636. S2CID  47141042 .{{cite book}}: CS1 maint: multiple names: authors list ( link )
  • Babic, Domagoj; Hu, Alan J. (2008). "Calysto". รายงานการประชุมวิศวกรรมซอฟต์แวร์นานาชาติครั้งที่ 13 - ICSE '08หน้า 211. doi : 10.1145/1368088.1368118 . ISBN 9781605580791S2CID 62868643 ​
  • Chess, BV (2002). "การปรับปรุงความปลอดภัยของคอมพิวเตอร์โดยใช้การตรวจสอบแบบคงที่ที่ขยายเพิ่มเติม". รายงานการประชุมสัมมนา IEEE ว่าด้วยความปลอดภัยและความเป็นส่วนตัว ปี 2002หน้า  160–173 . CiteSeerX  10.1.1.15.2090 . doi : 10.1109/SECPRI.2002.1004369 . ISBN 978-0-7695-1543-4. S2CID  12067758 .
  • Rioux, Frédéric; Chalin, Patrice (2006). "การปรับปรุงคุณภาพของแอปพลิเคชันองค์กรบนเว็บด้วยการตรวจสอบแบบคงที่เพิ่มเติม: กรณีศึกษา" Electronic Notes in Theoretical Computer Science . 157 (2): 119– 132. doi : 10.1016/j.entcs.2005.12.050 . ISSN  1571-0661 .
  • James, Perry R.; Chalin, Patrice (2009). "การตรวจสอบแบบคงที่ที่ขยายได้ที่รวดเร็วและสมบูรณ์ยิ่งขึ้นสำหรับภาษาการสร้างแบบจำลอง Java" วารสาร การให้เหตุผลอัตโนมัติ44 ( 1– 2): 145– 174. CiteSeerX  10.1.1.165.7920 . doi : 10.1007/s10817-009-9134-9 . ISSN  0168-7433 . S2CID  14996225 .
  • Xu, Dana N. (2006). "การตรวจสอบแบบคงที่เพิ่มเติมสำหรับ Haskell". รายงานการประชุมเชิงปฏิบัติการ ACM SIGPLAN ปี 2006 เกี่ยวกับ Haskellหน้า 48. CiteSeerX  10.1.1.377.3777 . doi : 10.1145/1159842.1159849 . ISBN 978-1595934895. S2CID  1340468 .
  • Leino, K. Rustan M. (2001). "การตรวจสอบแบบคงที่ที่ขยายเพิ่มเติม: มุมมองสิบปี". สารสนเทศศาสตร์ . บันทึกการบรรยายในวิทยาการคอมพิวเตอร์. เล่มที่ 2000. หน้า  157–175 . doi : 10.1007/3-540-44577-3_11 . ISBN 978-3-540-41635-7.
  • Detlefs, David L.; Leino, K. Rustan M.; Nelson, Greg; Saxe, James B. (1998). "การตรวจสอบแบบคงที่แบบขยาย" รายงานการวิจัย Compaq SRC (159).
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Extended_static_checking&oldid=1340488763 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ การตรวจสอบค่าคงที่แบบขยาย

การตรวจสอบแบบคงที่แบบขยาย ( Extended static checking หรือ ESC ) เป็นชื่อเรียกโดยรวมใน วิทยาศาสตร์คอมพิวเตอร์ สำหรับเทคนิคต่างๆ ใน การตรวจสอบ ความถูกต้องของข้อจำกัดโปรแกรมต่างๆ...

อ่านเพิ่มเติม

Cormac Flanagan; K. Rustan M. Leino, Mark Lillibridge, Greg Nelson, James B. Saxe, Raymie Stata (2002). "การตรวจสอบแบบคงที่เพิ่มเติมสำหรับ Java". รายงานการประชุม ACM SIGPLAN 2002 ว่าด้วยการออกแบบและการใช้งานภาษาโปรแกรม . หน้า 234. doi : 10.1145/512529.512558 .