Tối ưu việc sinh giả thiết bằng giải thuật học L* cho kiểm chứng từng phần phần mềm dựa trên thành phần Đào Anh Hiển Trường Đại học Công nghệ Luận văn Thạc sĩ ngành: Khoa học máy tính; Mã số: 60 48 01 01 Người hướng dẫn: PGS.TS. Nguyễn Việt Hà Năm bảo vệ: 2014 Keywords. Công nghệ thông tin; Tin học; Giải thuật học L* Content Phát triển phần mềm dựa trên thành phần được biết đến là sự phát triển phần mềm bằng cách ghép nối các thành phần độc lập. Tuy nhiên, một trong những hạn chế của nó là vấn đề đảm bảo tính đúng đắn của hệ thống khi ghép nối các thành phần khác nhau vì các thành phần có thể được phát triển một cách độc lập hoặc đặt mua từ một bên thứ 3. Hiện tại các công nghệ hỗ trợ phát triển thành phần như CORBA, COM/DCOM or .NET (Microsoft), Java and JavaBeans (SUN) … chỉ có hỗ trợ việc ghép nối các thành phần. Chúng không có cơ chế kiểm tra liệu các thành phần có bị lỗi khi ghép nối với nhau hay không. Một giải pháp phổ biến hiện nay để giải quyết cho vấn đề trên là áp dụng kiểm chứng mô hình [5]. Một trong những vấn đề hạn chế của kiểm chứng mô hình là “vấn đề bùng nổ không gian trạng thái” khi kiểm chứng các phần mềm có kích thước lớn. Một trong những cách tiếp cận tiềm năng để giải quyết vấn đề này là áp dụng kiểm chứng từng phần [5,6]. Để áp dụng phương pháp này, một số tác giả đã đề xuất phương pháp sinh giả thiết bằng giải thuật học có tên là L* [1,7] phục vụ cho kiểm chứng từng phần như [11, 12]. Tuy nhiên, các nghiên cứu này chưa quan tâm đến việc tối ưu hóa kích thước của các giả thiết. Hơn nữa, kích thước của giả thiết là rất quan trọng vì nó trực tiếp ảnh hưởng đến hiệu quả và độ phức tạp của quá trình kiểm chứng. Một giả thiết có kích thước nhỏ cũng hiệu quả hơn trong việc kiểm chứng lại hệ thống trong tương lai đặc biệt là trong ngữ cảnh tiến hóa phần mềm. Phương pháp tối ưu sinh giả thiết tối thiểu bằng giải thuật học L* đã được đề xuất trong [9, 10] nhằm bước đầu giải quyết vấn đề này. Tuy nhiên, phương pháp này còn nhiều hạn chế về độ phức tạp của thuật toán tối ưu. Dựa trên cơ sở của [9, 10], luận văn này tiếp tục nghiên cứu nhằm hoàn thiện phương pháp này. Luận văn cũng sẽ tiến hành xây dựng công cụ hỗ trợ và áp dụng các ví dụ nhằm chỉ ra tính hiệu quả của phương pháp cải tiến. Phần còn lại của luận văn được tổ chức như sau: Chương 2 trình bày các kiến thức cơ bản được sử dụng trong luận văn gồm: Hệ thống chuyển trạng thái có gán nhãn (LTSs), dẫn xuất, phép toán ghép nối song song, LTS an toàn, thuộc tính an toán, sự thảo mãn, automat đơn định hữu hạn trạng thái, vấn đề đảm bảo giả thiết. Giải thuật học L* và phương pháp sinh giả thiết bằng giải thuật học L* sẽ được trình bày trong chương 3.Chương 4 trình bày phương pháp sinh giả thiết tối thiểu cho việc kiểm chứng phần mềm hướng thành phần. Trong chương này cũng sẽ trình bày chi tiết một cải tiến cho phương pháp sinh giải thiết tối thiểu. Phương pháp này giúp giảm thời gian và cả chi phí cho việc sinh giả thiết bằng cách áp dụng giải thuật tìm kiếm theo chiều sâu lặp (Interatice Deepening). Việc xây dựng một công cụ hỗ trợ được trình bày trong chương 5. Trong chương này cũng trình bày kết quả thực nghiệm chứng minh cho tính đúng đắn và hiệu quả của phương pháp cải tiến. Cuối cùng chúng tôi trình bày kết luận của luận văn, thảo luận các nghiên cứu liên quan và những cải tiến trong tương lai trong chương 6. References [1] D. Angluin: “Learning regular sets from queries and counterexamples”, Information and Computation, 75(2): 87-106, Nov. 1987. [2] C.Blundell, D.Griannakaopoulou, C.Pasareanu: “Assume-Guanrantee Testing”, Microsoft Research – Specification and Verification of Component-Based Systems (SAVCBS2005) Worshop: 7-14 [3] Sagar Chaki and Ofer Strichman. “Three optimizations for assume-guarantee reasoning with L*”. Form. Methods Syst. Des., 32: 267–284, June 2008. [4] J.Cobleigh, D.Giannakopoulou, C.Pasareanu : “Leanring Assumption for Compositional Verification”, TACAS 2003 : 331-346. [5] E.M. Clarke, O. Grumberg, D.Peled : “Model Checking”, MIT Press, (1999). [6] D. Giannakopoulou, C. Pasareanu, H. Barringer: “Assumption Generation for Software Component Verification”, ASE 2002: 3-12. [7] D. Giannakopoulou, C. Pasareanu, J. Cobleigh: “Assume-Guarantee Verification of Source Code with Design-Level Assumptions”, ICSE 2004: 211-220. [8] P. N. Hung and T. Katayama: “Modular Conformance Testing and Assume- Guarantee Verification for Evolving Component-Based Software”. In: 15th Asia- Pacific Softw. Eng. Conf. (APSEC), IEEE Computer Society, pp. 479-486 (2008). [9] P. N. Hung, T. Aoki and T. Katayama: "A Minimized Assumption Generation Method for Component-Based Software Verification", In The 6th International Colloquium on Theoretical Aspects of Computing, LNCS 5684, pp. 277-291, Springer Verlag Berlin Heidelberg (Aug. 2009). [10] P.N Hung, N.V Ha, T. Aoki and T. Katayama. “A minimized assumption generation method for component-based software verification”. IEICE TRANSACTIONS on Information and Systems, E93-D(8):2172–2181, Aug. 2010. [11] O. Kupferman and M. Y. Vardi: “Modular model checking”, In Compositionality: The Significant Difference, volume 1536 of Lecture Notes in Computer Science. Springer- Verlag, 1998. [12] K. Laster, O. Grumberg: “Modular model checking of software”, Conference on Tools and Algorithms for the Constructions and Analysis of Systems, 1998. [13] Robert M. Keller: “Formal verification of parallel programs”, Communications of the ACM, 19(7):371384, July 1976. [14] J. Magee and J. Kramer: “Concurrency: State Models & Java Programs”, John Wiley & Sons, 1999. [15] A. Nerode: “Linear automaton transformations”, In In Proc. of the American Mathematical Society 9, pages 541-544, 1958. [16] C. S. Pasareanu, M. B. Dwyer, and M. Huth: “Assume-guarantee model checking of software: A comparative case study”, In Theoretical and Practical Aspects of SPIN Model Checking, volume 1680 of Lecture Notes of Computer Science, Springer-Verlag, 1999. [17] R. L. Rivest and R. E. Schapire: “Inference of finite automata using homing equences”, Information and Computation, 103(2):299-347, Apr. 1993. [18] R. Bird and P . Wadler: “Introduction to Functional Programming", Prentice Hall International Series in Computer Science (1988). [19] R. Bird: “Introduction to Functional Programming using Haskell", Prentice Hall (1988). [20] French National Institute for Research in Computer Science and Control (INRIA): “Objective Caml", http://caml.inria.fr/ocaml/index.en.html (2004). [21]. W.J. Lee, H.J. Kim, H.S. Chae, “Safety property analysis techniques for cooperating embedded systems using LTS”, Proc. 5 th IFIPSEUS’ 07, pp.114-124, Springer Verlag Berlin Heidelberg, 2007. . Tối ưu việc sinh giả thiết bằng giải thuật học L* cho kiểm chứng từng phần phần mềm dựa trên thành phần Đào Anh Hiển Trường Đại học Công nghệ Luận văn Thạc sĩ ngành: Khoa học. sinh giả thiết bằng giải thuật học có tên l L* [1,7] phục vụ cho kiểm chứng từng phần như [11, 12]. Tuy nhiên, các nghiên cứu này chưa quan tâm đến việc tối ưu hóa kích thước của các giả thiết. . nghệ thông tin; Tin học; Giải thuật học L* Content Phát triển phần mềm dựa trên thành phần được biết đến l sự phát triển phần mềm bằng cách ghép nối các thành phần độc l p. Tuy nhiên, một