4 Kiểm chứng thử nghiệm với PAT
4.5 So sánh kết quả kiểm chứng giữa PAT và SPIN
KẾT LUẬN
Luận văn trình bày vấn đề về kiểm chứng hình thức cho các hệ thống tương tranh sử dụng cách tiếp cận kiểm chứng mô hình và đi sâu vào khía cạnh mô hình hóa hệ thống. Dựa trên các kết quả nghiên cứu lý thuyết về kiểm chứng mô hình, hệ tương tranh, mô hình hóa hệ tương tranh và ngôn ngữ đặc tả mô hình CSP#, luận văn đề xuất giải pháp trích xuất mô hình trực tiếp từ mã nguồn C# cho bài toán xử lý tương tranh trong lập trình đa luồng. Phần tiếp theo sẽ tóm tắt các nội dung đóng góp của luận văn.
Nội dung của luận văn được trình bày qua 4 chương. Chương 1, luận văn trình bày các vấn đề cấp thiết trong kiểm chứng để xác định tính đúng đắn của hệ thống phần mềm, nhất là đối với các hệ thống tương tranh và lựa chọn cách tiếp cận kiểm chứng mô hình. Sau đó nội dung luận văn đi sâu vào hai vấn đề chính trong kiểm chứng mô hình là mô hình hóa hệ thống và đặc tả các thuộc tính của hệ thống. Hiện nay có nhiều phương pháp giúp mô hình hóa cũng như đặc tả các thuộc tính của hệ thống, nhưng luận văn lựa trình bày hai phương pháp cơ sở là sử dụng hệ dịch chuyển để mô hình hóa và lôgic thời gian tuyến tính để đặc tả các thuộc tính của hệ thống.
Trong chương 2 luận văn trình bày nội dung về hệ tương tranh: khái niệm, các thuộc tính, mô hình tương tác và các khó khăn khi muốn xác định tính đúng đắn. Một số cơ chế thực thi, tương tác trong hệ tương tranh và cách mô hình hóa các cơ chế đó bằng hệ dịch chuyển cũng được trình bày trong chương này. Cụ thể luận văn xem xét các cơ chế thực thi, tương tác sau: Xử lý đan xen (Interleaving); Giao tiếp qua biến chia sẻ (Communication via Shared Variables); Tương tác dạng bắt tay (Handshaking); Giao tiếp thông qua kênh truyền (Channel Systems); Xử lý song song đồng bộ (Synchronous Parallelism).
Việc sử dụng hệ dịch chuyển để mô hình hóa hệ thống thường khó áp dụng trong thực thế. Thay vào đó người ta sử dụng qua một ngôn ngữ đặc tả mô hình trung gian, mô hình sau khi được đặc tả bằng các ngôn ngữ này có thể được chuyển tự động qua dạng hệ dịch chuyển. Chương 3 của luận văn lựa chọn trình bày về một ngôn ngữ đặc tả mô hình hệ tương tranh là CSP#, ngôn ngữ này được tích hợp vào trong bộ công cụ hỗ trợ kiểm chứng PAT được trình bày trong chương 4. Với các nội dung tìm hiểu về ngôn ngữ CSP# luận văn đề xuất một cách tiếp cận trích xuất mô hình từ mã nguồn C# cho bài toán xử lý tương tranh trong lập trình đa luồng.
Phần thử nghiệm của luận văn ở chương 4 tiến hành thử nghiệm kiểm chứng mô hình một hệ thống sử dụng ngôn ngữ đặc tả mô hình CSP# và công cụ hỗ trợ PAT, so sánh kết quả kiểm chứng của PAT với SPIN qua một số bài toán.
Trong tương lai luận văn sẽ tiếp tục phát triển để hoàn thiện lý thuyết về trích xuất mô hình từ mã nguồn C# với bài toán xử lý tương tranh trong lập trình đa
luồng, cài đặt dưới dạng một mô-đun tích hợp trong PAT. Mô-đun này kết hợp với các mô-đun kiểm chứng sẵn có của PAT cho phép kiểm chứng mô hình trực tiếp trên mã nguồn C# để bổ sung kết quả cho quá trình kiểm thử.
DANH MỤC CÔNG TRÌNH KHOA HỌC LIÊN QUAN ĐẾN LUẬN VĂN
• Nguyễn Văn Trãi, Nguyễn Trường Thắng, Đinh Quang Đạt, Trần Mạnh Đông (2012), "Kiểm chứng hình thức cho hệ thống tương tranh với CSP và PAT",
Kỷ yếu hội thảo khoa học quốc gia lần thứ XV Một số vấn đề chọn lọc của công nghệ thông tin và truyền thông, tr. 158.
Tài liệu tham khảo
[1] A.W. Roscoe (2010), Understanding Concurrent Systems, Springer London Dordrecht Heidelberg New York.
[2] A.W. Roscoe (1997),The Theory and Practice of Concurrency, Prentice Hall, ISBN 0-13-674409-5.
[3] Christel Baier, Joost-Pieter Katoen (2008),Principles of Model Checking, The MIT Press.
[4] Baeten, J.C.M (2004), "A brief history of process algebra",Rapport CSR 04- 02 (Vakgroep Informatica, Technische Universiteit Eindhoven).
[5] Baeten, J.C.M., Bravetti (2005),"A Generic Process Algebra",Algebraic Pro- cess Calculi: The First Twenty Five Years and Beyond (BRICS Notes Series NS-05-3), Bertinoro, Forl, Italy: BRICS, Department of Computer Science, University of Aarhus.
[6] B. Schlich, S. Kowalewski (2009), "Model checking c source code for embed- ded systems",International Journal on Software Tools for Technology Trans- fer(STTT), vol. 11, no. 3, pp. 187 – 202.
[7] C. A. R. Hoare (1985), Communicating Sequential Processes, International Series in Computer Science, Prentice-Hall.
[8] D. Beyer, T. A. Henzinger, G. Thoduloz, "Configurable software verification: Concretizing the convergence of model checking and program analysis", In Conf. on Computer Aided Verification (CAV).
[9] Edmund M. Clarke, Armin Biere, Richard Raimi, Yunshan Zhu (2001), "Bounded Model Checking Using Satisfiability Solving", Formal Methods in System Design19(1), pp. 7-34.
[10] Edmund M. Clarke, Bernd-Holger Schlingloff (2001), Model Checking, Handbook of Automated Reasoning, pp. 1635-1790.
[11] Edmund M. Clarke, E. Allen Emerson, A. Prasad Sistla (1986), "Automatic Verification of Finite-State Concurrent Systems Using Temporal Logic Spec- ifications",ACM Trans. Program. Lang. Syst. 8(2), pp. 244-263.
[12] F. Lerda, W. Visser (2001), "Addressing dynamic issues of program model checking", Proceedings of the 8th international SPIN workshop on Model checking of software, Toronto, Ontario, Canada: Springer-Verlag New York, Inc., pp. 80–102.
[13] G.Barrett (1995), "Model checking in practice: The T9000 Virtual Chan- nel Processor", IEEE Transactions on Software Engineering 21 (2): 69–78. doi:10.1109/32.345823.
[14] Jean-Pierre Queille, Joseph Sifakis (1982), "A Temporal Logic to Deal with Fairness in Transition Systems",FOCS, pp. 217-225.
[15] Joseph Albahari,Threading in C#, Books on C# and .Net of Joseph Albahari. [16] Jun Sun, Yang Liu, Jin Song Dong, Chun Qing Chen (2009), "Integrating Specification and Programs for System Modeling and Verification", The 3rd IEEE International Symposium on Theoretical Aspects of Software Engineer- ing, pp. 127 - 135.
[17] Jun Sun, Yang Liu, Jin Song Dong (2008), "Model Checking CSP Revisited: Introducing a Process Analysis Toolkit", pp. 307-322, Porto Sani, Greece. [18] J. Sun, Y. Liu, J. S. Dong, H. H. Wang (2008), "Specifying and Verify-
ing Event-based Fairness Enhanced Systems",In Proceedings of the 10th In- ternational Conference on Formal Engineering Methods(ICFEM 2008), pp. 318–337, Springer.
[19] K. Havelund, T. Pressburger (2000), "Model checking java programs us- ing java pathfinder", International Journal on Software Tools for Technology Transfer (STTT), vol. 2, no. 4, pp. 366 – 381.
[20] Matthew Hennessy, Algebraic Theory of Processes, The MIT Press, ISBN 0-262-08171-7.
[21] N. H. A. D. Brugh, V. Y. Nguyen, T. C. Ruys (2009), "MoonWalker: verifica- tion of .NET programs",Proceedings of the 15th International Conference on Tools and Algorithms for the Construction and Analysis of Systems, ETAPS 2009.
[22] Orna Lichtenstein, Amir Pnueli (1985), "Checking That Finite State Concur- rent Programs Satisfy Their Linear Specification",POPL, pp. 97-107.
[23] Pierce, Benjamin, Foundational Calculi for Programming Languages, The Computer Science and Engineering Handbook.
[24] T. Balyo, Solving Boolean Satisfiability Problems, Master Thesis in Charles University.
[25] Yang Liu (2010), "Model Checking Concurrent and Real-time Systems: the PAT Approach",PhD thesis.
[26] Y. Liu, J. Sun, J. S. Dong, "An Analyzer for Extended Compositional Process Algebras", In Proceedings of the 30th International Conference on Software Engineering(ICSE 2008) Companion Volume, pp. 919–920, ACM.
[27] "PAT: An Enhanced Simulator, Model Checker and Refinement Checker for Concurrent and Real-time Systems",http://pat.comp.nus.edu.sg/.
[28] "Software System Award: ACM CITES TOOL TO DETECT SOFTWARE "BUGS" FOR PRESTIGIOUS AWARD", Bell Labs Researcher Developed "SPIN" to Make Computers More Reliable.