• Tidak ada hasil yang ditemukan

Chương 1: Giớ

N/A
N/A
Protected

Academic year: 2024

Membagikan "Chương 1: Giớ"

Copied!
24
0
0

Teks penuh

(1)

phát triển, nhưng sau đó điều quan trọng hơn là giảm thời gian đưa sản phẩm ra thị trường. Các thành phần phần mềm có thể tái sử dụng được từ các thành phần có sẵn hoặc được mua từ một bên thứ ba hoặc cũng có thể sử dụng mã nguồn mở. Điều quan trọng chính là làm thể nào để kiểm chứng được thành phần mà chúng ta sử dụng thỏa mãn được các tính chất của hệ thống.

Phương pháp kiểm chứng giả định–đảm bảo có thể giải quyết được vấn đề này. Phương pháp này không chỉ phù hợp với các phần mềm dựa trên thành phần mà còn giải quyết được bài toán bùng nổ không gian trạng thái [4]. Ý tưởng của phương pháp này là sinh các giả định được xem như môi trường cần thiết để các thành phần thỏa mãn một thuộc tính nào đó.Nếu giả định tồn tại thì hệ thống thỏa mãn tính cần kiểm chứng, ngược lại hệ thống không thỏa mãn. Dựa trên tư tưởng của phương pháp kiểm chứng giả định – đảm bảo chúng ta có một số phương pháp kiểm chứng đó là: Phương pháp kiểm chứng sử dụng đặc tả bằng hệ chuyển trạng thái gắn nhãn (Lable Transition System - LTS) và phương pháp kiểm chứng sử dụng đặc tả sử dụng hàm lôgic. Với phương pháp kiểm chứng sử dụng đặc tả bằng LTS, chúng ta sẽ sử dụng thuật toán học L* để sinh giả định, nếu tồn tại giả định thì hệ thống thỏa mãn thuộc tính cần kiểm chứng p, ngược lại hệ thống không thỏa mãn thuộc tính p. Ưu điểm của phương pháp này là giả định được sinh ra trực quan với các điều kiện hệ thống cần kiểm chứng và các thuộc tính của nó được đặc tả bởi các LTS. Tuy nhiên

(2)

độ phức tạp của phương pháp này vẫn còn rất lớn. Với phương pháp kiểm chứng sử dụng đặc tả sử dụng hàm lôgic, chúng ta sẽ sử dụng thuật toán CDNF để sinh giả định, thời gian sinh giả định nhanh hơn so với sử dụng thuật toán học L*. Tuy nhiên, yêu cầu của thuật toán này là hệ thống phải được đặc tả bởi các hàm lôgic. Chính vì thế xuất hiện một nhu cầu là cần kết hợp các ưu điểm và khắc phục nhược điểm của hai phương pháp này.

Để có thể tận dụng được các ưu điểm của phương pháp kiểmchứng sử dụng đặc tả sử dụng hàm lôgic, ta cần chuyển đổi từ dạng đặc tả sử dụng LTS sang dạng đặc tả sử dụng hàm lôgic và để có thể tận dụng được ưu điểm của phương pháp kiểm chứng sử dụng đặc tả bằng LTS, ta cần chuyển đổi từ dạng đặc tả sử dụng hàm lôgic sang dạng đặc tả sử dụng LTS. Đó là lí doem lựa chọn đề tài “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”.

Nội dung của luận văn này được trình trong sáu chương. Chương 1 sẽ trình bày về bài toán tổng quan, bao gồm ngữ cảnh của bài toán, lý do chọn đề tài này. Chương 2 là nội dung kiến thức cơ bản bao gồm các khái niệm và định nghĩa cho các khái niệm được sử dụng trong luận văn. Nội dung chương 3 sẽ trình bày về các phương pháp kiểm chứng cho các thành phần phần mềm, bao gồm phương pháp kiểm chứng sử dụng đặc tả bằng LTS và phương pháp kiểm chứng sử dụng đặc tả sử dụnghàm lôgic.

