1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo "Kiểm chứng tính đúng đắn hệ thống tính toán của chương trình bằng kiểm duyệt mô hình "

15 8 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

Trình bày về cơ sở lý thuyết của kiểm duyệt mô hình (Model checking): khái niệm và ý nghĩa của kiểm duyệt mô hình, quy trình hoạt động của kiểm duyệt mô hình, đặc trưng của kiểm duyệt mô hình, điểm mạnh và điểm yếu của kiểm duyệt dựa trên mô hình sử dụng logic thời gian (Temporal Logic) mô tả các thuộc tính cần kiểm chứng. Nghiên cứu về công cụ Spin, giao diện Xspin, và ngôn ngữ mô hình hóa Promela, máy trạng thái hữu hạn. Tiến hành xây dựng tiến trình đồng hồ, mô hình hóa...

Kiểm chứng tính đắn hệ thống tính tốn chương trình kiểm duyệt mơ hình Verify the correctness of computing systems of program by model checking NXB H : ĐHCN, 2012 Số trang 67 tr + Nguyễn Thị Loan Trường Đại học Công nghệ Luận văn ThS ngành: Công nghệ phần mềm; Mã số: 60 48 10 Cán hướng dẫn khoa học: TS Đặng Văn Hưng Năm bảo vệ: 2012 Abstract Trình bày sở lý thuyết kiểm duyệt mơ hình (Model checking): khái niệm ý nghĩa kiểm duyệt mơ hình, quy trình hoạt động kiểm duyệt mơ hình, đặc trưng kiểm duyệt mơ hình, điểm mạnh điểm yếu kiểm duyệt dựa mơ hình sử dụng logic thời gian (Temporal Logic) mơ tả thuộc tính cần kiểm chứng Nghiên cứu công cụ Spin, giao diện Xspin, ngơn ngữ mơ hình hóa Promela, máy trạng thái hữu hạn Tiến hành xây dựng tiến trình đồng hồ, mơ hình hóa hệ thống báo động, báo cháy, kết hợp tiến trình đồng hồ với kỹ thuật kiểm duyệt mơ hình để kiểm chứng tính đắn hệ thống Keywords: Cơng nghệ phần mềm; Hệ thống tính tốn; Kiểm chứng mơ hình Content MỞ ĐẦU Đặt vấn đề Ngày phụ thuộc nhiều vào hệ thống máy tính sản xuất lẫn đời sống hàng ngày Các hệ thống cần phải đảm bảo tin cậy an toàn sử dụng Do chúng cần phải kiểm duyệt kỹ từ mơ hình hệ thống để đảm bảo hệ thống hoạt động xác tránh gây thiệt hại người lẫn tiền Kỹ thuật kiểm chứng mơ hình sử dụng để kiểm chứng cho mơ hình hệ thống thực tế Các công cụ kiểm chứng kèm hay dùng Spin, Kronos, NuSMV,… Nội dung nghiên cứu Nội dung đề tài nghiên cứu kỹ thuật kiểm chứng mơ hình (Model Checking), dùng cơng cụ Spin để thực kiểm chứng mơ hình hệ thống báo động, báo cháy, sử dụng ngơn ngữ mơ hình hóa Promela để mơ hình hóa hệ thống báo động, báo cháy, mơ tả thuộc tính cần kiểm chứng qua Logic thời gian tuyến tính để kiểm chứng tính đắn hệ thống báo động, báo cháy qua mô hình 3 Phƣơng pháp nghiên cứu  Phương pháp thu thập tài liệu  Phương pháp phân tích Cấu trúc luận văn Chương trình bày sở lý thuyết kiểm duyệt mơ hình (Model checking) Chương trình bày cơng cụ Spin, giao diện Xspin, ngơn ngữ mơ hình hóa Promela Chương xây dựng tiến trình đồng hồ, kết hợp kỹ thuật kiểm duyệt mơ hình tiến trình đồng hồ để kiểm chứng tính đắn hệ thống báo động, báo cháy Phần kết luận tóm tắt kết đạt được, kết luận, hạn chế hướng phát triển tương lai đề tài CHƢƠNG 1: CƠ SỞ LÝ THUYẾT 1.1 Khái niệm ý nghĩa kiểm duyệt mơ hình “Kiểm duyệt mơ hình (Model checking) kỹ thuật tự động hóa nhằm đưa mơ hình hữu hạn trạng thái hệ thống thuộc tính hình thức, kỹ thuật kiểm tra có hay khơng thuộc tính thõa mãn mơ hình hệ thống” [5] Kiểm duyệt mơ hình cho phép kiểm duyệt phần mềm khơng cịn lỗi thực chức đặt Nó kiểm tra khả trạng thái hệ thống 1.2 Quy trình hoạt động kiểm duyệt mơ hình Requirements System Formalizing Modeling Property System Model Specification Model checking Satisfied Violated + Counterexample Simulation Location error Hình 1.1: Hoạt động phương pháp kiểm duyệt mơ hình Mơ hình hệ thống xây dựng từ đặc tả hệ thống Mơ hình thể hành vi hệ thống viết ngôn ngữ C, Java, hay ngôn ngữ mô tả phần cứng 1.3 Đặc trƣng kiểm duyệt mơ hình Q trình kiểm duyệt mơ hình chia thành pha sau:  Pha mơ hình hóa (Modeling)  Pha thực thi (Running)  Pha phân tích (Analysis) 1.4 Điểm mạnh điểm yếu kiểm duyệt dựa mơ hình Kiểm duyệt mơ hình có vài điểm mạnh [2]:  Là phương pháp kiểm chứng tổng quan áp dụng cho ứng dụng phạm vi lớn hệ thống nhúng, công nghệ phần mềm, thiết kế phần cứng,…  Hỗ trợ kiểm duyệt cục bộ, thuộc tính kiểm tra riêng lẻ, từ tập chung kiểm duyệt thuộc tính quan trọng trước mà khơng cần thiết đặc tả hệ thống hồn chỉnh  Q trình kiểm duyệt sau không ảnh hưởng đến lỗi phát trước  Cung cấp thơng tin có ý nghĩa cho việc gỡ lỗi phát thuộc tính khơng thỏa mãn  Kiểm duyệt mơ hình có tảng tốn học, dựa lý thuyết thuật toán đồ thị, cấu trúc liệu logic Bên cạnh ưu điểm trên, phương pháp kiểm duyệt mơ hình có yếu điểm [2]:  Kiểm duyệt mơ hình chủ yếu phù hợp với ứng dụng điều khiển, không phù hợp với ứng dụng hướng liệu khối lượng liệu thường tăng vơ hạn  Kiểm duyệt mơ hình kiểm chứng mơ hình hệ thống khơng phải thân hệ thống, kết đạt mặt mơ hình hệ thống, cần có kỹ thuật khác hỗ trợ kiểm duyệt để tìm lỗi chế tạo (trong phần cứng) lỗi lập trình (phần mềm) 1.5 Sử dụng logic thời gian (Temporal Logic) mơ tả thuộc tính cần kiểm chứng 1.5.1 Logic thời gian (Temporal Logic) Trong nghiên cứu kiểm duyệt mơ hình, có hai loại logic thời gian hay xem xét LTL (Linear Temporal Logic) CTL (Banching Temporal Logic) [2]  LTL (Linear Temporal Logic): Logic thời gian tuyến tính Thời gian có cấu trúc tuyến tính, trạng thái có trạng thái tiếp sau  CTL (Branching Temporal Logic): Logic thời gian rẽ nhánh Thời gian có cấu trúc tuyến tính, trạng thái có nhiều trạng thái tiếp sau Temporal logic thường sử dụng để mơ tả thuộc tính cần kiểm chứng 1.5.2 Các thuộc tính cần kiểm chứng 1.5.2.1 Thuộc tính an tồn (Safety) Tính an tồn chương trình đảm bảo khơng xảy tình xấu chương trình (“something bad never happen”) 1.5.2.2 Thuộc tính sống (Liveness) Thuộc tính liveness chương trình đảm bảo thực thi chức tốt“good” đặt (“something good will happen eventually”) 1.5.2.3 Thuộc tính cơng (Fairness) Tính cơng đảm bảo kiện trạng thái sẵn sàng thực thi đến lúc thực thi 1.6 Máy trạng thái hữu hạn 1.6.1 Định nghĩa máy trạng thái hữu hạn Có nhiều mơ hình sử dụng kiểm chứng phần mềm, có mơ hình máy hữu hạn trạng thái – Finite State Machines (FSM) Máy hữu hạn trạng thái M = < I, S, O, so, δ, λ> Trong I: Tập yếu tố đầu vào; S: Tập trạng thái; O: Tập thông tin đầu ra; s0: Trạng thái ban đầu; δ: S x I → S hàm chuyển trạng thái; λ: S x I → O hàm thơng tin đầu Mơ hình máy hữu hạn trạng thái FSM sử dụng để mô tả hoạt động nhiều hệ thống thực tế 1.6.2 Các máy trạng thái hữu hạn trao đổi thông tin Các máy trạng thái hữu hạn trao đổi thông tin với qua việc truyền thông báo cách đồng Trong q trình truyền nhãn cần có đồng hóa thơng điệp gửi m (!m) thông điệp nhận (?m) Việc truyền đồng thực thông điệp gửi thông điệp nhận đồng thời tương ứng [5] CHƢƠNG 2: GIỚI THIỆU VỀ SPIN VÀ PROMELA 2.1 Ngôn ngữ Promela Promela ngơn ngữ mơ hình hóa dùng để mơ tả hệ thống đồng thời [3] Chẳng hạn hệ thống điện thoại, chương trình giao tiếp đa luồng, giao thức mạng,… Nó ngơn ngữ khơng tất định, có cú pháp ngữ nghĩa tương tự ngôn ngữ C [9] 2.1.1 Cấu trúc chƣơng trình Promela Cấu trúc trương trình Promela [1]:  Các khai báo kiểu khai báo biến;  Khai báo tiến trình;  Tiến trình init 2.1.2 Biến Cũng hầu hết ngơn ngữ lập trình có cấu trúc, Promela yêu cầu biến phải khai báo trước chúng sử dụng Khai báo biến Promela giống ngơn ngữ lập trình C, bắt đầu kiểu liệu theo sau hay nhiều biến định nghĩa khởi tạo 2.1.3 Kiểu liệu 2.1.3.1 Các kiểu liệu Promela Các kiểu liệu Promela liệt kê bảng sau: Bảng 2.1: Các kiểu liệu Promela [1] Type Size Range bit or bool 1 byte 255 short 16 -215-1 215-1 int 32 -231-1 231-1 2.1.3.2 Kiểu liệu có cấu trúc  Kiểu mảng  Kiểu cấu trúc (bản ghi)  Kiểu liệt kê  Dữ liệu kiểu kênh Trong Promela, với liệu kiểu kênh có toán tử ! (gửi) ? (nhận)  Trong Promela có hai loại kênh Rendezvous channels Buffered channels a) 2.1.3.3 Kiểu mtype Giả sử ta muốn dùng kí hiệu cho số, ta sử dụng macro define khai báo đầu chương trình – tương tự ngôn ngữ C: #define N 10 mtype kiểu sử dụng với chức tương tự define 2.1.4 Định danh, hằng, biểu thức Định danh chữ cái, ký tự, dấu chấm hay dấu gạch Hằng số chuỗi ký tự đại diện cho số nguyên, số thập phân,… Bảng 2.2: Các toán tử Promela [1] Toán tử Tên ! phủ định ++, Tăng, giảm *, /, % Nhân, chia, modul +, - Cộng, trừ phép dịch trái bit, dịch phải bit = Toán tử quan hệ ==, != Bẳng, khác & Bitwise | inclusive or && Và || ^ Bitwise xor ( -> : ) biểu thức có điều kiện = phép gán [] số mảng 2.1.5 Tiến trình 2.1.5.1 Tiến trình process Một tiến trình process khai báo bắt đầu từ khóa proctype chứa:  Tên tiến trình  Danh sách tham số hình thức  Khai báo biến cục  Thân tiến trình 2.1.5.2 Tiến trình init Bất kỳ chương trình Promela phải có tiến trình init, giống hàm main() C Việc thực chương trình Promela tiến trình init 2.1.5.3 Active proctype Từ khóa active tiền tố khai báo tiến trình tiến trình Tác dụng active tạo kết hợp tiến trình (được khai báo từ khóa proctype) với việc khởi tạo Nhiều trường hợp việc khai báo tiến trình sử dụng từ khóa active giống khai báo proctye cách dùng mảng có hậu tố tùy chọn theo sau từ khóa active 2.1.6 Run atomic 2.1.6.1 Run tiến trình init() Cách khởi tạo tiến trình tiến trình init dùng tốn tử run, tiến trình khai báo mà khơng có từ khóa active 2.1.6.2 Atomic Các lệnh đặt atomic { } thực lệnh độc lập khơng bị lệnh khác ngồi chen vào Việc sử dụng atomic nhằm giảm phức tạp mơ hình cần kiểm duyệt 2.1.7 Cấu trúc điều khiển 2.1.7.1 Lệnh lựa chọn if if :: biểu_thức_logic1  Lệnh_11; …; Lệnh_1n :: biểu_thức_logic2  Lệnh_21; …; Lệnh_2n … :: biểu_thức_logicn  Lệnh_n1; …; Lệnh_nn fi Biểu thức logic true hay false 2.1.7.2 Lệnh lặp do ::Biểu_thức_logic_1  Lệnh_11;…; Lệnh_1n; ::Biểu_thức_logic_2  Lệnh_21;…; Lệnh_2n; … ::Biểu_thức_logic_n  Lệnh_n1;…; Lệnh_nn; ::Biểu_thức_logic  break; od; 2.1.7.3 Lệnh nhảy goto Lệnh goto nhảy đến đoạn chương trình sau nhãn, tên nhãn đặt trước dấu hai chấm 2.2 Cơng cụ Spin 2.2.1 Kiểm chứng chƣơng trình Spin 2.2.1.1 Đặc trƣng SPIN Spin (Simple Promela Interpreter) cơng cụ kiểm chứng, hỗ trỡ ngôn ngữ đặc tả hệ thống Promela Spin dùng để theo dõi lỗi logic thiết kế hệ thống phân tán hệ điều hành, giao thức truyền thơng liệu, thuật tốn song song, giao thức báo hiệu tàu điện, Ta sử dụng Spin mà không cần phải dựng lên mô hình dạng đồ thị trạng thái [5] Spin hỗ trợ kiểm chứng thuộc tính u cầu biểu diễn dạng LTL (Linear Temporal Logic – Logic thời gian tuyến tính), sử dụng khẳng định – assertion để đặc tả số thuộc tính cần kiểm chứng Ngơn ngữ đặc tả Promela sử dụng để diễn tả mơ hình hệ thống thuộc tính để kiểm chứng mơ hình Spin mơ thực thi hệ thống Việc sử dụng Spin đơn giản, hiệu cao, phù hợp để kiểm chứng hệ thống phân tán Spin không hỗ trợ kiểm chứng hệ thống vơ hạn trạng thái b) 2.2.1.2 Mơ hình hệ thống SPIN Các hệ thống mơ hình hóa Spin tập tiến trình (mạng Automata), chạy song song theo chế độ đan xen giao tiếp với qua thông điệp hay qua chia sẻ biến 2.2.1.3 Cấu trúc Spin Cấu trúc Spin thể hình 2.2 XSPIN Front – End (Tcl/Tk code) PROMELA LTL Parser and Translator Parser Syntax Error Reports Random/Guided Simulation Verifier Generator Model-Specific ANSI C code Executable Verifier Counter Examples Hình 2.2: Cấu trúc Spin [3] 2.2.1.4 Giả lập ngẫu nhiên Spin biên dịch chạy chương trình Promela chế độ giả lập ngẫu nhiên in trạng thái chương trình, sau in trạng thái thuộc tính Một trạng thái chương trình giá trị biến, biến đếm vị trí tiến trình Một tính tốn chương trình chuỗi trạng thái bắt đầu trạng thái khởi tạo tiếp tục với trạng thái xuất sau câu lệnh thực [3] 2.2.1.5 Kiểm chứng (Verify) Assertion cách đơn giản để kiểm tra chương trình Một assertion mệnh đề đặt chương trình mà ta cho mệnh đề vị trí Spin tính tốn assertion q trình tìm kiếm phản ví dụ khơng gian trạng thái chương trình 2.2.2 Giao diện ngƣời dùng Xspin Màn hình Xspin cửa sổ văn hiển thị tập tin sử dụng, giống trình soạn thảo văn Xspin có giao diện thân thiện người dùng cung cấp khả chỉnh 2.2.3 Logic thời gian tuyến tính (LTL - Linear Temporal Logic) Spin Khi sử dụng assertion bị hạn chế việc biểu diễn tính chất mơ hình Từ cần dùng đến logic thời gian tuyến tính LTL, LTL mạnh mẽ việc biểu diễn tính chất mơ hình hệ thống 2.2.3.1 Cú pháp Logic thời gian tuyến tính Các cơng thức LTL tạo từ phép tốn mệnh đề, cơng thức phép toán mệnh đề tạo từ mệnh đề nguyên thủy (p, q,…) phép toán bảng 2.3: Bảng 2.3: Các phép toán mệnh đề LTL [6] Operator Math Spin not ¬ ! and  && or  || implies → -> equivalent ↔ LTL hình thức hóa tính chất thời gian toán tử thời gian Bảng 2.4: Các phép toán thời gian LTL [6] Operator Math Spin always □ [] eventully ◊ until U U Các phép toán □ ◊ phép tốn ngơi, phép tốn U phép tốn hai ngơi Các phép tốn thời gian phép toán mệnh đề kết hợp tự với 2.2.3.2 Biểu diễn tính chất bất biến hệ thống LTL Trong nhiều trường hợp, hệ thống xây dựng phải thỏa mãn tính chất bất biến Với LTL ta biểu diễn tính chất tốn tử [] 2.2.4 Cấu trúc Never claim Có tính chất mà ta mong muốn khơng xuất hệ thống Trong Promela biểu diễn never claim Trong Spin ta cần biểu diễn tính chất hệ thống dạng biểu thức LTL sau đưa vào Spin, Spin tự động chuyển biểu thức LTL sang cấu trúc never claim Promela dùng vào việc kiểm chứng Biểu thức LTL lưu lại tệp prp có tên trùng với tên chương trình Đoạn mã never claim Spin lưu lại tệp ltl CHƢƠNG 3: ỨNG DỤNG 3.1 Xây dựng biến tiến trình đồng hồ Bàn kỹ thuật kiểm duyệt mơ hình cho hệ thống khơng có ràng buộc thời gian có ràng buộc thời gian, đưa nhận xét: Với kỹ thuật kiểm duyệt mơ hình để kiểm duyệt hệ thống có ràng buộc thời gian thường phức tạp, tốn thời gian nghiên cứu Ngồi cịn địi hỏi thời gian chạy lâu áp dụng cho hệ thống nhỏ, hệ thống lớn số trạng thái tăng dẫn tới việc bùng nổ không gian trạng thái Với kỹ thuật kiểm duyệt mơ hình để kiểm duyệt hệ thống khơng có ràng buộc thời gian dễ tìm hiểu hơn, hạn chế phần vấn đề bùng nổ không gian trạng thái Hơn nữa, kỹ thuật kiểm chứng trợ giúp việc kiểm chứng tính chất thời gian tổng quát, hệ thống có ràng buộc thời gian thực tế thường địi hỏi kiểm chứng tính chất đơn giản dạng deadline Từ sử dụng kỹ thuật kiểm duyệt mơ hình cho hệ thống khơng có ràng buộc thời gian kết hợp với kỹ thuật xây dựng biến, tiến trình đồng hồ để kiểm chứng hệ thống có ràng buộc thời gian, cụ thể hệ thống báo động, báo cháy Để kiểm chứng hệ thống thời gian thực cần kết hợp kỹ thuật kiểm duyệt mơ hình cho hệ thống khơng có ràng buộc thời gian với tiến trình đồng hồ Tiến trình đồng hồ xây dựng ngơn ngữ mơ hình hóa Promela sau: proctype clock() int c; { time=-1; ::set_time?1->if ::time=-1->time=0; ::else->skip; fi; ::set_time?-1->time=-1; ::inc?c->if ::time!=-1->time=time+c; :: else -> skip; fi; od } Mục đích xây dựng tiến trình đồng hồ để đo thời gian cần thiết Hoạt động mơ tả sau: Ban đầu biến đồng hồ time = -1, tức chưa dùng đồng hồ Khi đồng hồ bắt đầu dùng biến đồng hồ thiết lập (time = 0), không dùng đồng hồ time = -1 Với tiến trình đồng hồ xây dựng trên, áp dụng vào mô hình hệ thống báo động, báo cháy có ràng buộc thời gian thực “hệ thống phải báo động sau giây kể từ nhận thông báo động” Ràng buộc thể qua biến đồng hồ time (timesound) Spin tự động sinh cấu trúc never claim thêm công thức LTL Kết chạy verify cho thấy khơng có lỗi vi phạm hệ thống thỏa mãn tính chất cần kiểm tra Hình 3.3: Kết kiểm chứng mơ hình hệ thống báo động, báo cháy Phân tích kết thấy errors: nên mơ hình đưa thỏa mãn thuộc tính nêu 3.3 Hệ thống báo động, báo cháy mức 3.3.1 Mô tả hệ thống mức Hệ thống báo động, báo cháy mức mở rộng mức trừu tượng Ở mức hệ thống xây dựng thêm tiến trình đồng hồ (clock) Tiến trình đồng hồ có mục đích thiết lập thời gian cần thiết qua kênh set_time đếm thời gian trôi kể từ có động chng phát âm báo động qua biến đồng hồ time Nói cách khác, nhờ xây dựng tiến trình đồng hồ (clock) biến đồng hồ (time) ta đưa ràng buộc thời gian thực vào hệ thống báo động, báo cháy qua assertion Hơn tiến trình đồng hồ cịn thực tăng thời gian (qua biến đồng hồ time) cho hành động thời gian xảy ra, điều thực qua kênh inc Từ mô tả hệ thống ta đưa kiến trúc hệ thống sau: Enviroment env Sensor 1 env set_time env Sensor Clock … Sensor n inc control_sensor control_sensor control_sensor Control Panel set_time control_alarm Alarm Hình 3.4: Kiến trúc mức hệ thống báo động, báo cháy 3.3.2 Mơ hình Promela cho hệ thống báo động, báo cháy mức kiểm chứng thuộc tính đơn giản Từ mô tả hệ thống trên, ta xây dựng mơ hình cho hệ thống ngơn ngữ Promela áp dụng cho hệ thống có Sensors bao gồm biến tiến trình mức trừu tượng bổ sung thêm vài biến, thành phần tiến trình mức trừu tượng, tiến trình clock Mơ chương trình Xspin khơng có lỗi kết sau: Hình 3.5: Kết mơ mơ hình hệ thống báo động, báo cháy mức trừu tượng Thuộc tính cần kiểm chứng là: “bất có động, hệ thống phải báo” - [](move>sound) Và hệ thống cần đảm bảo “thời gian từ có động đến chuông phát báo động không vượt giây” - assert(time

Ngày đăng: 26/04/2021, 14:04

w