STT Hệ chuyển trạng thái được
biểu diễn bằng LTS
Hệ chuyển trạng thái được biểu diễn bởi 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---
From State: 1 2 where s0 = {-1 & -2}, s1 = {-1 & 2}, s2 = {1 & -2}
& -4}, out = {-3 & 4}
To State: 5 6 where s2 = {-5 & -6}, s1 = {-5 & 6}, s0 = {5 & -6}
Transition: (s0, send, s2)--->{-1 & -2 & -3 & - 4 & -5 & -6}, (s0, ack, s1)--->{-1 & -2 & 3 & - 4 & -5 & 6}, (s1, send, s1)--->{-1 & 2 & -3 & - 4 & -5 & 6}, (s1, ack, s1)--->{-1 & 2 & 3 & -4 & -5 & 6}, (s1, out, s1)--->{-1 & 2 & -3 & 4 & -5 & 6}, (s2, out, s0)--->{1 & -2 & -3 & 4 & 5 & -6}, (s2, send, s1)--->{1 & -2 & -3 & -4 & - 5 & 6}
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}
Transition: (in0, input, in1)--->{-1 & -2 & -3 & -4 & -5 & -6}, (in1, send, in2)--->{1 & -2 & 3 & -4 & 5 & -6}, (in2, out, in0)--->{-1 & 2 & -3 & 4 & -5 & 6}
3 s0 s0
(s0 . ack . s0) ; (s0 . send . s0)
x = {1 2 3 } i(x) = {-1}
T(x,e,x') = {{-1 & -2 & -3 } | {-1 & 2 & -3 }} ---Mapping---
From State: 1 where s0 = {-1}
Event : 2 where ack = {-2}, send = {2} To State: 3 where s0 = {-3}
send, s0)--->{-1 & 2 & -3} 4 q0 q0 q1 q2 q3 (q0 . fillCoffee q1) ; (q1 . heatWater . q2) ; (q2 . fillWater . q3) ; (q3 . waterOK q2) ; (q2 . warm . q1) ; (q1 . coffeeOK . q0) x = {1 2 3 4 5 6 7 } i(x) = {-1 & -2}
T(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 & -4 & 5 & -6 & -7 } | {1 & 2 & 3 & -4 & 5 & 6 & -7 }} ---Mapping---
From State: 1 2 where q0 = {-1 & -2}, q1 = {1 & -2}, q2 = {-1 & 2}, q3 = {1 & 2}
Event : 3 4 5 where fillCoffee = {-3 & -4 & - 5}, heatWater = {3 & -4 & -5}, coffeeOK = {- 3 & 4 & -5}, fillWater = {3 & 4 & -5}, warm = {-3 & -4 & 5}, waterOK = {3 & -4 & 5}
To State: 6 7 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 & 3 & -4 & -5 & 6 & -7}, (q1, coffeeOK, q0)--->{1 & -2 & -3 & 4 & -5 & 6 & 7}, (q2, fillWater, q3)--->{-1 & 2 & 3 & 4 & -5 & -6 & 7}, (q2, warm, q1)--->{-1 & 2 & -3 & -4 & 5 & -6 & -7}, (q3, waterOK, q2)--->{1 & 2 & 3 & -4 & 5 & 6 & -7}
5 in0
in0 in1 in2 in3 in4
(in0 . input . in1) ; (in1 . send . in2) ; (in2 . out . in3) ; (in3 . ack . in4) ; (in4 . exec . in0)
x = {1 2 3 4 5 6 7 8 9 } i(x) = {-1 & -2 & -3}
T(x,e,x') = {{-1 & -2 & -3 & -4 & -5 & -6 & -7 & -8 & -9 } | {1 & -2 & -3 & 4 & -5 & -6 & 7 & -8 & -9 } | {-1 & 2 & -3 & -4 & 5 & -6 & -7 & 8 & -9 } | {1 & 2 & -3 & 4 & 5 & -6 & 7 & 8 & -9 } | {-1 & -2 & 3 & -4 & -5 & 6 & -7 & - 8 & 9 }}
---Mapping---
From State: 1 2 3 where in0 = {-1 & -2 & -3}, in1 = {1 & -2 & -3}, in2 = {-1 & 2 & -3}, in3 = {1 & 2 & -3}, in4 = {-1 & -2 & 3}
Event : 4 5 6 where input = {-4 & -5 & -6}, send = {4 & -5 & -6}, out = {-4 & 5 & -6}, ack = {4 & 5 & -6}, exec = {-4 & -5 & 6}
To State: 7 8 9 where in1 = {-7 & -8 & -9}, in2 = {7 & -8 & -9}, in3 = {-7 & 8 & -9}, in4 = {7 & 8 & -9}, in0 = {-7 & -8 & 9}
Transition: (in0, input, in1)--->{-1 & -2 & -3 & -4 & -5 & -6 & -7 & -8 & -9}, (in1, send, in2)- -->{1 & -2 & -3 & 4 & -5 & -6 & 7 & -8 & - 9}, (in2, out, in3)--->{-1 & 2 & -3 & -4 & 5 & -6 & -7 & 8 & -9}, (in3, ack, in4)--->{1 & 2 & -3 & 4 & 5 & -6 & 7 & 8 & -9}, (in4, exec, in0)--->{-1 & -2 & 3 & -4 & -5 & 6 & -7 & -8 & 9}
Chúng ta có thể thấy kết quả thực nghiệm trên bảng 5.1, đầu vào là một hệ chuyển trạng thái được biểu diễn bằng LTS, đầu ra là một hệ chuyển trạng thái được biểu diễn bằng dạng đặc tả sử dụng hàm lôgic và bảng ánh xạ. Kết quả thực nghiệm này sẽ làm đầu vào cho các công cụ kiểm chứng sử dụng đặc tả sử dụng hàm lôgic.
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 và tốn nhiều chi phí hơn. Việc sử dụng phương pháp kiểm chứng giả định – đảm bảo sẽ giúp cho việc kiểm chứng trở nên dễ dàng hơn, thay vì phải ghép nối toàn bộ hệ thống để kiểm chứng thì chúng ta chỉ cần chứng minh được có tồn tại giải định cho hệ thống hay không. Đối với các phần mềm được xây dựng theo hướng thành phần việc xây dựng được mô hình đúng đắn cho mỗi thành phần đã là một việc làm khó khăn, tốn kém chứ chưa nói đến việc ghép nối mô hình các thành phần này lại để kiểm chứng. Chính vì vậy, việc sử dụng phương pháp kiểm chứng giả định – đảm bảo mang lại hiệu quả rõ rệt cho bài toán kiểm chứng các phần mềm được xây dựng theo hướng thành phần.
Xuất phát từ bài toán kiểm chứng giả định – đảm bảo, chứng minh hệ thống thỏa mãn một thuộc tính nào đó mà không cần phải ghép nối mô hình các 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 là thuật toán học L* và thuật toán CDNF được sử dụng cho phương pháp kiểm chứng giả định – đảm bảo. Mỗi thuật toán đều có những ưu điểm và nhược điểm nhất định nhưng chung một mục tiêu là sinh giả định cho hệ thống. Thuật toán L* yêu cầu đầu vào là các thành phần hệ thống và thuộc tính cần kiểm chứng được đặc tả bằng các hệ chuyển trạng thái gắn nhãn (Labelled Transition System – LTS), một loại đặc hình thức trực quan và phổ biến nhất hiện nay, tuy nhiên giả định sinh ra vẫn còn lớn, chi phí cao. Ngược lại, thuật toán CDNF sinh giả định nhanh hơn, tuy nhiên điểm khó khăn của phương pháp này là việc sử dụng các hàm lôgic để đặc tả các thành phần hệ thống và 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ương pháp chuyển đổi qua lại giữa hai loại đặc tả hình thức này (đặc tả sử dụng LTS và đặc tả sử dụng hàm lôgic). Khi các thành phần hệ thống và thuộc tính cần kiểm chứng đang được đặc tả bằng các LTS, chúng ta cần sinh giả định một các nhanh chóng, tốn ít chi phí chúng ta sẽ sử dụng phương pháp chuyển đổi để chuyển từ dạng đặc tả sử dụng LTS sang đặc tả sử dụng hàm lôgic. Tuy nhiên, giả định được sinh ra được biển diễn bằng các hàm lôgic, rất khó để quan sát, chúng ta sẽ áp dụng phương pháp chuyển đổi để chuyển đổi ngược lại từ dạng đặc tả sử dụng hàm lôgic sang dạng đặc tả sử dụng LTS.
Với phương pháp chuyển đổi được đưa ra, luận văn đã trình bày các thuật toán mã hóa các trạng thái, các sự kiện và các chuyển trạng thái, đồng thời chứng minh được tính đúng đắn của phương pháp thông qua việc chứng minh sự tương đương ngôn ngữ của các dạng đặc tả trước và sau khi chuyển đổi, đồng thời đưa ra ví dụ minh họa cách chuyển đổi qua lại giữa các dạng đặc tả.
Về mặt thực nghiệm, luận văn cũng đã trình bày về công cụ giúp tự động hóa việc chuyển đổi và kết quả thực nghiệm thu được. Công cụ chuyển đổi nhận đầu vào là
các hệ chuyển trạng thái được đặc tả bằng LTS, và đầu ra là các hệ chuyển trạng thái được đặc tả bằng hàm lôgic kết hợp với bảng ánh xạ. Kết quả thực nghiệm sử dụng năm hệ chuyển trạng thái được đặc tả bằng LTS thực hiện việc chuyển đổi, kết quả thực nghiệm này được sử dụng làm đầu vào cho các công cụ kiểm chứng sử dụng đặc tả bằng hàm lôgic.
Về hướng nghiên cứu tiếp theo của đề tài chính là việ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. Hiện tại, trong phạm vi của luận văn mới chỉ trình bày phương pháp kiểm chứng dựa trên hai loại đặc tả khác nhau, có thể sẽ còn có những phương pháp đặc tả khác hiệu quả và dễ sử dụng hơn. Trên cơ sở các phương pháp kiểm chứng dựa trên đặc tả sẽ được tìm hiểu đó em sẽ tìm hiểu các phương pháp chuyển đổi qua lại giữa các loại đặc tả này. Ngoài ra việc kiểm chứng sẽ tiếp tục thực thi với các thuộc tính khác như thuộc tính công bằng (fairness), thuộc tính sống (liveness) bởi vì ở phạm vi hiện tại của luận văn này việc kiểm chứng chỉ dừng lại ở thuộc tính lỗi π.
TÀI LIỆU THAM KHẢO
[1] Ivica Crnkovic and Magnus Larsson (2001), “Component-Based Software Engineering – New Paradigm of Software Development”, Inviteted talk & Invited report, MIPRO 2001 proceedings, Opatija, Croatia.
[2] 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.
[3] 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.
[4] D. Angluin (1987), “Learning regular sets from queries and counterexamples”,
Information and Computation, 75(2), pp. 87-106.
[5] 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.
[6] R. L. Rivest and R. E. Schapire (1993), “Inference of finite automata using homing sequences”, Information and Computation, 103(2):299–347.
[7] 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.
[8] Nader H. Bshouty (1995), “Exact Learning Boolean Functions via the Monotone Theory”, Information and Computation, 123(1):146–153.
[9] 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.