Chương 4 tập trung vào việc trình bày phương pháp chuyển đổi qua lại giữa hai dạng đặc tả hình thức trong phát triển phần mềm: Dạng đặc tả sử dụng hệ chuyển trạng thái gắn nhãn – LTS và dạng đặc tả sử dụng hàm lôgic và chứng minh tính đúng đắn của phương pháp chuyển đổi. Thêm vào đó, chương 4 còn đưa ví dụ minh họa cho phương pháp chuyển đổi này. Chương 5 sẽ trình bày về công cụ chuyển đổi qua lại giữa các dạng đặc tả. Chương 6 của luận văn sẽ đưa ra kết luận và hướng phát triển tiếp theo của luận văn. Và cuối cùng phần tài liệu tham khảo.

(3)

3.1. Phương pháp kiểm chứng sử dụng đặc tả bằng LTS [3]

3.1.1. Thuật toán học L*

Trình bày tư tưởng của thuật toán học L*

Hình 3.1: Mô hình sự tương tác giữa L* và Teacher 3.1.2. Sinh giả định dựa trên thuật toán học học L*

E

T λ

λ True

out False

ack True

out False send True out, ack False out, out False out, send False

Hình 3.1: Xây dựng một ứng viên DFA từ bảng quan sát đóng

S

S.Σ

(4)

Thuật toán 3.1:Thuật toán học L*

Input: U, Σ: Với U là một ngôn ngữ chưa biết, Σ là bảng chữ cái

Output: M: Với M là một DFA sao cho M là một automata đơn định nhỏ nhất tương ứng với U và L(M) = U

1: Khởi tạo, S = {λ}, E = {λ}

2: loop

3: Cập nhật T sử dụng truy vấn thành viên 4: while (S,E,T) chưa đóng

5: Thêm sa vào S to để S đóng, với s ∈ S and a ∈ Σ 6: Cập nhật bảng T sử dụng truy vấn thành viên 7: end while

8: Xây dựng ứng viên DFA Mi từ bảng quan sát (S,E,T)

9: Sử dụng câu hỏi truy vấn kiểm tra thành viên, kiểm tra Mi (L(Mi)

= U?)

10: if Teacher trả lời YES 11: return Mi

12: else

13: Thêm e ∈ Σ∗ (lấy từ phản ví dụ cex) vào E 14: end if

15: end loop

Độ phức tạp: Độ phức tạp của thuật toán này là O(kn2 + nlogm), trong đó k = ||, n là số trạng thái của mô hình sinh ra, m là độ dài lớn nhất của phản ví dụ [6].

(5)

Hình 3.2: Mô hình sinh giả định dựa trên thuật toán học L*

3.1.3. Ví dụ minh họa việc sinh ngữ cảnh sử dụng thuật toán học L*

Hình 3.3: LTS Input (M1)

Hình 3.4: LTS Order

(6)

Hình 3.5: LTS Output (M2)

Bước 7: Kiểm tra kết quả của biểu thức true M2A2 bằng cách chuyển LTS A2 sang LTS A2err như trên hình 3.16, sau đó Teacher tiến hành ghép nối M2 || A2err như trên hình 3.17.

Hình 3.6: LTS Input || Order || A2

(7)

Hình 3.7: LTS Output||A2err

Ta thấy A2 || Input ╞ Order và Output ╞ A2

Vì tồn tại giả định A2 sau cho A2 Input Order True và True Output

A2 vì thế Input || Output ╞Order

3.2. Phương pháp kiểm chứng sử dụng đặc tả sử dụng hàm lôgic 3.2.1. Thuật toán học CNDF [3]

