CAVEAT โปรแกรมควบคุมความปลอดภัยด้านซอฟท์แวร์

ในชีวิตประจำวันของเรานั้น ซอฟท์แวร์บางตัวยังมีข้อผิดพลาด (bugs) ที่อาจเกิดขึ้นได้กับการดำเนินงานจริง ซึ่งซอฟท์แวร์ที่ต้องการความปลอดภัยสูง อย่างซอฟท์แวร์ควบคุมระบบการบิน ก็อาจจะเกิดข้อผิดพลาดได้เช่นกัน นักวิจัย แห่งสำนักงานพลังงานปรมาณูประเทศฝรั่งเศส หรือ CEA จึงได้พัฒนาซอฟท์แวร์พิเศษชื่อ “Caveat” ขึ้น เพื่อเป็นเครื่องมือ ช่วยควบคุมความปลอดภัยในการพัฒนาซอฟท์แวร์สำหรับระบบที่ต้องการความปลอดภัยทางด้านซอฟท์แวร์สูง (critical software)

Caveat เป็นผลงานการวิจัยและพัฒนาเป็นเวลากว่า 10 ปี จากแล็บทดลองด้านเทคโนโลยีและการรวมระบบ แห่งสำนักงานพลังงานปรมาณูประเทศฝรั่งเศส ผู้ให้ทุนในการวิจัยและพัฒนาได้แก่ CEA, บริษัทแอร์บัส (Airbus France) ร่วมกับการไฟฟ้าแห่งประเทศฝรั่งเศส (EDF) โดยผู้ร่วมทุนทั้งสองเป็นผู้ทำการทดสอบเครื่องมือนี้ตลอดระยะเวลาในการ พัฒนา เพื่อให้เครื่องมือนี้มีคุณภาพและมาตรฐานในการนำไปใช้งานสำหรับองค์กรต่างๆ ที่มีความจำเป็นในการใช้ ซอฟท์แวร์ประเภทนี้ บริษัทแอร์บัสได้ใช้ Caveat กับงานพัฒนาระบบโดยใช้ในการตรวจสอบความถูกต้องของซอฟท์แวร์ และระบบที่พัฒนา โดยได้มีการใช้ Caveat เป็นครั้งแรกในการควบคุมความปลอดภัยของซอฟท์แวร์ควบคุมระบบการบินของเครื่องบินแอร์บัส A380 ทางด้านการไฟฟ้าของฝรั่งเศส ก็ใช้เครื่องมือนี้ในการตรวจสอบความถูกต้องและน่าเชื่อถือ ของซอฟท์แวร์ ที่พัฒนาโดยบริษัทรับพัฒนาซอฟท์แวร์ต่างๆ

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

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

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

การทดสอบ (testing) เป็นเทคนิคที่ใช้กันโดยทั่วไปในการตรวจสอบความถูกต้องของซอฟท์แวร์ ซึ่งทำได้ด้วย วิธีการวิเคราะห์แบบพลวัต (dynamic analysis) โดยการทดลองใช้งานซอฟท์แวร์ที่พัฒนากับข้อมูลต่างๆ ที่ถูกกำหนดขึ้น เพื่อใช้ทดสอบเงื่อนไขต่างๆ ที่อาจเกิดขึ้นได้ในการปฏิบัติงานจริง การทดสอบด้วยวิธีนี้อาจจำเป็นต้องใช้จำนวนครั้ง ในการทดสอบเพื่อรับประกันความถูกต้องของระบบที่พัฒนาขึ้นมากเกินกว่าที่จะทำได้ในทางปฏิบัติ (แม้จะใช้เครื่อง คอมพิวเตอร์ที่มีประสิทธิภาพสูงในการทดสอบ) ดังนั้น จึงมีความจำเป็นที่จะต้องจำกัดเงื่อนไขที่จะใช้ทดสอบให้พอเพียง เฉพาะในทางปฏิบัติงานจริงเท่านั้น

