Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 65 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
65
Dung lượng
2,23 MB
Nội dung
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ LÊ VĂN HÙNG PHƯƠNGPHÁPCHUYỂNĐỔIQUALẠIGIỮACÁCĐẶCTẢHÌNHTHỨCCHOCÁCHỆCHUYỂNTRẠNGTHÁI LUẬN VĂN THẠC SĨ Hà Nội – 2016 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ LÊ VĂN HÙNG PHƯƠNGPHÁPCHUYỂNĐỔIQUALẠIGIỮACÁCĐẶCTẢHÌNHTHỨCCHOCÁCHỆCHUYỂNTRẠNGTHÁI Ngành: Công nghệ thông tin Chuyên ngành: Kĩ thuật phần mềm Mã Số: 6048103 LUẬN VĂN THẠC SĨ NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS PHẠM NGỌC HÙNG Hà Nội – 2016 i LỜI CẢM ƠN Trước tiên xin gửi lời cảm ơn chân thành sâu sắc đến PGS.TS Phạm Ngọc Hùng – thầy giáo anh Trần Hoàng Việt – NCS K22KTPM, người tận tình hướng dẫn, khuyến khích, bảo tạo cho điều kiện tốt từ bắt đầu nghiên cứu đề tài đến hoàn thành luận văn Tôi xin chân thành cảm ơn thầy cô giáo khoa Công nghệ thông tin, trường Đại học Công nghệ – Đại học Quốc Gia Hà Nội tận tình đào tạo, cung cấp cho kiến thức vô quý giá tạo điều kiện tốt cho suốt trình học tập, nghiên cứu trường Đồng thời xin chân thành cảm ơn người thân gia đình toàn thể bạn bè giúp đỡ, động viên lúc gặp phải khó khăn việc học tập nghiên cứu ii LỜI CAM ĐOAN Tôi xin cam đoan luận văn thạc sĩ công nghệ thông tin “Phương phápchuyểnđổiqualạiđặctảhìnhthứcchohệchuyểntrạng thái” công trình nghiên cứu riêng tôi, không chép lại người khác Trong toàn nội dung luận văn, điều trình bày cá nhân tổng hợp từ nhiều nguồn tài liệu Tất nguồn tài liệu tham khảo có xuất xứ rõ ràng hợp pháp Tôi xin hoàn toàn chịu trách nhiệm chịu hìnhthức kỷ luật theo quy định cho lời cam đoan Hà Nội, ngày 10 tháng 11 năm 2016 Lê Văn Hùng iii MỤC LỤC LỜI CẢM ƠN i LỜI CAM ĐOAN ii DANH MỤC THUẬT NGỮ VIẾT TẮT v DANH MỤC HÌNH VẼ vi DANH MỤC BẢNG viii Chương 1: Giới thiệu Chương 2: Kiến thức sở 2.1 Dạng đặctả sử dụng hệchuyểntrạngthái gắn nhãn 2.2 Dạng đặctả sử dụng hàm lôgic (Boolean) 11 Chương 3: Cácphươngpháp kiểm chứng giả định – đảm bảo 19 3.1 Phươngpháp kiểm chứng giả định – đảm bảo sử dụng thuật toán học L* 19 3.1.1 Thuật toán học L* 19 3.1.2 Sinh giả định dựa thuật toán học học L* 20 3.1.3 Ví dụ minh họa việc sinh ngữ cảnh sử dụng thuật toán học L* 24 3.2 Phươngpháp kiểm chứng giả định đảm bảo sử dụng thuật toán CDNF 30 3.2.1 Thuật toán CDNF 30 3.2.2 Sinh giả dịnh dựa thuật toán CDNF 30 Chương 4: Chuyểnđổi dạng đặctả sử dụng LTS dạng đặctả sử dụng hàm lôgic 37 4.1 Phươngphápchuyểnđổi 37 4.2 Chứng minh tính đắn phươngphápchuyểnđổi 39 4.3 Ví dụ việc chuyểnđổiqualại dạng đặctả 41 4.3.1 Giới thiệu hệ thống 41 4.3.2 Chuyểnđổi dạng đặc tử sử dụng LTS sang dạng đặctả sử dụng hàm lôgic 42 Chương 5: Công cụ thực nghiệm 47 5.1 Giới thiệu kiến trúc 47 5.2 Bảng kết thực nghiệm 49 iv Chương 6: KẾT LUẬN 53 TÀI LIỆU THAM KHẢO 55 v DANH MỤC THUẬT NGỮ VIẾT TẮT STT Từ viết tắt Từ đầy đủ Ý nghĩa LTS LabelledTransition System Hệ thống chuyểntrạngthái gán nhãn DFA Deterministic Finite Automata Ôtômát hữu hạn đơn định cex Counter Example Phản ví dụ DNF Disjunctive Normal Form Dạng chuẩn tắc tuyển CNF Conjunctive Normal Form Dạng chuẩn tắc hội CDNF Conjunctive Disjunctive Normal Form Tên thuật toán học hàm lôgic vi DANH MỤC HÌNH VẼ Hình 2.1: Một hệchuyểntrạngthái gán nhãn Hình 2.2: Minh họa vết LTS Hình 2.3: Ví dụ LTS không đơn định Hình 2.4: LTS M1 Hình 2.5: LTS M2 Hình 2.6: Minh họa việc chuyển LTS an toàn p sang LTS lỗi perr Hình 2.7: LTS sau ghép nối M1||M2 Hình 2.8: Mô hình ghép nối M1||M2||perr 10 Hình 2.9: Bài toán kiểm chứng giả định – đảm bảo 11 Hình 2.10: Ví dụ LTS 16 Hình 3.1: Mô hình tương tác L* Teacher 20 Hình 3.2: Xây dựng ứng viên DFA Mi từ bảng quan sát đóng 21 Hình 3.3: Mô hình sinh giả định dựa thuật toán học L* 22 Hình 3.4: LTS [cex] tạo từ phản ví dụ cex 23 Hình 3.5: LTS Input (M1) 24 Hình 3.6: LTS Order 24 Hình 3.7: LTS Output (M2) 24 Hình 3.8: LTS [σ] xây dựng từ σ = start 24 Hình 3.9: LTS [σ]||Input||Order 26 Hình 3.10: DFA Mi sinh từ bảng 3.3 26 Hình 3.11: LTS M1 Teacher chuyển thành LTS A1 26 Hình 3.12: LTS A1||Input||Ordererr 27 Hình 3.13: DFA M2 27 Hình 3.14: LTS A2 L* chuyển từ DFA M2 28 Hình 3.15: LTS A2err chuyển từ LTS A2 28 Hình 3.16: LTS Input||Order||A2 29 Hình 3.17: LTS Output||A2err 29 vii Hình 3.18: Mô hình từ υi = 010 đến = 101 32 Hình 3.19: Mô hình sinh giả định sử dụng thuật toán CDNF 33 Hình 4.1: Một hệ thống chuyểntrạngthái gán nhãn 41 Hình 5.1: Kiến trúc công cụ thực nghiệm 47 Hình 5.2: Ví dụ tệp đầu vào 48 Hình 5.3: Ví dụ tệp đầu 49 viii DANH MỤC BẢNG Bảng 2.1: Thành phần Q1 ↦ X1 bảng ánh xạ 17 Bảng 2.2: Thành phần Q2 ↦ X2 bảng ánh xạ 17 Bảng 2.3: Thành phần Σ ↦ E bảng ánh xạ 17 Bảng 2.4: Thành phần δ(q, e, q’) ↦ τ(υ, γ,υ’) bảng ánh xạ 17 Bảng 3.1: Bảng quan sát (S, E, T) lúc khởi tạo 25 Bảng 3.2: L* cập nhật bảng quan sát lần thứ 25 Bảng 3.3: L* cập nhật bảng quan sát lần thứ hai 25 Bảng 3.4: Cập nhật bảng quan sát từ phản ví dụ mà Teacher trả 28 Bảng 4.1: Bảng mô tả kiện, trạngthái LTS hình 4.1 42 Bảng 4.2: Thành phần Q1 ↦ X1 bảng ánh xạ 44 Bảng 4.3: Thành phần Q2 ↦ X2 bảng ánh xạ 44 Bảng 4.4: Thành phần Σ ↦ E bảng ánh xạ 44 Bảng 4.5: Thành phần δ(q, e, q’) ↦ τ(υ, γ, υ’) bảng ánh xạ 44 Bảng 4.6: Thành phần Q1 ↦ X1 bảng ánh xạ 45 Bảng 4.7: Thành phần Q2 ↦ X2 bảng ánh xạ 45 Bảng 4.8: Thành phần Σ ↦ E bảng ánh xạ 46 Bảng 4.9: Thành phần δ(q, e, q’) ↦ τ(υ, γ, υ’) bảng ánh xạ 46 Bảng 5.1: Bảng kết thực nghiệm việc chuyểnđổiqualại dạng đặctả 49 41 4.3 Ví dụ việc chuyểnđổiqualại dạng đặctả 4.3.1 Giới thiệu hệ thống admit New release dispatch Ready Running Exit timeout waitEvent eventOccurs Blocked Hình 4.1: Một hệ thống chuyểntrạngthái gán nhãn Hình 4.1 LTS biểu diễn việc chuyểntrạngthái tiến trình Tiến trình chương trình thực Một tiến trình có trạngthái bản: New trạngthái tiến trình vừa tạo hay nói cách khác tiến trình vừa sinh Ready trạngthái tiến trình đưa vào hệ thống cấp phát đầy đủ tài nguyên (trừ CPU) để xử lí Blocked trạngthái mà tiến trình chờđợi để cấp phát thêm tài nguyên để số kiện xảy ra, hay trình vào/ra kết thúc Khi kiện chờ xảy tiến trình trạngthái Ready Running trạngthái mà tiến trình sở hữu CPU để hoạt động, hay nói cách khác thị tiến trình thực hiện/ xử lý processor Exit trạngthái mà tiến trình kết thúc việc xử lí Bảng 4.1 dây mô tả việc chuyểnđổitrạngthái tiến trình 42 Bảng 4.1: Bảng mô tả kiện, trạngthái LTS hình 4.1 Trạngthái bắt đầu Trạngthái kết thúc Sự kiện Nguyên nhân Tiến trình tạo - New - New Ready admit Tiến trình khởi tạo, đưa vào hệ thống cấp phát đầy đủ tài nguyên thiếu CPU Ready Running dispatch Tiến trình cấp CPU để bắt đầu thực hiện/xử lý Running Blocked waitEvent Blocked Ready Running Ready timeout Khi tiến trình chạy bị chiếm chỗ tiến trình khác có độ ưu tiên cao tiến trình chạy sử dụng thời gian cho phép Running Exit Release Tiến trình kết thúc Tiến trình chờ kiện xảy hay chờ thao vào/ra kết thúc hay tài nguyên mà tiến trình yêu cầu chưa hệ điều hành đáp ứng eventOccurs Sự kiện mà tiến trình chờ xảy ra, thao tác vào/ra mà tiến trình đợi kết thúc, hay tài nguyên mà tiến trình yêu cầu hệ điều hành đáp ứng 4.3.2 Chuyểnđổi dạng đặc tử sử dụng LTS sang dạng đặctả sử dụng hàm lôgic Xét LTS M = {Q, Σ, δ, q0} hình 4.1 Trong đó: Q = {New, Ready, Running, Exit, Blocked}, Q1 = {New, Ready, Running, Blocked}, Q2 = {Ready, Running, Exit, Blocked}, Σ = {admit, dispatch, timeout, release, waitEvent, eventOccurs}, δ = {(New, admit, Ready), (Ready, dispatch, Running), (Running, release, Exit), (Running, timeout, Ready), (Ready, waitEvent, Blocked), (Blocked, eventOccurs, Ready)}, 43 New trạngthái bắt đầu Chúng ta mã hóa tập trạngthái tập kiện dựa theo thuật toán 3.1 Với đầu vào tập trạngthái đầu vào Q1 = {New, Ready, Running, Blocked}, ta có |Q1| = 4, log2(4) số nguyên nên theo bước (4) bước (5) ta có z = log2(4) = biến Theo bước (10) tiến hành mã hóa trạngtrạngthái tập Q1, trạngthái a0 trạngthái New, theo bước (11), lưu New vào bảng ánh xạ ứng với thành phần Q1↦ X1, theo bước (12), khởi tạo α0 = True, theo bước (13), k vị trí trạngthái New tập Q1 nên k = 0, theo bước (14), k biểu diễn dạng số nhị phân có dộ dài bit (z bit) hay k = 00 Theo bước (15), xét bit thứ k, giá trị bit nên theo bước (17) α0 = α0 ∧ 𝑥̅ 1, bit bit thứ 2, giá trị bit 0, nên theo bước (17) α0 = α0 ∧ 𝑥̅ ∧ 𝑥̅ = 𝑥̅ ∧ 𝑥̅ Theo bước (22), lưu α0 vào bảng ánh xạ ứng với vị trí trạngthái New thành phần Q1↦ X1 Một cách hoàn toàn tương tự, thu dạng mã hóa trạngthái Ready α1 = 𝑥 ∧ 𝑥̅ 2, dạng mã hóa trạngthái Running α2 = 𝑥̅ ∧𝑥 dạng mã hóa trạngthái Blocked α3 = 𝑥 ∧ 𝑥 Sau mã hóa xong tập trạngthái Q1 ta thu đươc thành phần Q1↦ X1 bảng ánh xạ bảng 4.2 Đồng thời sau mã hóa xong tập trạngthái đầu vào Q1, thu hàm lôgic dùng để biểu diễn trạngthái bắt đầu hệ thống (cũng dạng mã hóa trạngthái q0) ι(X) = 𝑥̅ ∧ 𝑥̅ Một cách hoàn toàn tương tự, áp dụng thuật toán 3.1 với đầu vào tập trạngthái đầu Q2 = {Ready, Running, Exit, Blocked} tập kiện Σ = {admit, dispatch, timeout, release, waitEvent, eventOccurs} ta thu thành phần Q2↦ X2 thành phần Σ ↦ E bảng ánh xạ hình 4.3 Công việc lại mã hóa tập chuyểntrạngthái Áp dụng thuật toán 3.2 với đầu vào tập chuyểntrạngthái δ = {(New, admit, Ready), (Ready, dispatch, Running), (Running, release, Exit), (Running, timeout, Ready), (Ready, waitEvent, Blocked), (Blocked, eventOccurs, Ready)} Theo bước (1) xét chuyểntrạng tập δ, với chuyểntrạngthái (New, admit, Ready), theo bước (2), ta lấy dạng biểu diễn New từ thành phần Q1↦ X1 bảng ánh xạ 𝑥̅ ∧ 𝑥̅ Theo bước (3), ta lấy dạng biểu diễn kiện admit từ thành phần Σ ↦ E bảng ánh xạ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ Theo bước (4), ta lấy dạng biểu diễn Ready từ thành phần Q2↦ X2 bảng ánh xạ 𝑥̅ 6∧𝑥̅ Theo bước (5), ta thu dạng mã hóa chuyểntrạngthái (New, admit, Ready) ̅𝑥 1∧𝑥̅ ∧𝑥̅ 3∧𝑥̅ ∧𝑥̅ ∧𝑥̅ 6∧𝑥̅ Áp dụng cách hoàn toàn tương tự chochuyểntrạngthái khác tập δ, cuối ta thu τ(X, E, X’) = {𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ 7} | {𝑥 ∧ 𝑥̅ ∧ 𝑥 ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥 ∧ 𝑥̅ 7} | {𝑥̅ ∧ 𝑥 ∧ 𝑥 ∧ 𝑥 ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥 7} | {𝑥̅ ∧ 𝑥 ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ 7} | {𝑥 ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥 ∧ 𝑥̅ ∧ 𝑥 ∧ 𝑥 7} | {𝑥 ∧ 𝑥 ∧ 𝑥 ∧ 𝑥̅ ∧𝑥 ∧ 𝑥̅ ∧ 𝑥̅ 7} Và thành phần δ (q, e, q’) ↦ τ(υ, γ, υ’) bảng ánh xạ bảng 4.5 44 Bảng 4.2: Thành phần Q1 ↦ X1 bảng ánh xạ Q1 New Ready X1 𝑥̅ ∧ 𝑥̅ 𝑥 ∧ 𝑥̅ Running Blocked 𝑥̅ ∧ 𝑥 𝑥1 ∧ 𝑥2 Bảng 4.3: Thành phần Q2 ↦ X2 bảng ánh xạ Q2 Ready Running Exit Blocked X2 𝑥̅ ∧ 𝑥̅ 𝑥 ∧ 𝑥̅ 𝑥̅ ∧ 𝑥 𝑥6 ∧ 𝑥7 Bảng 4.4: Thành phần Σ ↦ E bảng ánh xạ Σ admit dispatch release E 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ 𝑥 ∧ 𝑥̅ ∧ 𝑥̅ 𝑥̅ ∧ 𝑥 ∧ 𝑥̅ Σ timeout waitEvent eventOccurs E 𝑥 ∧ 𝑥 ∧ 𝑥̅ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥 𝑥 ∧ 𝑥̅ ∧ 𝑥 Cuối cùng, kết sau chuyểnđổi thu dạng đặctả sử dụng hàm lôgic N = 〈X, E, τ(X, E, X’), ι(X)⟩ bảng ánh xạ (Bảng 4.2, 4.3, 4.4 4.5) Với N = 〈X, E, τ(X, E, X’), ι(X)⟩ Trong đó: X = {𝑥 1, 𝑥 2}, X’ = {𝑥 6, 𝑥 7}, E = {𝑥 3, 𝑥 4, 𝑥 5}, τ(X, E, X’) = {𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ 7} | {𝑥 ∧ 𝑥̅ ∧ 𝑥 ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥 ∧ 𝑥̅ 7} | {𝑥̅ ∧ 𝑥 ∧ 𝑥 ∧ 𝑥 ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥 7} | {𝑥̅ ∧ 𝑥 ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ 7} | {𝑥 ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥4 ∧ 𝑥̅ ∧ 𝑥 ∧ 𝑥 7} | {𝑥 ∧ 𝑥 ∧ 𝑥 ∧ 𝑥̅ ∧ 𝑥 ∧ 𝑥̅ ∧ 𝑥̅ 7}, ι(X) = 𝑥̅ ∧ 𝑥̅ Bảng 4.5: Thành phần δ(q, e, q’) ↦ τ(υ, γ, υ’) bảng ánh xạ δ(q, e, q’) (New, admit, Ready) (Ready, dispatch, Running) τ(υ, γ, υ’) 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ 𝑥 ∧ 𝑥̅ ∧ 𝑥 ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥 ∧ 𝑥̅ δ(q, e, q’) (Running, release, Exit) (Running, timeout, Ready) τ(υ, γ, υ’) 𝑥̅ ∧ 𝑥 ∧ 𝑥 ∧ 𝑥 ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥 𝑥̅ ∧ 𝑥 ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ δ(q, e, q’) (Ready, waitEvent, Blocked) (Blocked, eventOccurs, Ready) τ(υ, γ, υ’) 𝑥 ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥4 ∧ 𝑥̅ ∧ 𝑥 ∧ 𝑥 𝑥 ∧ 𝑥 ∧ 𝑥 ∧ 𝑥̅ ∧ 𝑥 ∧ 𝑥̅ ∧ 𝑥̅ 45 4.3.3 Chuyểnđổi dạng đặc tử sử dụng hàm lôgic sang dạng đặctả sử dụng LTS Giả sử có dạng đặctả sử dụng hàm lôgic N bảng ánh xạ Với N = 〈X, E, τ(X, E, X’), ι(X)⟩ Trong đó: X = {𝑥 1, 𝑥 2}, X’ = {𝑥 6, 𝑥 7}, E = {𝑥 3, 𝑥 4, 𝑥 5}, τ(X, E, X’) = {𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ 7} | { 𝑥 ∧ 𝑥̅ ∧ 𝑥 ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥 ∧ 𝑥̅ 7} | {𝑥̅ ∧ 𝑥 ∧ 𝑥 ∧ 𝑥 ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥 7} | {𝑥̅ ∧ 𝑥 ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ 7} | {𝑥 ∧ 𝑥̅ ∧ 𝑥̅ 3∧ 𝑥 ∧ 𝑥̅ ∧ 𝑥 ∧ 𝑥 7} | {𝑥 ∧ 𝑥 ∧ 𝑥 ∧ 𝑥̅ ∧ 𝑥 ∧ 𝑥̅ ∧ 𝑥̅ 7}, ι(X) = 𝑥̅ ∧ 𝑥̅ Và bảng ánh xạ Map: Bảng 4.6: Thành phần Q1 ↦ X1 bảng ánh xạ Q1 New Ready Running Blocked X1 𝑥̅ ∧ 𝑥̅ 𝑥 ∧ 𝑥̅ 𝑥̅ ∧ 𝑥 𝑥1 ∧ 𝑥2 Bảng 4.7: Thành phần Q2 ↦ X2 bảng ánh xạ Q2 Ready Running Exit Blocked X2 𝑥̅ ∧ 𝑥̅ 𝑥 ∧ 𝑥̅ 𝑥̅ ∧ 𝑥 𝑥6 ∧ 𝑥7 Nhiệm vụ tìm LTS ban đầu, tức LTS mã hóa thành dạng đặctả sử dụng hàm lôgic N cho Dựa vào thành phần Q1↦ X1 ta thấy 𝑥̅ ∧ 𝑥̅ dạng mã hóa trạngthái q0 mà ι(X) = 𝑥̅ ∧ 𝑥̅ nên q0 trạngthái bắt đầu LTS (*) Q1 = {New, Ready, Running, Blocked}, Q2 có bốn trạngthái Q2 = {Ready, Running, Exit, Blocked} mà Q = Q1 ∪ Q2 nên Q = {New, Ready, Running, Exit, Blocked} (**) Thêm vào đó, dựa vào thành phần Σ ↦ E, ta thấy LTS có sáu kiện Σ = {admit, dispatch, release, timeout, waitEvent, eventOccurs} (***) Mặt khác τ(X, E, X’) = {𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ 7} | {𝑥 ∧ 𝑥̅ ∧ 𝑥 ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥 ∧ 𝑥̅ 7} | {𝑥̅ ∧ 𝑥 ∧ 𝑥 ∧ 𝑥 ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥 7} | {𝑥̅ ∧ 𝑥 ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ 7} | {𝑥 ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥4 ∧ 𝑥̅ ∧ 𝑥 ∧ 𝑥 7} | {𝑥 ∧ 𝑥 ∧ 𝑥 ∧ 𝑥̅ ∧ 𝑥 ∧ 𝑥̅ ∧ 𝑥̅ 7} Xét phần tử τ(X, E, X’), với τ(υ, γ, υ’) = {𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ 7} (kể thứ tự biến mã hóa bị thay đổi) Đối chiếu với thành phần Σ ↦ E bảng ánh xạ ta thấy dạng biểu diễn kiện admit Một hoàn toàn tương tự ta có chuyểntrạngtháilại LTS (Ready, dispatch, Running), (Running, release, Exit), (Running, timeout, Ready), (Running, waitEvent, Blocked) (Blocked, eventOccurs, Ready) (****) Từ (*) (**) (***) (****) ta LTS M hình 4.1 46 M = 〈Q, Σ, δ, q0⟩, đó: Q = {New, Ready, Running, Exit, Blocked}, Q1 = {New, Ready, Running, Blocked}, Q2 = {Ready, Running, Exit, Blocked}, Σ = {admit, dispatch, timeout, release, waitEvent, eventOccurs}, δ = {(New, admit, Ready), (Ready, dispatch, Running), (Running, release, Exit), (Running, timeout, Ready), (Ready, waitEvent, Blocked), (Blocked, eventOccurs, Ready)}, New trạngthái bắt đầu Bảng 4.8: Thành phần Σ ↦ E bảng ánh xạ Σ admit dispatch release E 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ 𝑥 ∧ 𝑥̅ ∧ 𝑥̅ 𝑥̅ ∧ 𝑥 ∧ 𝑥̅ Σ timeout waitEvent eventOccurs E 𝑥 ∧ 𝑥 ∧ 𝑥̅ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥 𝑥 ∧ 𝑥̅ ∧ 𝑥 Bảng 4.9: Thành phần δ(q, e, q’) ↦ τ(υ, γ, υ’) bảng ánh xạ δ(q, e, q’) (New, admit, Ready) (Ready, dispatch, Running) τ(υ, γ, υ’) 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ 3∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ 𝑥 ∧ 𝑥̅ ∧ 𝑥 ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥 ∧ 𝑥̅ δ(q, e, q’) (Running, release, Exit) (Running, timeout, Ready) τ(υ, γ, υ’) 𝑥̅ ∧ 𝑥 ∧ 𝑥 ∧ 𝑥 ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥 𝑥̅ ∧ 𝑥 ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥̅ δ(q, e, q’) (Ready, waitEvent, Blocked) (Blocked, eventOccurs, Ready) τ(υ, γ, υ’) 𝑥 ∧ 𝑥̅ ∧ 𝑥̅ ∧ 𝑥 ∧ 𝑥̅ ∧ 𝑥 ∧ 𝑥 𝑥 ∧ 𝑥 ∧ 𝑥 ∧ 𝑥̅ ∧ 𝑥 ∧ 𝑥̅ ∧ 𝑥̅ 47 Chương 5: Công cụ thực nghiệm 5.1 Giới thiệu kiến trúc Hình 5.1 mô tả kiến trúc công cụ thực nghiệm Công cụ viết ngôn ngữ lập trình C#, chạy tảng NET 4.5 Chức công cụ chuyểnđổi từ dạng đặctả sử dụng LTs sang dạng đặctả sử dụng hàm lôgic Kiến trúc công cụ gồm bốn môđun chính: Môđun mã hóa trạngthái có nhiệm vụ mã hóa tập trạngthái LTS sang biến lôgic Cũng tương tự, môđun mã hóa kiện có nhiệm vụ mã hóa kiện thành biến logic, môđun mã hóa chuyểntrạngthái mã hóa tất chuyểntrạngthái LTS thành hàm τ cuối môđun biểu diễn dạng đặctả sử dụng hàm lôgic có nhiệm vụ ghép nối trạng thái, kiện, chuyểntrạngthái mã hóa thành dạng đặctả sử dụng hàm lôgic Đầu vào công cụ dạng đặctả sử dụng LTS lưu vào tệp Đầu công cụ dạng đặctả sử dụng hàm lôgic lưu dạng tệp Tệp đầu vào cho môđun LTS tệp lưu thông tin hệchuyểntrạngtháiđặctả LTS, tệp lưu theo cấu trúc định Tệp đầu lưu thông tin hệchuyểntrạngtháiđặctả hàm lôgic tương ứng với LTS tệp đầu vào Công cụ chuyểnđổi Mã hóa trạngtháiĐặctả sử dụng LTS Mã hóa kiện Mã hóa chuyểntrạngthái Biểu diễn dạng đặctả sử dụng hàm lôgic Đặctả sử dụng hàm lôgic + Bảng ánh xạ Hình 5.1: Kiến trúc công cụ thực nghiệm Cấu trúc tệp đầu vào biểu diễn hình 5.2 Trong đó: Dòng đầu tiên: Số lượng hệchuyểntrạngtháiđặctả LTS Các dòng mô tả thông tin LTS theo thứ tự sau: Dòng thứ nhất: Định nghĩa trạngthái khởi tạo Dòng thứ hai: Định nghĩa danh sách trạng thái, trạngthái cách dấu cách Dòng thứ ba: Định nghĩa danh sách chuyểntrạng thái, chuyểntrạngthái đặt cặp dấu ngoặc đơn “()”, đặt cách hai dấu cách dấu chấm phẩy đặt “ ; “ Bên cặp dấu ngoặc 48 đơn biểu diễn: Trạngthái đầu vào, kiện trạngthái đầu ra, thành phần đặt cách hai dấu cách dấu chấm xen Cấu trúc tệp đầu biểu diễn hình 5.3 Trong đó: Hai dòng mô tả thông tin tiêu đề Các bảy dòng mô tả thông tin hệchuyểntrạngtháiđặctả sử dụng hàm lôgic, với: Dòng thứ nhất: Danh sách biến lôgic dùng để biểu diễn Để đơn giản, sử dụng biến 1, 2, 3, … để thay cho việc sử dụng biến 𝑥1 , 𝑥2 , 𝑥3 , … cách tương ứng Dòng thứ hai: Hàm lôgic biểu diễn trạngthái khởi tạo Dòng thứ ba: Hàm lôgic biểu diễn tập chuyểntrạngthái Bốn dòng thông tin bảng ánh xạ gồm thành phần Q1 ↦ X1, Q2 ↦ X2, Σ ↦ E ↦ τ Hình 5.2: Ví dụ tệp đầu vào 49 Hình 5.3: Ví dụ tệp đầu 5.2 Bảng kết thực nghiệm Bảng 5.1 sau trình bày kết thực nghiệm việc chuyểnđổiqualại hai loại đặc tả, cột thứ hai mô tảhệchuyểntrạngthái biểu diễn LTS, cột thứ ba mô tảhệchuyểntrạngthái biểu diễn dạng đặctả sử dụng hàm lôgic tương ứng Bảng 5.1: Bảng kết thực nghiệm việc chuyểnđổiqualại dạng đặctả STT HệchuyểntrạngtháiHệchuyểntrạngthái biểu diễn dạng biểu diễn LTS đặctả sử dụng hàm lôgic s0 x = {1 } s0 s1 s2 i(x) = {-1 & -2} (s0 send s2) ; (s2 out s0) ; (s2 send s1) ; (s1 send s1) ; (s1 ack s1) ; (s1 out s1) ; (s0 ack s1) T(x,e,x') = {{-1 & -2 & -3 & -4 & -5 & -6 } | {-1 & -2 & & -4 & -5 & } | {-1 & & -3 & -4 & -5 & } | {-1 & & & -4 & -5 & } | {-1 & & -3 & & -5 & } | {1 & -2 & -3 & & & -6 } | {1 & -2 & -3 & -4 & -5 & }} -Mapping From State: where s0 = {-1 & -2}, s1 = {1 & 2}, s2 = {1 & -2} 50 Event : where send = {-3 & -4}, ack = {3 & -4}, out = {-3 & 4} To State: where s2 = {-5 & -6}, s1 = {-5 & 6}, s0 = {5 & -6} Transition: (s0, send, s2) ->{-1 & -2 & -3 & & -5 & -6}, (s0, ack, s1) ->{-1 & -2 & & -4 & -5 & 6}, (s1, send, s1) ->{-1 & & -3 & -4 & -5 & 6}, (s1, ack, s1) ->{-1 & & & & -5 & 6}, (s1, out, s1) ->{-1 & & -3 & & -5 & 6}, (s2, out, s0) ->{1 & -2 & -3 & & & -6}, (s2, send, s1) ->{1 & -2 & -3 & & -5 & 6} in0 x = {1 } in0 in1 in2 i(x) = {-1 & -2} (in0 input in1) ; (in1 send T(x,e,x') = {{-1 & -2 & -3 & -4 & -5 & -6 } | in2) ; (in2 out in0) {1 & -2 & & -4 & & -6 } | {-1 & & -3 & & -5 & }} -Mapping From State: where in0 = {-1 & -2}, in1 = {1 & -2}, in2 = {-1 & 2} Event : where input = {-3 & -4}, send = {3 & -4}, out = {-3 & 4} To State: where in1 = {-5 & -6}, in2 = {5 & -6}, in0 = {-5 & 6} Transition: (in0, input, in1) ->{-1 & -2 & -3 & -4 & -5 & -6}, (in1, send, in2) ->{1 & -2 & & -4 & & -6}, (in2, out, in0) ->{-1 & & -3 & & -5 & 6} s0 x = {1 } s0 i(x) = {-1} (s0 ack s0) ; (s0 send s0) T(x,e,x') = {{-1 & -2 & -3 } | {-1 & & -3 }} -Mapping From State: where s0 = {-1} Event : where ack = {-2}, send = {2} To State: where s0 = {-3} 51 Transition: (s0, ack, s0) ->{-1 & -2 & -3}, (s0, send, s0) ->{-1 & & -3} q0 x = {1 } q0 q1 q2 q3 i(x) = {-1 & -2} (q0 fillCoffee q1) ; (q1 heatWater q2) ; (q2 fillWater q3) ; (q3 waterOK q2) ; (q2 warm q1) ; (q1 coffeeOK q0) T(x,e,x') = {{-1 & -2 & -3 & -4 & -5 & -6 & } | {1 & -2 & & -4 & -5 & & -7 } | {1 & -2 & -3 & & -5 & & } | {-1 & & & & -5 & -6 & } | {-1 & & -3 & -4 & & -6 & -7 } | {1 & & & -4 & & & -7 }} -Mapping From State: where q0 = {-1 & -2}, q1 = {1 & -2}, q2 = {-1 & 2}, q3 = {1 & 2} Event : where fillCoffee = {-3 & -4 & 5}, heatWater = {3 & -4 & -5}, coffeeOK = {3 & & -5}, fillWater = {3 & & -5}, warm = {-3 & -4 & 5}, waterOK = {3 & -4 & 5} To State: where q1 = {-6 & -7}, q2 = {6 & -7}, q0 = {6 & 7}, q3 = {-6 & 7} Transition: (q0, fillCoffee, q1) ->{-1 & -2 & -3 & -4 & -5 & -6 & -7}, (q1, heatWater, q2) >{1 & -2 & & -4 & -5 & & -7}, (q1, coffeeOK, q0) ->{1 & -2 & -3 & & -5 & & 7}, (q2, fillWater, q3) ->{-1 & & & & -5 & -6 & 7}, (q2, warm, q1) ->{-1 & & -3 & -4 & & -6 & -7}, (q3, waterOK, q2) >{1 & & & -4 & & & -7} in0 x = {1 } in0 in1 in2 in3 in4 i(x) = {-1 & -2 & -3} (in0 input in1) ; (in1 send T(x,e,x') = {{-1 & -2 & -3 & -4 & -5 & -6 & in2) ; (in2 out in3) ; (in3 & -8 & -9 } | {1 & -2 & -3 & & -5 & -6 & ack in4) ; (in4 exec in0) & -8 & -9 } | {-1 & & -3 & -4 & & -6 & -7 & & -9 } | {1 & & -3 & & & -6 & & & -9 } | {-1 & -2 & & -4 & -5 & & -7 & -8 & }} -Mapping - 52 From State: where in0 = {-1 & -2 & -3}, in1 = {1 & -2 & -3}, in2 = {-1 & & -3}, in3 = {1 & & -3}, in4 = {-1 & -2 & 3} Event : where input = {-4 & -5 & -6}, send = {4 & -5 & -6}, out = {-4 & & -6}, ack = {4 & & -6}, exec = {-4 & -5 & 6} To State: where in1 = {-7 & -8 & -9}, in2 = {7 & -8 & -9}, in3 = {-7 & & -9}, in4 = {7 & & -9}, in0 = {-7 & -8 & 9} Transition: (in0, input, in1) ->{-1 & -2 & -3 & -4 & -5 & -6 & -7 & -8 & -9}, (in1, send, in2) ->{1 & -2 & -3 & & -5 & -6 & & -8 & -9}, (in2, out, in3) ->{-1 & & -3 & -4 & & -6 & -7 & & -9}, (in3, ack, in4) ->{1 & & -3 & & & -6 & & & -9}, (in4, exec, in0) ->{-1 & -2 & & -4 & -5 & & -7 & -8 & 9} Chúng ta thấy kết thực nghiệm bảng 5.1, đầu vào hệchuyểntrạngthái biểu diễn LTS, đầu hệchuyểntrạngthái biểu diễn dạng đặctả sử dụng hàm lôgic bảng ánh xạ Kết thực nghiệm làm đầu vào cho công cụ kiểm chứng sử dụng đặctả sử dụng hàm lôgic 53 Chương 6: KẾT LUẬN Trong bối cảnh hệ thống phần mềm ngày trở nên phức tạp quy mô chức Việc kiểm chứng hệ thống phần mềm ngày trở nên khó khăn tốn nhiều chi phí Việc sử dụng phươngpháp kiểm chứng giả định – đảm bảo giúp cho việc kiểm chứng trở nên dễ dàng hơn, thay phải ghép nối toàn hệ thống để kiểm chứng cần chứng minh có tồn giải định chohệ thống hay không Đối với phần mềm xây dựng theo hướng thành phần việc xây dựng mô hình đắn cho thành phần việc làm khó khăn, tốn chưa nói đến việc ghép nối mô hình thành phần lại để kiểm chứng Chính vậy, việc sử dụng phươngpháp kiểm chứng giả định – đảm bảo mang lại hiệu rõ rệt cho toán kiểm chứng phần mềm xây dựng theo hướng thành phần Xuất phát từ toán kiểm chứng giả định – đảm bảo, chứng minh hệ thống thỏa mãn thuộc tính mà không cần phải ghép nối mô hình thành phần hệ thống lại với nhau, luận văn trình bày hai thuật toán thuật toán học L* thuật toán CDNF sử dụng chophươngpháp kiểm chứng giả định – đảm bảo Mỗi thuật toán có ưu điểm nhược điểm định chung mục tiêu sinh giả định chohệ thống Thuật toán L* yêu cầu đầu vào thành phần hệ thống thuộc tính cần kiểm chứng đặctảhệchuyểntrạngthái gắn nhãn (Labelled Transition System – LTS), loại đặchìnhthức trực quan phổ biến nay, nhiên giả định sinh lớn, chi phí cao Ngược lại, thuật toán CDNF sinh giả định nhanh hơn, nhiên điểm khó khăn phươngpháp việc sử dụng hàm lôgic để đặctả thành phần hệ thống thuộc tính cần kiểm chứng để làm đầu vào cho thuật toán Vì thế, luận văn trình bày phươngphápchuyểnđổiqualại hai loại đặctảhìnhthức (đặc tả sử dụng LTS đặctả sử dụng hàm lôgic) Khi thành phần hệ thống thuộc tính cần kiểm chứng đặctả LTS, cần sinh giả định nhanh chóng, tốn chi phí sử dụng phươngphápchuyểnđổi để chuyển từ dạng đặctả sử dụng LTS sang đặctả sử dụng hàm lôgic Tuy nhiên, giả định sinh biển diễn hàm lôgic, khó để quan sát, áp dụng phươngphápchuyểnđổi để chuyểnđổi ngược lại từ dạng đặctả sử dụng hàm lôgic sang dạng đặctả sử dụng LTS Với phươngphápchuyểnđổi đưa ra, luận văn trình bày thuật toán mã hóa trạng thái, kiện chuyểntrạng thái, đồng thời chứng minh tính đắn phươngpháp thông qua việc chứng minh tương đương ngôn ngữ dạng đặctả trước sau chuyển đổi, đồng thời đưa ví dụ minh họa cách chuyểnđổiqualại dạng đặctả Về mặt thực nghiệm, luận văn trình bày công cụ giúp tự động hóa việc chuyểnđổi kết thực nghiệm thu Công cụ chuyểnđổi nhận đầu vào 54 hệchuyểntrạngtháiđặctả LTS, đầu hệchuyểntrạngtháiđặctả hàm lôgic kết hợp với bảng ánh xạ Kết thực nghiệm sử dụng năm hệchuyểntrạngtháiđặctả LTS thực việc chuyển đổi, kết thực nghiệm sử dụng làm đầu vào cho công cụ kiểm chứng sử dụng đặctả hàm lôgic Về hướng nghiên cứu đề tài việc tìm hiểu, nghiên cứu phươngphápđặctả khác chohệchuyểntrạngthái Hiện tại, phạm vi luận văn trình bày phươngpháp kiểm chứng dựa hai loại đặctả khác nhau, có phươngphápđặctả khác hiệu dễ sử dụng Trên sở phươngpháp kiểm chứng dựa đặctả tìm hiểu em tìm hiểu phươngphápchuyểnđổiqualại loại đặctả Ngoài việc kiểm chứng tiếp tục thực thi với thuộc tính khác thuộc tính công (fairness), thuộc tính sống (liveness) phạm vi luận văn việc kiểm chứng dừng lại thuộc tính lỗi π 55 TÀI LIỆU THAM KHẢO [1] [2] [3] [4] [5] [6] [7] [8] [9] Ivica Crnkovic and Magnus Larsson (2001), “Component-Based Software Engineering – New Paradigm of Software Development”, Inviteted talk & Invited report, MIPRO 2001 proceedings, Opatija, Croatia Jun Sun, Yang Liu, Jin Song Dong and Jing Sun (2008), “Bounded Model Checking of Compositional Processes”, 2nd IFIP/IEEE International Symposium on Theoretical Aspects of Software Engineering (TASE 2008), pages 23 – 30, Nanjing, China J.M Cobleigh, D Giannakopoulou, and C S Pasareanu (2003), “Learning Assumptions for Compositional Verification", Proc of 9th Int Conf on Tools and Algorithms for the Construction and Analysis of Systems (TACAS), pp 331–346 D Angluin (1987), “Learning regular sets from queries and counterexamples”, Information and Computation, 75(2), pp 87-106 P N Hung, N V Ha, T Aoki and T Katayama (2012), “On Optimization of Minimized Assumption Generation Method for Component-based Software Verification”, IEICE Trans on Fundamentals, Special Issue on Software Reliability Engineering, Vol E95-A, No.9, pp 1451–1460 R L Rivest and R E Schapire (1993), “Inference of finite automata using homing sequences”, Information and Computation, 103(2):299–347 Yu-Fang Chen, Edmund M Clarke, Azadeh Farzan, Ming-Hsien Tsai, YihKuen Tsay, and Bow-Yaw Wang (2010), “Automated Assume-Guarantee Reasoning through Implicit Learning”, 22nd International Conference on Computer Aided Verification (CAV '10) Edinburgh, UK Nader H Bshouty (1995), “Exact Learning Boolean Functions via the Monotone Theory”, Information and Computation, 123(1):146–153 Kun Ji, Yang Liu, Shang-Wei Lin, Jun Sun, Jin Song Dong, and Truong Khanh Nguyen (2003), “CELL: A Compositional Verification Framework”, International Symposium on Automated Technology for Verification and Analysis (ATVA), LNCS Vol 8172, pp 474–477, Hanoi, Vietnam ... QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ LÊ VĂN HÙNG PHƯƠNG PHÁP CHUYỂN ĐỔI QUA LẠI GIỮA CÁC ĐẶC TẢ HÌNH THỨC CHO CÁC HỆ CHUYỂN TRẠNG THÁI Ngành: Công nghệ thông tin Chuyên ngành: Kĩ thuật phần... gồm phương pháp kiểm chứng sử dụng đặc tả LTS phương pháp kiểm chứng sử dụng đặc tả sử dụng hàm lôgic Chương tập trung vào việc trình bày phương pháp chuyển đổi qua lại hai dạng đặc tả hình thức. .. đoan luận văn thạc sĩ công nghệ thông tin Phương pháp chuyển đổi qua lại đặc tả hình thức cho hệ chuyển trạng thái công trình nghiên cứu riêng tôi, không chép lại người khác Trong toàn nội