Với X là một tập cố định các biến lôgic và f(X) là một hàm lôgic trên tập X, thuật toán CDNF sẽ tính toán một hàm f’(X) làm đại diện cho f(X) trong một số bước hữu hạn bước. Thuật toán CDNF là thuật toán học chính xác cho các hàm lôgic [10]. Giống như thuật toán L*, thuật toán CDNF sử dụng một mô hình học chủ động. Trong mô hình này, giả sử rằng có một Teacher. Teacher này biết hàm lôgic cần học f(X) và đưa ra câu trả lời cho thuật toán CDNF dựa vào một số loại câu hỏi. Kiểu câu hỏi thành viên MEM(υ) cho f(X) với υ là một phép gán trên X. Nếu f[υ] = T, Teacher trả lời YES và nếu ngược lại Teacher trả lời là NO. Kiểu truy vấn tương đương EQ(θ) cho hàm f(X), trong đó θ(X) là một hàm lôgic trên tập X. Nếu phỏng đoán θ(X) tương đương với hàm f(X), Teacher trả lời là YES, ngược lại Teacher trả lời NO và đưa ra một phép gán υ trên tập X

(8)

mà θ[υ] ≠ f[υ]. Phép gán υ được xem như là phản ví dụ cho truy vấn tương đương EQ(θ).

3.2.2. Sinh giả dịnh dựa trên thuật toán học CDNF

Thuật toán 3.2 sẽ trình bày chi tiết về thuật toán CDNF [10]

Thuật toán 3.2: Thuật toán CDNF Input: None

Output: Hàm lôgic f’(X) 1: t ← 0

2: EQ(1) → υ; If câu trả lời của Teacher là YES then thuật toán kết thúc.

3: t ← t + 1, Ht ← 0, St ← Ø, at ← υ

4: EQ(∧𝑖=1𝑡 Hi) → υ; If câu trả lời của Teacher là YES then thuật toán kết thúc.

5: I ← {i | Hi(υ) = 0}

6: If I = Ø then Goto 3 7: For i ∈ I do

8: υi ← υ

9: Đi từ υi về hướng ai sao cho f(υi) = 1 10: Si ← Si∪{υi ∪ ai}

11: Hi ← MDNF (Si)(x ⊕ ai) với i = 1, …, t 12: Quay trở lại bước 4

(9)

Hình 3.8: Mô hình đi từ υi đến ai

Thuật toán CNDF sẽ có 4 loại câu hỏi truy vấn cho phía Teacher:

 Câu hỏi truy vấn thành viên MEM(μ) cho hàm khởi tạo ιA(X), ceι

 Câu hỏi truy vấn thành viên MEM(μ, γ, μ’) cho hàm chuyển trạng thái τA(X, E, X’),

 Câu hỏi truy vấn tương đương EQ(ι) cho hàm khởi tạo ιA(X), và

 Câud hỏi truy vấn tương đương EQ(τ) cho hàm chuyển trạng thái τA(X, E, X’).

Hình 3.9: Mô hình sinh giả định A Thuật toán 3.3. Thuật toán IsMember ιA(X, E, X’)

Input: MEM(μ): Một truy vấn thành viên cho hàm khởi tạo ιA(X) Output: YES hoặc NO

1: if ι1[μ] = T

(10)

2: return YES 3: else

4: return NO

Thuật toán 3.4. Thuật toán IsMember τA(X, E, X’)

Input: MEM(μ, γ, μ’): Một truy vấn thành viên cho hàm khởi tạo τA(X, E, X’)

Output: YES hoặc NO 1: if τ1[μ, γ, μ’] = T 2: return YES 3: else

4: return NO

Thuật toán 3.4: IsEquivalent(ι, τ)

Input: EQ(ι): Một truy vấn tương đương cho hàm khởi tạo ιA(X);

EQ(τ): Một truy vấn tương đương cho hàm chuyển trạng thái τA(X, E, X’)

Output: YES, một phản ví dụ cho EQ(ι) hoặc một phản ví dụ cho EQ(τ)

Với C là một hệ chuyển trạng thái được biểu diễn bởi hàm lôgic C =

X, E, τA(X, E, X’), ιA(X);

1. if ι1(X) ˄ ι̅̅̅̅̅̅̅1(𝑋) được thỏa mãn bởi μ 2. Trả lời EQ(ι) với phản ví dụ μ

(11)

9. if M0||C╞ π

10. Trả lời EQ(ι) là YES;

11. Trả lời EQ(τ) là YES;

12. Thông báo “M0||C╞ π”