ค่าใช้จ่ายโดยเฉลี่ยในส่วนขั้นตอนการตรวจสอบความถูกต้องของซอฟท์แวร์ เป็นครึ่งหนึ่งของค่าใช้จ่ายทั้งหมด ทั้งนี้ ในการพัฒนาซอฟท์แวร์สำหรับระบบที่ต้องการความปลอดภัยทางด้านซอฟท์แวร์สูง โดยเฉพาะกับระบบทาง อากาศยานอาจสูงถึง 80% ของค่าใช้จ่ายในการพัฒนา ดังนั้น เรื่องการควบคุมต้นทุนและเวลาจึงถือเป็นปัจจัยสำคัญ ต่อผู้ดำเนินธุรกิจด้านพัฒนาซอฟท์แวร์ที่จะแข่งขันกันในเชิงการตลาด โดยข้อจำกัดเหล่านี้จะยิ่งมีมากขึ้นเรื่อยๆ อันเป็น ผลมาจากการแข่งขันที่มีเพิ่มมากขึ้นในปัจจุบัน

นอกจากนี้ ค่าใช้จ่ายในการตามแก้ไขข้อผิดพลาดที่พบในภายหลังของซอฟท์แวร์ที่พัฒนาขึ้นยิ่งมีมูลค่าสูง อย่างไรก็ตาม ข้อผิดพลาดในซอฟท์แวร์สามารถถูกตรวจพบได้ด้วยเครื่องมือวิเคราะห์แบบสถิตย์ (static analysis) ก่อนจะถึงขั้นตอนการทดสอบ (testing) ซึ่งเครื่องมือนี้มีหลักการทำงานที่ต่างจากวิธี dynamic analysis ดังที่ได้กล่าวไว้ แล้ว กล่าวคือ เครื่องมือนี้สามารถตรวจพบข้อผิดพลาดของซอฟท์แวร์ได้ โดยไม่ต้องทดลองใช้งานซอฟท์แวร์ ซึ่งการ วิเคราะห์ด้วยวิธีนี้ใช้ได้กับทุกโมดูลของซอฟท์แวร์ และกับทุกข้อมูลที่กำหนดขึ้นสำหรับการทดสอบเงื่อนไขต่างๆ วิธีการดังกล่าวนี้เป็นวิธีการที่ทางแล็บทดลองด้านเทคโนโลยีและการรวมระบบแห่งสำนักงาน CEA ใช้ในการพัฒนา ซอฟท์แวร์ “Caveat” โดยมีวัตถุประสงค์ให้เป็นเครื่องมือช่วยตรวจสอบความปลอดภัยในการพัฒนาซอฟท์แวร์สำหรับ ระบบที่ต้องการความปลอดภัยทางด้านซอฟท์แวร์สูงอันจะเป็นประโยชน์ต่อองค์กรต่างๆ ที่มีความจำเป็นต้องใช้งานซอฟท์แวร์ประเภทดังกล่าว

Caveat ถูกพัฒนาขึ้นโดยใช้เทคนิคในการตรวจพิสูจน์และการวิเคราะห์แบบสถิตย์ ตามปกติ Caveat สามารถ ตรวจพบข้อผิดพลาดของซอฟท์แวร์เมื่อค่าต่างๆ ที่ถูกตรวจพบนั้นมีค่าผิดไปจากคุณสมบัติที่ควรจะเป็นซึ่งได้ตั้งสมมติฐาน เอาไว้ล่วงหน้าแล้ว นอกจากนี้ Caveat ยังมีความสามารถพิเศษในการตรวจพบความเป็นไปได้ที่จะเกิดข้อผิดพลาดเมื่อ มีการเรียกใช้งานซอฟท์แวร์ อาทิ เรื่องการวนลูปที่ไม่สิ้นสุดและการใช้เลขศูนย์เป็นตัวหาร การทำงานของ Caveat อาศัย การเปรียบเทียบซอฟท์แวร์ที่ต้องการตรวจสอบความถูกต้อง (ซึ่งอาจจะมีชุดคำสั่งยาวหลายหมื่นบรรทัด) กับคุณสมบัติ ที่ควรจะเป็นของค่าต่างๆ ในชุดคำสั่งเหล่านั้นซึ่งแสดงออกมาในรูปของโมเดลทางคณิตศาสตร์ (ซึ่งมีความยาวเพียงไม่กี่ บรรทัด) ทั้งนี้ Caveat จะสร้างโมเดลทางคณิตศาสตร์ขึ้นมาสำหรับทำการเปรียบเทียบ ยกตัวอย่างเช่น ตัวพารามิเตอร์ “a” ต้องมีค่าน้อยกว่าศูนย์ จึงจะได้ผลลัพธ์ที่ถูกต้องตรงตามที่คาดเอาไว้

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

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

บริษัท TNI Valiosys แห่งฝรั่งเศสเป็นผู้ดำเนินธุรกิจและการตลาดสำหรับ Caveat