Chương 1. Giới thiệu cứu đặc tả hoàn chỉnh của FSP và tích hợp GUI-AGTool với công cụ LTSA. Những cải tiến này sẽ biến GUI-AGTool trở thành một công cụ hiệu quả và có tính tương tác rộng rãi hơn trong thực tế. Cấu trúc của luận văn được chia thành sáu phần.
Chương đầu tiên giới thiệu về vai trò của kiểm chứng phần mềm, công cụ hỗ trợ và bài toán cần giải quyết trong luận văn này. Tiếp theo, chương 2 trình bày các khái niệm cơ bản nhằm phục vụ luận văn. Chương này bao gồm các khái niệm về máy hữu hạn trạng thái, dẫn xuất, ghép nối song song, thuộc tính an toàn, đặc tả của ngôn ngữ FSP, ngôn ngữ lập trình hàm OCaml, Ocamllex và Ocamlyacc. Công cụ kiểm chứng phần mềm dựa thành phần AGTool được mô tả ở chương 3.
Những vấn đề còn tồn tại của công cụ kiểm chứng AGTool được nêu ra trong chương này. Các phương pháp chuyển đổi giữa các dạng biểu diễn của LTS được trình bày trong chương 4. Trong chương này đưa ra hai phương pháp chuyển đổi qua lại giữa hai cách biểu diễn của LTS là FSP và LF. Kết quả sau khi làm thực nghiệm bằng công cụ GUI-AGTool được trình bày ở chương 5.
Cuối cùng, chương 6 tóm tắt kết quả đạt được sau khi hoàn thành luận văn, những vấn đề cần khắc phục và hướng phát triển trong tương lai. 3 Chương 2 Kiến thức cơ bản 2.1 Labeled Transition System (LTS) Trong luận văn này sử dụng LTS [11] để đặc tả hành vi của các thành phần và thuộc tính cần kiểm chứng. Giả sử Act là tập các hành động có thể quan sát được và τ là hành động đại diện cho tất cả các hành động bên trong của hệ thống, một LTS M là một bộ bốn h Q, αM, σ, q0 i. Trong đó : • Q là một tập hữu hạn các trạng thái không rỗng, • αM ⊆ Act là tập các hành động của thành phần (gọi là bảng chữ cái của M), • q0 ∈ Q là trạng thái ban đầu, và • σ ⊆ Q × (αM ∪ τ ) × Q là hàm chuyển trạng thái.
Với π là một trạng thái lỗi của hệ thống. Chúng ta ký hiệu LTS M= h{π }, Act, σ, π i. Một LTS M = h Q, αM, δ, q0 i được gọi là LTS không đơn định nếu nó có phép biến đổi τ hoặc tồn tại (q, a, q0 ), (q, a, q00 ), trong đó q0 6= q00. Ngược lại, LTS M được gọi là LTS đơn định.
LTS Input = h Q1 , αM1 , δ1 , q10 i, trong đó : • Q1 = {0, 1, 2}, • αM1 = {in, send, ack}, • σ1 = {(0, in, 1), (1, send, 2), (2, ack, 0)}, và • q10 = {0}. Kiến thức cơ bản (a) LTS Input.1: Ví dụ của LTS. LTS Input được mô tả trực quan bởi Hình 2. Khi hệ thống ở trạng thái 0 và thực hiện hành động in thì sẽ chuyển sang trạng thái 1, còn nếu hệ thống ở trạng thái 1 thực hiện hành động send thì sẽ chuyển sang trạng thái 2.
LTS Output = h Q2 , αM2 , σ2 , q20 i, trong đó : • Q2 = {0, 1, 2}, • αM2 = {send, ack, out}, • σ2 = {(0, send, 1), (1, send, 1), (1, out, 2), (2, ack, 0)}, • q20 = {0}. LTS Output được mô tả trực quan bởi Hình 2. Nếu hệ thống đang ở trạng thái 1 mà thực hiện hành động send thì vẫn giữ nguyên trạng thái 1.2 Các phương pháp biểu diễn LTS Để chuẩn bị đầu vào cho các công cụ kiểm chứng mà các thành phần được đặc tả bằng LTS, chúng ta biểu diễn LTS bằng một trong hai phương pháp sau. Kiến thức cơ bản 2.