13. else

14. Với α là một bằng chứng (witness) để M0||C không thỏa mãn π

15. Gọi hàm IsWitness(α);

16. end

Thuật toán 3.4: IsWitness(α)

Input: α là một bằng chứng để M0||C không thỏa mãn π

Output: Một phản ví dụ cho EQ(ι) hoặc một phản ví dụ cho EQ(τ) Với α↓X = μ0μ1 … μt

1. If ι10] = F

2. Trả lời EQ(ι) với phản ví dụ là μ0

3. Nhận một câu hỏi truy vấn tương đương khác EQ(ι’) 4. Gọi hàm IsEquivalent(ι’, τ)

5. for i từ 1 đến t

6. Nếu τ1i-1, ei-1, μi] = F

(12)

7. Trả lời EQ(τ) với một phản ví dụ μi-1, ei-1, μi

8. Nhận một câu hỏi truy vấn tương đương khác EQ(τ’) 9. Gọi hàm IsEquivalent(ι, τ’)

10. End

11. Thông báo “M0||C” không thỏa mãn π bởi α

3.2.3. Ví dụ minh họa việc sinh giả định sử dụng thuật toán học CDNF Giả sử chúng ta có hai hệ thống M1, M2 và thuộc tính p được biểu diễn dưới dạng đặc tả sử dụng hàm lôgic như sau:

M1 = X1, E1, τ1(X1, E1, X1’), ι1(X1), trong đó:

 X1 = {𝑥1, 𝑥2}, X’ = {𝑥5, 𝑥6},

 E1 = {𝑥3, 𝑥4},

 τ1(X, E, X’) = {(𝑥̅1 ∧ 𝑥̅2 ∧ 𝑥̅3 ∧ 𝑥̅4 ∧ 𝑥̅5 ∧ 𝑥̅6) | (𝑥1 ∧ 𝑥̅2 ∧ 𝑥3 ∧ 𝑥̅4 ∧ 𝑥5 ∧ 𝑥̅6) | (𝑥̅1 ∧ 𝑥2 ∧ 𝑥̅3 ∧ 𝑥4 ∧ 𝑥̅5 ∧ 𝑥6)}, và

 ι1(X) = 𝑥̅1 ∧ 𝑥̅2.

M2 = X2, E2, τ(X2, E2, X2’), ι(X2)

 X1 = {𝑥7, 𝑥8}, X’ = {𝑥11, 𝑥12},

 E1 = {𝑥9, 𝑥10},

 τ1(X, E, X’) = {(𝑥̅7 ∧ 𝑥̅8 ∧ 𝑥̅9 ∧ 𝑥̅10 ∧ 𝑥11 ∧ 𝑥̅12) | (𝑥̅7 ∧ 𝑥8 ∧ 𝑥9 ∧ 𝑥̅10 ∧ 𝑥11 ∧ 𝑥̅12) | (𝑥7 ∧ 𝑥̅8 ∧ 𝑥̅9 ∧ 𝑥10 ∧ 𝑥11 ∧ 𝑥12)}, và

 ι1(X) = 𝑥̅7 ∧ 𝑥̅8.

p = (𝑥̅1 ∧ 𝑥̅2 ∧ 𝑥̅3 ∧ 𝑥̅4 ∧ 𝑥̅7 ∧ 𝑥̅8) | (𝑥̅1 ∧ 𝑥2 ∧ 𝑥̅3 ∧ 𝑥4 ∧ 𝑥̅7 ∧ 𝑥8)) | (𝑥1 ∧ 𝑥̅2 ∧ 𝑥3 ∧ 𝑥̅4 ∧ 𝑥7 ∧ 𝑥̅8 ) | (𝑥1 ∧ 𝑥2 ∧ 𝑥3 ∧ 𝑥4 ∧ 𝑥7 ∧ 𝑥̅8 ) | (𝑥1 ∧ 𝑥2 ∧ 𝑥3 ∧ 𝑥4 ∧ 𝑥7 ∧ 𝑥8) | (𝑥1 ∧ 𝑥̅2 ∧ 𝑥3 ∧ 𝑥̅4 ∧ 𝑥7 ∧ 𝑥8 ) | (𝑥1 ∧ 𝑥2 ∧ 𝑥3 ∧ 𝑥4

∧ 𝑥̅7 ∧ 𝑥̅8) | (𝑥1 ∧ 𝑥2 ∧ 𝑥3 ∧ 𝑥4 ∧ 𝑥̅7 ∧ 𝑥8)

