Kiểm chứng mô hình phần mềm là một kỹ thuật xác minh tự động cho hệ thống phần mềm. Theo định nghĩa của Clarke & Emerson 1981: "Kiểm chứng mô hình là một kỹ thuật tự động đưa ra một mô hình hữu hạn trạng thái của một hệ thống và một thuộc tính logic, hệ thống kiểm tra xem thuộc tính này có thỏa mãn (một trạng thái được đưa ra) mô hình đó" [12].
Cơ sở của kiểm chứng dựa trên mô hình là mô tả các hành vi của hệ thống theo một cách không nhập nhằng. Công cụ chạy model checking (bộ kiểm chứng) được dùng để sinh ra tất cả các trạng thái của hệ thống và kiểm tra chúng thỏa mãn các tính chất hoặc thỏa mãn một yêu cầu nào đó [14].
Trong thiết kế phần cứng và phần mềm của các hệ thống phức tạp, cần nhiều thời gian cho việc kiểm chứng hơn là việc xây dựng. Nhiều kỹ thuật đang tìm cách để giảm bớt và dễ dàng hơn trong việc kiểm chứng nhưng tăng phạm vi ứng dụng của kiểm chứng. Các phương pháp hình thức là một trong các kỹ thuật đó, nó cung cấp thêm các kỹ thuật cho kiểm chứng và giảm bớt thời gian kiểm chứng hệ thống. Tiềm năng to lớn của các phương pháp hình thức dẫn đến việc ứng dụng nó ngày càng nhiều vào các hệ thống phần mềm phức tạp. Nghiên cứu về các phương pháp hình thức đã dẫn đến sự phát triển của một số kỹ thuật kiểm chứng hứa hẹn tạo điều kiện cho việc phát hiện sớm các lỗi, các khuyết tật trong phần mềm. Những kỹ thuật này đi kèm với các công cụ phần mềm mạnh mẽ có thể tự động hóa các bước kiểm chứng.
Kỹ thuật kiểm duyệt mô hình dựa trên việc mô tả các hành vi của hệ thống một cách toán học chính xác và rõ ràng. Các kỹ thuật kiểm duyệt với việc mô hình chính xác hệ thống sẽ giúp phát hiện ra các lỗi, sự không nhất quán, không rõ ràng trong đặc tả. Các mô hình của hệ thống với những thuật toán có thể giúp tìm tất cả các trạng thái của hệ thống. Do có sự cải tiến không ngừng của kỹ thuật và sự xử lý của máy tính ngày càng nhanh cùng với bộ nhớ lớn, kiểm duyệt mô hình có thể áp dụng trong thực tế với các hệ thống phức tạp.
Kiểm duyệt mô hình là một kỹ thuật kiểm chứng trên tất cả không gian trạng thái có thể có của hệ thống. Nó kiểm tra các kịch bản của hệ thống và chỉ ra hệ thống đạt yêu cầu hoặc vi phạm hay lỗi.
Mô hình của hệ thống thường được sinh ra tự động từ các đặc tả mô hình trên các ngôn ngữ như C, Java hoặc các ngôn ngữ phần cứng v.v. Lưu ý rằng các thuộc tính quy định hệ thống làm những gì trong khi các mô hình hệ thống mô tả hệ thống làm như thế nào. Mô hình kiểm chứng kiểm tra tất cả các trạng thái liên quan hệ thống xem chúng có thỏa mãn thuộc tính mong muốn hay không.