4.4. So sánh công cụ LTSA với SPIN
Ngoài phương pháp sử dụng công cụ LTSA, chúng ta cũng có thể đặc tả và kiểm chứng bằng công cụ SPIN [7]. Tuy nhiên, ngôn ngữ đặc tả của SPIN là Promela có khả năng biểu diễn thấp (gần giống với cú pháp của ngôn ngữ lập trình C) nên thời gian đặc tả lâu hơn. Trong khi đó FSP có năng lực biểu diễn tổng quát hơn nhờ sử dụng cơ chế định nghĩa đệ quy. Hơn nữa, phương pháp kiểm chứng tính đúng đắn của thiết kế bằng công cụ LTSA đơn giản hơn vì nó chỉ kiểm tra thuộc tính an toàn bằng cách kiểm tra trạng thái lỗi có dẫn xuất từ trạng thái khởi tạo. Trong khi đó SPIN phải kiểm tra trên nhiều thuộc tính.
TESTSUPERMARKET = SUPERMARKET.east:TURNSTILE || SUPERMARKET.west:TURNSTILE || SUPERMARKET.south:TURNSTILE || SUPERMARKET.{east,west,south,display}::value:LOCKVAR.LOCK || SUPERMARKET.{east,west,south,display}::value:LOCKVAR.VAR || TEST State Space: 14 * 14 * 14 * 2 * 5 * 35 = 2 ** 22 Analysing...
Depth 25 -- States: 161 Transitions: 310 Memory used: 9887K No deadlocks/errors
Chƣơng 5. Kết luận
Luận văn đã nghiên cứu về phương pháp đặc tả và kiểm chứng tính đúng đắn của thiết kế các chương trình tương tranh bằng công cụ LTSA. Luận văn cũng đã vận dụng những kiến thức thu được để tiến hành đặc tả và kiểm chứng thiết kế của hệ thống quản lý người vào ra trong siêu thị nhằm minh chứng cho tính hiệu quả của phương pháp tìm hiểu.
Trong quá trình thực hiện, luận văn đã đạt được những kết quả sau:
- Tìm hiểu được về ngôn ngữ FSP và vận dụng ngôn ngữ này để mô tả thiết kế của một hệ thống, sau đó biểu diễn chúng dưới dạng LTS để làm đầu vào cho công cụ LTSA.
- Tìm hiểu và sử dụng công cụ LTSA để phát hiện ra lỗi của thiết kế chương trình tương tranh.
- Vận dụng phương pháp đặc tả và kiểm chứng bằng công cụ LTSA để kiểm chứng tính đúng đắn của thiết kế hệ thống tương tranh. Trong trường hợp thiết kế bị sai chúng tôi tiến hành phân tích kết quả được trả lại bởi LTSA để hiệu chỉnh thiết kế và kiểm chứng lại.
Trong thời gian tới, chúng tôi sẽ áp dụng đồng thời LTSA và SPIN cũng như các công cụ khác nhằm so sánh một cách chính xác tính hiệu của của các phương pháp đặc tả và kiểm chứng. Chúng tôi cũng sẽ áp dụng các ví dụ lớn hơn nhằm chỉ rõ tính hiệu quả và khả năng ứng dụng của các phương pháp này.
Tài liệu tham khảo
Tiếng Anh
1. C. Blundell, D. Giannakopoulou and C. S. Pasareanu (2005), Assume-guarantee testing, InProceedings of the conference on Specification and verification of component-basedsystems, pp.7-14.
2. G. Gordon Schulmeyer (2008), Handbook of Software Quality Assurance Fourth Edition, Artech House, Inc.
3. J. M. Cobleigh, D. Giannakopoulou and C. S. Pasareanu (2003), Learning assumptions for compositional verification, Proceedings of the 9th international conference on Tools and algorithms for the construction and analysis of systems, Springer-Verlag, pp. 331-346.
4. Keller Robert M. (1976), Formal verification of parallel programs, Communications of the ACM, v.19, pp.371-384.
5. Magee Jeff and Kramer Jeff (2006), Concurrency: State Models & Java Programs, 2nd Edition, John Wiley & Sons, Chapter 1- Chapter 7.
6. Paul C. Jorgensen (2002), Software Testing: A Craftsman’s Approach, Second Edition, CRC Press.
7. SPIN Model Checker, http://spinroot/.
8. Steven R. Rakitin (2001), Software Verification and Validation for Practicetioners and Manager, Second edition, Artech House, Inc.