Sử dụng thuật toán học CDNF, giả định sinh ra là:

A = XA, EA, τA(XA, EA, XA’), ιA(XA), trong đó:

(13)
(14)

Chương 4: Chuyển đổi giữa dạng đặc tả sử dụng LTS và dạng đặc tả sử dụng hàm lôgic

4.1. Phương pháp chuyển đổi

Thuật toán 4.1: Thuật toán mã hóa một tập hợp

Input: Một tập hợp A (A là tập các trạng thái đầu vào hoặc A là tập các trạng thái đầu ra hoặc A là tập các sự kiện)

Ouput: Tập hợp các phần tử của tập hợp A đã được mã hóa và bảng ánh xạ

1: if |A| = 1 then 2: z = 1

3: else

4: if log2(|A|) là số nguyên then 5: z = log2(|A|)

6: else

7: z = [log2(|A|)] + 1 8: end

9: end

10: for mỗi phần tử ai trong tập A do

11: Lưu ai vào bảng ánh xạ ứng với thành phần A 12: αi = True

13: k = Thứ tự của ai trong A

14: Chuyển k sang số nhị phân với độ dài z bit

15: for mỗi bit trong chuỗi nhị phân biểu diễn k do

(15)

21: end

22: Lưu αi vào bảng ánh xạ ứng với vị trí của phần tử ai trong thành phần A

23: end

Độ phức tạp: Độ phức tạp của thuật toán là O(n), trong đó n là kích thước của tập A cần mã hóa.

Thuật toán 4.2 dưới đây trình bày chi tiết về phương pháp mã tập các truyển trạng thái

Thuật toán 4.2: Mã hóa tập các chuyển trạng thái Đầu vào: Tập hợp các chuyển trạng thái của LTS Đầu ra : Hàm chuyển trạng thái τ (X, E, X’)

1: for mỗi chuyển trạng thái được biểu diễn δ(q, ω, q’) do

2: Lấy dạng biểu diễn αi của q từ bảng ánh xạ của tập các trạng thái đầu vào

3: Lấy dạng biểu diễn ei của ωi từ bảng ánh xạ của tập các sự kiện 4: Lấy dạng biểu diễn αi+1 của q’ từ bảng ánh xạ của tập các trạng thái đầu ra

5: τ = ∨i=1ni ∧ ei ∧ αi+1}

(16)

6: end 7: return τ

Độ phức tạp: Độ phức tạp của thuật toán là O(n), trong đó n là kích thước của tập hợp các chuyển trạng thái cần mã hóa.

4.1.2. Chứng minh tính đúng đắn của phương pháp chuyển đổi

Mệnh đề 1: Ngôn ngữ của dạng đặc tả hệ thống biểu diễn bằng LTS sau khi chuyển đổi sang dạng đặc tả biểu diễn bằng dạng đặc tả sử dụng hàm lôgic được đoán nhận bởi bởi dạng đặc tả sử dụng hàm lôgic.

Mệnh đề 2: Ngôn ngữ của dạng đặc tả sử dụng hàm lôgic sau khi chuyển sang dạng đặc tả biểu diễn bằng LTS được đoán nhận bởi LTS.

4.2. Ví dụ về việc chuyển đổi qua lại giữa các dạng đặc tả 4.2.1. Giới thiệu về hệ thống

Hình 4.1: Một hệ thống chuyển trạng thái được gán nhãn.

4.2.2. Chuyển đổi dạng đặc tử sử dụng LTS sang dạng đặc tả sử dụng hàm lôgic

Kết quả sau khi chuyển đổi:

