SPIN ( Simple Promela Interpreter) là một hệ thống xác thực chung, hay một bộ kiểm tra mô hình (Model Checker) để hỗ trợ việc thiết kế và xác thực các hệ
thống tương tranh đa luồng, đa tiến trình, đặc biệt là các giao thức truyền dữ liệu. [13] SPIN sử dụng ngôn ngữ PROMELA (Protocol Meta Language), sẽ được đề
cập sau, để mô hình hóa phần mềm. SPIN xác thực các mô hình phần mềm bằng cách chứng minh tính đúng đắn của các sự tương tác giữa các tiến trình và cố gắng trừu tượng hoá đến mức tối đa từ việc tính toán tuần tự bên trong. Sự tương tác giữa các tiến trình được đặc tả trong SPIN có thể là theo cơ chế gặp mặt (rendezvous) nghĩa là các tiến trình đến cùng một lúc và có thể trao đổi dữ liệu trực tiếp với nhau, hoặc theo cơ chế vùng đệm (buffer) khi hai tiến trình không gặp nhau tại một thời
điểm, tiến trình đến trước sẽ gửi gói dữ liệu vào một vùng đệm để tiến trình khác
đến lấy. Tập trung nhiều cho việc điều khiển không đồng bộ trong phần mềm hơn là
điều khiển đồng bộ trong phần cứng, SPIN phân biệt với các phần mềm khác trong việc tiếp cận kiểm tra mô hình, cụ thể là kiểm tra mô hình phần mềm.
Là một công cụ áp dụng các phương pháp hình thức, SPIN có những đặc tính cơ bản như sau:
¾ SPIN là một công cụ trực quan, chương trình sử dụng các ký hiệu để
thiết kếđặc tả rất rõ ràng, không thực thi chi tiết.
¾ SPIN là một công cụ mạnh, các ký hiệu ngắn gọn, súc tích để diễn giải các yêu cầu cần kiểm tra tính đúng đắn.
¾ Cung cấp một phương pháp luận để thiết lập tính nhất quán logic khi thiết kế các lựa chọn hoặc kết hợp các điều kiện cần thoả mãn.
SPIN sử dụng các thiết kế đặc tả phần mềm sử dụng ngôn ngữ mô tả
mô hình hệ thống PROMELA và sử dụng Logic thời gian tuyến tính LTL chuẩn đểđặc tả các thuộc tính cần thoả mãn.
Không có các nguyên tắc chung cho các hệ thống phần mềm khác nhau, do đó, ta luôn cố gắng đặc tả phần mềm theo một chuẩn nào đó. SPIN sử dụng ngôn ngữ PROMELA, vì thế luôn yêu cầu theo một số các quy tắc hữu hạn nào đó để diễn tả rất nhiều các hành vi khác nhau. Điều đó có nghĩa là tất cả các thuộc tính cần thoả mãn của hệ thống đều trở lên đều phải có tính hình thức với các ràng buộc về phạm vi vấn đề, nguồn tài nguyên cần thiết để
tính toán để kiểm tra mô hình có thể chứng minh được thuộc tính đó.
Tất cả các hệ thống xác thực, đều có các ràng buộc vật lý như tập hợp kích thước bài toán, dung lượng bộ nhớ và thời gian chạy tối đa mà hệ thống yêu cầu. Do đó, ta luôn tìm cách đưa ra các chiến lược để giải quyết vấn đề
này.