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.
3.1.1. Tổng quan hoạt động của kiểm duyệt mô hình
Hoạt động của kiểm duyệt mô hình được thể hiện trong hình (Hình 2.1). Từ đặc tả hệ thống, mô hình hệ thống ta xây dựng mô hình của hệ thống cần kiểm chứng. Đặc tả thể hiện hành vi của hệ thống có thể được viết bởi các ngôn ngữ đặc tả như Automat, biểu thức chính quy, hay ngôn ngữ C, Java hay các ngôn ngữ khác. Đặc tả thuộc tính yêu cầu thống nên làm gì và mô hình mô tả hệ thống hoạt động như thế nào [14].
Quá trình kiểm duyệt mô hình sẽ kiểm tra tất cả các trạng thái hệ thống liên quan xem có thỏa mãn không, nếu không thỏa mãn sẽ đưa ra một phản ví dụ- một trạng thái của hệ thống không thỏa mãn,…
Hình 3.1. Sơ đồ tổng quan của kiểm duyệt mô hình Yêu cầu Yêu cầu Hình thức hóa Đặc tả tính chất Hệ thống Mô hình hóa Mô hình hóa hệ thống Kiểm chứng mô hình Thỏa mãn Vi phạm + phản ví dụ Mô phỏng Vị trí lỗi
3.1.2. Quá trình hoạt động của kiểm duyệt mô hình
Quá trình kiểm duyệt mô hình chia ra làm các pha cơ bản như sau:
Pha mô hình hóa: Mô hình hóa là điều kiện tiên quyết để kiểm tra mô hình
hệ thống. Mô hình hệ thống mô tả hành vi của hệ thống một cách chính xác, rõ ràng. Mô hình hệ thống chủ yếu được biểu diễn bằng các automat hữu hạn trạng thái và một tập hợp các phép chuyển trạng thái. Các trạng thái chứa thông tin về giá trị hiện tại của hệ thống, câu lệnh được thực thi. Các phép chuyển trạng thái diễn tả hệ thống chuyển từ trạng thái này sang trạng thái khác như thế nào. Có sự phù hợp tương thích của hệ thống hay không. Các thuộc tính cần được diễn đạt rõ
ràng, đầy đủ.
Pha thực thi: Sau khi có được mô hình của hệ thống, cần sử dụng công cụ
kiểm chứng để kiểm tra các thuộc tính có thỏa mãn mô hình vừa xây dựng không.
Hoặc có sự tương thích giữa các mô hình cần kiểm chứng hay không.
Pha phân tích: Phân tích kết quả đạt được dựa trên kết quả sau khi thực
hiện pha thực thi. Các kết quả có thể có: Thuộc tính có hoặc không thỏa mãn mô hình; mô hình tương thích hoặc không tương thích; mô hình quá lớn ngoài khả năng xử lý của máy tính. Khi thuộc tính thỏa mãn, mô hình đáp các thuộc tính mong muốn. Khi thuộc tính không thỏa mãn, xuất hiện lỗi trong mô hình hoặc các thuộc tính được diễn đạt là sai. Trong luận văn này xét đến trường hợp tương thích hoặc không tương thích của hệ thống nên sau pha thực thi có thể kết luận.
Trường hợp mô hình quá lớn so với khả năng xử lý của máy tính thì cần khắc phục bằng cách làm giảm không gian trạng thái của mô hình một cách hiệu quả.
3.1.3. Ưu, nhược điểm của kiểm duyệt mô hình Ưu điểm: Ưu điểm:
Kiểm duyệt mô hình có thể áp dụng cho một loạt các ứng dụng như hệ thống nhúng, công nghệ thiết kế phần cứng và phần mềm v.v.
Có thể kiểm tra các thuộc tính riêng lẻ nên ta có thể kiểm tra các thuộc tính quan trọng trước mà không cần thiết kiểm chứng toàn bộ hệ thống hoàn chỉnh.
Cung cấp thông tin cho việc gỡ lỗi khi hệ thống lỗi hoặc thuộc tính không thỏa mãn.
Dễ dàng tích hợp quá trình phát triển phần mềm, làm giảm thời gian
phát triển. Nhược điểm:
Chỉ kiểm chứng được mô hình của hệ thống chứ không kiểm chứng bản thân hệ thống.
Yêu cầu kinh nghiệm trừu tượng hóa hệ thống để đưa ra mô hình thích hợp [14].
3.2. Bộ công cụ SPIN
SPIN (Simple Promela Interpreter) được phát triển từ năm 1980 bởi nhóm Unix ở trung tâm nghiên cứu khoa học máy tính tại Bell Labs với phiên bản miễn phí đầu tiên vào 1991. Năm 2001, Gerard J.Holzmann nhận được giải thưởng phần mềm uy tín cho năm của ACM vì sự phát triển SPIN [2]. SPIN vẫn được tiếp tục phát triển theo kịp sự phát triển trong lĩnh vực công nghệ thông tin.
3.2.1. Tổng quan về SPIN
Bộ công cụ SPIN là công cụ kiểm tra mô hình, là một hệ thống xác minh tính đúng đắn của các chương trình, nó hỗ trợ thiết kế hệ thống đa luồng, hệ thống tương tranh, v.v. SPIN như là một công cụ sử dụng phương pháp hình thức, nó các các đặc điểm:
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õ ràng mà không cần thực hiện cụ thể.
Là một công cụ mạnh với bộ kí tự rõ ràng dễ mô tả các yêu cầu cần kiểm tra sự đúng đắn của chúng.
Cung cấp phương pháp luận cho việc thể hiện tính thống nhất, hợp lý phù hợp với các điều kiện cần thỏa mãn [10].
Bộ công cụ SPIN không có các nguyên tắc chung cho kiểm chứng các hệ thống phần mềm khác nhau, vì vậy tùy vào yêu cầu kiểm chứng phần mềm cụ thể mà ta cố gắng đặc tả phần mềm theo một cách thức tương ứng. SPIN yêu cầu các quy tắc hữu hạn để diễn tả các hành vi khác nhau, điều này có nghĩa là tất cả các thuộc tính cần được thỏa mãn của hệ thống đều phải đặc tả hình thức với các ràng buộc về phạm vi, nguồn tài nguyên cần thiết để tính toán kiểm tra mô hình [10]. 3.2.2. Cấu trúc của SPIN
Cấu trúc cơ bản của mô hình SPIN được mô tả trong (Hình 2.2). Mô hình SPIN được bắt đầu bằng việc đặc tả hệ thống tương tranh đa luồng hoặc giải thuật phân tán dưới dạng mô hình bậc cao, sử dụng giao diện đồ họa SPIN. Sau khi được sửa lỗi cú pháp, SPIN sẽ thực hiện việc mô phỏng tương tác cho đến khi đạt độ tin cậy cơ bản để thiết kế các hành vi. SPIN sinh ra một chương trình xác thực theo giải thuật on-the-fly (duyệt nhanh) từ đặc tả mức cao. Bộ xác thực này được biên dịch với sự lựa chọn thời gian biên dịch hợp lý để thực hiện giải thuật giản lược. Nếu có lỗi được phát hiện qua các biến xác nhận lỗi của chương trình, nó sẽ thông báo lại cho bộ mô phỏng và kiểm tra chi tiết khi thực hiện và loại bỏ nguyên nhân gây lỗi [10].
SPIN cũng có thể xác thực trực tiếp phần mềm ở mức thực thi. Sử dụng SPIN như trình điều khiển và một máy logic để xác thực các thuộc tính thời gian ở mức cao. SPIN hoạt động dựa vào phương thức duyệt on-the-fly để xác thực các thuộc tính của hệ thống [10].