Q1 New Ready Running Blocked

(17)

∧ 𝑥7

Bảng 4.2: Thành phần Q2↦X2 trong bảng ánh xạ Σ admit dispatch release

E 𝑥̅3∧𝑥̅4 ∧𝑥̅5 𝑥3∧𝑥̅4 ∧𝑥̅5 𝑥̅3∧𝑥4 ∧𝑥̅5

Σ timeout waitEvent eventOccurs E 𝑥3 ∧𝑥4 ∧𝑥̅5 𝑥̅3∧ 𝑥̅4

∧𝑥5

𝑥3 ∧ 𝑥̅4 ∧ 𝑥5

Bảng 4.3: Thành phần Σ ↦ E trong bảng ánh xạ

δ(q, e, q’) (New, admit, Ready) (Ready, dispatch, Running)

τ (υ, γ, υ’) 𝑥̅1∧𝑥̅2 ∧𝑥̅3∧𝑥̅4 ∧𝑥̅5 ∧𝑥̅6∧𝑥̅7 𝑥1∧𝑥̅2 ∧𝑥3∧𝑥̅4 ∧𝑥̅5 ∧𝑥6∧𝑥̅7

δ(q, e, q’) (Running, release, Exit) (Running, timeout, Ready)

τ (υ, γ, υ’) 𝑥̅1∧𝑥2 ∧𝑥3∧𝑥4 ∧𝑥̅5 ∧𝑥̅6∧𝑥7 𝑥̅1∧𝑥2 ∧𝑥̅3∧𝑥̅4 ∧𝑥̅5 ∧𝑥̅6∧𝑥̅7

δ(q, e, q’) (Ready, waitEvent, Blocked)

(Blocked, eventOccurs, Ready)

(18)

τ (υ, γ, υ’) 𝑥1∧𝑥̅2 ∧𝑥̅3∧ x4 ∧𝑥̅5 ∧𝑥6∧𝑥7 𝑥1∧𝑥2 ∧𝑥3∧𝑥̅4 ∧𝑥5 ∧𝑥̅6∧𝑥̅7

Bảng 4.4: Thành phần δ(q, e, q’) ↦ τ (υ, γ, υ’) trong bảng ánh xạ 4.2.3. Chuyển đổi dạng đặc tử sử dụng hàm lôgic sang dạng đặc tả sử dụng LTS

Giả sử chúng ta đã có dạng đặc tả sử dụng hàm lôgic N và 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’) = {𝑥̅1∧𝑥̅2 ∧𝑥̅3∧𝑥̅4 ∧𝑥̅5 ∧𝑥̅6∧𝑥̅7} | { 𝑥1∧𝑥̅2 ∧𝑥3∧𝑥̅4 ∧𝑥̅5

∧𝑥6∧𝑥̅7} | {𝑥̅1∧𝑥2 ∧𝑥3∧𝑥4 ∧𝑥̅5 ∧𝑥̅6∧𝑥7} | {𝑥̅1∧𝑥2 ∧𝑥̅3∧𝑥̅4 ∧𝑥̅5 ∧𝑥̅6∧𝑥̅7}

| {𝑥1∧𝑥̅2 ∧𝑥̅3∧ x4 ∧𝑥̅5 ∧𝑥6∧𝑥7} | {𝑥1∧𝑥2 ∧𝑥3∧𝑥̅4 ∧𝑥5 ∧𝑥̅6∧𝑥̅7}, và

 ι(X) = 𝑥̅1∧𝑥̅2.Và bảng ánh xạ Map:

Q1 New Ready Running Blocked X1 𝑥̅1

𝑥̅2

𝑥1

∧ 𝑥̅2

𝑥̅1 ∧ 𝑥2 𝑥1 ∧ 𝑥2

Bảng 4.5: Thành phần Q1↦ X1 trong bảng ánh xạ Q2 Ready Running Exit Blocked X2 𝑥̅6

∧ 𝑥̅7

𝑥6 ∧ 𝑥̅7 𝑥̅6

∧ 𝑥7

𝑥6 ∧ 𝑥7

