Một mục tiêu quan trọng của các phương pháp chính thức là chứng minh tính đúng đắn của các hệ thống, bằng phương tiện tự động hoặc hướng đến con người. Tuy nhiên, dường như ngay cả khi bạn có thể đưa ra bằng chứng chính xác, bạn vẫn KHÔNG thể đảm bảo rằng hệ thống sẽ không bị lỗi. Ví dụ:
- Thông số kỹ thuật có thể không mô hình hệ thống chính xác hoặc hệ thống sản xuất có thể quá phức tạp để mô hình hóa hoặc hệ thống có thể bị thiếu sót do các yêu cầu mâu thuẫn. Những kỹ thuật nào được biết để kiểm tra xem một đặc điểm kỹ thuật có ý nghĩa gì không?
- Quá trình chứng minh có thể là thiếu sót quá! Ai biết rằng những quy tắc suy luận là chính xác và hợp pháp? Hơn nữa, bằng chứng có thể rất lớn, và làm thế nào để chúng ta biết rằng chúng không chứa lỗi? Đây là trung tâm của bài phê bình trong "Các quy trình xã hội và bằng chứng về các định lý và chương trình" của de Millo, Lipton và Perlis. Làm thế nào để các nhà nghiên cứu phương pháp chính thức hiện đại phản ứng với phê bình này?
- Trong thời gian chạy, có nhiều sự kiện và yếu tố không xác định có thể ảnh hưởng nghiêm trọng đến hệ thống. Ví dụ, các tia vũ trụ có thể thay đổi RAM theo những cách không thể đoán trước và nói chung, chúng tôi không đảm bảo rằng phần cứng sẽ không bị lỗi Byzantine, điều Lamport đã chứng minh là rất khó để chống lại. Vì vậy, tính chính xác của hệ thống tĩnh không đảm bảo hệ thống sẽ không bị lỗi! Có bất kỳ kỹ thuật nào được biết đến cho tính khả thi của phần cứng thực sự?
- Hiện tại, kiểm thử là công cụ quan trọng nhất mà chúng tôi có để thiết lập phần mềm đó hoạt động. Có vẻ như nó phải là một công cụ bổ sung với các phương thức chính thức. Tuy nhiên, tôi chủ yếu thấy nghiên cứu tập trung vào các phương pháp chính thức hoặc thử nghiệm. Kết hợp cả hai là gì?