Chương 1 giới thiệu về đề tài. Chương này trình bày các ngữ cảnh, những lý do chọn đề tài, mục tiêu của đề tài và cấu trúc của luận văn. Chương 2 trình bày các khái niệm cơ bản phục vụ cho đề tài. Chương này mô tả các phương pháp hình thức cho đặc tả phần mềm, các khái niệm về thành phần phần mềm và đặc tả thành phần phần mềm, máy hữu hạn trạng thái, hệ chuyển trạng thái được gán nhãn, ôtômát hữu hạn trạng thái và các khái niệm liên quan.
Chương 3 nghiên cứu phương pháp xây dựng tự động mô hình mô tả chính xác hành vi của một thành phần phần mềm. Trong chương này, chúng tôi đề xuất hai giải pháp cho việc xây dựng mô hình thành phần phần mềm. Giải pháp thứ nhất là xây dựng mô hình sử dụng thuật toán học L*. Đây là phương pháp học lặp đi lặp lại để xây dựng mô hình ứng viên tương ứng với thành phần phần mềm C.
Ở mỗi bước lặp, chúng ta sẽ kiểm tra tính tương thích giữa mô hình ứng viên với thành phần C và cập nhật lại mô hình ứng viên nếu không tương thích. Giải pháp thứ hai là xây dựng mô hình sử dụng thuật toán Thompson [11]. Phương pháp này xây dựng ôtômát hữu hạn như một mô hình mô tả chính xác hành vi của thành phần phần mềm C tương đương với biểu thức chính quy sinh tập dẫn xuất trên C. Chương 4 giới thiệu về kết quả thực nghiệm.
Chương này trình bày những kết quả đạt được, công cụ sinh mô hình của một thành phần phần mềm và áp dụng cho một số ví dụ cụ thể. Cuối cùng là phần kết luận, định hướng mở rộng và tài liệu tham khảo. TIEU LUAN MOI download : skknchat@gmail.com 3 Chương 2: Các phương pháp hình thức cho đặc tả phần mềm 2.1 Hệ thống chuyển trạng thái được gán nhãn Mỗi thành phần phần mềm được đặc tả bởi một mô hình tương ứng mô tả hành vi của thành phần đó. Mô hình của thành phần phần mềm có thể được biểu diễn bởi một hệ chuyển trạng thái được gán nhãn [10], đó là một đồ thị có hướng với các nhãn trên các cạnh của nó.
Mỗi nhãn trên cạnh biểu diễn cho một hành động có thể thực hiện được bởi hệ thống, mỗi đỉnh của đồ thị là một trạng thái của mô hình, biểu diễn cho trạng thái của hệ thống. Tập tất cả các nhãn được gọi là bảng chữ cái. Ta ký hiệu Act là tập tất cả các hành động quan sát được, là hành động không quan sát được trong môi trường của thành phần phần mềm, là trạng thái lỗi đặc biệt của hệ thống, ta ký hiệu LTS = <{π}, Act, , π>.1: Hệ thống chuyển trạng thái được gán nhãn (Labeled Transition System – LTS) Một hệ chuyển trạng thái được gán nhãn [10] M là một bộ có thứ tự gồm bốn thành phần (Q, , , q0), trong đó: Q là tập khác rỗng các trạng thái của M, Act là tập các hành động quan sát được, gọi là bảng chữ cái của M, Qx x Q là hàm chuyển trạng thái, và q0 Q là trạng thái khởi tạo. Ta ký hiệu qi qj nếu có một hành động với nhãn là a chuyển hệ thống từ trạng thái qi sang trạng thái qj, khi đó (qi, a, qj).
Điều này có nghĩa là khi hệ thống đang ở trạng thái qi nó có thể thực hiện một hành động a và chuyển sang trạng thái qj. Tương tự, khi hệ thống đang ở trạng thái qj có thể thực hiện một hành động a′ và chuyển sang trạng thái qk. Như vậy, ta có TIEU LUAN MOI download : skknchat@gmail.com 4 ′ một chuỗi các hành động qi qj qk. Khi đó, chúng ta có thể ′ ký hiệu: qi qk.
Một cách tổng quát, nếu chúng ta có một chuỗi các hành động qi qk biểu diễn hệ thống thì khi nó ở trạng thái qi nó có thể thực hiện một chuỗi các hành động a1.an và kết thúc ở trạng thái qk. Xét một hệ chuyển trạng thái được gán nhãn P = (Q, , , q0) với q, q′ Q, , i ta có: 1.1: q0 in q1 ack send q2 Hình 2.1: Một hệ thống chuyển trạng thái được gán nhãn.1 là một ví dụ về hệ chuyển trạng thái được gán nhãn L = (Q, , , q0), trong đó: Q = {q0, q1, q2} là tập các trạng thái của L, = {in, send, ack} là tập các hành vi của L, = { (q0, in, q1), (q1, send, q2), (q2, ack, q0)} là các quy tắc chuyển trạng thái, và q0 là trạng thái khởi đầu. TIEU LUAN MOI download : skknchat@gmail.com 5 Định nghĩa 2.2: Kích thước của hệ chuyển trạng thái được gán nhãn Kích thước của hệ chuyển trạng thái được gán nhãn M = (Q, , , q0) là số trạng thái của M, ký hiệu là |M|, trong đó |M| = |Q|.3: Hệ chuyển trạng thái được gán nhãn đơn định và không đơn định Một hệ chuyển trạng thái được gán nhãn M = (Q, , , q0) là không đơn định nếu - chuyển dịch hoặc nếu (q, a, q ) và (q, a, q") thì q q". Trái lại, M là hệ chuyển trạng thái được gán nhãn đơn định.1: Cho 2 hệ chuyển trạng thái được gán nhãn M = (Q, , , q0) và M' = (Q', , , q0').
Ta nói M chuyển dịch thành M' với chuyển dịch a nếu và chỉ nếu (q0, a, q0') , , Q = Q' và .2: Một hệ thống chuyển trạng thái được gán nhãn đơn định và không đơn định a q1 q0 a b c q2 Hình 2.2 – a: Hệ chuyển trạng thái được gán nhãn không đơn định.2–a mô tả một hệ chuyển trạng thái được gán nhãn L = (Q, , , q0), trong đó: Q = {q0, q1, q2}, = {a, b, c}, q0 là trạng thái khởi đầu, và = {(q0, a, q1), (q0, a, q2), (q1, b, q2), (q2, c, q0)}. Khi hệ thống đang ở trạng thái q0, thực hiện một hành động a thì hệ thống có thể chuyển đến trạng thái q1 hoặc trạng thái q2. Như vậy, trạng thái kế tiếp của q0 khi thực hiện cùng một hành động a là không xác định duy nhất TIEU LUAN MOI download : skknchat@gmail.com 6 hay không tất định. Ta gọi đó là hệ chuyển trạng thái được gán nhãn không đơn định.2 – b: Hệ chuyển trạng thái được gán nhãn đơn định.
Hệ chuyển trạng thái được gán nhãn như trên hình 2.2–b là một hệ chuyển trạng thái được gán nhãn đơn định. Từ trạng thái qi bất kỳ nếu thực hiện một hành động aj nào đó thì hệ thống sẽ chuyển sang một trạng thái xác định duy nhất qk.4: Vết của một hệ chuyển trạng thái được gán nhãn M Một vết của một hệ chuyển trạng thái được gán nhãn M = (Q, , , q0) là một chuỗi hữu hạn các hành động a1a2 …an với a1 = q0, ai (i = 1,…,n). Như vậy vết của hệ chuyển trạng thái được gán nhãn M là một chuỗi các hành động quan sát được mà M có thể thực hiện từ trạng thái khởi tạo q0.3: Cho một hệ chuyển trạng thái được gán nhãn M = (Q, , , q0) như trên hình 2.3 in q0 q1 ack send q2 Hình 2.3: Hệ chuyển trạng thái được gán nhãn. TIEU LUAN MOI download : skknchat@gmail.com 7 Trong đó: Q = { q0, q1, q2}, = {in, send, ack}, q0 là trạng thái khởi đầu, và = {(q0, in, q1), (q1, send, q2), (q2, ack, q0)}.
Với hệ chuyển trạng thái M được mô tả trên hình 2.3, chuỗi các hành động in send ack là một dẫn xuất trên M. Từ trạng thái q0, thực hiện hành động in hệ thống chuyển sang trạng thái q1, tiếp tục thực hiện hành động send hệ thống chuyển sang trạng thái q2, cuối cùng thực hiện hành động ack hệ thống trở về trạng thái q0. Tương tự trên một chuỗi in send ack in send cũng là một dẫn xuất trên M. Xét một chuỗi hành động in send in send ack trên M.
Ta thấy từ trạng thái khởi tạo q0 thực hiện hành động in hệ thống chuyển sang trạng thái q1, tiếp tục thực hiện hành động send hệ thống chuyển sang trạng thái q2, từ trạng thái q2 hệ thống không thể thực hiện được hành động in. Do đó chuỗi hành động trên không phải là một dẫn xuất trên M.2: Với Σ Act ta ký hiệu ↑Σ là một dẫn xuất thu được bằng cách loại bỏ khỏi tất cả các hành động a mà a Σ. Tập tất cả các vết của M được gọi là ngôn ngữ của M, ký hiệu L(M).an là một vết hữu hạn trên hệ chuyển trạng thái được gán nhãn M. Ta ký hiệu hệ chuyển trạng thái được gán nhãn Mσ = (Q, , , q0) với Q = {q0, q1,., qn} và = { (qi-1, ai, qi)} với i=1,.
Ta nói rằng một hành động a được chấp nhận từ một trạng thái s Q nếu tồn tại s Q sao cho (s, a, s ). Tương tự vậy ta nói rằng một vết a1a2 …an được chấp nhận từ trạng thái s Q nếu tồn tại một dãy các trạng thái s0, s1, …, sn với s0 = q0 sao cho i= thì (si-1, ai, si) .2 Phép ghép nối song song Một toán tử ghép nối song song [10], ký hiệu || là một phép toán ghép nối hai thành phần phần mềm bằng cách đồng bộ các hành vi chung trên bảng chữ cái và đan xem các hành động còn lại. Giả sử có hai hệ chuyển trạng thái được gán nhãn là M1= (Q1, αM1, 1, q10) và M2= (Q2, αM2, 2, q20), phép ghép nối song song giữa M1 và M2, ký hiệu M1 || M2 được định nghĩa như sau: TIEU LUAN MOI download : skknchat@gmail.com 8 Nếu M1 = hoặc M2 = thì M1|| M2 = . Ngược lại, M1|| M2 = (Q, αM, , q0), trong đó: Q= Q1Q2, αM= αM1 αM2, q0 = (q10, q20) và hàm được xác định như sau: Với mọi (q1,a,q2) δ1 và (q1′, a, q2′) δ2 thì ( (q1, q1′), a, (q2, q2′) ) δ, Với (q1,a,q2) δ1, a ∉ αM2 thì q′ Q2 ta có ( (q1,q′), a, (q2,q′) ) δ, và Với (q1′, a, q2′) δ2, a ∉ αM1 thì q Q1 ta có ( (q, q1′), a, (q, q2′) ) δ.4: Mô hình ghép nối song song hai hệ chuyển trạng thái được gán nhãn Input và Output như trên hình 2.4 mô tả phép ghép nối song song hai hệ chuyển trạng thái được gán nhãn.
Trong đó, hai hành động send và ack là đồng bộ, các hành động còn lại đan xen nhau.