Lại có, dựa vào thành phần Q1↦ X1, Q2↦ X2, ta thấy Q1 có 4 trạng thái

Σ admit dispatch release

(19)

Bảng 4.6: Thành phần Σ ↦ E trong bảng ánh xạ

δ(q, e, q’) (New, admit, Ready) (Ready, dispatch, Running) τ (υ, γ, υ’) 𝑥̅1 ∧ 𝑥̅2 ∧ 𝑥̅3∧ 𝑥̅4 ∧ 𝑥̅5 ∧ 𝑥̅6 ∧ 𝑥̅7 𝑥1 ∧ 𝑥̅2 ∧ 𝑥3 ∧ 𝑥̅4 ∧ 𝑥̅5 ∧ 𝑥6

𝑥̅7

δ(q, e, q’) (Running, release, Exit) (Running, timeout, Ready) τ (υ, γ, υ’) 𝑥̅1 ∧ 𝑥2 ∧ 𝑥3 ∧ 𝑥4 ∧ 𝑥̅5 ∧ 𝑥̅6 ∧ 𝑥7 𝑥̅1 ∧ 𝑥2 ∧ 𝑥̅3 ∧ 𝑥̅4 ∧ 𝑥̅5 ∧ 𝑥̅6

∧ 𝑥̅7

δ(q, e, q’) (Ready, waitEvent, Blocked) (Blocked, eventOccurs, Ready)

τ (υ, γ, υ’) 𝑥1 ∧ 𝑥̅2 ∧ 𝑥̅3 ∧ 𝑥4 ∧ 𝑥̅5 ∧ 𝑥6 ∧ 𝑥7 𝑥1 ∧ 𝑥2 ∧ 𝑥3 ∧ 𝑥̅4 ∧𝑥5 ∧ 𝑥̅6 ∧ 𝑥̅7

Bảng 4.7: Thành phần δ(q, e, q’) ↦ τ (υ, γ, υ’) trong bảng ánh xạ Kết quả sau khi chuyển đổi:

M = 〈Q, Σ, δ, q0⟩, trong đó:

 Q = {New, Ready, Running, Exit, Blocked}, Q1 = {New, Ready, Running, Blocked}, Q2 = {Ready, Running, Exit, Blocked},

 Σ = {admit, dispatch, timeout, release, waitEvent, eventOccurs},

(20)

 δ = {(New, admit, Ready), (Ready, dispatch, Running), (Running, release, Exit), (Running, timeout, Ready), (Ready, waitEvent, Blocked), (Blocked, eventOccurs, Ready)}, và

 New là trạng thái bắt đầu.

(21)

Hình 5.10: Kiến trúc chương công cụ thực nghiệm

Hình 5.1 mô tả về kiến trúc của công cụ thực nghiệm. Công cụ này được viết bằng ngôn ngữ lập trình C#, chạy trên nền tảng .NET 4.5. Kiến trúc của công cụ gồm 4 phần chính: File đầu vào là file lưu thông tin về các hệ chuyển trạng thái được đặc tả bằng LTS, được lưu theo một cấu trúc. Phần thứ hai là danh sách các các LTS đã được dựng nên từ thông tin về các LTS được mô tả ở phần 1. Áp dụng thuật toán chuyển đổi chúng ta sẽ thu được dạng đặc tả sử dụng hàm lôgic tương ứng với từng hệ chuyển trạng thái được đặc tả bằng LTS. Phần cuối cùng chính là phần ghi kết quả đã chuyển đổi ra file.

(22)

Hình 5.11: Ví dụ về file đầu vào

Hình 5.12: Ví dụ về file đầu ra 5.2. Bảng kết quả thực nghiệm.

STT Hệ chuyển trạng thái được biểu diễn bằng LTS

Hệ chuyển trạng thái sử dụng đặc tả sử dụng hàm lôgic

1 s0

s0 s1 s2

(s0 . send . s2) ; (s2 . out . s0) ; (s2 . send . s1) ; (s1 . send . s1) ; (s1 . ack . s1) ; (s1 . out . s1) ; (s0 . ack . s1)

x = {1 2 3 4 5 6 } i(x) = {-1 & -2}

T(x,e,x') = {{-1 & -2 & -3 & -4 &

-5 & -6 } | {-1 & -2 & 3 & -4 & -5

& 6 } | {-1 & 2 & -3 & -4 & -5 &

6 } | {-1 & 2 & 3 & -4 & -5 & 6 }

| {-1 & 2 & -3 & 4 & -5 & 6 } | {1

& -2 & -3 & 4 & 5 & -6 } | {1 & - 2 & -3 & -4 & -5 & 6 }}

---Mapping---

(23)

2 in0

in0 in1 in2

(in0 . input . in1) ; (in1 . send . in2) ; (in2 . out . in0)

x = {1 2 3 4 5 6 } i(x) = {-1 & -2}

T(x,e,x') = {{-1 & -2 & -3 & -4 &

-5 & -6 } | {1 & -2 & 3 & -4 & 5

& -6 } | {-1 & 2 & -3 & 4 & -5 &

6 }}

---Mapping---

From State: 1 2 where in0 = {-1 &

-2}, in1 = {1 & -2}, in2 = {-1 & 2}

Event : 3 4 where input = {-3 & - 4}, send = {3 & -4}, out = {-3 &

4}

To State: 5 6 where in1 = {-5 & - 6}, in2 = {5 & -6}, in0 = {-5 & 6}

(24)

Chương 6: KẾT LUẬN

Trong bối cảnh các hệ thống phần mềm ngày càng trở nên phức tạp cả về quy mô và chức năng. Việc kiểm chứng những hệ thống phần mềm này ngày càng trở nên khó khăn hơn. Việc sử dụng phương pháp giả định – đảm bảo trong kiểm chứng sẽ giúp cho việc kiểm chứng trở nên dễ dàng hơn, phương pháp này giúp kiểm chứng tính đúng đắn của các thành phần phần mềm mà không cần phải ghép nối toàn bộ hệ thống.

Luận văn đã trình bày đã đưa ra được bài toán tổng quan là bài toán kiểm chứng giả định đảm bảo, để từ đó trình bày hai phương pháp kiểm chứng sử dụng hai loại đặc tả khác nhau là dạng đặc tả sử dụng hệ chuyển trạng thái gắn nhãn (Labelled Transition System – LTS) và phương pháp kiểm chứng sử dụng đặc tả sử dụng hàm lôgic. Với phương pháp kiểm chứng sử dụng đặc tả bằng LTS, luận văn đã trình bày được thuật toán học L*

để sinh giả định cho hệ thống. Và với phương pháp kiểm chứng sử đụng đặc tả bằng hàm lôgic, luận văn đã trình bày thuật toán CDNF để sinh giả định cho hệ thống. Mỗi phương pháp kiểm chứng này đều có những ưu điểm và nhược điểm của mình. Chính về thế luận văn cũng đã trình bày được phương pháp chuyển đổi qua lại giữa mỗi loại đặc tả, việc chuyển đổi này nhằm tận dụng được những ưu điểm và khắc phục được nhược điểm của mỗi phương pháp. Phần cuối của luận văn trình bày về công cụ hỗ trợ việc chuyển đổi và các kết quả thực nghiệm.

Về hướng nghiên cứu tiếp theo của đề tài chính là tiếp tục tìm hiểu, nghiên cứu các phương pháp đặc tả khác cho các hệ chuyển trạng thái, từ đó tìm hiểu hoặc đưa ra các phương pháp chuyển đổi tiếp theo qua lại giữa các dạng đặc tả này.

Gambar

Hình 3.1: Xây dựng một ứng viên DFA từ bảng quan sát đóng
Hình 3.1: Mô hình sự tương tác giữa L* và Teacher  3.1.2. Sinh giả định dựa trên thuật toán học học L*
Hình 3.2: Mô hình sinh giả định dựa trên thuật toán học L*
Hình 3.3: LTS Input (M 1 )
+7

Referensi

Dokumen terkait